<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

    <title>XMPP-IoT</title>
    <generator uri="https://github.com/jekyll/jekyll">Jekyll v3.3.1</generator>
		<icon>//www.xmpp-iot.org/apple-touch-icon-precomposed.png</icon>
    <subtitle>How XMPP can solve the IoT puzzle</subtitle>
    <link href="//www.xmpp-iot.org/atom.xml" rel="self"/>
    <link href="//www.xmpp-iot.org/" rel="alternate" type="text/html"/>
    <updated>2017-03-05T22:06:41+00:00</updated>
    <id>//www.xmpp-iot.org/</id>
    <author>
			<name>Joachim Lindborg</name>
			<uri>//www.xmpp-iot.org/</uri>
			<email>joachim.lindborg@lsys.se</email>
		</author>

    
    <entry>
        <title>Java smack tutorial</title>
        <link href="//www.xmpp-iot.org/tutorials/java-tutorial/"/>
        <updated>2017-02-05T00:00:00+00:00</updated>
        <id>//www.xmpp-iot.org/tutorials/java-tutorial</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;This tutorial will be created during the Google summer of code 2017. You who starts with the teaser tasks are encouraged to help out in finishing this tutorial in how to get smack up and running togheter with the extensions. TIP you could use the other tutorials as inputs or outputs&lt;/p&gt;

&lt;p&gt;#Preparations&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;start with the smack XMPP library&lt;/li&gt;
  &lt;li&gt;look at the other tutorials&lt;/li&gt;
  &lt;li&gt;create two clients that reads and writes values to eachother&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;read-a-value&quot;&gt;Read a value&lt;/h1&gt;

&lt;p&gt;To be added&lt;/p&gt;

&lt;h1 id=&quot;write-a-value&quot;&gt;Write a value&lt;/h1&gt;

&lt;p&gt;To be added&lt;/p&gt;

        </content>
    </entry>
    
    <entry>
        <title>Read and Write to Devices With Converse.js</title>
        <link href="//www.xmpp-iot.org/tutorials/read-and-write-to-devices-with-converse-js/"/>
        <updated>2015-08-20T17:59:14+00:00</updated>
        <id>//www.xmpp-iot.org/tutorials/read-and-write-to-devices-with-converse-js</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;This tutorial is regarding using Converse.Js to read values and write values to devices, and also retrieve history of fields.&lt;/p&gt;

&lt;h2 id=&quot;getting-started&quot;&gt;Getting Started&lt;/h2&gt;

&lt;p&gt;Follow the instructions given &lt;a href=&quot;https://conversejs.org/docs/html/quickstart.html&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use this &lt;a href=&quot;https://github.com/adhish20/converse.js/blob/dev_iot/builds/converse.js&quot;&gt;converse.js file&lt;/a&gt; instead of the one given in above link.&lt;/p&gt;

&lt;h2 id=&quot;start-with-logging-into-an-xmpp-account&quot;&gt;Start with logging into an XMPP account&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Log into your xmpp account.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Contacts  will be displayed with an Icon to their left.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;These icons determine the type of contacts (Sensor Devices, Control Devices or Contacts)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Open a Chatbox with a Device.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;We have used &lt;a href=&quot;https://conversejs.org/docs/html/features.html#commands&quot;&gt;Command Feature&lt;/a&gt; to implement the functions.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;reading-values-from-a-device&quot;&gt;Reading Values from a Device&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;It works for Sensor as well as Control Devices.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The command for reading a value is ‘/read’.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;It will display the fields stored in the device along with their present values. Like this :&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/read.png&quot; alt=&quot;Read Requests&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;writing-value-to-a-field&quot;&gt;Writing Value to a Field&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;It works for Control Devices.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;First perform a Read to know the FieldNames.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The command for writing a Value to a FieldName is ‘/write FieldName Value’.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Now you can again perform a Read to check if the Value for that FieldName is changed. Like this :&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/write1.png&quot; alt=&quot;Write Requests Step-1&quot; /&gt;
&lt;img src=&quot;/images/write2.png&quot; alt=&quot;Write Requests Step-2&quot; /&gt;
&lt;img src=&quot;/images/write3.png&quot; alt=&quot;Write Requests Step-3&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;history-retrieval-for-a-field&quot;&gt;History Retrieval for a Field&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;It works for Sensor as well as Control Devices for Fields that store their History.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The command to  retrieve Hisotry of a FieldName is ‘/history day/week/month/year FieldName’.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Output for the same looks like this:&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/history1.png&quot; alt=&quot;History Requests Step-1&quot; /&gt;
&lt;img src=&quot;/images/history2.png&quot; alt=&quot;History Requests Step-2&quot; /&gt;
&lt;img src=&quot;/images/history3.png&quot; alt=&quot;History Requests Step-3&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hope you like playing around with it :)&lt;/p&gt;

        </content>
    </entry>
    
    <entry>
        <title>IEA Cordova Application</title>
        <link href="//www.xmpp-iot.org/tutorials/iea-cordova-application/"/>
        <updated>2015-08-20T06:08:53+00:00</updated>
        <id>//www.xmpp-iot.org/tutorials/iea-cordova-application</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;This tutorial is regarding using IEA Cordova Mobile Application, which can be used to read values and write values to devices, and also retrieve history of fields.&lt;/p&gt;

&lt;h2 id=&quot;getting-started&quot;&gt;Getting Started&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;You need to install the application to your android device using latest apk file.&lt;/li&gt;
  &lt;li&gt;Home page looks like this :&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/login2.png&quot; alt=&quot;Login View&quot; width=&quot;360&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;start-with-logging-into-an-xmpp-account&quot;&gt;Start with logging into an XMPP account&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Login with any xmpp account. Online contacts along with the details of device, will be displayed for the contacts like this:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/contacts2.png&quot; alt=&quot;Retrieved Contacts VCard Display&quot; width=&quot;360&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;reading-values-from-a-device&quot;&gt;Reading Values from a Device&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Clicking on a device contact will perform a Read Operation, the fields stored in the device along with their value will appear as a drop down for the contact:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/read-mobile1.png&quot; alt=&quot;Read Values of a Device&quot; width=&quot;360&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;writing-value-to-a-field&quot;&gt;Writing Value to a Field&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;If a field is writable, we can edit its value and tap the ‘write’ button, to send a write to a field request to the device:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/write-mobile1.png&quot; alt=&quot;Write for App&quot; width=&quot;360&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;history-retrieval-for-a-field&quot;&gt;History Retrieval for a Field&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;If a field stores history of its values, tapping on the ‘fieldname’ will generate a graph based on the history of its values:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/history-mobile2.png&quot; alt=&quot;History Graph 1&quot; width=&quot;360&quot; /&gt;
&lt;img src=&quot;/images/history-mobile1.png&quot; alt=&quot;History Graph 2&quot; width=&quot;360&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hope you like playing around with it :)&lt;/p&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 12</title>
        <link href="//www.xmpp-iot.org/gsoc/week-12/"/>
        <updated>2015-08-19T13:46:36+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-12</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;history-logger-for-sensor-devices&quot;&gt;History Logger for Sensor Devices&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;Storing momentary data for Sensor Devices by a node that sends back History data stored by the Logger.&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Implementing IoT_Logger.py for SleekXMPP, which is basically an API for storing and Rerieving of Momentary Data collected from other resource of same device.&lt;/li&gt;
  &lt;li&gt;Implementing IoT_HistoryLogger.py for SleekXMPP:
    &lt;ul&gt;
      &lt;li&gt;It registers a new resource of the same device whose data is to be stored.&lt;/li&gt;
      &lt;li&gt;Sends a read request to the original device at regular intervals and stores the values using above mentioned API.&lt;/li&gt;
      &lt;li&gt;Recieves messages and respond back with history on receiving a history request by getting back data using the above mentioned API.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Also did a few changes to XEP-0323 Plugin of SleekXMPP for History Messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Results
&lt;img src=&quot;/images/logger.png&quot; alt=&quot;Logger&quot; width=&quot;900&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;gsoc-final-evaluation&quot;&gt;GSoC Final Evaluation&lt;/h2&gt;
&lt;p&gt;With this I conclude the modules made in ‘Prototyping IoT Tools’ Project for GSoC 2015. Will focus a little on Code Clean up and tutorials for the same.&lt;/p&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 11</title>
        <link href="//www.xmpp-iot.org/gsoc/week-11/"/>
        <updated>2015-08-12T14:29:03+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-11</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;client-device-logger&quot;&gt;Client-Device Logger&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;Logging momentary Data of a Sensor device using another resource of the same Jid.&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;2 resources of same device can interact with each other, without any subscription.&lt;/li&gt;
  &lt;li&gt;So basic idea is to write a Logging Python Script for SleekXMPP that runs with same Jid as some Sensor Device which keeps asking for its Momentary Data at particular intervals from the Device and stores it locally or in some Database ( InfluxDb ).&lt;/li&gt;
  &lt;li&gt;So that when asked for history, the actual resource gives momentary data, while the resource of Logger Script gives History Data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Road Ahead&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Complete this module and implement XEP-0326.&lt;/li&gt;
  &lt;li&gt;Write Tutorials for all Modules in this Project, made during GSoC 2015.&lt;/li&gt;
&lt;/ul&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 10</title>
        <link href="//www.xmpp-iot.org/gsoc/week-10/"/>
        <updated>2015-08-05T13:57:49+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-10</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;write-and-history-for-mobile-application&quot;&gt;Write and History for Mobile Application&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;Implementation of Write for Control Devices and History Retrieval for a Sensor Device.&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Implemented Write for numerical Fields.&lt;/li&gt;
  &lt;li&gt;Implemented History using Chart.js for Sensor devices which stores history.&lt;/li&gt;
  &lt;li&gt;History for a field is displayed as Graph on top of the Contacts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Problems Faced&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Setting up Proxy Settings for Gradle (Solved) : Gradle needs proxy settings in order to use maven for building Android Application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Final Output&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/write-mobile1.png&quot; alt=&quot;Write for App&quot; width=&quot;360&quot; /&gt;
&lt;img src=&quot;/images/history-mobile2.png&quot; alt=&quot;History Graph 1&quot; width=&quot;360&quot; /&gt;
&lt;img src=&quot;/images/history-mobile1.png&quot; alt=&quot;History Graph 2&quot; width=&quot;360&quot; /&gt;&lt;/p&gt;

&lt;p&gt;##Road Ahead&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Implementing History Retrieval for SleekXMPP.&lt;/li&gt;
&lt;/ul&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 9</title>
        <link href="//www.xmpp-iot.org/gsoc/week-9/"/>
        <updated>2015-07-29T08:13:56+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-9</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;vcard-css-changes-and-read-implementation-for-mobile-application&quot;&gt;VCard, CSS Changes and Read Implementation for Mobile Application&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;VCard stores the information of a User which is retrieved at the time when the roster is recieved. And Implement Read for Sensor Devices.&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We use the NickName and Image from the VCard for the Contacts View.&lt;/li&gt;
  &lt;li&gt;Bug Fix for Login Form Removal after the connection has been established.&lt;/li&gt;
  &lt;li&gt;CSS Changes for the Views.&lt;/li&gt;
  &lt;li&gt;Add Dynamic Event Listener for Tap on Contacts to send a Read Request.&lt;/li&gt;
  &lt;li&gt;Display Read Values as a Dropdown to the Device in the Contacts View.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Problems Faced&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;(Solved) Dynamic Event Handler was not working when using jQuery on(‘tap’) function. The problem was with the older version of jQuery, replacing it with the latest version solved the problem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Final Output&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/login2.png&quot; alt=&quot;Login View&quot; width=&quot;360&quot; /&gt;
&lt;img src=&quot;/images/contacts2.png&quot; alt=&quot;Retrieved Contacts VCard Display&quot; width=&quot;360&quot; /&gt;
&lt;img src=&quot;/images/read-mobile1.png&quot; alt=&quot;Read Values of a Device&quot; width=&quot;360&quot; /&gt;&lt;/p&gt;

&lt;p&gt;##Road Ahead&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Implement Write and History using a Graph Library.&lt;/li&gt;
  &lt;li&gt;CSS changes for Read Values.&lt;/li&gt;
  &lt;li&gt;Some functionality changes for adding contacts to Contacts View.&lt;/li&gt;
&lt;/ul&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 8</title>
        <link href="//www.xmpp-iot.org/gsoc/week-8/"/>
        <updated>2015-07-22T08:13:48+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-8</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;login-and-contact-retrieval-using-strophe-for-mobile-application&quot;&gt;Login and Contact Retrieval using Strophe for Mobile Application&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;Implementation of Mobile Application (Login, Roster and Presence).&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Related Info : https://github.com/alexstrat/PhoneGap-XMPPplugin-Android/&lt;/li&gt;
  &lt;li&gt;Tested Strophe Login using a hardcoded Script to connect to the BOSH Server with fixed Login Details.&lt;/li&gt;
  &lt;li&gt;Made a View for Login to enter Username and Password.&lt;/li&gt;
  &lt;li&gt;Problem : Login Form does not remove after Login is Successful.&lt;/li&gt;
  &lt;li&gt;Contacts Retrieved are displayed as Jid under the login Form.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Problems Faced and Bugs&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Bug : Login Form not removing.&lt;/li&gt;
  &lt;li&gt;Presence only received for one Device (Solved) : Occupied with this problem for quiet some time. Realized later that Handler needs to return true, otherwise they work only once.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Final Output&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/login1.png&quot; alt=&quot;Login View&quot; width=&quot;360&quot; /&gt;
&lt;img src=&quot;/images/contacts1.png&quot; alt=&quot;Retrieved Contacts Display&quot; width=&quot;360&quot; /&gt;&lt;/p&gt;

&lt;p&gt;##Road Ahead&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Retrieve VCard, Bug Fixes, Implement Read, CSS Changes.&lt;/li&gt;
&lt;/ul&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 7</title>
        <link href="//www.xmpp-iot.org/gsoc/week-7/"/>
        <updated>2015-07-15T06:56:41+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-7</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;learning-cordova-with-examples&quot;&gt;Learning Cordova with Examples&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://cordova.apache.org/&quot;&gt;Apache Cordova&lt;/a&gt; is a platform for building cross-platform applications using HTML, CSS and JavaScript.&lt;/p&gt;

&lt;p&gt;This week I have tried various examples in order to have a better understanding of Cordova for the purpose of making an IoT Client application for Android and Apple iOS.&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Made a starting application that shows a alert message on starting.&lt;/li&gt;
  &lt;li&gt;Directory Application that stores the information locally and implement search on it.&lt;/li&gt;
  &lt;li&gt;Learn View Routing on Cordova.&lt;/li&gt;
  &lt;li&gt;Understand how to use Location, Contacts and Camera APIs using Cordova.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Images from Example Application&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/directory.png&quot; alt=&quot;Directory&quot; width=&quot;360&quot; /&gt;
&lt;img src=&quot;/images/employee.png&quot; alt=&quot;Employee View&quot; width=&quot;360&quot; /&gt;&lt;/p&gt;

&lt;p&gt;##Road Ahead&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Start with implementation of Application(Login, Strophe Connection, Retrieve Contacts).&lt;/li&gt;
&lt;/ul&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 6</title>
        <link href="//www.xmpp-iot.org/gsoc/week-6/"/>
        <updated>2015-07-08T14:52:43+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-6</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;history-request-and-its-visualization-using-chartjs&quot;&gt;History Request and its Visualization using ChartJs&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;History Request is sent to a Device with a FieldName so as to read its values over a period of time. Visualizing these Values can be usefull in many ways, like predicting Temperature Change based on the Previous Values of Temperature.&lt;/p&gt;

&lt;p&gt;This Week we will use History to get Values of a Field over a period of time from a Device and Display them in the form of a Line Graph.&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Send a hardcoded History Query to a Device and get Values of Field over a particular period of Time.&lt;/li&gt;
  &lt;li&gt;Extend sending History Query from hardcoded to a command ‘/history day/week/month/year FieldName’ that can be sent to a device using ChatBox.&lt;/li&gt;
  &lt;li&gt;Parse the Message to Data of ChartJs Line Graph.&lt;/li&gt;
  &lt;li&gt;Display Graph as a message in the ChatBox.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Problems Faced and Work Arounds&lt;/p&gt;

&lt;p&gt;####History Command not receiving any messages.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;As this was a part of last week work, It was resolved by sending ‘SEQNR’ as a part of the History Query which is Unique Reference Number for the IQ to identify messages related to that IQ.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Final Output
&lt;img src=&quot;/images/history1.png&quot; alt=&quot;History Requests Step-1&quot; /&gt;
&lt;img src=&quot;/images/history2.png&quot; alt=&quot;History Requests Step-2&quot; /&gt;
&lt;img src=&quot;/images/history3.png&quot; alt=&quot;History Requests Step-3&quot; /&gt;&lt;/p&gt;

&lt;p&gt;##GSOC MID-EVALUATION WEEK&lt;/p&gt;

&lt;p&gt;So this is the time when the First GSOC Evaluation takes place. We have completed 90% of what was mentioned as part of Project Timeline. Also the Features Added to Converse can be tested by cloning dev_iot branch from here “https://github.com/adhish20/converse.js/tree/dev_iot” and setting up an Development Environment for it.&lt;/p&gt;

&lt;p&gt;##Road Ahead&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Making a Mobile Application of an IoT Client using Apache Cordova.&lt;/li&gt;
&lt;/ul&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 5</title>
        <link href="//www.xmpp-iot.org/gsoc/week-5/"/>
        <updated>2015-07-08T14:06:10+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-5</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;write-and-history-requests&quot;&gt;Write and History Requests&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;Write Request is sent to a Device JID to set a Field to a particular Numeric Value , for instance Relay of a Device, or “hue” of Philips Hue can be changed through a write command.&lt;/p&gt;

&lt;p&gt;History Request is sent to a Device with a FieldName so as to read its values over a period of time.&lt;/p&gt;

&lt;p&gt;This Week we will use Write to set numeric values to Device Fields and History to get Values of a Field over a period of time from a Device.&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Send a hardcoded Write Query to a Device and set a Field Value to a particular Value.&lt;/li&gt;
  &lt;li&gt;Extend sending Write Query from hardcoded to a command ‘/write FieldName Value’ that can be sent to a device using ChatBox.&lt;/li&gt;
  &lt;li&gt;Send a hardcoded History Query to a Device and get Values of Field over a particular period of Time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Problems Faced and Work Arounds&lt;/p&gt;

&lt;p&gt;####History Command not receiving any messages.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We tried sending various hardcoded History Queries to the Devices but they were not responding to the History Request.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Final Output
&lt;img src=&quot;/images/write1.png&quot; alt=&quot;Write Requests Step-1&quot; /&gt;
&lt;img src=&quot;/images/write2.png&quot; alt=&quot;Write Requests Step-2&quot; /&gt;
&lt;img src=&quot;/images/write3.png&quot; alt=&quot;Write Requests Step-3&quot; /&gt;&lt;/p&gt;

&lt;p&gt;##Road Ahead&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We will complete implementing History and use ChartJs to Visualize the History in the form of a Line Graph.&lt;/li&gt;
&lt;/ul&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 4</title>
        <link href="//www.xmpp-iot.org/gsoc/week-4/"/>
        <updated>2015-06-23T22:02:34+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-4</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;read-requests&quot;&gt;Read Requests&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;Read Request is sent to a Device JID to retrieve Numeric Values from them, for instance Temperature related Values from a Temperature Sensor Device. This Week we will use it to retrieve numeric values from Devices and get them displayed in ChatBoxes.&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Send a hardcoded Read Query to a Device and retrieve its values in the console.&lt;/li&gt;
  &lt;li&gt;Extend sending Read Query from hardcoded to a command ‘/read’ that can be sent to a device using ChatBox.&lt;/li&gt;
  &lt;li&gt;Parse the message coming back from the Device to Display the Name and Value of Device in ChatBox.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Problems Faced and Work Arounds&lt;/p&gt;

&lt;p&gt;####Inputs for Read Request&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;There was a similar problem to that of Disco Query, we were not sending resources when we began, and the device sent back an Error IQ which was resolved as soon as we figured out the same for Disco Query.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Final Output&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/read.png&quot; alt=&quot;Read Requests&quot; /&gt;&lt;/p&gt;

&lt;p&gt;##Road Ahead&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We will implement Write and write an API for Raspberry Pi 2 in JavaScript for next week.&lt;/li&gt;
&lt;/ul&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 3</title>
        <link href="//www.xmpp-iot.org/gsoc/week-3/"/>
        <updated>2015-06-18T20:47:42+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-3</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;disco-requests&quot;&gt;Disco Requests&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;Disco Query is sent to a JID to check for features related to the JID. This Week we will use it to identify Devices and the IoT Features that they support.&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Send Disco Query to all contacts as soon as a JID logs in.&lt;/li&gt;
  &lt;li&gt;Based on the features received from the contacts set ‘support_0323’ and ‘support_0325’ vars in the Contact Data Structure.&lt;/li&gt;
  &lt;li&gt;Set some Viewable Difference so as to Differentiate between Contacts and Devices Visually.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Problems Faced and Work Arounds&lt;/p&gt;

&lt;p&gt;####Inputs for Disco Query&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Initially we faced problem with Disco Query that was, We were not able to retrieve features for Devices, while it was working good with normal JIDs.&lt;/li&gt;
  &lt;li&gt;Disco not working for Devices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/disco_1.png&quot; alt=&quot;Disco not working for Devices&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Disco working for JIDs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/disco_2.png&quot; alt=&quot;Disco working for JIDs&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We figured out that the problem faced was because we were sending the Disco Query to Bare_JID instead of sending it to JID/resource.&lt;/li&gt;
  &lt;li&gt;Disco working for Devices after using Resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/disco_3.png&quot; alt=&quot;Disco working for Devices&quot; /&gt;&lt;/p&gt;

&lt;p&gt;####Visual Difference between Contacts and Devices&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We started with the Idea of having a different Tabs and Views for IoT Devices, which we were unable to do because of Contact Rendering Issues.&lt;/li&gt;
  &lt;li&gt;Then we had 2 ideas to replace the above which were to have a different Group for IoT Devices or have a Different Icon for Devices.&lt;/li&gt;
  &lt;li&gt;We settled down on having a Different Icon for Devices and that is a ‘Wrench’ Icon.&lt;/li&gt;
  &lt;li&gt;Successful Disco Request and View.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/disco.png&quot; alt=&quot;Successful Disco Request and View&quot; /&gt;&lt;/p&gt;

&lt;p&gt;##Road Ahead&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;For next week we will implement Read and Write for Devices.&lt;/li&gt;
&lt;/ul&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 2</title>
        <link href="//www.xmpp-iot.org/gsoc/week-2/"/>
        <updated>2015-06-10T13:46:07+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-2</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;identifying-devices-and-extending-client-to-all-webpages&quot;&gt;Identifying Devices and Extending Client to all WebPages&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;ConverseJs is a Chat Client that uses XMPP standards. We need to extend its support to &lt;a href=&quot;http://xmpp.org/extensions/xep-0323.html&quot;&gt;XEP-0323&lt;/a&gt; and &lt;a href=&quot;http://xmpp.org/extensions/xep-0325.html&quot;&gt;XEP-0325&lt;/a&gt; standards, so that the client can distinguish between friends and devices.&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Extended Chat Client to all Pages.&lt;/li&gt;
  &lt;li&gt;Instantiated our own BOSH Server at ‘http://jabber.sust.se/xmpp-httpbind/’.&lt;/li&gt;
  &lt;li&gt;Made a Script that uses XEP-0323 and XEP-0325 to distinguish between devices by sending a Disco Query.&lt;/li&gt;
  &lt;li&gt;This is the Sequence Diagram for a Successful IoT-Sensor Data Request.
&lt;img src=&quot;/images/xep-0323_success.png&quot; alt=&quot;Successful IoT-Sensor Data Request&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Road Ahead&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Set up a Different Tab for Devices which can read and write values to it.&lt;/li&gt;
  &lt;li&gt;Creating IoT Device APIs for Devices like intel edison, intel galileo, raspberry PI 2, beagle bone black, etc.&lt;/li&gt;
&lt;/ul&gt;

        </content>
    </entry>
    
    <entry>
        <title>Week 1</title>
        <link href="//www.xmpp-iot.org/gsoc/week-1/"/>
        <updated>2015-06-06T07:12:14+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/week-1</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;#Objective&lt;/p&gt;

&lt;h4 id=&quot;create-an-interactive-user-interface-for-web-visualisation-client&quot;&gt;Create an Interactive user interface for Web Visualisation Client&lt;/h4&gt;

&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;For the devices to interact with our website we need a chat client that uses XMPP Protocol.&lt;/p&gt;

&lt;p&gt;##Work&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Used Converse.js to implement a single page Chat Client on the homepage of &lt;a href=&quot;http://xmpp-iot.org/&quot;&gt;XMPP-IoT&lt;/a&gt; Website.&lt;/li&gt;
  &lt;li&gt;We have used the official &lt;a href=&quot;https://bind.jappix.com/&quot;&gt;Jappix binding (or BOSH) server&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Road Ahead&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Extend Chat Client to all Pages.&lt;/li&gt;
  &lt;li&gt;Instantiate our own BOSH Server.&lt;/li&gt;
  &lt;li&gt;Differentiate between Friends and Devices.&lt;/li&gt;
&lt;/ul&gt;

        </content>
    </entry>
    
    <entry>
        <title>Timeline</title>
        <link href="//www.xmpp-iot.org/gsoc/timeline/"/>
        <updated>2015-05-25T23:32:27+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/timeline</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;html&gt;
	&lt;body&gt;
		&lt;iframe src=&quot;../../timeline.html&quot; width=&quot;100%&quot; height=&quot;650&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;
	&lt;/body&gt;
&lt;/html&gt;


        </content>
    </entry>
    
    <entry>
        <title>Prototyping Tools for IoT - Project Proposal</title>
        <link href="//www.xmpp-iot.org/gsoc/project-proposal/"/>
        <updated>2015-05-11T11:20:57+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/project-proposal</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;##Abstract&lt;/p&gt;

&lt;p&gt;Internet of Things(IoT) is expected to offer advanced connectivity of devices, systems, and services that goes beyond machine-to-machine communications (M2M) and covers a variety of protocols, domains, and applications. We aim at making Tools and create a binding between SleekXMPP and various Devices like Netatmo,intel edison, intel galileo, raspberry PI 2, beagle bone black, etc. which can be controlled by means of Client Applications. Also to check compatibility between Devices, i.e. if they can Talk(exchange Data) between each other.&lt;/p&gt;

&lt;p&gt;##Description and Research&lt;/p&gt;

&lt;p&gt;The Project contains mainly 6 deliverables, those are:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;A web html/javascript based client that is used to visualise and control the devices created.&lt;/li&gt;
  &lt;li&gt;Python scripts toolkit to be run on different devices like raspberry pi, Netatmo etc.&lt;/li&gt;
  &lt;li&gt;An Access Rights Manager that manages what devices can talk to each other.&lt;/li&gt;
  &lt;li&gt;Adding Tutorials to xmpp-iot.org site for showing the wrking of above mentioned.&lt;/li&gt;
  &lt;li&gt;Client-Device Logger that Logs the data of the Device.&lt;/li&gt;
  &lt;li&gt;Implement a first version of the &lt;a href=&quot;http://xmpp.org/extensions/xep-0326.html&quot;&gt;XEP-0326&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;####1. Web Visualization Client&lt;/p&gt;

&lt;p&gt;The web client is a html, javascript xmpp client implemented using Strophe that connect to the xmpp network and through the roster it retrieves its friendship subscriptions that it uses to access xmpp endpoints that is devices.&lt;/p&gt;

&lt;p&gt;The Javascript is a web Client used to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Visualize data with graphs.&lt;/li&gt;
  &lt;li&gt;Reading values on demand.&lt;/li&gt;
  &lt;li&gt;Sending control commands to change values in the devices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use of &lt;a href=&quot;http://cordova.apache.org/&quot;&gt;Cordova&lt;/a&gt; in combination makes it possible to deliver the client as an native mobile application.&lt;/p&gt;

&lt;p&gt;It runs programs and access data that is stored on the server. Since we are working with Internet of Things(IoT), The device would act as a server for the Client Application where the Client would ask for values from the Device and can also receive Events from the Device.&lt;/p&gt;

&lt;p&gt;####2. Python Scripts Toolkit for different Devices&lt;/p&gt;

&lt;p&gt;Develop Binding between SleekXMPP and Devices for IoT with easy to use example scripts that serves as the Prototyping Tools. When somebody starts to create a device, they can use these scripts as the base for their devices.&lt;/p&gt;

&lt;p&gt;Functions needed by an IoT Device are :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Local Storage for Storage of Data and Values.&lt;/li&gt;
  &lt;li&gt;Easy Configurable I/O Management.&lt;/li&gt;
  &lt;li&gt;Type Conversions.&lt;/li&gt;
  &lt;li&gt;Access Security who can retrieve what Information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;####3. Access Rights Manager&lt;/p&gt;

&lt;p&gt;An application that would check for compatibility between Devices and making the exchange of Data more Secure, i.e. who can access what in which device is managed by this application. All this is according to Provisioning Things as in &lt;a href=&quot;http://xmpp.org/extensions/xep-0324.html&quot;&gt;XEP-0324&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;####4. Tutorials&lt;/p&gt;

&lt;p&gt;This would generally consist of Videos or Walkthroughs that can guide users on how to work with the Products that are being made as a part of the Project. which will be put on the &lt;a href=&quot;http://xmpp-iot.github.io/&quot;&gt;XMPP-IoT&lt;/a&gt; site.&lt;/p&gt;

&lt;p&gt;####5. Client-Device Logs&lt;/p&gt;

&lt;p&gt;A Network Storage that stores logs for “If you make friend with some client it will start logging data for your device”.&lt;/p&gt;

&lt;p&gt;####6. First Implementation of XEP-0326&lt;/p&gt;

&lt;p&gt;First Implementation of Hiding legacy systems through Concentrators as given in &lt;a href=&quot;http://xmpp.org/extensions/xep-0326.html&quot;&gt;XEP-0326&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;##Approach&lt;/p&gt;

&lt;p&gt;My initial work would deal with going through XEP-0323,  XEP-0325, XEP-0324 and XEP-0326 which explains how Reading of Things, Writing of Things, Provisioning of Things and Hiding Legacy systems through Concentrators respectively is done. That would form the basis of how the interaction between the devices work. The most complex task would be to create a good user interface that can be a base for others to build on and therefore i will provide more time to this. This would be my methodology of approaching the Project by learning more and more about it and making it the basis of my Implementation.&lt;/p&gt;

&lt;p&gt;There might be need of few external Libraries and APIs like for the Client we need Apache Cordova and Strophe and for Device Toolkits, I need to make API of devices that might include some external library depending upon its functionality.&lt;/p&gt;

&lt;p&gt;##Timeline&lt;/p&gt;

&lt;p&gt;#####Community Bonding Period&lt;/p&gt;

&lt;p&gt;Work on necessary documentation for understanding the Architectural and Functional requirements and design of the Deliverables and Come up with a definitive list of Devices. A primary list of Devices consists of intel edison, intel galileo, raspberry PI 2, beagle bone black.&lt;/p&gt;

&lt;p&gt;#####Week 1-2( 25 May - 7 June )&lt;/p&gt;

&lt;p&gt;Create an Interactive user interface for Web Visualisation Client using HTML, CSS.&lt;/p&gt;

&lt;p&gt;#####Week 3( 8 June - 14 June )&lt;/p&gt;

&lt;p&gt;Graph Visualiser for Web Client and extending Teaser Tasks(Relay and Make Friend Features) to the Web View.&lt;/p&gt;

&lt;p&gt;#####Week 4( 15 June - 21 June )&lt;/p&gt;

&lt;p&gt;Extending existing examples to other hardware platforms like for intel edison, intel galileo, raspberry PI 2, beagle bone black, etc.&lt;/p&gt;

&lt;p&gt;#####Week 5( 22 June - 28 June )&lt;/p&gt;

&lt;p&gt;Come up with a working HTML Client for devices and Access Rights Manager.&lt;/p&gt;

&lt;p&gt;#####Week 6( 29 June - 5 July )&lt;/p&gt;

&lt;p&gt;Catch Up for Mid Term Evaluation.&lt;/p&gt;

&lt;p&gt;#####Week 7-8( 6 July - 19 July )&lt;/p&gt;

&lt;p&gt;Make Web Client as Mobile Application using Cordova.&lt;/p&gt;

&lt;p&gt;#####Week 9( 20 July - 26 July )&lt;/p&gt;

&lt;p&gt;Create a Client-Device Logger that would log data for a device.&lt;/p&gt;

&lt;p&gt;#####Week 10-11( 27 July - 8 August )&lt;/p&gt;

&lt;p&gt;Make Tutorials and Implement XEP-0326.&lt;/p&gt;

&lt;p&gt;#####Week 12( 10 August - 16 August )&lt;/p&gt;

&lt;p&gt;Catch Up Week for all Deliverables.&lt;/p&gt;

&lt;p&gt;#####Week 13( 17 August - 23 August )&lt;/p&gt;

&lt;p&gt;Pencils Down Week, Improve Documentation for all the Products.&lt;/p&gt;

&lt;p&gt;##Project Blog&lt;/p&gt;

&lt;p&gt;All related stuff and Updates can be found at the &lt;a href=&quot;http://xmpp-iot.github.io/gsoc/&quot;&gt;XMPP IoT-GSoC Blog&lt;/a&gt;.&lt;/p&gt;

        </content>
    </entry>
    
    <entry>
        <title>Project Ideas</title>
        <link href="//www.xmpp-iot.org/gsoc/project-ideas/"/>
        <updated>2015-05-11T09:32:23+00:00</updated>
        <id>//www.xmpp-iot.org/gsoc/project-ideas</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;The XMPP community is part of the Google summer of Code 2015 and for XMPP-IoT we have several projects&lt;/p&gt;

&lt;p&gt;#What is this XMPP-IoT
There are many solutions how to connect Internet of Things (IoT) devices to internet, to create services and interesting applications. on this site you find an introduction to how we mimic the world of people chatting to enable &lt;strong&gt;any device to any device&lt;/strong&gt; interoperability. Supporting all usecases that IoT needs. Especially the possibility to be a way for companies to interact through federation.&lt;/p&gt;

&lt;p&gt;The projects are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://wiki.xmpp.org/web/Summer_of_Code_2015#Prototyping_tools.2C_for_Internet_of_Things_Using_SleekXMPP_and_Web&quot;&gt;prototyping tools with python and javascript&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://wiki.xmpp.org/web/Summer_of_Code_2015#Adding_XMPP-IoT_to_the_openHAB_smarthome_project_using_Smack&quot;&gt;Adding XMPP-iot to openHAB using java SMACK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The third IoT realted project is maintained by Process one&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://wiki.xmpp.org/web/Summer_of_Code_2015#Provisioning_and_registry_of_Things_.28IoT.29_for_ejabberd&quot;&gt;Provisioning and registry of Things for Ejabberd&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also propose others if you have an idea. post it to the chat room or mailing list&lt;/p&gt;

&lt;p&gt;#Talk to us!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We’d really like to talk with you a bit, so please come by the XSF’s GSoC MUC room at gsoc@muc.xmpp.org and have a chat. &lt;a href=&quot;http://logs.xmpp.org/gsoc&quot;&gt;you find the logs here&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://mail.jabber.org/mailman/listinfo/gsoc&quot;&gt;Join the gsoc maillist&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;there is also a twitter handle &lt;a href=&quot;https://twitter.com/XMPPIoT&quot;&gt;@XMPPIoT to be used&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Teaser tasks for prototyping tools&lt;/p&gt;

&lt;p&gt;To be able to quickly startup any project you need to have prototyping tools. Using python and javascript in combination gives you a very quick start on almost any device&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Run the sample scripts under the &lt;a href=&quot;http://xmpp-iot.github.io/tutorials/&quot;&gt;Tutorials&lt;/a&gt; And propose better ones to understand the concepts.&lt;/li&gt;
  &lt;li&gt;Create a python script “makingfriends” to manage friendship subscriptions between devices when you need several JID’s to be able to talk to each other.&lt;/li&gt;
  &lt;li&gt;Build a one to many chat room example of a device sending values to many devices in a MUC chatroom using XEP323 message stanzas&lt;/li&gt;
  &lt;li&gt;Look at the scripts avaliable in the &lt;a href=&quot;https://github.com/joachimlindborg/SleekXMPP/tree/xep_0323_325/examples/IoT&quot;&gt;SleekXMPP IoT examples&lt;/a&gt; especially the PhilipsHue. Create a mapping to another open API for a device.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Teaser tasks for openHAB&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://openhab.org/&quot;&gt;OpenHAB&lt;/a&gt; is an opensoruce project acting as a control environment for a smart home bridging between many different physical protocols.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;start an OpenHAB instance and trigger the XMPP module to send a plain chat message &lt;strong&gt;ex “Toggle”&lt;/strong&gt; or &lt;strong&gt;“relay=True”&lt;/strong&gt;.  This can be sent to another OpenHAB instance recieving the message and acting on it’s local variables. It can also be sent to the  &lt;a href=&quot;http://xmpp-iot.github.io/tutorials/python-tutorial/&quot;&gt;python script in the tutorial&lt;/a&gt; triggering a relay to “Toggle”.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Implement a first SMACK-extension for the  &lt;a href=&quot;http://xmpp.org/extensions/xep-0323.html&quot;&gt;XEP323 basic stanzas&lt;/a&gt;. First a read request.   &lt;a href=&quot;https://github.com/igniterealtime/Smack/tree/master/smack-extensions&quot;&gt;Smack extensions&lt;/a&gt; some more info &lt;a href=&quot;https://www.igniterealtime.org/builds/smack/docs/latest/documentation/extensions/index.html&quot;&gt;Smack docs&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is maintained by &lt;a href=&quot;http://lsys.se/&quot;&gt;Joachim Lindborg&lt;/a&gt;  member of the  &lt;a href=&quot;http://xmpp.org/about-xmpp/xsf/xsf-member-list/&quot;&gt;XMPP Extensions Foundation&lt;/a&gt;&lt;/p&gt;


        </content>
    </entry>
    
    <entry>
        <title>Being friend with  Philips Hue lights</title>
        <link href="//www.xmpp-iot.org/tutorials/python-philiphshue/"/>
        <updated>2015-01-29T00:00:00+00:00</updated>
        <id>//www.xmpp-iot.org/tutorials/python-philiphshue</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;This tutorial runs a python script on a raspberry, or the like, and
publishes a XMPP JID that you be friend with and then use both  &lt;a href=&quot;http://xmpp.org/extensions/xep-0323.html&quot;&gt;XEP 323&lt;/a&gt; read
and  &lt;a href=&quot;http://xmpp.org/extensions/xep-0325.html&quot;&gt;XEP 325&lt;/a&gt; control. But you can also use plain chat to interact with
the lamp through simple chat.&lt;/p&gt;

&lt;p&gt;#Preparations
you need an environment that can run python scripts.&lt;/p&gt;

&lt;h2 id=&quot;a-jid-for-each-lamp&quot;&gt;A JID for each lamp&lt;/h2&gt;
&lt;p&gt;You need one Jabber ID or JID for short. First setup these accounts
for each lamp on your favourite XMPP site for example [jabber.se] or
find one on any of the &lt;a href=&quot;https://xmpp.net/directory.php&quot;&gt;free public and secure XMPP sites&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;##Get the python code&lt;/p&gt;

&lt;p&gt;Clone the philipshue api and SleekXMPP code from github&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;git clone https://github.com/studioimaginaire/phue.git
Cloning into &lt;span class=&quot;s1&quot;&gt;'phue'&lt;/span&gt;...

&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;git clone -b xep_0323_325 https://github.com/joachimlindborg/SleekXMPP.git
Cloning into &lt;span class=&quot;s1&quot;&gt;'SleekXMPP'&lt;/span&gt;...&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2 id=&quot;start-the-hue-api-client&quot;&gt;start the Hue Api client&lt;/h2&gt;

&lt;p&gt;The script will try to connect to the local HUE gateway. If it cannot
get access the script will ask you to push the connect button. If It
is able to connect it will log on to the gateway. It uses the central
Philips Hue service to find the IP adress for the gateway&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Each lamp is known as “individual” so you start one script for each lamp.&lt;/li&gt;
  &lt;li&gt;If you don’t provide an individual you will adress the whole group
of lamps connected to the hue gateway&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;when the script starts the first time you need to press the button on
the Philipshue gateway to open access to it. Use a - - debug to get
more information&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;SleekXMPP/examples/IoT/
&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;python IoT_PhilipsHueApi.py -j john@your.domain.com -p password -n “John” --individual 1

INFO     Negotiating TLS
INFO     Using SSL version: 3
WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate COULD NOT BE VERIFIED.
INFO     JID &lt;span class=&quot;nb&quot;&gt;set &lt;/span&gt;to:  john@your.domain.com/544301500141697366520183
WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate
expiration COULD NOT BE VERIFIED.&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;you can now start chatting with the lamp by sending &lt;strong&gt;hi&lt;/strong&gt; or &lt;strong&gt;?&lt;/strong&gt; in
the chat window.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;SleekXMPP/examples/IoT/
&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;python IoT_PhilipsHueApi.py -j john@your.domain.com -p password -n “John” --individual 1

INFO     Negotiating TLS
INFO     Using SSL version: 3
WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate COULD NOT BE VERIFIED.
INFO     JID &lt;span class=&quot;nb&quot;&gt;set &lt;/span&gt;to:  john@your.domain.com/544301500141697366520183
WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate
expiration COULD NOT BE VERIFIED.&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;giving a debug flag would give more information&lt;/p&gt;

&lt;h1 id=&quot;reading-a-value-from-a-device&quot;&gt;Reading a value from a device&lt;/h1&gt;
&lt;p&gt;We now start a script that continiously reads values from the first.&lt;/p&gt;

&lt;h1 id=&quot;writing-a-value-to-a-device&quot;&gt;Writing a value to a device&lt;/h1&gt;
&lt;p&gt;keep the two scripts above running ans start a third one changing values in the sever device.&lt;/p&gt;

        </content>
    </entry>
    
    <entry>
        <title>Friendship between peers</title>
        <link href="//www.xmpp-iot.org/basics/being-friends/"/>
        <updated>2014-11-24T00:00:00+00:00</updated>
        <id>//www.xmpp-iot.org/basics/being-friends</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;The most basic concept of using XMPP is the notion of 
friends. To exchange data between two endpoints they need to be
friends. The friendship is in reality to peers subscribing to one and
eachothers precense&lt;sup id=&quot;fnref:precense&quot;&gt;&lt;a href=&quot;#fn:precense&quot; class=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; updates.&lt;/p&gt;

&lt;p&gt;##Friend request&lt;/p&gt;

&lt;p&gt;The friending process starts with one end point asking another for a
“precense subscription” &lt;a href=&quot;http://im.about.com/od/imfornewusers/ss/pidgin-account-adding-contacts.htm&quot;&gt;Pidgin example&lt;/a&gt;
The two enpoints can be in any domains &lt;strong&gt;my-thing@my-domain.com/resource_id&lt;/strong&gt; makes a request to &lt;strong&gt;your-thing@your-domain.com/&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;##Confirm request&lt;/p&gt;

&lt;p&gt;The enpoint confirms the request so now we have a single sided
subscription &lt;em&gt;my-thing&lt;/em&gt; will recieve precense updates from
&lt;em&gt;your-thing&lt;/em&gt;.  &lt;em&gt;your-thing&lt;/em&gt; now sends a “precense subscription”
back to &lt;em&gt;my-thing&lt;/em&gt; which inturn confirms the request.&lt;/p&gt;

&lt;p&gt;##Dual subscription&lt;/p&gt;

&lt;p&gt;The two enpoints now have a dual subscription in talking to each other
so they can now send read and write. The information is stored on the
servers in the peer’s rosters&lt;sup id=&quot;fnref:roster&quot;&gt;&lt;a href=&quot;#fn:roster&quot; class=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;new session the first thing you recieve is your roster, containing the
state of al your friend relations.&lt;/p&gt;

&lt;p&gt;##Having a Parent, Adding security&lt;/p&gt;

&lt;p&gt;The usage of friendship is very good if you are a human that can take your own descisions. But if we are a temp sensor we must talk to a trusted friend to ask for permissions.&lt;/p&gt;

&lt;p&gt;Every device can have a “best friend” or “parent” which is the trusted party that takes the descisions regarding the device possibilities to respond to friendship requests and access to specific fields.&lt;/p&gt;

&lt;p&gt;Using this way of endpoint security creates endless possibilities with
changing the ownership of devcices during first
commissioning[^commission] It can even support the usecase of
thirdparty delivering unnamed Things that you can buy in any store and then transfer them to be your own property&lt;/p&gt;

&lt;p&gt;[^commission] The process when a Thing recieves it first configuration.&lt;/p&gt;

&lt;p class=&quot;notice-inverse&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;JID (jabber id):&lt;/code&gt; Every account in the XMPP network have an identity that looks like an email adress it is a uniqe identifier in the domain this is called the Jabber ID or &lt;strong&gt;JID&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;notice-inverse&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Resource:&lt;/code&gt; For every login to a server a client will recive a &lt;strong&gt;Resource&lt;/strong&gt; this id is used to distinguish between the different session. For example you being logged in to the same account from your &lt;em&gt;ipad&lt;/em&gt;, &lt;em&gt;phone&lt;/em&gt;, &lt;em&gt;computer&lt;/em&gt; etc.
When working with Things it is seldom a Thing has several logins and resources but you should be aware of the possibility.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:precense&quot;&gt;
      &lt;p&gt;Your state being &lt;em&gt;online&lt;/em&gt;, &lt;em&gt;offline&lt;/em&gt;, &lt;em&gt;available&lt;/em&gt; etc&amp;nbsp;&lt;a href=&quot;#fnref:precense&quot; class=&quot;reversefootnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:roster&quot;&gt;
      &lt;p&gt;The storage of all your friends when you login and start a&amp;nbsp;&lt;a href=&quot;#fnref:roster&quot; class=&quot;reversefootnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;

        </content>
    </entry>
    
    <entry>
        <title>Hiding legacy systems</title>
        <link href="//www.xmpp-iot.org/basics/hiding-legacy/"/>
        <updated>2014-11-22T00:00:00+00:00</updated>
        <id>//www.xmpp-iot.org/basics/hiding-legacy</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;When talking to a peer you can assume it is a device or thing with node’s and fields. But behind that device there could be a whole legacy system. What if the peer you are talking &lt;em&gt;metering@utility.com&lt;/em&gt; is a big system of thousands of devices with many fields.&lt;/p&gt;

&lt;p&gt;XMPP-IoT give you the possibility to model your world in different ways we have talked of &lt;strong&gt;Nodes&lt;/strong&gt; and &lt;strong&gt;Fields&lt;/strong&gt; and that a device can have a flat level with many nodes with fields.&lt;/p&gt;

&lt;p&gt;The XMPP-IoT extension &lt;a href=&quot;http://xmpp.org/extensions/xep-0326.html&quot;&gt;XEP-326 Concentrators&lt;/a&gt; makes it possible to extend this with the possibility to describe any hiearchy physical and or logical.&lt;/p&gt;

&lt;p&gt;This makes it possible for a peer to investigate another peer and learn about the hiearchy of nodes and fields.&lt;/p&gt;

&lt;p&gt;##example hiding a legacy modbus system&lt;/p&gt;

&lt;p&gt;Modbus is a communication bus used in many industrial systems.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;pic on the setup&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We now model every device on the Modbus bus as a separate Node with Fields under a Datasource called Modbus&lt;/p&gt;


        </content>
    </entry>
    
    <entry>
        <title>Datamodel of things</title>
        <link href="//www.xmpp-iot.org/basics/Thing-datamodel/"/>
        <updated>2014-11-20T00:00:00+00:00</updated>
        <id>//www.xmpp-iot.org/basics/Thing-datamodel</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;In XMPP-IoT we have restricted a device to have a flat model consisting of one or many  &lt;strong&gt;Node&lt;/strong&gt; and each Node can have several &lt;strong&gt;Fields&lt;/strong&gt;. Each field conforms to a readable or writable value with an SI unit.&lt;/p&gt;

&lt;p&gt;If you would like to create a more complex device with recursive defintions of nodes you should describe them as a concentrator wich also is used to hide legacy systems.&lt;/p&gt;

&lt;h2 id=&quot;node&quot;&gt;Node&lt;/h2&gt;
&lt;p&gt;A node is a logical group of field with a unique name in the&lt;/p&gt;

&lt;h2 id=&quot;field&quot;&gt;Field&lt;/h2&gt;

        </content>
    </entry>
    
    <entry>
        <title>Glossary</title>
        <link href="//www.xmpp-iot.org/basics/Glossary/"/>
        <updated>2014-11-19T00:00:00+00:00</updated>
        <id>//www.xmpp-iot.org/basics/Glossary</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	

        </content>
    </entry>
    
    <entry>
        <title>Python Read and Write</title>
        <link href="//www.xmpp-iot.org/tutorials/python-tutorial/"/>
        <updated>2014-11-16T00:00:00+00:00</updated>
        <id>//www.xmpp-iot.org/tutorials/python-tutorial</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;This tutorial is very simple we start two sripts mimicing two devices
talking to each other one acting as a device with two values a PIR
motion sensor and a RELAY that can toggle “true” “false”.&lt;/p&gt;
&lt;figure&gt;
	&lt;a href=&quot;../../images/Script_to_script.png&quot;&gt;&lt;img src=&quot;../../images/Script_to_script.png&quot; /&gt;&lt;/a&gt;
	&lt;figcaption&gt;Two scripts talking&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h1 id=&quot;preparations&quot;&gt;Preparations&lt;/h1&gt;
&lt;p&gt;you need an environment that can run python scripts.&lt;/p&gt;

&lt;h2 id=&quot;two-friending-jids&quot;&gt;Two friending JID’s&lt;/h2&gt;
&lt;p&gt;Setup two accounts on your favourite XMPP site for example
jabber.se. Use any jabber client to test the accounts and make sure
they are friends.&lt;/p&gt;

&lt;h2 id=&quot;get-the-python-code&quot;&gt;Get the python code&lt;/h2&gt;

&lt;p&gt;Clone the code from github. Soon released through SleekXMPP&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;git clone -b xep_0323_325 https://github.com/joachimlindborg/SleekXMPP.git &lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2 id=&quot;start-the-server-device&quot;&gt;start the server device&lt;/h2&gt;

&lt;p&gt;go down to the IoT example catalog. And start one script&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;SleekXMPP/examples/IoT
&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;python IoT_TestDevice.py -j yourthing@jabber.se -p passwd -n &lt;span class=&quot;nb&quot;&gt;test
&lt;/span&gt;INFO     Negotiating TLS
INFO     Using SSL version: 3
WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate COULD NOT BE VERIFIED.
INFO     JID &lt;span class=&quot;nb&quot;&gt;set &lt;/span&gt;to: yourthing@jabber.se/544301500141697366520183
WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate expiration COULD NOT BE VERIFIED.&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;giving a - - debug flag would give more information&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;python IoT_TestDevice.py -j yourthing@jabber.se -p passwd -n &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt; --debug
DEBUG    Loaded Plugin: RFC 6120: Stream Feature: STARTTLS
DEBUG    Loaded Plugin: RFC 6120: Stream Feature: Resource Binding
DEBUG    Loaded Plugin: RFC 3920: Stream Feature: Start Session
DEBUG    Loaded Plugin: RFC 6121: Stream Feature: Roster Versioning
DEBUG    Loaded Plugin: RFC 6121: Stream Feature: Subscription Pre-Approval
DEBUG    Loaded Plugin: RFC 6120: Stream Feature: SASL
DEBUG    Loaded Plugin: XEP-0030: Service Discovery
DEBUG    Loaded Plugin: XEP-0323 Internet of Things - Sensor Data
DEBUG    Loaded Plugin: XEP-0325 Internet of Things - Control
DEBUG    Loaded Plugin: XEP-0199: XMPP Ping
DEBUG    Device object started nodeId &lt;span class=&quot;nb&quot;&gt;test
&lt;/span&gt;DEBUG    fields&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'Counter'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'dataType'&lt;/span&gt;: None, &lt;span class=&quot;s1&quot;&gt;'type'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'numeric'&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'unit'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'Count'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'Relay'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'dataType'&lt;/span&gt;: None, &lt;span class=&quot;s1&quot;&gt;'type'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'numeric'&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'unit'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'Bool'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}}&lt;/span&gt;
DEBUG    momentary&lt;span class=&quot;o&quot;&gt;{}&lt;/span&gt;
DEBUG    momentary updated&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'Counter'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'flags'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'momentary'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'true'&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'automaticReadout'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'true'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'value'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'0'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}}&lt;/span&gt;
DEBUG    fields&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'Counter'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'dataType'&lt;/span&gt;: None, &lt;span class=&quot;s1&quot;&gt;'type'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'numeric'&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'unit'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'Count'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'Relay'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'dataType'&lt;/span&gt;: None, &lt;span class=&quot;s1&quot;&gt;'type'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'numeric'&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'unit'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'Bool'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}}&lt;/span&gt;
DEBUG    momentary&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'Counter'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'flags'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'momentary'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'true'&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'automaticReadout'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'true'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'value'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'0'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}}&lt;/span&gt;
DEBUG    momentary updated&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'Counter'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'flags'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'momentary'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'true'&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'automaticReadout'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'true'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'value'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'0'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'Relay'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'flags'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'writable'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'true'&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'momentary'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'true'&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'automaticReadout'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'true'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;'value'&lt;/span&gt;: &lt;span class=&quot;s1&quot;&gt;'0'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h1 id=&quot;reading-a-value-from-a-device&quot;&gt;Reading a value from a device&lt;/h1&gt;
&lt;p&gt;We now start a script that every 6th seconde reads all values from the first.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;SleekXMPP/examples/IoT
&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;python IoT_TestDevice.py -j anotherthing@jabber.se -p passwd -g
yourthing@jabber.se --delay 6
INFO     Negotiating TLS
INFO     Using SSL version: 3
WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate COULD NOT BE VERIFIED.
INFO     JID &lt;span class=&quot;nb&quot;&gt;set &lt;/span&gt;to: anotherthing@jabber.se/28
WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate
expiration COULD NOT BE VERIFIED.

INFO     IoT SEND 323 REQ &amp;lt;iq &lt;span class=&quot;nv&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;yourthing@jabber.se/98&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;anotherthing@jabber.se/28&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;2&quot;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;get&quot;&lt;/span&gt;&amp;gt;&amp;lt;req &lt;span class=&quot;nv&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;urn:xmpp:iot:sensordata&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;seqnr&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;2&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;momentary&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;true&quot;&lt;/span&gt; /&amp;gt;&amp;lt;/iq&amp;gt;
INFO     IoT RECIEVE &amp;lt;message &lt;span class=&quot;nv&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;anotherthing@jabber.se/28&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;yourthing@jabber.se/28&quot;&lt;/span&gt; xml:lang&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;en&quot;&lt;/span&gt;&amp;gt;&amp;lt;fields &lt;span class=&quot;nv&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;urn:xmpp:iot:sensordata&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;seqnr&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;2&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;true&quot;&lt;/span&gt;&amp;gt;&amp;lt;node &lt;span class=&quot;nv&quot;&gt;nodeId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;test&quot;&lt;/span&gt;&amp;gt;&amp;lt;timestamp &lt;span class=&quot;nv&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;2015-02-10T03:26:26&quot;&lt;/span&gt;&amp;gt;&amp;lt;numeric &lt;span class=&quot;nv&quot;&gt;unit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Count&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;automaticReadout&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;true&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Counter&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;3&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;momentary&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;true&quot;&lt;/span&gt; /&amp;gt;&amp;lt;boolean &lt;span class=&quot;nv&quot;&gt;writable&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;true&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;automaticReadout&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;true&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;relay&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;False&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;momentary&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;true&quot;&lt;/span&gt; /&amp;gt;&amp;lt;/timestamp&amp;gt;&amp;lt;/node&amp;gt;&amp;lt;/fields&amp;gt;&amp;lt;/message&amp;gt;
INFO     we got fields from yourthing@jabber.se/28 on node &lt;span class=&quot;nb&quot;&gt;test
&lt;/span&gt;INFO     &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;test &lt;/span&gt;Counter 3&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; Count &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;momentary,automaticReadout,]
INFO     &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;test &lt;/span&gt;relay False&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;writable,momentary,automaticReadout,]&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h1 id=&quot;writing-a-value-to-a-device&quot;&gt;Writing a value to a device&lt;/h1&gt;
&lt;p&gt;keep the two scripts above running and start a third one sending a
value change True on the “Toggle” field every 10th second&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;SleekXMPP/examples/IoT
&lt;span class=&quot;gp&quot;&gt;&amp;gt;$ &lt;/span&gt;python IoT_TestDevice.py -j anotherthing@jabber.se -p passwd -c
yourthing@jabber.se --field &lt;span class=&quot;s2&quot;&gt;&quot;Toggle&quot;&lt;/span&gt; --value &lt;span class=&quot;s2&quot;&gt;&quot;True&quot;&lt;/span&gt; --delay 10
INFO     Negotiating TLS
INFO     Using SSL version: 3
WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate COULD NOT BE VERIFIED.
INFO     JID &lt;span class=&quot;nb&quot;&gt;set &lt;/span&gt;to: anotherthing@jabber.se/28
WARNING  Could not find pyasn1 and pyasn1_modules. SSL certificate
expiration COULD NOT BE VERIFIED.

INFO     IoT will &lt;span class=&quot;nb&quot;&gt;set &lt;/span&gt;Toggle to True on to &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;u&lt;span class=&quot;s1&quot;&gt;'28'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'status'&lt;/span&gt;: u&lt;span class=&quot;s1&quot;&gt;''&lt;/span&gt;,
&lt;span class=&quot;s1&quot;&gt;'priority'&lt;/span&gt;: 0, &lt;span class=&quot;s1&quot;&gt;'show'&lt;/span&gt;: u&lt;span class=&quot;s1&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}}&lt;/span&gt;
INFO     Control callback from yourthing@jabber.se/98 result OK error None
INFO     IoT will &lt;span class=&quot;nb&quot;&gt;set &lt;/span&gt;Toggle to True on to &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;u&lt;span class=&quot;s1&quot;&gt;'28'&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'status'&lt;/span&gt;: u&lt;span class=&quot;s1&quot;&gt;''&lt;/span&gt;,
&lt;span class=&quot;s1&quot;&gt;'priority'&lt;/span&gt;: 0, &lt;span class=&quot;s1&quot;&gt;'show'&lt;/span&gt;: u&lt;span class=&quot;s1&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}}&lt;/span&gt;
INFO     Control callback from yourthing@jabber.se/98 result OK error None&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;You now see the value of the relay changing once in a while in script
reading values from the first instance.&lt;/p&gt;

&lt;h1 id=&quot;what-have-you-done&quot;&gt;What have you done?&lt;/h1&gt;

&lt;p&gt;You have now sent standardized calls between to endpoints that can be on
any federated xmpp server on internet there are several
https://xmpp.net/directory.php. Just imagin how devices now can talk
between companies in a defined way.&lt;/p&gt;

        </content>
    </entry>
    
    <entry>
        <title>Javascript Read and Write</title>
        <link href="//www.xmpp-iot.org/tutorials/javascript-tutorial/"/>
        <updated>2014-11-16T00:00:00+00:00</updated>
        <id>//www.xmpp-iot.org/tutorials/javascript-tutorial</id>
        <author>
					<name>Joachim Lindborg</name>
					<uri>//www.xmpp-iot.org/</uri>
					<email>joachim.lindborg@lsys.se</email>
				</author>
        <content type="html">
        	
        	&lt;p&gt;This tutorial shows how to make a web client that can read and write values to XMPP-IoT devices it is based on the Strophe.js package and node.js&lt;/p&gt;

&lt;p&gt;#Preparations
you need to have a device running somewhere supporting xmpp-iot-xep-323 read and  xmpp-iot-xep-325&lt;/p&gt;

&lt;p&gt;if you haven’t one available by your self open a window towards the &lt;a href=&quot;http://sust.se/iot-lab.html&quot;&gt;Sustainable Innovation IoT lab&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;read-a-value&quot;&gt;Read a value&lt;/h1&gt;

&lt;h1 id=&quot;write-a-value&quot;&gt;Write a value&lt;/h1&gt;


        </content>
    </entry>
    
</feed>