diff --git a/gruntfile.js b/gruntfile.js index a526cfd55276471fc962f09d67d79d3fcb8b2d5e..9575e3dc385b326f744a7fe8a2b900a2dea676fb 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -1,48 +1,50 @@ module.exports = function(grunt) { - // Project configuration. - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - - sass: { - dist: { - options: { - outputStyle: 'nested', - includePaths: ['assets/stylesheets', require('node-bourbon').includePaths] + // Project configuration. + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + + sass: { + dist: { + options: { + outputStyle: 'nested', + includePaths: ['assets/stylesheets', require('node-bourbon').includePaths] + }, + files: { + 'assets/css/bootstrap.css': 'assets/stylesheets/bootstrap.scss' + } + } }, - files: { - 'assets/css/bootstrap.css': 'assets/stylesheets/bootstrap.scss' - } - } - }, - watch: { - grunt: { files: ['Gruntfile.js'] }, + watch: { + grunt: { + files: ['Gruntfile.js'] + }, - sass: { - files: 'assets/stylesheets/**/*.scss', - tasks: ['sass'], - options: { - livereload: true - } - }, + sass: { + files: 'assets/stylesheets/**/*.scss', + tasks: ['sass'], + options: { + livereload: true + } + }, - html: { - files: ['*.html'], - options: { - livereload: true + html: { + files: ['*.html', '**/*.html'], + options: { + livereload: true + } } - } - } - }); + } + }); - // Load the plugin that provides the "uglify" task. - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-sass'); - grunt.loadNpmTasks('grunt-contrib-watch'); + // Load the plugin that provides the "uglify" task. + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-sass'); + grunt.loadNpmTasks('grunt-contrib-watch'); - // Default task(s). - grunt.registerTask('build', ['sass']); - grunt.registerTask('default', ['build','watch']); + // Default task(s). + grunt.registerTask('build', ['sass']); + grunt.registerTask('default', ['build', 'watch']); -}; \ No newline at end of file +}; diff --git a/java/discover.html b/java/discover.html index 434aeb61b7794e194a42d711d8a2b818312d0f3e..cd6de179285dd93480730cafdbb66dfe1b8bc1e5 100644 --- a/java/discover.html +++ b/java/discover.html @@ -2,368 +2,357 @@ <html lang="en"> <head> - <meta http-equiv="content-type" content="text/html; charset=UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <title>iot.eclipse.org — Protocols</title> - <meta name="description" content="iot.eclipse.org is also a window on the protocols of choice for IoT and M2M solutions development: MQTT, CoAP, Lightweight M2M, ETSI M2M ..."> - <meta name="author" content="Eclipse.org"> - <link rel="author" href="humans.txt" /> - <!-- Le HTML5 shim, for IE6-8 support of HTML elements --> - <!--[if lt IE 9]> - <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> - <![endif]--> - <!-- Custom Fonts --> - <link href='http://fonts.googleapis.com/css?family=Lato:300,400' rel='stylesheet' type='text/css'> - <link href='http://fonts.googleapis.com/css?family=Lekton:400,700' rel='stylesheet' type='text/css'> - <!-- Le styles --> - <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet"> - <link href="/css/theme.css" rel="stylesheet"> - <link href="/css/bootstrap/bootstrap-responsive.min.css" rel="stylesheet"> - <link href="../stylesheet/prism.css" rel="stylesheet" /> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-594061-11']); - _gaq.push(['_trackPageview']); - (function() { - var ga = document.createElement('script'); - ga.type = 'text/javascript'; - ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(ga, s); - })(); - </script> + <meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>iot.eclipse.org — Protocols</title> + <meta name="description" content="iot.eclipse.org is also a window on the protocols of choice for IoT and M2M solutions development: MQTT, CoAP, Lightweight M2M, ETSI M2M ..."> + <meta name="author" content="Eclipse.org"> + <link rel="author" href="humans.txt" /> + <!-- Le HTML5 shim, for IE6-8 support of HTML elements --> + <!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> + <![endif]--> + <!-- Custom Fonts --> + <link href='http://fonts.googleapis.com/css?family=Lato:300,400' rel='stylesheet' type='text/css'> + <link href='http://fonts.googleapis.com/css?family=Lekton:400,700' rel='stylesheet' type='text/css'> + + <!-- +<link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet"> +<link href="/css/theme.css" rel="stylesheet"> +<link href="/css/bootstrap/bootstrap-responsive.min.css" rel="stylesheet"> +<link href="../stylesheet/prism.css" rel="stylesheet" /> + --> + + <!-- Bootstrap --> + <link href="/assets/css/bootstrap.css" rel="stylesheet"> + + + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-594061-11']); + _gaq.push(['_trackPageview']); + (function() { + var ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); + })(); + </script> </head> <body> - <div class="navbar navbar-fixed-top"> - <div class="navbar-inner"> - <div class="container"> - <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> - </a> <a class="brand" href="/">iot.eclipse.org</a> - - <div class="nav-collapse"> - <ul class="nav"> - <li class="dropdown active"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Technology <b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/frameworks.html">Services & Frameworks</a> - </li> - <li><a href="/protocols.html">Protocols</a> - </li> - <li><a href="/tools.html">Tools</a> - </li> - <li class="divider"></li> - <li class="active"><a href="/java"><strong>Open IoT Stack for Java</strong></a> - </li> - </ul> - </li> - - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Community <b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/community.html#projects">Projects</a> - </li> - <li><a href="/community.html#news">News</a> - </li> - <li class="divider"></li> - <li><a href="/open-iot-challenge">Open IoT Challenge </a> - </li> - </ul> - </li> - - <li><a href="/ecosystem.html">Ecosystem</a> - </li> - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">See it live <b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/demo">Live Demo</a> - </li> - <li><a href="/sandbox.html">Sandbox</a> - </li> - </ul> - </li> - </ul> - - <ul class="nav pull-right"> - <li style="margin-left:0px;"> - <div style="padding-top: 20px"> - <div class="g-plusone" data-href="http://iot.eclipse.org/"></div> - </div> - </li> - </ul> - </div> - <!--/.nav-collapse --> - </div> + + <header> + <nav class="navbar"> + <div class="container"> + <div class="row"> + <div class="col-sm-2"> + <a href="/"><img src="/assets/images/iot-logo.png"> + </a> + </div> + <div class="col-sm-10"> + <ul class="list-inline right menu"> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Technology</a> + <ul class="dropdown-menu"> + <li><a href="/standards">Standards</a> + </li> + <li><a href="/frameworks">Service & Frameworks</a> + </li> + <li><a href="/projects">All the projects</a> + </li> + </ul> + </li> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + </ul> + </li> + + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + </ul> + </li> + <li><a href="/ecosystem">Members</a> + </li> + <li><a href="#">Getting Started</a> + </li> + </ul> + </div> </div> - </div> - <!-- Place this tag after the last +1 button tag. --> - <script type="text/javascript"> - (function() { - var po = document.createElement('script'); - po.type = 'text/javascript'; - po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(po, s); - })(); - </script> - <div class="container"> + </div> + </nav> + </header> + <!-- Place this tag after the last +1 button tag. --> + <script type="text/javascript"> + (function() { + var po = document.createElement('script'); + po.type = 'text/javascript'; + po.async = true; + po.src = 'https://apis.google.com/js/plusone.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(po, s); + })(); + </script> + + <main class="main"> + <section class="first"> + <div class="container"> + <div id="companies"> - <!-- 2lemetry --> - <!-- <div class="row members-info" id="member-2lemetry"> - <div class="span4 mb-logo"> - <a href="http://eclipse.org/membership/showMember.php?member_id=1100"> - <img src="/images/ecosystem/logo-2lemetry.png" alt="2lemetry"/> - </a> - </div> - <div class="span8 mb-info"> - <div class="mb-info-container"> - <p>xxx</p> - - <p>2lemetry actively contributes to the Paho project around objective-c and MQTT.</p> - <h5>2lemetry</h5> - </div> - </div> - </div> - --> - <!-- Actuate --> - <div class="row members-info" id="member-actuate"> - <div class="span4 mb-logo"> - <a href="#"> - <img src="/images/ecosystem/logo-actuate.png" alt="Actuate" /> - </a> - </div> - <div class="span8 mb-info"> - <div class="mb-info-container"> - <p> Internet of Things offers numerous opportunities for developers to create new solutions using data from devices connected to the Internet. The challenge is to establish a set of standards to make effective use of the many different sources of data. Eclipse’s new Open IoT Stack for Java will make it easier for the over 3.5 million BIRT developers to access, visualize and analyze IoT data to deliver actionable information to enhance customer experience and improve operations.</p> - <h5>Nobby Akiha – Senior Vice President of Marketing at Actuate Corporation.</h5> - </div> - <ul class="mb-links clearfix"> - <li class="read-more"><a href="http://www.actuate.com" target="_blank">Read more <i class="icon-chevron-right"></i></a> - </li> - <li><a href="http://blogs.actuate.com/creating-an-iot-dashboard-with-birt/" target="_blank">View Demo <i class="icon-eye-open"></i></a> - </li> - </ul> - </div> + <!-- Actuate --> + <div class="row members-info" id="member-actuate"> + <div class="col-md-4 mb-logo"> + <a href="#"> + <img src="/images/ecosystem/logo-actuate.png" alt="Actuate" /> + </a> </div> - - <!-- Bitreactive --> - <div class="row members-info" id="member-bitreactive"> - <div class="span4 mb-logo"> - <a href="http://eclipse.org/membership/showMember.php?member_id=1103"> - <img src="/images/ecosystem/logo-bitreactive.png" alt="Bitreactive" /> - </a> - </div> - <div class="span8 mb-info"> - <div class="mb-info-container"> - <p>The Open IoT Stack for Java is an ideal platform to enable interoperability and reduce fragmentation. Our tool Reactive Blocks supports application development with Eclipse IoT technologies like MQTT, Kura and CoAP since they provide proven and standardized solutions.</p> - <h5>Jone Rasmussen – General Manager of Bitreactive</h5> - </div> - <ul class="mb-links clearfix"> - <li class="read-more"><a href="http://www.bitreactive.com/" target="_blank">Read more <i class="icon-chevron-right"></i></a> - </li> - <li><a href="http://www.bitreactive.com/technology/" target="_blank">View Demo <i class="icon-eye-open"></i></a> - </li> - </ul> - </div> + <div class="col-md-8 mb-info"> + <div class="mb-info-container"> + <p> Internet of Things offers numerous opportunities for developers to create new solutions using data from devices connected to the Internet. The challenge is to establish a set of standards to make effective use of the many different sources of data. Eclipse’s new Open IoT Stack for Java will make it easier for the over 3.5 million BIRT developers to access, visualize and analyze IoT data to deliver actionable information to enhance customer experience and improve operations.</p> + <h5>Nobby Akiha – Senior Vice President of Marketing at Actuate Corporation.</h5> + </div> + <ul class="mb-links clearfix"> + <li class="read-more"><a href="http://www.actuate.com" target="_blank">Read more <i class="icon-chevron-right"></i></a> + </li> + <li><a href="http://blogs.actuate.com/creating-an-iot-dashboard-with-birt/" target="_blank">View Demo <i class="icon-eye-open"></i></a> + </li> + </ul> </div> + </div> - <!-- Canonical --> - <div class="row members-info" id="member-canonical"> - <div class="span4 mb-logo"> - <a href="#"> - <img src="/images/ecosystem/logo-ubuntu.png" alt="Bitreactive" /> - </a> - </div> - <div class="span8 mb-info"> - <div class="mb-info-container"> - <p>Ubuntu is collaborating with the Eclipse foundation on making sure developers can easily use any of their IoT solutions both on the cloud and the embedded space.</p> - <h5>Maarten Ectors – IoT Strategy Director of Canonical</h5> - </div> - </div> + <!-- Bitreactive --> + <div class="row members-info" id="member-bitreactive"> + <div class="col-md-4 mb-logo"> + <a href="http://eclipse.org/membership/showMember.php?member_id=1103"> + <img src="/images/ecosystem/logo-bitreactive.png" alt="Bitreactive" /> + </a> </div> - - <!-- dc-square --> - <div class="row members-info" id="member-dcsquare"> - <div class="span4 mb-logo"> - <a href="http://eclipse.org/membership/showMember.php?member_id=1122"> - <img src="/images/ecosystem/logo-dcsquare.png" width="150" alt="dc-square" /> - </a> - </div> - <div class="span8 mb-info"> - <div class="mb-info-container"> - <p>The open IoT stack from Eclipse helps our HiveMQ customers to build their MQTT client applications on proven and rock stable solutions like Eclipse Paho and Eclipse Kura. This gives them the advantage to start from day one with their applications instead of implementing low-level wire protocols themselves.</p> - <h5>Dominik Obermaier – CTO, dc-square GmbH</h5> - </div> - <ul class="mb-links clearfix"> - <li class="read-more"><a href="http://www.hivemq.com/" target="_blank">Read more <i class="icon-chevron-right"></i></a> - </li> - <li><a href="http://www.hivemq.com/demos/websocket-client/" target="_blank">View Demo <i class="icon-eye-open"></i></a> - </li> - </ul> - </div> + <div class="col-md-8 mb-info"> + <div class="mb-info-container"> + <p>The Open IoT Stack for Java is an ideal platform to enable interoperability and reduce fragmentation. Our tool Reactive Blocks supports application development with Eclipse IoT technologies like MQTT, Kura and CoAP since they provide proven and standardized solutions.</p> + <h5>Jone Rasmussen – General Manager of Bitreactive</h5> + </div> + <ul class="mb-links clearfix"> + <li class="read-more"><a href="http://www.bitreactive.com/" target="_blank">Read more <i class="icon-chevron-right"></i></a> + </li> + <li><a href="http://www.bitreactive.com/technology/" target="_blank">View Demo <i class="icon-eye-open"></i></a> + </li> + </ul> </div> + </div> - <!-- DT --> - <div class="row members-info" id="member-dtag"> - <div class="span4 mb-logo"> - <a href="http://eclipse.org/membership/showMember.php?member_id=1139"> - <img src="/images/ecosystem/logo-dtag.png" alt="Deutsche Telekom" /> - </a> - </div> - <div class="span8 mb-info"> - <div class="mb-info-container"> - <p>Telekom has been an Eclipse Foundation solution member since July this year. We are convinced that we will take the development of our QIVICON Smart Home solution further forward with the support of the large developer community and its outstanding know-how. To do so we are integrating the Eclipse Smart Home project into our core platform. As we would like to promote Eclipse's work at the same time, we have not only joined the IoT working group but are also contributing to the Eclipse Smart Home project by actively participating in the open source project's development</p> - <h5>Holger Knöpke – Head of Connected Home, Deutsche Telekom.</h5> - </div> - </div> + <!-- Canonical --> + <div class="row members-info" id="member-canonical"> + <div class="col-md-4 mb-logo"> + <a href="#"> + <img src="/images/ecosystem/logo-ubuntu.png" alt="Bitreactive" /> + </a> </div> - - <!-- Eurotech --> - <div class="row members-info" id="member-eurotech"> - <div class="span4 mb-logo"> - <a href="http://eclipse.org/membership/showMember.php?member_id=968"> - <img src="/images/ecosystem/logo-eurotech.png" alt="Eurotech" /> - </a> - </div> - <div class="span8 mb-info"> - <div class="mb-info-container"> - <p>Even before co-founding the Eclipse Foundation M2M (now IoT) Working Group, Eurotech embraced the open source philosophy. We have invested our development resources into creating and donating the Kura project to the community while also delivering it as a fully supported commercial offering through the Everyware Software Framework. We appreciate the innovations and contributions of the talented and generous Eclipse community and look forward to exciting enhancements and revolutionary projects in the coming days, months and years.</p> - <h5>Marco Carrer – VP of Software Development for Eurotech</h5> - </div> - <ul class="mb-links clearfix"> - <li class="read-more"><a href="http://www.eurotech.com/en/products/software+services/everyware+software+framework/what+esf+is" target="_blank">Read more <i class="icon-chevron-right"></i></a> - </li> - <li><a href="https://www.youtube.com/watch?v=PXlDJMK7yqg" target="_blank">View Demo <i class="icon-eye-open"></i></a> - </li> - </ul> - </div> + <div class="col-md-8 mb-info"> + <div class="mb-info-container"> + <p>Ubuntu is collaborating with the Eclipse foundation on making sure developers can easily use any of their IoT solutions both on the cloud and the embedded space.</p> + <h5>Maarten Ectors – IoT Strategy Director of Canonical</h5> + </div> </div> + </div> - <!-- IBH Systems --> - <div class="row members-info" id="member-ibh"> - <div class="span4 mb-logo"> - <a href="http://eclipse.org/membership/showMember.php?member_id=1086"> - <img src="/images/ecosystem/logo-ibh.png" alt="IBH Systems" /> - </a> - </div> - <div class="span8 mb-info"> - <div class="mb-info-container"> - <p>IBH SYSTEMS uses Eclipse SCADA as the strategic platform to realize ours customers projects. It can play to it strengths especially in environments where the customer wants to have full control over the software and be able to customize it in any way. Additionally our approach to modularization means that a developer only needs to use what he actually requires. This in turn allows other open source, or even commercial projects to reuse our high quality implementations of industrial protocols, like Modbus or IEC 60870-5-104, without the need of integrating the whole Eclipse SCADA stack.</p> - <h5>Jens Reimann – IBH Systems</h5> - </div> - <ul class="mb-links clearfix"> - <li class="read-more"><a href="http://ibh-systems.com/" target="_blank">Read more <i class="icon-chevron-right"></i></a> - </li> - <li><a href="https://www.youtube.com/watch?v=UYlmzuwBV30" target="_blank">View Demo <i class="icon-eye-open"></i></a> - </li> - </ul> - </div> + <!-- dc-square --> + <div class="row members-info" id="member-dcsquare"> + <div class="col-md-4 mb-logo"> + <a href="http://eclipse.org/membership/showMember.php?member_id=1122"> + <img src="/images/ecosystem/logo-dcsquare.png" width="150" alt="dc-square" /> + </a> </div> - - <!-- IBM --> - <div class="row members-info" id="member-ibm"> - <div class="span4 mb-logo"> - <a href="http://eclipse.org/membership/showMember.php?member_id=656"> - <img src="/images/ecosystem/logo-ibm.png" alt="IBM" /> - </a> - </div> - <div class="span8 mb-info"> - <div class="mb-info-container"> - <p>As the Internet of Things evolves, developers need greater access to technologies and standards to deliver innovative products and services to market. Our involvement in the Eclipse Paho project, alongside the Oasis standardization effort for MQTT, will accelerate the development of Internet of Things solutions across industries. IBM MessageSight and IBM Internet of Things Foundation beta are built on MQTT, enabling the open source community, and promoting flexibility and choice for clients.</p> - <h5>Michael Curry – VP, IBM</h5> - </div> - <ul class="mb-links clearfix"> - <li class="read-more"><a href="http://ibm.com/" target="_blank">Read more <i class="icon-chevron-right"></i></a> - </li> - <li><a href="#" target="_blank">View Demo <i class="icon-eye-open"></i></a> - </li> - </ul> - </div> + <div class="col-md-8 mb-info"> + <div class="mb-info-container"> + <p>The open IoT stack from Eclipse helps our HiveMQ customers to build their MQTT client applications on proven and rock stable solutions like Eclipse Paho and Eclipse Kura. This gives them the advantage to start from day one with their applications instead of implementing low-level wire protocols themselves.</p> + <h5>Dominik Obermaier – CTO, dc-square GmbH</h5> + </div> + <ul class="mb-links clearfix"> + <li class="read-more"><a href="http://www.hivemq.com/" target="_blank">Read more <i class="icon-chevron-right"></i></a> + </li> + <li><a href="http://www.hivemq.com/demos/websocket-client/" target="_blank">View Demo <i class="icon-eye-open"></i></a> + </li> + </ul> </div> + </div> - - <!-- IBM --> - <div class="row members-info" id="member-ibm"> - <div class="span4 mb-logo"> - <a href="http://eclipse.org/membership/showMember.php?member_id=656"> - <img src="/images/ecosystem/logo-ibm.png" alt="IBM" /> - </a> - </div> - <div class="span8 mb-info"> - <div class="mb-info-container"> - <p>As the Internet of Things evolves, developers need greater access to technologies and standards to deliver innovative products and services to market. Our involvement in the Eclipse Paho project, alongside the Oasis standardization effort for MQTT, will accelerate the development of Internet of Things solutions across industries. IBM MessageSight and IBM Internet of Things Foundation beta are built on MQTT, enabling the open source community, and promoting flexibility and choice for clients.</p> - <h5>Michael Curry – VP, IBM</h5> - </div> - <ul class="mb-links clearfix"> - <li class="read-more"><a href="http://ibm.com/" target="_blank">Read more <i class="icon-chevron-right"></i></a> - </li> - <li><a href="#" target="_blank">View Demo <i class="icon-eye-open"></i></a> - </li> - </ul> - </div> + <!-- DT --> + <div class="row members-info" id="member-dtag"> + <div class="col-md-4 mb-logo"> + <a href="http://eclipse.org/membership/showMember.php?member_id=1139"> + <img src="/images/ecosystem/logo-dtag.png" alt="Deutsche Telekom" /> + </a> + </div> + <div class="col-md-8 mb-info"> + <div class="mb-info-container"> + <p>Telekom has been an Eclipse Foundation solution member since July this year. We are convinced that we will take the development of our QIVICON Smart Home solution further forward with the support of the large developer community and its outstanding know-how. To do so we are integrating the Eclipse Smart Home project into our core platform. As we would like to promote Eclipse's work at the same time, we have not only joined the IoT working group but are also contributing to the Eclipse Smart Home project by actively participating in the open source project's development</p> + <h5>Holger Knöpke – Head of Connected Home, Deutsche Telekom.</h5> + </div> </div> + </div> - <!-- Oracle --> - <div class="row members-info" id="member-oracle"> - <div class="span4 mb-logo"> - <a href="http://eclipse.org/membership/showMember.php?member_id=721"> - <img src="/images/ecosystem/logo-oracle.png" alt="Oracle" /> - </a> - </div> - <div class="span8 mb-info"> - <div class="mb-info-container"> - <p>At Oracle, we are working hard to make Java the number one platform for the Internet of Things. The Eclipse Foundation’s Open IoT Stack for Java is a fantastic and welcome example of Java developers building another innovative and diverse ecosystem, this time for IoT solutions.</p> - <h5>Benjamin Wesson – Vice President, Product Development, Oracle</h5> - </div> - <ul class="mb-links clearfix"> - <li class="read-more"><a href="http://oracle.com/" target="_blank">Read more <i class="icon-chevron-right"></i></a> - </li> - <li><a href="#" target="_blank">View Demo <i class="icon-eye-open"></i></a> - </li> - </ul> - </div> + <!-- Eurotech --> + <div class="row members-info" id="member-eurotech"> + <div class="col-md-4 mb-logo"> + <a href="http://eclipse.org/membership/showMember.php?member_id=968"> + <img src="/images/ecosystem/logo-eurotech.png" alt="Eurotech" /> + </a> + </div> + <div class="col-md-8 mb-info"> + <div class="mb-info-container"> + <p>Even before co-founding the Eclipse Foundation M2M (now IoT) Working Group, Eurotech embraced the open source philosophy. We have invested our development resources into creating and donating the Kura project to the community while also delivering it as a fully supported commercial offering through the Everyware Software Framework. We appreciate the innovations and contributions of the talented and generous Eclipse community and look forward to exciting enhancements and revolutionary projects in the coming days, months and years.</p> + <h5>Marco Carrer – VP of Software Development for Eurotech</h5> + </div> + <ul class="mb-links clearfix"> + <li class="read-more"><a href="http://www.eurotech.com/en/products/software+services/everyware+software+framework/what+esf+is" target="_blank">Read more <i class="icon-chevron-right"></i></a> + </li> + <li><a href="https://www.youtube.com/watch?v=PXlDJMK7yqg" target="_blank">View Demo <i class="icon-eye-open"></i></a> + </li> + </ul> </div> + </div> - </div> + <!-- IBH Systems --> + <div class="row members-info" id="member-ibh"> + <div class="col-md-4 mb-logo"> + <a href="http://eclipse.org/membership/showMember.php?member_id=1086"> + <img src="/images/ecosystem/logo-ibh.png" alt="IBH Systems" /> + </a> + </div> + <div class="col-md-8 mb-info"> + <div class="mb-info-container"> + <p>IBH SYSTEMS uses Eclipse SCADA as the strategic platform to realize ours customers projects. It can play to it strengths especially in environments where the customer wants to have full control over the software and be able to customize it in any way. Additionally our approach to modularization means that a developer only needs to use what he actually requires. This in turn allows other open source, or even commercial projects to reuse our high quality implementations of industrial protocols, like Modbus or IEC 60870-5-104, without the need of integrating the whole Eclipse SCADA stack.</p> + <h5>Jens Reimann – IBH Systems</h5> + </div> + <ul class="mb-links clearfix"> + <li class="read-more"><a href="http://ibh-systems.com/" target="_blank">Read more <i class="icon-chevron-right"></i></a> + </li> + <li><a href="https://www.youtube.com/watch?v=UYlmzuwBV30" target="_blank">View Demo <i class="icon-eye-open"></i></a> + </li> + </ul> + </div> + </div> - <hr> - <footer> - <ul class="nav nav-pills"> - <li><a href="index.html">Home</a> + <!-- IBM --> + <div class="row members-info" id="member-ibm"> + <div class="col-md-4 mb-logo"> + <a href="http://eclipse.org/membership/showMember.php?member_id=656"> + <img src="/images/ecosystem/logo-ibm.png" alt="IBM" /> + </a> + </div> + <div class="col-md-8 mb-info"> + <div class="mb-info-container"> + <p>As the Internet of Things evolves, developers need greater access to technologies and standards to deliver innovative products and services to market. Our involvement in the Eclipse Paho project, alongside the Oasis standardization effort for MQTT, will accelerate the development of Internet of Things solutions across industries. IBM MessageSight and IBM Internet of Things Foundation beta are built on MQTT, enabling the open source community, and promoting flexibility and choice for clients.</p> + <h5>Michael Curry – VP, IBM</h5> + </div> + <ul class="mb-links clearfix"> + <li class="read-more"><a href="http://ibm.com/" target="_blank">Read more <i class="icon-chevron-right"></i></a> </li> - <li><a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a> + <li><a href="#" target="_blank">View Demo <i class="icon-eye-open"></i></a> </li> - <li><a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a> + </ul> + </div> + </div> + + <!-- Oracle --> + <div class="row members-info" id="member-oracle"> + <div class="col-md-4 mb-logo"> + <a href="http://eclipse.org/membership/showMember.php?member_id=721"> + <img src="/images/ecosystem/logo-oracle.png" alt="Oracle" /> + </a> + </div> + <div class="col-md-8 mb-info"> + <div class="mb-info-container"> + <p>At Oracle, we are working hard to make Java the number one platform for the Internet of Things. The Eclipse Foundation’s Open IoT Stack for Java is a fantastic and welcome example of Java developers building another innovative and diverse ecosystem, this time for IoT solutions.</p> + <h5>Benjamin Wesson – Vice President, Product Development, Oracle</h5> + </div> + <ul class="mb-links clearfix"> + <li class="read-more"><a href="http://oracle.com/" target="_blank">Read more <i class="icon-chevron-right"></i></a> </li> - <li><a href="http://www.eclipse.org/legal/copyright.php" target="_blank">Copyright Agent</a> + <li><a href="#" target="_blank">View Demo <i class="icon-eye-open"></i></a> </li> - <li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a> + </ul> + </div> + </div> + </div> + </div> + </main> + + + + + + <footer> + + <div class="container"> + <div class="row"> + <div class="col-md-6"> + <nav> + <ul class="list-inline menu"> + <li><a href="#">Technology</a> + </li> + <li><a href="#">Community</a> + </li> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + </ul> + <li><a href="/ecosystem">Members</a> </li> - <li><a href="contact.html" data-toggle="modal" data-target="#contact-modal">Contact Us</a> + <li><a href="#">Getting Started</a> </li> - <li class="pull-right">Copyright © 2015 The Eclipse Foundation. All Rights Reserved.</li> </ul> - </footer> - <div id="contact-modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="contact-label" aria-hidden="true" style="display: none;"></div> + </nav> + <div class="socials"> + <a href="#" class="social-facebook"> </a> + <a href="#" class="social-twitter"> </a> + <a href="#" class="social-youtube"> </a> + <a href="#" class="social-share"> </a> + </div> + </div> + <div class="col-md-6"> + <p class="copyright">Copyright © 2015 The Eclipse Foundation. All Rights Reserved.</p> + </div> + </div> </div> - <!-- /container --> - <!-- JS is at the end of the document so the pages load faster --> - <script src="/js/jquery.js"></script> - <script src="/js/bootstrap/bootstrap.min.js"></script> - <script src="/js/index.js"></script> - <script src="/js/shuffle.js"></script> - <script src="../js/prism.js"></script> - <script type="text/javascript"> - $(document).ready(function() { - $('#companies').shuffle(); - }); - </script> + + + </footer> + + <!-- JS is at the end of the document so the pages load faster --> + <script src="/js/jquery.js"></script> + <script src="/js/bootstrap/bootstrap.min.js"></script> + <script src="/js/index.js"></script> + <script src="/js/shuffle.js"></script> + <script src="../js/prism.js"></script> + <script type="text/javascript"> + $(document).ready(function() { + $('#companies').shuffle(); + }); + </script> </body> </html> diff --git a/java/index.html b/java/index.html index f880596ae5193fd0c5bb46e5ca2beea16b18cfd4..9c70aa474138c8dbf92dfae6dd8f6bff6769170e 100644 --- a/java/index.html +++ b/java/index.html @@ -2,267 +2,279 @@ <html> <head> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>iot.eclipse.org — IoT development made simple</title> - <link href='http://fonts.googleapis.com/css?family=Lato:100,300,400' rel='stylesheet' type='text/css'> - <link href='http://fonts.googleapis.com/css?family=Lekton:400,700' rel='stylesheet' type='text/css'> - <link href='http://fonts.googleapis.com/css?family=Sanchez' rel='stylesheet' type='text/css'> - <link href="stylesheet/bootstrap/bootstrap.min.css" rel="stylesheet"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>iot.eclipse.org — IoT development made simple</title> + <link href='http://fonts.googleapis.com/css?family=Lato:100,300,400' rel='stylesheet' type='text/css'> + <link href='http://fonts.googleapis.com/css?family=Lekton:400,700' rel='stylesheet' type='text/css'> + <link href='http://fonts.googleapis.com/css?family=Sanchez' rel='stylesheet' type='text/css'> + + <!-- <link href="stylesheet/bootstrap/bootstrap.min.css" rel="stylesheet"> <link href="stylesheet/bootstrap/bootstrap-responsive.min.css" rel="stylesheet"> - <link href="stylesheet/font-awesome.min.css" rel="stylesheet"> + --> + + <!-- Bootstrap --> + <link href="stylesheet/font-awesome.min.css" rel="stylesheet"> + <link href="/assets/css/bootstrap.css" rel="stylesheet"> + <link href="stylesheet/theme.css" rel="stylesheet"> --> - <link href="stylesheet/theme.css" rel="stylesheet"> - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-594061-11']); - _gaq.push(['_trackPageview']); + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-594061-11']); + _gaq.push(['_trackPageview']); - (function() { - var ga = document.createElement('script'); - ga.type = 'text/javascript'; - ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(ga, s); - })(); - </script> + (function() { + var ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); + })(); + </script> </head> <body> - <div class="navbar navbar-fixed-top"> - <div class="navbar-inner"> - <div class="container"> - <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> - </a> <a class="brand" href="/">iot.eclipse.org</a> - - <div class="nav-collapse"> - <ul class="nav"> - <li class="dropdown active"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Technology <b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/frameworks.html">Services & Frameworks</a> - </li> - <li><a href="/protocols.html">Protocols</a> - </li> - <li><a href="/tools.html">Tools</a> - </li> - <li class="divider"></li> - <li class="active"><a href="/java"><strong>Open IoT Stack for Java</strong></a> - </li> - </ul> - </li> - - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Community <b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/community.html#projects">Projects</a> - </li> - <li><a href="/community.html#news">News</a> - </li> - <li class="divider"></li> - <li><a href="/open-iot-challenge">Open IoT Challenge </a> - </li> - </ul> - </li> - - <li><a href="/ecosystem.html">Ecosystem</a> - </li> - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">See it live <b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/demo">Live Demo</a> - </li> - <li><a href="/sandbox.html">Sandbox</a> - </li> - </ul> - </li> - </ul> - - <ul class="nav pull-right"> - <li style="margin-left:0px;"> - <div style="padding-top: 20px"> - <div class="g-plusone" data-href="http://iot.eclipse.org/"></div> - </div> - </li> - </ul> - </div> - <!--/.nav-collapse --> - - - </div> + + <header> + <nav class="navbar"> + <div class="container"> + <div class="row"> + <div class="col-sm-2"> + <a href="/"><img src="/assets/images/iot-logo.png"> + </a> + </div> + <div class="col-sm-10"> + <ul class="list-inline right menu"> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Technology</a> + <ul class="dropdown-menu"> + <li><a href="/standards">Standards</a> + </li> + <li><a href="/frameworks">Service & Frameworks</a> + </li> + <li><a href="/projects">All the projects</a> + </li> + </ul> + </li> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + </ul> + </li> + + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + + </ul> + </li> + <li><a href="/ecosystem">Members</a> + </li> + <li><a href="#">Getting Started</a> + </li> + </ul> + </div> </div> - </div> + </div> + </nav> + </header> - <!-- Place this tag after the last +1 button tag. --> - <script type="text/javascript"> - (function() { - var po = document.createElement('script'); - po.type = 'text/javascript'; - po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(po, s); - })(); - </script> + <!-- Place this tag after the last +1 button tag. --> + <script type="text/javascript"> + (function() { + var po = document.createElement('script'); + po.type = 'text/javascript'; + po.async = true; + po.src = 'https://apis.google.com/js/plusone.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(po, s); + })(); + </script> + <main class="main"> + <div class="header"> - <div class="container"> - <div class="row"> - <div class="span12"> - <img src="images/logo-01.png" alt=""> - <img src="images/logo-02.png" alt=""> - </div> - <div class="span12"> - <h1>Open IoT stack for <strong>Java Developers</strong></h1> - <p>Eclipse IoT has the open source technology that makes it easy for Java developers to create IoT applications.</p> - <!-- <button>Get Started | <i class="fa fa-arrow-circle-right"></i></button> --> - </div> - </div> + <div class="container"> + <div class="row"> + <div class="col-md-12"> + <img src="images/logo-01.png" alt=""> + <img src="images/logo-02.png" alt=""> + </div> + <div class="col-md-12"> + <h1>Open IoT stack for <strong>Java Developers</strong></h1> + <p>Eclipse IoT has the open source technology that makes it easy for Java developers to create IoT applications.</p> + <!-- <button>Get Started | <i class="fa fa-arrow-circle-right"></i></button> --> + </div> </div> + </div> </div> <div class="icons-1"> - <div class="container"> - <div class="row"> - <div class="span6"> - <a href="open-iot-stack-for-java.html"> - <img src="images/icon-connect.jpg" alt=""> - <h2><strong>Connect</strong> & <strong>Manage</strong></h2> - </a> - <p>Find out how the Open IoT Stack for Java can help you connect and manage your IoT solutions</p> - <a href="open-iot-stack-for-java.html"> - <button>Learn More | <i class="fa fa-arrow-circle-right"></i> - </button> - </a> - - </div> - <div class="span6"> - <a href="download"> - <img src="images/icon-download.jpg" alt=""> - <h2><strong>Download</strong> Software</h2> - </a> - <p>Start building end-to-end IoT applications by downloading our open-source IoT components</p> - <a href="download"> - <button>Download | <i class="fa fa-arrow-circle-right"></i> - </button> - </a> - </div> - </div> + <div class="container"> + <div class="row"> + <div class="col-md-6"> + <a href="open-iot-stack-for-java.html"> + <img src="images/icon-connect.jpg" alt=""> + <h2><strong>Connect</strong> & <strong>Manage</strong></h2> + </a> + <p>Find out how the Open IoT Stack for Java can help you connect and manage your IoT solutions</p> + <a href="open-iot-stack-for-java.html"> + <button>Learn More | <i class="fa fa-arrow-circle-right"></i> + </button> + </a> + + </div> + <div class="col-md-6"> + <a href="download"> + <img src="images/icon-download.jpg" alt=""> + <h2><strong>Download</strong> Software</h2> + </a> + <p>Start building end-to-end IoT applications by downloading our open-source IoT components</p> + <a href="download"> + <button>Download | <i class="fa fa-arrow-circle-right"></i> + </button> + </a> + </div> </div> + </div> </div> <div class="icons-2"> - <div class="container"> - <div class="row"> - <div class="span6"> - <a href="tutorial"> - <img src="images/icon-tutorial.jpg" alt=""> - <h2>Do the <strong>Tutorial</strong></h2> - </a> - <p>Is there any better way to get familiar with a technology than getting your hands dirty and code? - <br/> Follow our tutorial and learn about the Eclipse IoT stack for Java by example</p> - <a href="tutorial"> - <button>Follow the Tutorial | <i class="fa fa-arrow-circle-right"></i> - </button> - </a> - </div> - <div class="span6"> - <a href="/demo"> - <img src="images/icon-live.jpg" alt=""> - <h2>See it <strong>Live</strong></h2> - </a> - <p>Check out our live demo to see the Eclipse Open IoT stack in action! </p> - <a href="/demo"> - <button>Learn More | <i class="fa fa-arrow-circle-right"></i> - </button> - </a> - </div> - </div> + <div class="container"> + <div class="row"> + <div class="col-md-6"> + <a href="tutorial"> + <img src="images/icon-tutorial.jpg" alt=""> + <h2>Do the <strong>Tutorial</strong></h2> + </a> + <p>Is there any better way to get familiar with a technology than getting your hands dirty and code? + <br/> Follow our tutorial and learn about the Eclipse IoT stack for Java by example</p> + <a href="tutorial"> + <button>Follow the Tutorial | <i class="fa fa-arrow-circle-right"></i> + </button> + </a> + </div> + <div class="col-md-6"> + <a href="/demo"> + <img src="images/icon-live.jpg" alt=""> + <h2>See it <strong>Live</strong></h2> + </a> + <p>Check out our live demo to see the Eclipse Open IoT stack in action! </p> + <a href="/demo"> + <button>Learn More | <i class="fa fa-arrow-circle-right"></i> + </button> + </a> + </div> </div> + </div> </div> <div class="discover"> - <div class="container"> - <div class="row"> - <div class="span12"> - <h2>Discover</h2> - <p>Discover what companies are doing with Eclipse IoT for Java.</p> - <a href="discover.html"> - <button>Learn More | <i class="fa fa-arrow-circle-right"></i> - </button> - </a> - </div> - </div> + <div class="container"> + <div class="row"> + <div class="span12"> + <h2>Discover</h2> + <p>Discover what companies are doing with Eclipse IoT for Java.</p> + <a href="discover.html"> + <button>Learn More | <i class="fa fa-arrow-circle-right"></i> + </button> + </a> + </div> </div> + </div> </div> <div class="logos"> - <div class="container"> - <div class="row"> - <div class="span10 offset1" id="members"> - <img src="/images/ecosystem/logo-2lemetry.png" width="120"> - <img src="/images/ecosystem/logo-actuate.png" width="120"> - <img src="/images/ecosystem/logo-dtag.png" width="120"> - <img src="/images/ecosystem/logo-bitreactive.png" width="120"> - <img src="/images/ecosystem/logo-dcsquare.png" width="120"> - <img src="/images/ecosystem/logo-eurotech.png" width="120"> - <img src="/images/ecosystem/logo-ibh.png" width="120"> - <img src="/images/ecosystem/logo-ibm.png" width="120"> - <img src="/images/ecosystem/logo-laas.png" width="120"> - <img src="/images/ecosystem/logo-m2m-alliance.png" width="120"> - <img src="/images/ecosystem/logo-openhab.png" width="120"> - <img src="/images/ecosystem/logo-sierra.png" width="120"> - <img src="/images/ecosystem/logo-ubuntu.png" width="120"> - </div> - </div> + <div class="container"> + <div class="row"> + <div class="span10 offset1" id="members"> + <img src="/images/ecosystem/logo-2lemetry.png" width="120"> + <img src="/images/ecosystem/logo-actuate.png" width="120"> + <img src="/images/ecosystem/logo-dtag.png" width="120"> + <img src="/images/ecosystem/logo-bitreactive.png" width="120"> + <img src="/images/ecosystem/logo-dcsquare.png" width="120"> + <img src="/images/ecosystem/logo-eurotech.png" width="120"> + <img src="/images/ecosystem/logo-ibh.png" width="120"> + <img src="/images/ecosystem/logo-ibm.png" width="120"> + <img src="/images/ecosystem/logo-laas.png" width="120"> + <img src="/images/ecosystem/logo-m2m-alliance.png" width="120"> + <img src="/images/ecosystem/logo-openhab.png" width="120"> + <img src="/images/ecosystem/logo-sierra.png" width="120"> + <img src="/images/ecosystem/logo-ubuntu.png" width="120"> + </div> </div> + </div> </div> + </main> + + <footer> - <div class="footer"> - <div class="container"> - <div class="row"> - <div class="span4"> - <ul> - <li><a href="/">Home</a> - </li> - <li><a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a> - </li> - <li><a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a> - </li> - <li><a href="http://www.eclipse.org/legal/copyright.php" target="_blank">Copyright Agent</a> - </li> - <li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a> - </li> - <li><a href="/contact.html" data-toggle="modal" data-target="#contact-modal">Contact Us</a> - </li> - <li class="pull-right">Copyright © 2015 The Eclipse Foundation. All Rights Reserved.</li> - </ul> - </div> - <div class="span8"> - <p class="right">Copyright © 2014 The Eclipse Foundation. All Rights Reserved.</p> - </div> - </div> + <div class="container"> + <div class="row"> + <div class="col-md-6"> + <nav> + <ul class="list-inline menu"> + <li><a href="#">Technology</a> + </li> + <li><a href="#">Community</a> + </li> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + </ul> + <li><a href="/ecosystem">Members</a> + </li> + <li><a href="#">Getting Started</a> + </li> + </ul> + </nav> + <div class="socials"> + <a href="#" class="social-facebook"> </a> + <a href="#" class="social-twitter"> </a> + <a href="#" class="social-youtube"> </a> + <a href="#" class="social-share"> </a> + </div> </div> + <div class="col-md-6"> + <p class="copyright">Copyright © 2015 The Eclipse Foundation. All Rights Reserved.</p> + </div> + </div> </div> + </footer> + - <!-- JS is at the end of the document so the pages load faster --> - <script src="/js/jquery.js"></script> - <script src="js/bootstrap/bootstrap.min.js"></script> - <script src="/js/shuffle.js"></script> + <!-- JS is at the end of the document so the pages load faster --> + <script src="/js/jquery.js"></script> + <script src="js/bootstrap/bootstrap.min.js"></script> + <script src="/js/shuffle.js"></script> - <script type="text/javascript"> - $(document).ready(function() { - $('#members').shuffle(); - }); - </script> + <script type="text/javascript"> + $(document).ready(function() { + $('#members').shuffle(); + }); + </script> </body> diff --git a/java/open-iot-stack-for-java.html b/java/open-iot-stack-for-java.html index 416389fc18b7feb270ac21cc04d75c961f2ea02d..464eff53bda2a9a5e96723d74e34c63fb4c2c53e 100644 --- a/java/open-iot-stack-for-java.html +++ b/java/open-iot-stack-for-java.html @@ -2,118 +2,132 @@ <html lang="en"> <head> - <meta http-equiv="content-type" content="text/html; charset=UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <title>iot.eclipse.org — Open IoT Stack for Java</title> - <meta name="description" content="Open IoT Stack for Java"> - <meta name="author" content="Eclipse.org"> - <link rel="author" href="humans.txt" /> - - <!-- Le HTML5 shim, for IE6-8 support of HTML elements --> - <!--[if lt IE 9]> + <meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>iot.eclipse.org — Open IoT Stack for Java</title> + <meta name="description" content="Open IoT Stack for Java"> + <meta name="author" content="Eclipse.org"> + <link rel="author" href="humans.txt" /> + + <!-- Le HTML5 shim, for IE6-8 support of HTML elements --> + <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> - <!-- Custom Fonts --> - <link href='http://fonts.googleapis.com/css?family=Lato:300,400' rel='stylesheet' type='text/css'> - <link href='http://fonts.googleapis.com/css?family=Lekton:400,700' rel='stylesheet' type='text/css'> + <!-- Bootstrap --> + <link href="/assets/css/bootstrap.css" rel="stylesheet"> - <!-- Le styles --> - <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet"> - <link href="/css/theme.css" rel="stylesheet"> - <link href="/css/bootstrap/bootstrap-responsive.min.css" rel="stylesheet"> - <link href="../stylesheet/prism.css" rel="stylesheet" /> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-594061-11']); + _gaq.push(['_trackPageview']); - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-594061-11']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); - ga.type = 'text/javascript'; - ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(ga, s); - })(); - </script> + (function() { + var ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); + })(); + </script> </head> <body> - <div class="navbar navbar-fixed-top"> - <div class="navbar-inner"> - <div class="container"> - <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> - </a> <a class="brand" href="/index.html">iot.eclipse.org</a> - <div class="nav-collapse"> - <ul class="nav"> - <li><a href="/frameworks.html">Services & Frameworks</a> - </li> - <li><a href="/protocols.html">Protocols</a> - </li> - <li><a href="/tools.html">Tools</a> - </li> - <li><a href="/community.html">Community</a> - </li> - <li><a href="/ecosystem.html">Ecosystem</a> - </li> - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">See it live <b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/demo" class="active">Live Demo</a> - </li> - <li><a href="/sandbox.html">Sandbox</a> - </li> - </ul> - </li> - </ul> - <ul class="nav pull-right"> - <li> - <div style="padding-top: 20px;"> - <div class="g-plusone" data-href="http://iot.eclipse.org/"></div> - </div> - </li> - </ul> - </div> - <!--/.nav-collapse --> - </div> + <header> + <nav class="navbar"> + <div class="container"> + <div class="row"> + <div class="col-sm-2"> + <a href="/"><img src="/assets/images/iot-logo.png"> + </a> + </div> + <div class="col-sm-10"> + <ul class="list-inline right menu"> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Technology</a> + <ul class="dropdown-menu"> + <li><a href="/standards">Standards</a> + </li> + <li><a href="/frameworks">Service & Frameworks</a> + </li> + <li><a href="/projects">All the projects</a> + </li> + </ul> + </li> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + </ul> + </li> + + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + </ul> + </li> + <li><a href="/ecosystem">Members</a> + </li> + <li><a href="#">Getting Started</a> + </li> + </ul> + </div> </div> - </div> + </div> + </nav> - <!-- Place this tag after the last +1 button tag. --> - <script type="text/javascript"> - (function() { - var po = document.createElement('script'); - po.type = 'text/javascript'; - po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(po, s); - })(); - </script> - <div class="container"> - <div class="well"> - <div class="page-header"> - <h1> - Open IoT Stack for Java - </h1> - </div> - <div class="lead"> - <p>The Internet of Things (IoT) is all about connecting devices, sensors and actuators to the Internet. By some estimates 20+ billion “things†such as automobiles, wearables, homes, industrial factories, etc. will be connected to the Internet. It is an incredible opportunity to modernize existing ‘legacy’ machines and systems and also create new innovative connected “things.â€</p> - </div> + </header> + + <!-- Place this tag after the last +1 button tag. --> + <script type="text/javascript"> + (function() { + var po = document.createElement('script'); + po.type = 'text/javascript'; + po.async = true; + po.src = 'https://apis.google.com/js/plusone.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(po, s); + })(); + </script> + + <main class="main"> + + + + <div class="well"> + <div class="container"> + <h1>Open IoT Stack for Java </h1> + + <div class="lead"> + <p>The Internet of Things (IoT) is all about connecting devices, sensors and actuators to the Internet. By some estimates 20+ billion “things†such as automobiles, wearables, homes, industrial factories, etc. will be connected to the Internet. It is an incredible opportunity to modernize existing ‘legacy’ machines and systems and also create new innovative connected “things.â€</p> </div> + </div> + </div> + + + <section class="first"> + <div class="container"> + <p>A key challenge to making IoT a reality is the complexity of implementing an IoT solution. For example, to develop an IoT solution, the developers need to deal with different types of hardware platforms, implement and manage the IoT gateways that connect the devices to the Internet, manage connectivity and network issues, and integrate the IoT data with existing enterprise systems and databases and many other issues. </p> <p>An important way to reduce the complexity of IoT solutions is to create reusable building blocks and frameworks that abstract and implement key IoT features. The lack of reusable building blocks means developers are required to re-implement common functionalities for each IoT solution. This is similar to the start of the World Wide Web (WWW), where developers were required to create their own HTTP web server. Now there are open source HTTP servers (ex. Apache) that everyone use instead of creating their own.</p> <p>For IoT to be successful, we need a consistent set of open source frameworks that anyone can use.</p> <div class="row-fluid"> - <div class="span12 pagination-centered"><img src="images/vision.png" alt="Vision" /> - </div> + <div class="span12 pagination-centered"><img src="images/vision.png" alt="Vision" /> + </div> </div> <h2 style="margin-top: .5em;">Connect with Open Standards</h2> @@ -122,9 +136,9 @@ <p>The Open IoT Stack for Java developers provides support for some of the key IoT open standards, including MQTT, CoAP and Lightweight M2M. These are the standards that help to connect and manage the devices at the heart of an IoT solution. The following Eclipse projects provide open source implementations of these standards:</p> <ul> - <li>MQTT: Eclipse <a href="https://eclipse.org/paho" target="_blank">Paho</a> provides the MQTT client implementation in Java, C, C++. JavaScript, Python, etc. Eclipse <a href="https://eclipse.org/mosquitto" target="_blank">Mosquitto</a> is an MQTT broker implemented in C</li> - <li>CoAP: Eclipse <a href="https://eclipse.org/californium" target="_blank">Californium</a> implements the CoAP standard in Java, including DTLS support</li> - <li>Lightweight M2M: Eclipse <a href="https://eclipse.org/wakaama" target="_blank">Wakaama</a> implements the LWM2M client support in C/C++, and <a href="https://projects.eclipse.org/proposals/leshan" target="_blank">Leshan</a> provide a Java-based LWM2M server</li> + <li>MQTT: Eclipse <a href="https://eclipse.org/paho" target="_blank">Paho</a> provides the MQTT client implementation in Java, C, C++. JavaScript, Python, etc. Eclipse <a href="https://eclipse.org/mosquitto" target="_blank">Mosquitto</a> is an MQTT broker implemented in C</li> + <li>CoAP: Eclipse <a href="https://eclipse.org/californium" target="_blank">Californium</a> implements the CoAP standard in Java, including DTLS support</li> + <li>Lightweight M2M: Eclipse <a href="https://eclipse.org/wakaama" target="_blank">Wakaama</a> implements the LWM2M client support in C/C++, and <a href="https://projects.eclipse.org/proposals/leshan" target="_blank">Leshan</a> provide a Java-based LWM2M server</li> </ul> <h2>Connect and Manage with IoT Gateway Services</h2> @@ -133,10 +147,10 @@ <p>Eclipse <a href="https://eclipse.org/kura" target="_blank">Kura</a> is a Java and OSGi-based framework that implements services to</p> <ul> - <li>Manage cloud connectivity</li> - <li>Support different protocols to connect to different servers or devices (ex. MQTT, Serial, Modbus, CANbus)</li> - <li>Configure the network, such as Wi-Fi and cellular bearers, LAN, firewalling and routing, etc</li> - <li>Allow for remote application and device management and configuration</li> + <li>Manage cloud connectivity</li> + <li>Support different protocols to connect to different servers or devices (ex. MQTT, Serial, Modbus, CANbus)</li> + <li>Configure the network, such as Wi-Fi and cellular bearers, LAN, firewalling and routing, etc</li> + <li>Allow for remote application and device management and configuration</li> </ul> <h2>IoT Solution Frameworks</h2> @@ -152,36 +166,64 @@ <h3>Telco Service Providers</h3> <p>Eclipse <a href="https://eclipse.org/om2m" target="_blank">OM2M</a> is an implementation of the ETSI M2M standard. It provides a horizontal Service Capability Layer (SCL) that can be deployed in an M2M network, a gateway, or a device. Each SCL provides Application Enablement, Generic Communication, Reachability, Addressing and Repository, Interworking proxy, Entity Management, etc.</p> + </div> + </section> + </main> - <hr> - <footer> - <ul class="nav nav-pills"> - <li><a href="index.html">Home</a> - </li> - <li><a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a> - </li> - <li><a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a> - </li> - <li><a href="http://www.eclipse.org/legal/copyright.php" target="_blank">Copyright Agent</a> - </li> - <li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a> + + + <footer> + + <div class="container"> + <div class="row"> + <div class="col-md-6"> + <nav> + <ul class="list-inline menu"> + <li><a href="#">Technology</a> + </li> + <li><a href="#">Community</a> + </li> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + </ul> + <li><a href="/ecosystem">Members</a> </li> - <li><a href="contact.html" data-toggle="modal" data-target="#contact-modal">Contact Us</a> + <li><a href="#">Getting Started</a> </li> - <li class="pull-right">Copyright © 2015 The Eclipse Foundation. All Rights Reserved.</li> </ul> - </footer> - <div id="contact-modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="contact-label" aria-hidden="true" style="display: none;"></div> + </nav> + <div class="socials"> + <a href="#" class="social-facebook"> </a> + <a href="#" class="social-twitter"> </a> + <a href="#" class="social-youtube"> </a> + <a href="#" class="social-share"> </a> + </div> + </div> + <div class="col-md-6"> + <p class="copyright">Copyright © 2015 The Eclipse Foundation. All Rights Reserved.</p> + </div> + </div> </div> - <!-- /container --> - <!-- JS is at the end of the document so the pages load faster --> - <script src="/js/jquery.js"></script> - <script src="/js/bootstrap/bootstrap.min.js"></script> - <script src="/js/index.js"></script> - <script src="../js/prism.js"></script> + </footer> + + + + + <!-- JS is at the end of the document so the pages load faster --> + <script src="/js/jquery.js"></script> + <script src="/js/bootstrap/bootstrap.min.js"></script> + <script src="/js/index.js"></script> + + <script src="../js/prism.js"></script> </body> diff --git a/java/stylesheet/theme.css b/java/stylesheet/theme.css index 7839dd6b2f46df1ade52af1e27ae2c6954bc6d33..bcdc7741ce44026c1f5179aa75ea2d65102fdc56 100644 --- a/java/stylesheet/theme.css +++ b/java/stylesheet/theme.css @@ -1,189 +1,158 @@ -body, p, li, h1, h2, h3, h4, h5{ - font-family: 'Lato', sans-serif; +body, p, li, h1, h2, h3, h4, h5 { + /* font-family: 'Montserrat', sans-serif; +*/ +} +a { + transition: color 0.3s ease; +} +.header { + background-image: url(../images/header-bg.png); + background-size: cover; + background-position: top center; + text-align: center; + padding: 40px 0; +} +.header h1, .header p { + font-weight: 300; +} +.header h1 { + color: white; + text-transform: uppercase; + font-size: 60px; + margin: 40px 0 20px; +} +.header p { + color: white !important; + font-size: 27px; + line-height: 1.4; + font-weight: 300; +} +.list-inline { + display: block; + position: relative; + left: 0; + float: left; + margin: 0 10px 0 0; + list-style: none; +} +.list-inline li { + float: left; + list-style: none; } - -a{ - transition: color 0.3s ease; -} - -.header{ - background-image:url(../images/header-bg.png); - background-size: cover; - background-position: top center; - text-align: center; - padding:40px 0; -} - -.header h1, .header p{ - font-weight:300; -} - -.header h1{ - color:#dee8ef; - text-transform: uppercase; - font-size: 60px; - margin:40px 0 20px; -} - -.header p{ - color:#9899ac; - font-size: 27px; - line-height: 1.4; - font-weight: 300; -} - -.list-inline{ - display:block; - position: relative; - left: 0; - float: left; - margin: 0 10px 0 0; - list-style: none; -} -.list-inline li{ - float:left; - list-style: none; -} - button { - font-family: 'Sanchez', serif; - color:#ffffff; - background-color: #75b01e; - border-radius:3px; - border: none; - padding: 10px 20px; - margin:20px 0; - box-shadow: -3px 3px rgba(0,0,0,0.2); - transition: background-color 0.3s ease; + font-family: 'Sanchez', serif; + color: #ffffff; + background-color: #75b01e; + border-radius: 3px; + border: none; + padding: 10px 20px; + margin: 20px 0; + box-shadow: -3px 3px rgba(0, 0, 0, 0.2); + transition: background-color 0.3s ease; } - button:hover { - background-color:#5C9704; + background-color: #5C9704; } - -button i.fa{ - /*font-size: 18px; +button i.fa { + /*font-size: 18px; margin: 0 0 0 5px;*/ } - -.icons-1,.icons-2{ - text-align:center; -} - -.icons-1{ - background-color:#f4f3f3; - width:100%; -} - -.icons-2{ - background-color:#fff; - width:100%; -} - -.icons-1 h2,.icons-2 h2{ - text-transform: uppercase; - font-weight: 300; - color:#474646; - border:none; - margin-top:40px; -} - -.icons-1 p,.icons-2 p{ - font-weight: 300; - color:#474646; - font-size: 21px; - line-height: 1.4; -} - - -.discover{ - background-image:url('../images/discover-bg.png'); - background-position: top center; - background-size: cover; - padding:40px 0; - text-align:center; +.icons-1, .icons-2 { + text-align: center; +} +.icons-1 { + background-color: #f4f3f3; + width: 100%; +} +.icons-2 { + background-color: #fff; + width: 100%; +} +.icons-1 h2, .icons-2 h2 { + text-transform: uppercase; + font-weight: 300; + color: #474646; + border: none; + margin-top: 40px; +} +.icons-1 p, .icons-2 p { + font-weight: 300; + color: #474646; + font-size: 21px; + line-height: 1.4; +} +.discover { + background-image: url('../images/discover-bg.png'); + background-position: top center; + background-size: cover; + padding: 40px 0; + text-align: center; +} +.discover h2 { + text-transform: uppercase; + font-size: 60px; + color: #dee8ef; + font-weight: 300; + border: none; +} +.discover p { + font-size: 21px; + line-height: 1.4; + color: #dee8ef; + font-weight: 300; +} +.logos { + background: #f4f3f3; + padding: 0px 0 40px; +} +.footer { + background-image: url('../images/footer-bg.png'); + background-position: top center; + background-size: cover; + color: #d6d6d6; + font-weight: 300; +} +.footer ul { + list-style: none +} +.footer ul li { + list-style: none; + text-transform: uppercase; + margin-bottom: 10px; +} +.footer ul li a { + color: #d6d6d6; +} +.footer ul li a:hover { + color: #838383; +} +.footer p { + text-transform: uppercase; + font-style: italic; +} +.left { + float: left; +} +.right { + float: right; } - -.discover h2{ - text-transform: uppercase; - font-size: 60px; - color:#dee8ef; - font-weight: 300; - border:none; -} -.discover p{ - font-size: 21px; - line-height: 1.4; - color:#dee8ef; - font-weight: 300; -} - -.logos{ - background: #f4f3f3; - padding:0px 0 40px; -} - -.footer{ - background-image: url('../images/footer-bg.png'); - background-position:top center; - background-size: cover; - color:#d6d6d6; - font-weight: 300; -} - -.footer ul{ - list-style: none -} - -.footer ul li{ - list-style:none; - text-transform: uppercase; - margin-bottom:10px; -} - -.footer ul li a{ - color:#d6d6d6; -} - -.footer ul li a:hover{ - color:#838383; -} - -.footer p{ - text-transform: uppercase; - font-style: italic; -} - - -.left{ - float:left; -} - -.right{ - float:right; -} - /** added Benjamin **/ #members { - text-align: center; + text-align: center; } - #members img { - margin: 1.5em 2em; + margin: 1.5em 2em; } - .container ul li { - margin-left: 0.8em; + margin-left: 0.8em; } - @media (max-width: 960px) { - body { - padding-right: 0px; - padding-left: 0px; - } - - .header h1 { - font-size: 48px; - } + body { + padding-right: 0px; + padding-left: 0px; + } + .header h1 { + font-size: 48px; + } } diff --git a/java/tutorial/index.html b/java/tutorial/index.html index 4d37c7db30f451a4d53c65c44e1f7628b33764b8..bdc6adaff993bb70c28645a41da54691e7a67700 100644 --- a/java/tutorial/index.html +++ b/java/tutorial/index.html @@ -2,159 +2,153 @@ <html lang="en"> <head> - <meta http-equiv="content-type" content="text/html; charset=UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <title>iot.eclipse.org — Eclipse IoT Greenhouse tutorial</title> - <meta name="description" content="Eclipse IoT Greenhouse tutorial"> - <meta name="author" content="Eclipse.org"> - <link rel="author" href="humans.txt" /> - - <!-- Le HTML5 shim, for IE6-8 support of HTML elements --> - <!--[if lt IE 9]> + <meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>iot.eclipse.org — Eclipse IoT Greenhouse tutorial</title> + <meta name="description" content="Eclipse IoT Greenhouse tutorial"> + <meta name="author" content="Eclipse.org"> + <link rel="author" href="humans.txt" /> + + <!-- Le HTML5 shim, for IE6-8 support of HTML elements --> + <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> - <!-- Custom Fonts --> - <link href='http://fonts.googleapis.com/css?family=Lato:300,400' rel='stylesheet' type='text/css'> - <link href='http://fonts.googleapis.com/css?family=Lekton:400,700' rel='stylesheet' type='text/css'> - - <!-- Le styles --> - <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet"> - <link href="/css/theme.css" rel="stylesheet"> - <link href="/css/bootstrap/bootstrap-responsive.min.css" rel="stylesheet"> - <link href="../stylesheet/prism.css" rel="stylesheet" /> - <link href="../stylesheet/bootstrap-lightbox.min.css" rel="stylesheet" /> - - <style type="text/css"> - .container h4 { - margin-left: 3em; - } - .container h4:before { - content: "> "; - } - img.fleft { - float: left; - width: 200px; - margin-right: 2em; - margin-bottom: 1em; - } - </style> - - <script type="text/javascript"> - var _gaq = _gaq || []; - _gaq.push(['_setAccount', 'UA-594061-11']); - _gaq.push(['_trackPageview']); - - (function() { - var ga = document.createElement('script'); - ga.type = 'text/javascript'; - ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(ga, s); - })(); - </script> + + <!-- Bootstrap --> + <link href="/assets/css/bootstrap.css" rel="stylesheet"> + + + <link href="../stylesheet/prism.css" rel="stylesheet" /> + <link href="../stylesheet/bootstrap-lightbox.min.css" rel="stylesheet" /> + + <style type="text/css"> + .container h4 { + margin-left: 3em; + } + .container h4:before { + content: "> "; + } + img.fleft { + float: left; + width: 200px; + margin-right: 2em; + margin-bottom: 1em; + } + </style> + + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-594061-11']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); + })(); + </script> </head> <body> - <div class="navbar navbar-fixed-top"> - <div class="navbar-inner"> - <div class="container"> - <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> - </a> <a class="brand" href="/index.html">iot.eclipse.org</a> - - - <div class="nav-collapse"> - <ul class="nav"> - <li class="dropdown active"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Technology <b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/frameworks.html">Services & Frameworks</a> - </li> - <li><a href="/protocols.html">Protocols</a> - </li> - <li><a href="/tools.html">Tools</a> - </li> - <li class="divider"></li> - <li class="active"><a href="/java"><strong>Open IoT Stack for Java</strong></a> - </li> - </ul> - </li> - - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Community <b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/community.html#projects">Projects</a> - </li> - <li><a href="/community.html#news">News</a> - </li> - <li class="divider"></li> - <li><a href="/open-iot-challenge">Open IoT Challenge </a> - </li> - </ul> - </li> - - <li><a href="/ecosystem.html">Ecosystem</a> - </li> - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">See it live <b class="caret"></b></a> - <ul class="dropdown-menu"> - <li><a href="/demo">Live Demo</a> - </li> - <li><a href="/sandbox.html">Sandbox</a> - </li> - </ul> - </li> - </ul> - - <ul class="nav pull-right"> - <li style="margin-left:0px;"> - <div style="padding-top: 20px"> - <div class="g-plusone" data-href="http://iot.eclipse.org/"></div> - </div> - </li> - </ul> - </div> - <!--/.nav-collapse --> - - </div> + <header> + <nav class="navbar"> + <div class="container"> + <div class="row"> + <div class="col-sm-2"> + <a href="/"><img src="/assets/images/iot-logo.png"> + </a> + </div> + <div class="col-sm-10"> + <ul class="list-inline right menu"> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Technology</a> + <ul class="dropdown-menu"> + <li><a href="/standards">Standards</a> + </li> + <li><a href="/frameworks">Service & Frameworks</a> + </li> + <li><a href="/projects">All the projects</a> + </li> + </ul> + </li> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + </ul> + </li> + + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + </ul> + </li> + <li><a href="/ecosystem">Members</a> + </li> + <li><a href="#">Getting Started</a> + </li> + </ul> + </div> </div> - </div> + </div> + </nav> + + </header> + + <!-- Place this tag after the last +1 button tag. --> + <script type="text/javascript"> + (function() { + var po = document.createElement('script'); + po.type = 'text/javascript'; + po.async = true; + po.src = 'https://apis.google.com/js/plusone.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(po, s); + })(); + </script> + + + + <main> + <div class="well"> + <div class="container"> + <h1>Using Eclipse Kura, MQTT and CoAP to build a smart + greenhouse</h1> + + <div class="lead"> + <p>Java is almost 20 years old, and has over the years gathered a very large community of developers that in turn fostered an even larger ecosystem of open-source components and frameworks.</p> + <p>Thanks to the recent efforts towards making Java a more than decent platform for embedded devices, as well as the help of Moore’s law always bringing more processing power to devices, everyone can benefit from two decades of innovation in the Java land to build IoT (Internet of Things) solutions.</p> - <!-- Place this tag after the last +1 button tag. --> - <script type="text/javascript"> - (function() { - var po = document.createElement('script'); - po.type = 'text/javascript'; - po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; - s.parentNode.insertBefore(po, s); - })(); - </script> - <div class="container"> - <div class="well"> - <div class="page-header"> - <h1>Using Eclipse Kura, MQTT and CoAP to build a smart - greenhouse</h1> - </div> - <div class="lead"> - <p>Java is almost 20 years old, and has over the years gathered a very large community of developers that in turn fostered an even larger ecosystem of open-source components and frameworks.</p> - <p>Thanks to the recent efforts towards making Java a more than decent platform for embedded devices, as well as the help of Moore’s law always bringing more processing power to devices, everyone can benefit from two decades of innovation in the Java land to build IoT (Internet of Things) solutions.</p> - </div> </div> + </div> + </div> + + <section class="first"> + <div class="container"> <p>It’s no news that there are many challenges when building an IoT application. One of the main challenges is to make sure that the application you’re building will be simple to operate once it is deployed on the field. It means you need to be able to perform many operations over-the-air, including things like:</p> <ul> - <li><b>changing the settings of your running application</b> – because a sensor you were attached to, for example, needs to be accessed with different settings,</li> - <li><b>deploying a new version of your application</b> – you found a nasty bug that causes your application to use all your tiny cellular data plan in minutes, so you want to deploy a hot-fix on your IoT gateway,</li> - <li><b>ensuring the gateway has proper access to the network</b> – because you care about your application and not necessarily about how you’ll actually get Internet connectivity, it’s important to have a framework taking care of your wireless modem of WiFi setup for you.</li> + <li><b>changing the settings of your running application</b> – because a sensor you were attached to, for example, needs to be accessed with different settings,</li> + <li><b>deploying a new version of your application</b> – you found a nasty bug that causes your application to use all your tiny cellular data plan in minutes, so you want to deploy a hot-fix on your IoT gateway,</li> + <li><b>ensuring the gateway has proper access to the network</b> – because you care about your application and not necessarily about how you’ll actually get Internet connectivity, it’s important to have a framework taking care of your wireless modem of WiFi setup for you.</li> </ul> <p> - <a href='http://eclipse.org/kura' />Eclipse Kura</a> is an <a href='http://iot.eclipse.org' />Eclipse IoT</a> project that provides a platform for building IoT gateways. It is a smart application container that enables remote management of such gateways and provides a wide range of APIs for allowing you to write and deploy your own IoT application. + <a href='http://eclipse.org/kura' />Eclipse Kura</a> is an <a href='http://iot.eclipse.org' />Eclipse IoT</a> project that provides a platform for building IoT gateways. It is a smart application container that enables remote management of such gateways and provides a wide range of APIs for allowing you to write and deploy your own IoT application. </p> <p>Kura runs on top of the Java Virtual Machine (JVM) and leverages OSGi, a dynamic component system for Java, to simplify the process of writing reusable software building blocks.</p> <p></p> @@ -165,18 +159,18 @@ <h3>Kura</h3> <p> - <img class="fleft" src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1406563851399_kura.png' /> + <img class="fleft" src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1406563851399_kura.png' /> </p> <p>Kura provides a Java/OSGi-based container for IoT applications running in service gateways. By installing Kura on a device, not only can you turn it into a powerful IoT router that can be managed remotely, but you also have access to a complete application framework for deploying custom applications. These applications leverage OSGi and Kura API for making it easy to access the underlying hardware (serial port, GPIOs, etc.), communicate with an IoT server backend, manage the runtime settings, etc. </p> <p></p> <p> - Learn more on Kura on the project’s website: <a href="https://www.eclipse.org/kura">https://www.eclipse.org/kura</a>. + Learn more on Kura on the project’s website: <a href="https://www.eclipse.org/kura">https://www.eclipse.org/kura</a>. </p> <p></p> <h3>MQTT and Paho</h3> <p> - <img class="fleft" src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1408377319893_hackpad.com_9EkDXF5JhoD_p.189956_1406300892088_paho.png' /> + <img class="fleft" src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1408377319893_hackpad.com_9EkDXF5JhoD_p.189956_1406300892088_paho.png' /> </p> <p>In order to make the greenhouse sensors data available to the Internet, and therefore allow 3rd party applications (mobile, web, etc.) to consume this data, we will use the MQTT protocol.</p> @@ -185,286 +179,311 @@ <p>Eclipse Paho is an open-source project that provides MQTT client implementations in many programming languages, and Kura is using Paho to provide high-level OSGi services for IoT communications between a gateway and the Internet. </p> <p></p> <p> - Learn more on Paho on the project’s website: <a href="https://www.eclipse.org/paho">https://www.eclipse.org/paho</a>. + Learn more on Paho on the project’s website: <a href="https://www.eclipse.org/paho">https://www.eclipse.org/paho</a>. </p> <p></p> <h3>CoAP and Californium</h3> <p> - <img class="fleft" style="width:100px" src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1408377341864_hackpad.com_9EkDXF5JhoD_p.189956_1406301003313_californium-180.png' /> + <img class="fleft" style="width:100px" src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1408377341864_hackpad.com_9EkDXF5JhoD_p.189956_1406301003313_californium-180.png' /> </p> <p> - CoAP (<b>Co</b>nstrained <b>A</b>pplication <b>P</b>rotocol) is a RESTful protocol targeting constrained embedded devices and wireless networks. CoAP essentially replicates the HTTP resource model on top of UDP using a binary, bandwidth-efficient, encoding. + CoAP (<b>Co</b>nstrained <b>A</b>pplication <b>P</b>rotocol) is a RESTful protocol targeting constrained embedded devices and wireless networks. CoAP essentially replicates the HTTP resource model on top of UDP using a binary, bandwidth-efficient, encoding. + + <p>Eclipse Californium provides a Java implementation of CoAP, together with a security library (Scandium) for DTLS. + <p> + Learn more on Californium on the project’s website: <a href="https://www.eclipse.org/californium">https://www.eclipse.org/californium</a>. + </p> + + <h2>What are we going to build?</h2> + + <p>Whether we are talking about industrial control, wearables, home automation, or any other field where IoT is relevant, the core principle is always the same: we want to connect a reasonably smart device coupled with sensors and actuators, to the Internet so as the sensors and actuators can be monitored and controlled remotely.</p> + <p>A very simplified version of such a smart device could be a connected greenhouse that allows you to monitor the current temperature from wherever you are in the world, as well as turn artificial lighting on and off – and that's exactly what we are going to build!</p> + + <h2>Setting up the hardware</h2> + + <h3>Shopping list</h3> + + <p>We’ve kept the list of hardware elements needed for the greenhouse to a minimum to make it easy for anyone with no electronics skills to build it.</p> + <p>Here is what you will need:</p> + <p> + <img class="img-responsive" src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1408377358810_hackpad.com_9EkDXF5JhoD_p.189956_1406297683547_hw.png' /> + </p> + <p></p> + <ul> + <li><b>Raspberry Pi Model B or B+</b> and an <b>SD card</b> (min. 4GB) with the latest Debian Linux distribution. Raspbian should be downloaded from the Raspberry Pi Foundation’s <a href='http://www.raspberrypi.org/downloads/' />Downloads page</a>, and + <a href='http://www.raspberrypi.org/documentation/installation/installing-images/README.md' />these instructions + </a> will help you put Raspbian on the SD Card.</li> + <li><b>Grove temperature & humidity sensor</b>,</li> + <li><b>Grove LED</b>,</li> + <li><b>4 pin Female Jumper to Grove 4 pin Conversion Cable</b>,</li> + <li><b>Ethernet cable.</b> + </li> + </ul> + <p> + You can easily order the parts from SeeedStudio thanks to the following wish list: <a href="http://tiny.cc/iot-greenhouse-parts"><code>http://tiny.cc/iot-greenhouse-parts</code></a>. + </p> + <p> + You can also check for a distributor next to you on this <a href='http://www.seeedstudio.com/depot/index.php?main_page=distributors'>web + page</a>. + </p> + <p></p> + + <h3>Assembling the Raspberry Pi and the sensors</h3> + + <p>As indicated earlier, the hardware setup should be really just take a couple of minutes. Before to actually perform the wiring of all the sensors, now is a good time to briefly explain how the Raspberry Pi can be augmented with external sensors. The row of pins, along the edge of the board, is programmable from the Linux system, is allow you to interact with various kinds of sensors you can connect to them. You should think of these GPIOs (General Purpose Input Outputs) as switches you can control from the Raspberry Pi (outputs), or that external sensors can control (inputs). Some of the pins are more sophisticated and allow the use of higher-level protocols to exchange more than on/off signals ; such protocols include SPI, I2C or UART, and we will indeed use an I2C temperature sensor in this tutorial. </p> + <p> + You can <a href='http://www.raspberrypi.org/documentation/usage/gpio/' />read more on GPIOs</a> in the official Raspberry Pi documentation. + </p> + <p></p> + <p>Now is time to hook up our temperature sensor and LED to the Raspberry Pi! The GPIO pins are numbered as follows (if you have a Raspberry Pi model B, no worries, the pin headers we’ll be using are the same):</p> + <p></p> + <p> + <img class="img-responsive" src='http://www.recantha.co.uk/blog/wp-content/uploads/2014/07/GPIO.png' /> + </p> + <p></p> + <ol> + <li>Connect the Grove cables to your temperature/humidity sensor and LED</li> + </ol> + <p> + <img class="img-responsive" src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1408547740131_sensors-with-cables.png' /> + </p> + <p></p> + <ol> + <li><b>⚠ Make sure that your Raspberry Pi is not + powered!</b> + </li> + <li><u>Temperature sensor</u>: + <br /> + <ul> + <li><code>BLACK</code> wire goes on <code>PIN#06</code> + </li> + <li><code>RED</code> wire goes on <code>PIN#01</code> + </li> + <li><code>YELLOW</code>wire goes on <code>PIN#05</code> + </li> + <li><code>WHITE</code>wire goes on <code>PIN#03</code> + </li> + </ul> + </li> + <li><u>LED</u>: + <br /> + + <ul> + <li><code>BLACK</code> wire goes on <code>PIN#14</code> + </li> + <li><code>RED</code> wire goes on <code>PIN#02</code> + </li> + <li><code>YELLOW</code>wire goes on <code>PIN#11</code> + </li> + <li>The <code>WHITE</code> wire is not used in the case of the LED – you only really need one pin to toggle a LED on or off, right? :-) – so you can leave it dangling or connect it to a Ground pin header. + </li> + </ul> + </li> + <li>Connect the Raspberry Pi to your home router or to your PC using the Ethernet cable.</li> + </ol> + <p>That’s all, really! Now let’s boot our Raspberry Pi for the first time and install Kura.</p> - <p>Eclipse Californium provides a Java implementation of CoAP, together with a security library (Scandium) for DTLS. - <p> - Learn more on Californium on the project’s website: <a href="https://www.eclipse.org/californium">https://www.eclipse.org/californium</a>. - </p> + <h3>Booting the Raspberry Pi for the first time</h3> - <h2>What are we going to build?</h2> + <h4>Expand filesystem</h4> - <p>Whether we are talking about industrial control, wearables, home automation, or any other field where IoT is relevant, the core principle is always the same: we want to connect a reasonably smart device coupled with sensors and actuators, to the Internet so as the sensors and actuators can be monitored and controlled remotely.</p> - <p>A very simplified version of such a smart device could be a connected greenhouse that allows you to monitor the current temperature from wherever you are in the world, as well as turn artificial lighting on and off – and that's exactly what we are going to build!</p> + <p>After the first boot completes, make sure to run the configuration utility and expand the filesystem.</p> + <p></p> - <h2>Setting up the hardware</h2> + <pre><code class="language-bash">sudo raspi-config</code></pre> - <h3>Shopping list</h3> + <p> + <img class="img-responsive" src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1410192008723_raspi-config.png' /> + </p> - <p>We’ve kept the list of hardware elements needed for the greenhouse to a minimum to make it easy for anyone with no electronics skills to build it.</p> - <p>Here is what you will need:</p> - <p> - <img src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1408377358810_hackpad.com_9EkDXF5JhoD_p.189956_1406297683547_hw.png' /> - </p> - <p></p> - <ul> - <li><b>Raspberry Pi Model B or B+</b> and an <b>SD card</b> (min. 4GB) with the latest Debian Linux distribution. Raspbian should be downloaded from the Raspberry Pi Foundation’s <a href='http://www.raspberrypi.org/downloads/' />Downloads page</a>, and - <a href='http://www.raspberrypi.org/documentation/installation/installing-images/README.md' />these instructions - </a> will help you put Raspbian on the SD Card.</li> - <li><b>Grove temperature & humidity sensor</b>,</li> - <li><b>Grove LED</b>,</li> - <li><b>4 pin Female Jumper to Grove 4 pin Conversion Cable</b>,</li> - <li><b>Ethernet cable.</b> - </li> - </ul> - <p> - You can easily order the parts from SeeedStudio thanks to the following wish list: <a href="http://tiny.cc/iot-greenhouse-parts"><code>http://tiny.cc/iot-greenhouse-parts</code></a>. - </p> - <p> - You can also check for a distributor next to you on this <a href='http://www.seeedstudio.com/depot/index.php?main_page=distributors'>web - page</a>. - </p> - <p></p> - - <h3>Assembling the Raspberry Pi and the sensors</h3> - - <p>As indicated earlier, the hardware setup should be really just take a couple of minutes. Before to actually perform the wiring of all the sensors, now is a good time to briefly explain how the Raspberry Pi can be augmented with external sensors. The row of pins, along the edge of the board, is programmable from the Linux system, is allow you to interact with various kinds of sensors you can connect to them. You should think of these GPIOs (General Purpose Input Outputs) as switches you can control from the Raspberry Pi (outputs), or that external sensors can control (inputs). Some of the pins are more sophisticated and allow the use of higher-level protocols to exchange more than on/off signals ; such protocols include SPI, I2C or UART, and we will indeed use an I2C temperature sensor in this tutorial. </p> - <p> - You can <a href='http://www.raspberrypi.org/documentation/usage/gpio/' />read more on GPIOs</a> in the official Raspberry Pi documentation. - </p> - <p></p> - <p>Now is time to hook up our temperature sensor and LED to the Raspberry Pi! The GPIO pins are numbered as follows (if you have a Raspberry Pi model B, no worries, the pin headers we’ll be using are the same):</p> - <p></p> - <p> - <img src='http://www.recantha.co.uk/blog/wp-content/uploads/2014/07/GPIO.png' /> - </p> - <p></p> - <ol> - <li>Connect the Grove cables to your temperature/humidity sensor and LED</li> - </ol> - <p> - <img src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1408547740131_sensors-with-cables.png' /> - </p> - <p></p> - <ol> - <li><b>⚠ Make sure that your Raspberry Pi is not - powered!</b> - </li> - <li><u>Temperature sensor</u>: - <br /> - <ul> - <li><code>BLACK</code> wire goes on <code>PIN#06</code> - </li> - <li><code>RED</code> wire goes on <code>PIN#01</code> - </li> - <li><code>YELLOW</code>wire goes on <code>PIN#05</code> - </li> - <li><code>WHITE</code>wire goes on <code>PIN#03</code> - </li> - </ul> - </li> - <li><u>LED</u>: - <br /> - - <ul> - <li><code>BLACK</code> wire goes on <code>PIN#14</code> - </li> - <li><code>RED</code> wire goes on <code>PIN#02</code> - </li> - <li><code>YELLOW</code>wire goes on <code>PIN#11</code> - </li> - <li>The <code>WHITE</code> wire is not used in the case of the LED – you only really need one pin to toggle a LED on or off, right? :-) – so you can leave it dangling or connect it to a Ground pin header. - </li> - </ul> - </li> - <li>Connect the Raspberry Pi to your home router or to your PC using the Ethernet cable.</li> - </ol> - <p>That’s all, really! Now let’s boot our Raspberry Pi for the first time and install Kura.</p> - - <h3>Booting the Raspberry Pi for the first time</h3> - - <h4>Expand filesystem</h4> - - <p>After the first boot completes, make sure to run the configuration utility and expand the filesystem.</p> - <p></p> - - <pre><code class="language-bash">sudo raspi-config</code></pre> - - <p> - <img src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1410192008723_raspi-config.png' /> - </p> - - <h4>Enable i2c</h4> - - <p>You need to make sure to enable the Linux modules that will allow us to do i2c communications. Enter the following command:</p> - - <pre><code class="language-bash">sudo nano /etc/modules</code></pre> - - <p>and add these two lines to the end of the file:</p> - - <pre><code class="language-bash">i2c-bcm2708 + <h4>Enable i2c</h4> + + <p>You need to make sure to enable the Linux modules that will allow us to do i2c communications. Enter the following command:</p> + + <pre><code class="language-bash">sudo nano /etc/modules</code></pre> + + <p>and add these two lines to the end of the file:</p> + + <pre><code class="language-bash">i2c-bcm2708 i2c-dev</code></pre> - <p>You need to reboot for the changes to be applied.</p> + <p>You need to reboot for the changes to be applied.</p> - <h3>Installing Eclipse Kura on the Raspberry Pi</h3> + <h3>Installing Eclipse Kura on the Raspberry Pi</h3> - <p>It is really easy to install Kura on your Raspberry Pi. It is actually as simple as installing any other Debian package.</p> - <p>Assuming you are properly logged in on your Raspberry Pi, here’s how to install Kura:</p> - <p></p> + <p>It is really easy to install Kura on your Raspberry Pi. It is actually as simple as installing any other Debian package.</p> + <p>Assuming you are properly logged in on your Raspberry Pi, here’s how to install Kura:</p> + <p></p> - <pre><code class="language-bash">cd ~ + <pre><code class="language-bash">cd ~ sudo apt-get update # let's make sure Debian repositories descriptions are up-to-date wget https://s3.amazonaws.com/kura_downloads/raspbian/release/1.0.0/kura_1.0.0_raspberry-pi_armv6.deb sudo dpkg -i kura_1.0.0_raspberry-pi_armv6.deb</code></pre> - <p>dpkg will complain about missing dependencies, and will fail. Indeed, Kura depends on some packages that you probably don’t have on your Raspberry Pi, so we must tell Aptitude to download those automatically for us:</p> + <p>dpkg will complain about missing dependencies, and will fail. Indeed, Kura depends on some packages that you probably don’t have on your Raspberry Pi, so we must tell Aptitude to download those automatically for us:</p> + + <pre><code class="language-bash">sudo apt-get install -f</code></pre> + + <p>You should now reboot your Raspberry Pi to make sure all the Kura services are properly started.</p> + + <pre><code class="language-bash">sudo reboot</code></pre> + + <p> + In order to confirm that Kura is properly installed, you can try accessing its web UI from your favorite web browser. The URL should be something like: <code>http://my-raspberry-pi/kura</code>, default credentials are: <code>admin</code> / <code>admin</code>. + </p> + <p> + <img class="img-responsive" src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1409907331696_kura post install.png' /> + </p> + <p></p> + <h2>Deploying a ready-to-use greenhouse application</h2> + <p>Before diving deeper into how to use the Kura application framework for developing your own application, let’s see by ourselves how easy it is to deploy an application in Kura.</p> + <p>Kura relies on the OSGi Deployment Admin standard to allow software packages to be managed. A deployment package is essentially a ZIP file containing a set of OSGi bundles and a Manifest providing the name, version, etc. of the application.</p> + <p></p> + <p>We have already prepared a software package containing the application that allows to control the greenhouse over MQTT or CoAP. + </p> + <p></p> + + <h3>Installing the application from Kura web UI</h3> + + <p>If you correctly followed the previous steps, Kura should be now up and running on your Raspberry Pi, and you should be able to access its web-based administration interface from your browser.</p> + <ul> + <li>Navigate the "Packages" entry of the web UI</li> + <li>Click the "Install/Upgrade" button and enter the following address in the "URL" tab of the popup dialog: <code>http://iot.eclipse.org/java/demo/org.eclipse.greenhouse.iot-0.1.0.dp</code> + </li> + <li>Refresh your web browser and notice there is a new entry in the Services section on the left-hand side: Greenhouse Publisher.</li> + </ul> + + <h3>Configuring the application</h3> + + <p> + Kura allows to easily manage the settings of the installed software components from its web UI, together with the ability to save <i>snapshots</i> of those settings that can be re-applied if and when needed. It is also possible to manage the settings over the air, by publishing specific MQTT messages to the broker the Kura gateway is configured to talk to. + </p> + <p>Here are the settings you need to adjust:</p> + <ul> + <li>In the <b>MqttDataTransport</b> section, you need to change the <i>broker-url</i> to: <code>mqtt://iot.eclipse.org:1883/</code>- other settings can remain unchanged, + </li> + <li>In the <b>DataService</b> section, you want to make sure that the MQTT communication is automatically established when Kura starts, by setting <b>connect.auto-on-startup</b> to true, + </li> + <li>Finally, you have to change the prefix of the MQTT topic for the data related to the greenhouse. In the <b>Greenhouse + Publisher</b> section, set <b>publish.appTopicPrefix</b> to whatever seems like a good name for your greenhouse (e.g. <code>javaonedemo/bob-greenhouse</code>)! + </li> + </ul> + <h3>Communicating with the greenhouse remotely</h3> + <p>Now that Kura and our Greenhouse application are properly configured, the current temperature is actually published over MQTT, and it’s also possible to toggle the LED by publishing a message on a specific topic.</p> + <p> + The easiest way for you to control your now IoT-ized Raspberry Pi + greenhouse combo is to use a Web UI that uses MQTT over WebSockets to display the temperature and control the LED. + </p> + <p> + Simply replace the end of the URL with the topic prefix you picked earlier (for the example earlier, the URL would be <code><a + href="http://iot.eclipse.org/java/demo/app/#/greenhouses/remote/bob-greenhouse">http://iot.eclipse.org/java/demo/app/#/greenhouses/remote/bob-greenhouse</a></code>) + </p> + <p> + <img class="img-responsive" src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1410350332293_angular-remote.png' /> + </p> + <p></p> + <p>Hopefully, you’re now more familiar with Kura, and we encourage you to play around with the Web UI to learn more about its capabilities in terms of network management, device-to-cloud communication, etc.</p> + <p>If you’d like to actually use the Kura application framework to develop your own IoT application, you may want to check out the source code of the "Greenhouse" app you've deployed earlier – it's <a href="https://github.com/kartben/kura-greenhouse-demo" target="_blank">on Github<a>.</p> + <p></p> - <pre><code class="language-bash">sudo apt-get install -f</code></pre> + <h2>Going further</h2> + <p></p> - <p>You should now reboot your Raspberry Pi to make sure all the Kura services are properly started.</p> + <h3>Build your own greenhouse!</h3> - <pre><code class="language-bash">sudo reboot</code></pre> + <p> + Head over to <a href='http://www.thingiverse.com/thing:144791' />Thingiverse</a> and download the blueprints of the acrylic greenhouse below. With them, just use the online laser-cutting service of your choice or <a href='https://www.fablabs.io/map' />go to a local Fab Lab</a> to get all the pieces cut from a sheet of plexiglas! It shouldn’t cost you more than $20. + </p> + <p> + <img class="img-responsive" src='http://thingiverse-production.s3.amazonaws.com/renders/a2/da/2f/b4/01/untitled_preview_featured.jpg' /> + </p> + <ul style="list-style: none;"> + <li> + <br /> + </li> + </ul> - <p> - In order to confirm that Kura is properly installed, you can try accessing its web UI from your favorite web browser. The URL should be something like: <code>http://my-raspberry-pi/kura</code>, default credentials are: <code>admin</code> / <code>admin</code>. - </p> - <p> - <img src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1409907331696_kura post install.png' /> - </p> - <p></p> - <h2>Deploying a ready-to-use greenhouse application</h2> - <p>Before diving deeper into how to use the Kura application framework for developing your own application, let’s see by ourselves how easy it is to deploy an application in Kura.</p> - <p>Kura relies on the OSGi Deployment Admin standard to allow software packages to be managed. A deployment package is essentially a ZIP file containing a set of OSGi bundles and a Manifest providing the name, version, etc. of the application.</p> - <p></p> - <p>We have already prepared a software package containing the application that allows to control the greenhouse over MQTT or CoAP. - </p> - <p></p> + <h3>Retrieve the humidity</h3> - <h3>Installing the application from Kura web UI</h3> + <p> + Similarly to how we retrieved the temperature, you could refer to the + <a href="http://www.hoperf.cn/upload/sensor/TH02_V1.1.pdf">sensor’s + datasheet</a> to implement the proper I2C code to read the humidity. See in particular Section <b>3.1.1. Performing a Relative Humidity + Measurement</b>. + </p> - <p>If you correctly followed the previous steps, Kura should be now up and running on your Raspberry Pi, and you should be able to access its web-based administration interface from your browser.</p> - <ul> - <li>Navigate the "Packages" entry of the web UI</li> - <li>Click the "Install/Upgrade" button and enter the following address in the "URL" tab of the popup dialog: <code>http://iot.eclipse.org/java/demo/org.eclipse.greenhouse.iot-0.1.0.dp</code> - </li> - <li>Refresh your web browser and notice there is a new entry in the Services section on the left-hand side: Greenhouse Publisher.</li> - </ul> + <h3>Use other I2C sensors</h3> - <h3>Configuring the application</h3> + <p>The great thing with I2C sensors is that it’s really easy to hook up several of them on the same host device. Just use your imagination and explore what you could do if you were to use a luminosity, barometric pressure, or carbon dioxide sensor!</p> - <p> - Kura allows to easily manage the settings of the installed software components from its web UI, together with the ability to save <i>snapshots</i> of those settings that can be re-applied if and when needed. It is also possible to manage the settings over the air, by publishing specific MQTT messages to the broker the Kura gateway is configured to talk to. - </p> - <p>Here are the settings you need to adjust:</p> - <ul> - <li>In the <b>MqttDataTransport</b> section, you need to change the <i>broker-url</i> to: <code>mqtt://iot.eclipse.org:1883/</code>- other settings can remain unchanged, - </li> - <li>In the <b>DataService</b> section, you want to make sure that the MQTT communication is automatically established when Kura starts, by setting <b>connect.auto-on-startup</b> to true, - </li> - <li>Finally, you have to change the prefix of the MQTT topic for the data related to the greenhouse. In the <b>Greenhouse - Publisher</b> section, set <b>publish.appTopicPrefix</b> to whatever seems like a good name for your greenhouse (e.g. <code>javaonedemo/bob-greenhouse</code>)! - </li> - </ul> - <h3>Communicating with the greenhouse remotely</h3> - <p>Now that Kura and our Greenhouse application are properly configured, the current temperature is actually published over MQTT, and it’s also possible to toggle the LED by publishing a message on a specific topic.</p> - <p> - The easiest way for you to control your now IoT-ized Raspberry Pi + greenhouse combo is to use a Web UI that uses MQTT over WebSockets to display the temperature and control the LED. - </p> - <p> - Simply replace the end of the URL with the topic prefix you picked earlier (for the example earlier, the URL would be <code><a - href="http://iot.eclipse.org/java/demo/app/#/greenhouses/remote/bob-greenhouse">http://iot.eclipse.org/java/demo/app/#/greenhouses/remote/bob-greenhouse</a></code>) - </p> - <p> - <img src='https://hackpad-attachments.s3.amazonaws.com/hackpad.com_9EkDXF5JhoD_p.189956_1410350332293_angular-remote.png' /> - </p> - <p></p> - <p>Hopefully, you’re now more familiar with Kura, and we encourage you to play around with the Web UI to learn more about its capabilities in terms of network management, device-to-cloud communication, etc.</p> - <p>If you’d like to actually use the Kura application framework to develop your own IoT application, you may want to check out the source code of the "Greenhouse" app you've deployed earlier – it's <a href="https://github.com/kartben/kura-greenhouse-demo" target="_blank">on Github<a>.</p> - <p></p> - - <h2>Going further</h2> - <p></p> - - <h3>Build your own greenhouse!</h3> - - <p> - Head over to <a href='http://www.thingiverse.com/thing:144791' />Thingiverse</a> and download the blueprints of the acrylic greenhouse below. With them, just use the online laser-cutting service of your choice or <a href='https://www.fablabs.io/map' />go to a local Fab Lab</a> to get all the pieces cut from a sheet of plexiglas! It shouldn’t cost you more than $20. - </p> - <p> - <img src='http://thingiverse-production.s3.amazonaws.com/renders/a2/da/2f/b4/01/untitled_preview_featured.jpg' /> - </p> - <ul style="list-style: none;"> - <li> - <br /> - </li> - </ul> + <h3>Use Kura’s CloudService to publish data</h3> + + <p> + The <b>CloudService</b> leverages Google Protocol Buffers to provide a very efficient binary communication between the Kura gateway and an IoT server. Browse the documentation of the <a href='http://download.eclipse.org/kura/releases/0.7.1/docs/apidocs/org/eclipse/kura/cloud/CloudClient.html' />CloudClient</a> + and <a href='http://download.eclipse.org/kura/releases/0.7.1/docs/apidocs/org/eclipse/kura/message/KuraPayload.html' />KuraPayload</a> + APIs to learn more. + </p> + + <h3>Setup a 6LoWPAN network</h3> + + <p>If you’re familiar with 802.15.4 Wireless Sensor Networks, you could easily setup your Raspberry Pi as a border router, that would expose the CoAP server on its radio interface. You could then use e.g. Contiki and the Erbium CoAP client to write a simple app that will run on a mote and talk CoAP to read the temperature, or control the LED!</p> - <h3>Retrieve the humidity</h3> - - <p> - Similarly to how we retrieved the temperature, you could refer to the - <a href="http://www.hoperf.cn/upload/sensor/TH02_V1.1.pdf">sensor’s - datasheet</a> to implement the proper I2C code to read the humidity. See in particular Section <b>3.1.1. Performing a Relative Humidity - Measurement</b>. - </p> - - <h3>Use other I2C sensors</h3> - - <p>The great thing with I2C sensors is that it’s really easy to hook up several of them on the same host device. Just use your imagination and explore what you could do if you were to use a luminosity, barometric pressure, or carbon dioxide sensor!</p> - - <h3>Use Kura’s CloudService to publish data</h3> - - <p> - The <b>CloudService</b> leverages Google Protocol Buffers to provide a very efficient binary communication between the Kura gateway and an IoT server. Browse the documentation of the <a href='http://download.eclipse.org/kura/releases/0.7.1/docs/apidocs/org/eclipse/kura/cloud/CloudClient.html' />CloudClient</a> - and <a href='http://download.eclipse.org/kura/releases/0.7.1/docs/apidocs/org/eclipse/kura/message/KuraPayload.html' />KuraPayload</a> - APIs to learn more. - </p> - - <h3>Setup a 6LoWPAN network</h3> - - <p>If you’re familiar with 802.15.4 Wireless Sensor Networks, you could easily setup your Raspberry Pi as a border router, that would expose the CoAP server on its radio interface. You could then use e.g. Contiki and the Erbium CoAP client to write a simple app that will run on a mote and talk CoAP to read the temperature, or control the LED!</p> - - - <hr> - <footer> - <ul class="nav nav-pills"> - <li><a href="index.html">Home</a> - </li> - <li><a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a> - </li> - <li><a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a> - </li> - <li><a href="http://www.eclipse.org/legal/copyright.php" target="_blank">Copyright Agent</a> - </li> - <li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a> - </li> - <li><a href="contact.html" data-toggle="modal" data-target="#contact-modal">Contact Us</a> - </li> - <li class="pull-right">Copyright © 2015 The Eclipse Foundation. All Rights Reserved.</li> - </ul> - </footer> - <div id="contact-modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="contact-label" aria-hidden="true" style="display: none;"></div> + </section> + </main> + + + <footer> + + <div class="container"> + <div class="row"> + <div class="col-md-6"> + <nav> + <ul class="list-inline menu"> + <li><a href="#">Technology</a> + </li> + <li><a href="#">Community</a> + </li> + <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Community</a> + <ul class="dropdown-menu"> + <li><a href="#">Resources</a> + </li> + <li><a href="#">News</a> + </li> + <li><a href="#">Events</a> + </li> + </ul> + <li><a href="/ecosystem">Members</a> + </li> + <li><a href="#">Getting Started</a> + </li> + </ul> + </nav> + <div class="socials"> + <a href="#" class="social-facebook"> </a> + <a href="#" class="social-twitter"> </a> + <a href="#" class="social-youtube"> </a> + <a href="#" class="social-share"> </a> + </div> + </div> + <div class="col-md-6"> + <p class="copyright">Copyright © 2015 The Eclipse Foundation. All Rights Reserved.</p> + </div> + </div> </div> - <!-- /container --> - <!-- JS is at the end of the document so the pages load faster --> - <script src="/js/jquery.js"></script> - <script src="/js/bootstrap/bootstrap.min.js"></script> - <script src="/js/index.js"></script> - <script src="../js/prism.js"></script> - <script src="../js/bootstrap-lightbox.min.js"></script> + </footer> + + + + <!-- JS is at the end of the document so the pages load faster --> + <script src="/js/jquery.js"></script> + <script src="/js/bootstrap/bootstrap.min.js"></script> + <script src="/js/index.js"></script> + + <script src="../js/prism.js"></script> + <script src="../js/bootstrap-lightbox.min.js"></script> </body>