<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://fixme.ch/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tim</id>
		<title>Fixme.ch - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://fixme.ch/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tim"/>
		<link rel="alternate" type="text/html" href="https://fixme.ch/wiki/Special:Contributions/Tim"/>
		<updated>2026-06-20T23:53:47Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Power&amp;diff=14861</id>
		<title>Power</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Power&amp;diff=14861"/>
				<updated>2021-09-24T13:21:36Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  ------------------------------------------&lt;br /&gt;
  Chuck Norris doesn't need a smart meter.&lt;br /&gt;
  He just grabs the mains every hour to get&lt;br /&gt;
  a feel for his electricity consumption.&lt;br /&gt;
  ------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= FIXME local power consumption monitoring =&lt;br /&gt;
&lt;br /&gt;
* Grafana dashboard available here: https://power.fixme.ch/dashboard/db/power-consumption&lt;br /&gt;
* The consumption is displayed on the [[Screen]] above the fridge&lt;br /&gt;
* Flukso Power Meter FLM02A, Current Clamps FLS01-50&lt;br /&gt;
&lt;br /&gt;
Doc:&lt;br /&gt;
* https://www.flukso.net/files/flm02/manual.pdf&lt;br /&gt;
* https://github.com/flukso/flm02/wiki&lt;br /&gt;
&lt;br /&gt;
Configuration/Dépannage:&lt;br /&gt;
Le Flukso est raccordé sur le réseau sur le subnet 130 par son port Ethernet.&lt;br /&gt;
Il obtient son adresse par DHCP (Best effort ou pseudo-static 192.168.130.129).&lt;br /&gt;
Le document suivant donne les images de la configuration : [[File:FluksoConfig.pdf]]&lt;br /&gt;
&lt;br /&gt;
Info&lt;br /&gt;
* Hostname: flukso-f78db1&lt;br /&gt;
* API: http://192.168.130.129:8080/ &amp;lt;s&amp;gt;http://62.220.135.196:8080/&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Breakers:&lt;br /&gt;
* Q17: lumières&lt;br /&gt;
* Q21: nord&lt;br /&gt;
* Q13: le reste&lt;br /&gt;
&lt;br /&gt;
== Sensors ==&lt;br /&gt;
&lt;br /&gt;
* L1: 34cde81adabfb1ce819eca8fea6949b6&lt;br /&gt;
* L2: b7755b5f3ec05fcdc67f449241a9912a&lt;br /&gt;
* L3: e67e0685f747b30d855108ab781abdfc&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
francois@stup:~$ curl 'http://62.220.135.196:8080/sensor/e67e0685f747b30d855108ab781abdfc?version=1.0&amp;amp;interval=minute&amp;amp;unit=watt'; echo&lt;br /&gt;
[[1479941621,202],[1479941622,203],[1479941623,201],[1479941624,200],[1479941625,201],[1479941626,202],[1479941627,202],[1479941628,202],[1479941629,202],[1479941630,203],[1479941631,203],[1479941632,203],[1479941633,201],[1479941634,203],[1479941635,201],[1479941636,204],[1479941637,204],[1479941638,204],[1479941639,204],[1479941640,204],[1479941641,204],[1479941642,203],[1479941643,203],[1479941644,203],[1479941645,204],[1479941646,202],[1479941647,202],[1479941648,202],[1479941649,202],[1479941650,203],[1479941651,203],[1479941652,204],[1479941653,205],[1479941654,204],[1479941655,205],[1479941656,204],[1479941657,204],[1479941658,204],[1479941659,204],[1479941660,202],[1479941661,199],[1479941662,201],[1479941663,203],[1479941664,202],[1479941665,204],[1479941666,202],[1479941667,202],[1479941668,201],[1479941669,202],[1479941670,203],[1479941671,204],[1479941672,204],[1479941673,205],[1479941674,204],[1479941675,204],[1479941676,204],[1479941677,203],[1479941678,203],[1479941679,201],[1479941680,&amp;quot;nan&amp;quot;]]&lt;br /&gt;
francois@stup:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to display current power consumption? ==&lt;br /&gt;
&lt;br /&gt;
conso.sh:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
L1=$(curl -s &amp;quot;http://62.220.135.196:8080/sensor/34cde81adabfb1ce819eca8fea6949b6?version=1.0&amp;amp;interval=minute&amp;amp;unit=watt&amp;quot; | jq .[-2][1])&lt;br /&gt;
L2=$(curl -s &amp;quot;http://62.220.135.196:8080/sensor/b7755b5f3ec05fcdc67f449241a9912a?version=1.0&amp;amp;interval=minute&amp;amp;unit=watt&amp;quot; | jq .[-2][1])&lt;br /&gt;
L3=$(curl -s &amp;quot;http://62.220.135.196:8080/sensor/e67e0685f747b30d855108ab781abdfc?version=1.0&amp;amp;interval=minute&amp;amp;unit=watt&amp;quot; | jq .[-2][1])&lt;br /&gt;
&lt;br /&gt;
TOTAL=$[$L1+$L2+L3]&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$TOTAL W (L1: $L1, L2: $L2, L3: $L3)&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
See https://git.fixme.ch/francois/power.git for implementation, running on Kubernetes on [[MetaFoo]]. Which is also sent on InfluxDB and graphed on Grafana: https://power.fixme.ch/dashboard/db/power-consumption?orgId=1&lt;br /&gt;
&lt;br /&gt;
== Power consumption of some devices ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;text-align: left; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|+ Power consumption&lt;br /&gt;
|-&lt;br /&gt;
! Device&lt;br /&gt;
! Power Constant [W]&lt;br /&gt;
! Power Peak [W]&lt;br /&gt;
! Phase&lt;br /&gt;
|-&lt;br /&gt;
| Video Projector&lt;br /&gt;
| 200&lt;br /&gt;
|&lt;br /&gt;
| L2&lt;br /&gt;
|-&lt;br /&gt;
| Foo&lt;br /&gt;
| 63&lt;br /&gt;
| &lt;br /&gt;
| L3&lt;br /&gt;
|-&lt;br /&gt;
| Metafoo&lt;br /&gt;
| 200&lt;br /&gt;
|&lt;br /&gt;
| L3&lt;br /&gt;
|-&lt;br /&gt;
| 2 Switch Dell 5224&lt;br /&gt;
| 96&lt;br /&gt;
| &lt;br /&gt;
| L3&lt;br /&gt;
|-&lt;br /&gt;
| Big Fridge&lt;br /&gt;
| 45&lt;br /&gt;
| 380&lt;br /&gt;
| L2&lt;br /&gt;
|-&lt;br /&gt;
| LEDs (Bright)&lt;br /&gt;
| 451&lt;br /&gt;
|&lt;br /&gt;
| L1&lt;br /&gt;
|-&lt;br /&gt;
| LEDs (ON, Purple)&lt;br /&gt;
| 202&lt;br /&gt;
|&lt;br /&gt;
| L1&lt;br /&gt;
|-&lt;br /&gt;
| Old fluorescent tubes&lt;br /&gt;
| 508&lt;br /&gt;
|&lt;br /&gt;
| L1&lt;br /&gt;
|-&lt;br /&gt;
| TRON&lt;br /&gt;
| 80&lt;br /&gt;
|&lt;br /&gt;
| L2&lt;br /&gt;
|-&lt;br /&gt;
| Printer&lt;br /&gt;
| &lt;br /&gt;
| 1300&lt;br /&gt;
| L3&lt;br /&gt;
|-&lt;br /&gt;
| Mac Fablab&lt;br /&gt;
| 90&lt;br /&gt;
| &lt;br /&gt;
| L2&lt;br /&gt;
|-&lt;br /&gt;
| Laser 100%&lt;br /&gt;
| 420&lt;br /&gt;
| &lt;br /&gt;
| L2&lt;br /&gt;
|-&lt;br /&gt;
| Extracteur Fumée&lt;br /&gt;
| 400&lt;br /&gt;
| &lt;br /&gt;
| L3&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Electrical Setup =&lt;br /&gt;
&lt;br /&gt;
[[Image:IMG 20180514 185845.jpg|250px]]&lt;br /&gt;
[[Image:IMG_20180514_220321.jpg|250px]]&lt;br /&gt;
[[Image:IMG_20180514_220330.jpg|250px]]&lt;br /&gt;
[[Image:IMG_20180514_220347.jpg|250px]]&lt;br /&gt;
[[Image:flukso_FLS01-currentClamp_20200115.jpg|250px]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=File:FluksoConfig.pdf&amp;diff=14860</id>
		<title>File:FluksoConfig.pdf</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=File:FluksoConfig.pdf&amp;diff=14860"/>
				<updated>2021-09-24T13:16:44Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Power&amp;diff=14859</id>
		<title>Power</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Power&amp;diff=14859"/>
				<updated>2021-09-23T15:29:52Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  ------------------------------------------&lt;br /&gt;
  Chuck Norris doesn't need a smart meter.&lt;br /&gt;
  He just grabs the mains every hour to get&lt;br /&gt;
  a feel for his electricity consumption.&lt;br /&gt;
  ------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= FIXME local power consumption monitoring =&lt;br /&gt;
&lt;br /&gt;
* Grafana dashboard available here: https://power.fixme.ch/dashboard/db/power-consumption&lt;br /&gt;
* The consumption is displayed on the [[Screen]] above the fridge&lt;br /&gt;
* Flukso Power Meter FLM02A, Current Clamps FLS01-50&lt;br /&gt;
&lt;br /&gt;
Doc:&lt;br /&gt;
* https://www.flukso.net/files/flm02/manual.pdf&lt;br /&gt;
* https://github.com/flukso/flm02/wiki&lt;br /&gt;
&lt;br /&gt;
Configuration/Dépannage:&lt;br /&gt;
Le Flukso est raccordé sur le réseau sur le subnet 130 par son port Ethernet.&lt;br /&gt;
Il obtient son adresse par DHCP (Best effort ou pseudo-static 192.168.130.129).&lt;br /&gt;
Pour se connecter passer par l'API suivante : http://192.168.130.129&lt;br /&gt;
Une fois connecté vous devriez avoir la configuration représentée sur ces images :&lt;br /&gt;
[[Image:Status_1.png]]&lt;br /&gt;
[[File:Sensor 1.png]]&lt;br /&gt;
[[File:Sensor 2.png]]&lt;br /&gt;
[[File:Sensor3.png]]&lt;br /&gt;
Sinon, reconfigurer le Flukso avec ces paramètres.&lt;br /&gt;
&lt;br /&gt;
Info&lt;br /&gt;
* Hostname: flukso-f78db1&lt;br /&gt;
* API: http://192.168.130.129:8080/ &amp;lt;s&amp;gt;http://62.220.135.196:8080/&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Breakers:&lt;br /&gt;
* Q17: lumières&lt;br /&gt;
* Q21: nord&lt;br /&gt;
* Q13: le reste&lt;br /&gt;
&lt;br /&gt;
== Sensors ==&lt;br /&gt;
&lt;br /&gt;
* L1: 34cde81adabfb1ce819eca8fea6949b6&lt;br /&gt;
* L2: b7755b5f3ec05fcdc67f449241a9912a&lt;br /&gt;
* L3: e67e0685f747b30d855108ab781abdfc&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
francois@stup:~$ curl 'http://62.220.135.196:8080/sensor/e67e0685f747b30d855108ab781abdfc?version=1.0&amp;amp;interval=minute&amp;amp;unit=watt'; echo&lt;br /&gt;
[[1479941621,202],[1479941622,203],[1479941623,201],[1479941624,200],[1479941625,201],[1479941626,202],[1479941627,202],[1479941628,202],[1479941629,202],[1479941630,203],[1479941631,203],[1479941632,203],[1479941633,201],[1479941634,203],[1479941635,201],[1479941636,204],[1479941637,204],[1479941638,204],[1479941639,204],[1479941640,204],[1479941641,204],[1479941642,203],[1479941643,203],[1479941644,203],[1479941645,204],[1479941646,202],[1479941647,202],[1479941648,202],[1479941649,202],[1479941650,203],[1479941651,203],[1479941652,204],[1479941653,205],[1479941654,204],[1479941655,205],[1479941656,204],[1479941657,204],[1479941658,204],[1479941659,204],[1479941660,202],[1479941661,199],[1479941662,201],[1479941663,203],[1479941664,202],[1479941665,204],[1479941666,202],[1479941667,202],[1479941668,201],[1479941669,202],[1479941670,203],[1479941671,204],[1479941672,204],[1479941673,205],[1479941674,204],[1479941675,204],[1479941676,204],[1479941677,203],[1479941678,203],[1479941679,201],[1479941680,&amp;quot;nan&amp;quot;]]&lt;br /&gt;
francois@stup:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to display current power consumption? ==&lt;br /&gt;
&lt;br /&gt;
conso.sh:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
L1=$(curl -s &amp;quot;http://62.220.135.196:8080/sensor/34cde81adabfb1ce819eca8fea6949b6?version=1.0&amp;amp;interval=minute&amp;amp;unit=watt&amp;quot; | jq .[-2][1])&lt;br /&gt;
L2=$(curl -s &amp;quot;http://62.220.135.196:8080/sensor/b7755b5f3ec05fcdc67f449241a9912a?version=1.0&amp;amp;interval=minute&amp;amp;unit=watt&amp;quot; | jq .[-2][1])&lt;br /&gt;
L3=$(curl -s &amp;quot;http://62.220.135.196:8080/sensor/e67e0685f747b30d855108ab781abdfc?version=1.0&amp;amp;interval=minute&amp;amp;unit=watt&amp;quot; | jq .[-2][1])&lt;br /&gt;
&lt;br /&gt;
TOTAL=$[$L1+$L2+L3]&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$TOTAL W (L1: $L1, L2: $L2, L3: $L3)&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
See https://git.fixme.ch/francois/power.git for implementation, running on Kubernetes on [[MetaFoo]]. Which is also sent on InfluxDB and graphed on Grafana: https://power.fixme.ch/dashboard/db/power-consumption?orgId=1&lt;br /&gt;
&lt;br /&gt;
== Power consumption of some devices ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;text-align: left; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|+ Power consumption&lt;br /&gt;
|-&lt;br /&gt;
! Device&lt;br /&gt;
! Power Constant [W]&lt;br /&gt;
! Power Peak [W]&lt;br /&gt;
! Phase&lt;br /&gt;
|-&lt;br /&gt;
| Video Projector&lt;br /&gt;
| 200&lt;br /&gt;
|&lt;br /&gt;
| L2&lt;br /&gt;
|-&lt;br /&gt;
| Foo&lt;br /&gt;
| 63&lt;br /&gt;
| &lt;br /&gt;
| L3&lt;br /&gt;
|-&lt;br /&gt;
| Metafoo&lt;br /&gt;
| 200&lt;br /&gt;
|&lt;br /&gt;
| L3&lt;br /&gt;
|-&lt;br /&gt;
| 2 Switch Dell 5224&lt;br /&gt;
| 96&lt;br /&gt;
| &lt;br /&gt;
| L3&lt;br /&gt;
|-&lt;br /&gt;
| Big Fridge&lt;br /&gt;
| 45&lt;br /&gt;
| 380&lt;br /&gt;
| L2&lt;br /&gt;
|-&lt;br /&gt;
| LEDs (Bright)&lt;br /&gt;
| 451&lt;br /&gt;
|&lt;br /&gt;
| L1&lt;br /&gt;
|-&lt;br /&gt;
| LEDs (ON, Purple)&lt;br /&gt;
| 202&lt;br /&gt;
|&lt;br /&gt;
| L1&lt;br /&gt;
|-&lt;br /&gt;
| Old fluorescent tubes&lt;br /&gt;
| 508&lt;br /&gt;
|&lt;br /&gt;
| L1&lt;br /&gt;
|-&lt;br /&gt;
| TRON&lt;br /&gt;
| 80&lt;br /&gt;
|&lt;br /&gt;
| L2&lt;br /&gt;
|-&lt;br /&gt;
| Printer&lt;br /&gt;
| &lt;br /&gt;
| 1300&lt;br /&gt;
| L3&lt;br /&gt;
|-&lt;br /&gt;
| Mac Fablab&lt;br /&gt;
| 90&lt;br /&gt;
| &lt;br /&gt;
| L2&lt;br /&gt;
|-&lt;br /&gt;
| Laser 100%&lt;br /&gt;
| 420&lt;br /&gt;
| &lt;br /&gt;
| L2&lt;br /&gt;
|-&lt;br /&gt;
| Extracteur Fumée&lt;br /&gt;
| 400&lt;br /&gt;
| &lt;br /&gt;
| L3&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Electrical Setup =&lt;br /&gt;
&lt;br /&gt;
[[Image:IMG 20180514 185845.jpg|250px]]&lt;br /&gt;
[[Image:IMG_20180514_220321.jpg|250px]]&lt;br /&gt;
[[Image:IMG_20180514_220330.jpg|250px]]&lt;br /&gt;
[[Image:IMG_20180514_220347.jpg|250px]]&lt;br /&gt;
[[Image:flukso_FLS01-currentClamp_20200115.jpg|250px]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=File:Status_1.PNG&amp;diff=14858</id>
		<title>File:Status 1.PNG</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=File:Status_1.PNG&amp;diff=14858"/>
				<updated>2021-09-23T15:12:22Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=File:Sensor_3.PNG&amp;diff=14857</id>
		<title>File:Sensor 3.PNG</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=File:Sensor_3.PNG&amp;diff=14857"/>
				<updated>2021-09-23T15:11:30Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=File:Sensor_2.PNG&amp;diff=14856</id>
		<title>File:Sensor 2.PNG</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=File:Sensor_2.PNG&amp;diff=14856"/>
				<updated>2021-09-23T15:10:57Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=File:Sensor_1.PNG&amp;diff=14855</id>
		<title>File:Sensor 1.PNG</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=File:Sensor_1.PNG&amp;diff=14855"/>
				<updated>2021-09-23T15:10:10Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=MQTT&amp;diff=13947</id>
		<title>MQTT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=MQTT&amp;diff=13947"/>
				<updated>2018-10-29T21:20:01Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Ajout second exemple PubSubClient&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're running mosquitto as MQTT broker running on [[Bellatrix]] and here's how to use it:&lt;br /&gt;
&lt;br /&gt;
* Host: 62.220.135.221&lt;br /&gt;
* Port: 1883&lt;br /&gt;
* User: fixme&lt;br /&gt;
* Password: ask [[User:Francois]]&lt;br /&gt;
* No guest access allowed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MQTT un protocole fabuleux ==&lt;br /&gt;
MQTT est un protocole né à la fin des années 1990 permettant de transmettre des messages entre différents nœuds d'un réseau TCP/IP. Les objets situés sur les nœuds '''souscrivent''' à des services pour recevoir des données et/ou se déclarent pour en '''publier'''. Un broker situé à un point du réseau met en relation les ''souscripteurs''  (consommateurs de données) aux ''publieurs'' (fournisseurs de données).&lt;br /&gt;
&lt;br /&gt;
Ce protocole simple et robuste était utilisé à l'origine pour gérer un grand nombre de capteurs/actionneurs sur des pipelines... Il est toujours utilisé en informatique industriel plus simple à mettre en œuvre et à déployer que les WebSockets.&lt;br /&gt;
=== Souscrire ===&lt;br /&gt;
Notre sonoff va s'instancier sur le réseau en contactant le broker dont nous lui avons donné l'adresse IP en souscrivant au service (topic) /sonoff. Quand un objet publiera une donnée 1 sur le topic /sonoff la lampe s'allumera et s'étendra à la réception d'un 0&lt;br /&gt;
=== Publier ===&lt;br /&gt;
Sur un smartphone Android -par exemple - on pourra charger l'application '''MQTT Dash''', se raccorder au Broker mis en place par François et créer un service de bouton on/off qui publiera sur le topic /sonoff et enverra des ordres d'allumage (1) ou d'extinction (0).&lt;br /&gt;
Cette application permet de publier et de souscrire à tout type de services.&lt;br /&gt;
&lt;br /&gt;
== Un exemple d'utilisation avec un SonOff en commande d'éclairage ==&lt;br /&gt;
Les Sonoff sont de petits interrupteurs construits autour d'un ESP8266 et d'un relais 10A.&lt;br /&gt;
On peut facilement hacker ces objets qui ne coutent que 6 CHF pour les insérer dans notre architecture selon nos besoins.&lt;br /&gt;
Les PIN exposées du dispositif permettent de le reflasher pour commander le relais en souscrivant à un service n/off. (une pin-GPIO14) reste disponible pour y connecter un capteur et donc publier cette information.&lt;br /&gt;
&lt;br /&gt;
=== Raccordement pour flashage ===&lt;br /&gt;
Pour le raccorder, il faut un petit dispositif UART&amp;lt;-&amp;gt;USB celui du FabLab (permet de travailler en 3.3v ce qui est pratique pour cet usage.&lt;br /&gt;
Pour le flasher il faut appuyer sur le long bouton reset avant la mise sous tension (par l'USB).&lt;br /&gt;
&lt;br /&gt;
[[File:Sonoff.png | 400 px]]&lt;br /&gt;
=== Le code en service ===&lt;br /&gt;
J'ai utilisé la librairie d'Adafruit que j'ai testée aussi en SSL/TLS, mais je vais essayer PubSubClient de Nick O'Leary qui a bonne réputation.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/***************************************************&lt;br /&gt;
  Adafruit MQTT Library ESP8266 Example&lt;br /&gt;
&lt;br /&gt;
  Must use ESP8266 Arduino from:&lt;br /&gt;
    https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
  Works great with Adafruit's Huzzah ESP board &amp;amp; Feather&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/product/2471&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/products/2821&lt;br /&gt;
&lt;br /&gt;
  Adafruit invests time and resources providing this open source code,&lt;br /&gt;
  please support Adafruit and open-source hardware by purchasing&lt;br /&gt;
  products from Adafruit!&lt;br /&gt;
&lt;br /&gt;
  Written by Tony DiCola for Adafruit Industries.&lt;br /&gt;
  MIT license, all text above must be included in any redistribution&lt;br /&gt;
 ****************************************************/&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
//#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT_Client.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
/************************* WiFi Access Point *********************************/&lt;br /&gt;
&lt;br /&gt;
#define WLAN_SSID   &amp;quot;FIXME-NAT&amp;quot;&lt;br /&gt;
#define WLAN_PASS   &amp;quot;xxxxxxxxx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/************************* Adafruit.io Setup *********************************/&lt;br /&gt;
&lt;br /&gt;
#define AIO_SERVER      &amp;quot;62.220.135.221&amp;quot;&lt;br /&gt;
#define AIO_SERVERPORT  1883                   // use 8883 for SSL&lt;br /&gt;
#define AIO_USERNAME    &amp;quot;fixme&amp;quot;&lt;br /&gt;
#define AIO_KEY         &amp;quot;yyyyyyyyyy&amp;quot;&lt;br /&gt;
#define LED_PIN 13&lt;br /&gt;
#define RELAY_PIN 12&lt;br /&gt;
&lt;br /&gt;
/************ Global State (you don't need to change this!) ******************/&lt;br /&gt;
&lt;br /&gt;
// Create an ESP8266 WiFiClient class to connect to the MQTT server.&lt;br /&gt;
WiFiClient client;&lt;br /&gt;
// or... use WiFiFlientSecure for SSL&lt;br /&gt;
//WiFiClientSecure client;&lt;br /&gt;
&lt;br /&gt;
// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.&lt;br /&gt;
Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);&lt;br /&gt;
//Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT);&lt;br /&gt;
/****************************** Feeds ***************************************/&lt;br /&gt;
&lt;br /&gt;
// Setup a feed called 'photocell' for publishing.&lt;br /&gt;
// Notice MQTT paths for AIO follow the form: &amp;lt;username&amp;gt;/feeds/&amp;lt;feedname&amp;gt;&lt;br /&gt;
//Adafruit_MQTT_Publish photocell = Adafruit_MQTT_Publish(&amp;amp;mqtt, AIO_USERNAME &amp;quot;/feeds/photocell&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish halleffect = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/effethall&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish lipocharge = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/chargelipo&amp;quot;);&lt;br /&gt;
// Setup a feed called 'onoff' for subscribing to changes.&lt;br /&gt;
&lt;br /&gt;
Adafruit_MQTT_Subscribe sonoff = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/sonoff&amp;quot;);&lt;br /&gt;
/*************************** Sketch Code ************************************/&lt;br /&gt;
//Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/onoffbutton&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Bug workaround for Arduino 1.6.6, it seems to need a function declaration&lt;br /&gt;
// for some reason (only affects ESP8266, likely an arduino-builder bug).&lt;br /&gt;
void MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(10);&lt;br /&gt;
  pinMode(LED_PIN,OUTPUT);&lt;br /&gt;
  pinMode(RELAY_PIN,OUTPUT);&lt;br /&gt;
  Serial.println(F(&amp;quot;Adafruit MQTT Sonoff demo&amp;quot;));&lt;br /&gt;
  //ledcSetup(1, 50, TIMER_WIDTH); // channel 1, 50 Hz, 16-bit width&lt;br /&gt;
  //ledcAttachPin(21, 1);   // GPIO 22 assigned to channel 1&lt;br /&gt;
  // Connect to WiFi access point.&lt;br /&gt;
  Serial.println(); Serial.println();&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to &amp;quot;);&lt;br /&gt;
  Serial.println(WLAN_SSID);&lt;br /&gt;
&lt;br /&gt;
  WiFi.begin(WLAN_SSID, WLAN_PASS);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;WiFi connected&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;IP address: &amp;quot;); Serial.println(WiFi.localIP());&lt;br /&gt;
&lt;br /&gt;
  // Setup MQTT subscription for onoff feed.&lt;br /&gt;
  mqtt.subscribe(&amp;amp;sonoff);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // Ensure the connection to the MQTT server is alive (this will make the first&lt;br /&gt;
  // connection and automatically reconnect when disconnected).  See the MQTT_connect&lt;br /&gt;
  // function definition further below.&lt;br /&gt;
  MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
  // this is our 'wait for incoming subscription packets' busy subloop&lt;br /&gt;
  // try to spend your time here&lt;br /&gt;
&lt;br /&gt;
  Adafruit_MQTT_Subscribe *subscription;&lt;br /&gt;
  &lt;br /&gt;
  while ((subscription = mqtt.readSubscription(1000))) {&lt;br /&gt;
    if (subscription == &amp;amp;sonoff) {&lt;br /&gt;
      Serial.print(F(&amp;quot;Got: &amp;quot;));&lt;br /&gt;
      String A = (char *)sonoff.lastread ;&lt;br /&gt;
      Serial.println(A);&lt;br /&gt;
        if (A == &amp;quot;1&amp;quot;) {          &lt;br /&gt;
          digitalWrite(RELAY_PIN, 255);&lt;br /&gt;
          digitalWrite(LED_PIN, 0);&lt;br /&gt;
        } &lt;br /&gt;
        if(A == &amp;quot;0&amp;quot;) {         &lt;br /&gt;
          digitalWrite(RELAY_PIN, 0);&lt;br /&gt;
          digitalWrite(LED_PIN, 255);&lt;br /&gt;
        }&lt;br /&gt;
      &lt;br /&gt;
      } &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // ping the server to keep the mqtt connection alive&lt;br /&gt;
  // NOT required if you are publishing once every KEEPALIVE seconds&lt;br /&gt;
  &lt;br /&gt;
 /*&lt;br /&gt;
  if(! mqtt.ping()) {&lt;br /&gt;
    mqtt.disconnect();&lt;br /&gt;
  }&lt;br /&gt;
*/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Function to connect and reconnect as necessary to the MQTT server.&lt;br /&gt;
// Should be called in the loop function and it will take care if connecting.&lt;br /&gt;
void MQTT_connect() {&lt;br /&gt;
  int8_t ret;&lt;br /&gt;
&lt;br /&gt;
  // Stop if already connected.&lt;br /&gt;
  if (mqtt.connected()) {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to MQTT... &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  uint8_t retries = 3;&lt;br /&gt;
  while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected&lt;br /&gt;
       Serial.println(mqtt.connectErrorString(ret));&lt;br /&gt;
       Serial.println(&amp;quot;Retrying MQTT connection in 5 seconds...&amp;quot;);&lt;br /&gt;
       mqtt.disconnect();&lt;br /&gt;
       delay(5000);  // wait 5 seconds&lt;br /&gt;
       retries--;&lt;br /&gt;
       if (retries == 0) {&lt;br /&gt;
         // basically die and wait for WDT to reset me&lt;br /&gt;
         while (1);&lt;br /&gt;
       }&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;MQTT Connected!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Le code avec PubSubClient ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Basic ESP8266 MQTT example&lt;br /&gt;
&lt;br /&gt;
 This sketch demonstrates the capabilities of the pubsub library in combination&lt;br /&gt;
 with the ESP8266 board/library.&lt;br /&gt;
&lt;br /&gt;
 It connects to an MQTT server then:&lt;br /&gt;
  - publishes &amp;quot;hello world&amp;quot; to the topic &amp;quot;outTopic&amp;quot; every two seconds&lt;br /&gt;
  - subscribes to the topic &amp;quot;inTopic&amp;quot;, printing out any messages&lt;br /&gt;
    it receives. NB - it assumes the received payloads are strings not binary&lt;br /&gt;
  - If the first character of the topic &amp;quot;inTopic&amp;quot; is an 1, switch ON the ESP Led,&lt;br /&gt;
    else switch it off&lt;br /&gt;
&lt;br /&gt;
 It will reconnect to the server if the connection is lost using a blocking&lt;br /&gt;
 reconnect function. See the 'mqtt_reconnect_nonblocking' example for how to&lt;br /&gt;
 achieve the same result without blocking the main loop.&lt;br /&gt;
&lt;br /&gt;
 To install the ESP8266 board, (using Arduino 1.6.4+):&lt;br /&gt;
  - Add the following 3rd party board manager under &amp;quot;File -&amp;gt; Preferences -&amp;gt; Additional Boards Manager URLs&amp;quot;:&lt;br /&gt;
       http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
  - Open the &amp;quot;Tools -&amp;gt; Board -&amp;gt; Board Manager&amp;quot; and click install for the ESP8266&amp;quot;&lt;br /&gt;
  - Select your ESP8266 in &amp;quot;Tools -&amp;gt; Board&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;PubSubClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Update these with values suitable for your network.&lt;br /&gt;
&lt;br /&gt;
const char* ssid = &amp;quot;FIXME-NAT&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;XXXXXXXXXXX&amp;quot;;&lt;br /&gt;
const char* mqtt_server = &amp;quot;62.220.135.221&amp;quot;;&lt;br /&gt;
const char* broker_user = &amp;quot;fixme&amp;quot;&lt;br /&gt;
const char* broker_passwd = &amp;quot;YYYYYYYYYYY&amp;quot;&lt;br /&gt;
const char* client_key_uniq = &amp;quot;Achanger1234&amp;quot; // Doit différer d'un client à l'autre&lt;br /&gt;
&lt;br /&gt;
WiFiClient espClient;&lt;br /&gt;
PubSubClient client(espClient);&lt;br /&gt;
long lastMsg = 0;&lt;br /&gt;
char msg[50];&lt;br /&gt;
int value = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(BUILTIN_LED, OUTPUT);     // Initialize the BUILTIN_LED pin as an output&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  setup_wifi();&lt;br /&gt;
  client.setServer(mqtt_server, 1883);&lt;br /&gt;
  client.setCallback(callback);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup_wifi() {&lt;br /&gt;
&lt;br /&gt;
  delay(10);&lt;br /&gt;
  // We start by connecting to a WiFi network&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to &amp;quot;);&lt;br /&gt;
  Serial.println(ssid);&lt;br /&gt;
&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;WiFi connected&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;IP address: &amp;quot;);&lt;br /&gt;
  Serial.println(WiFi.localIP());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void callback(char* topic, byte* payload, unsigned int length) {&lt;br /&gt;
  Serial.print(&amp;quot;Message arrived [&amp;quot;);&lt;br /&gt;
  Serial.print(topic);&lt;br /&gt;
  Serial.print(&amp;quot;] &amp;quot;);&lt;br /&gt;
  for (int i = 0; i &amp;lt; length; i++) {&lt;br /&gt;
    Serial.print((char)payload[i]);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
  // Switch on the LED if an 1 was received as first character&lt;br /&gt;
  if ((char)payload[0] == '1') {&lt;br /&gt;
    digitalWrite(BUILTIN_LED, LOW);   // Turn the LED on (Note that LOW is the voltage level&lt;br /&gt;
    // but actually the LED is on; this is because&lt;br /&gt;
    // it is acive low on the ESP-01)&lt;br /&gt;
  } else {&lt;br /&gt;
    digitalWrite(BUILTIN_LED, HIGH);  // Turn the LED off by making the voltage HIGH&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void reconnect() {&lt;br /&gt;
  // Loop until we're reconnected&lt;br /&gt;
  while (!client.connected()) {&lt;br /&gt;
    Serial.print(&amp;quot;Attempting MQTT connection...&amp;quot;);&lt;br /&gt;
    // Attempt to connect&lt;br /&gt;
    if (client.connect(client_key_uniq,broker_user,broker_passwd)) {&lt;br /&gt;
      Serial.println(&amp;quot;connected&amp;quot;);&lt;br /&gt;
      // Once connected, publish an announcement...&lt;br /&gt;
      //client.publish(&amp;quot;outTopic&amp;quot;, &amp;quot;hello world&amp;quot;);&lt;br /&gt;
      // ... and resubscribe&lt;br /&gt;
      client.subscribe(&amp;quot;inTopic&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;failed, rc=&amp;quot;);&lt;br /&gt;
      Serial.print(client.state());&lt;br /&gt;
      Serial.println(&amp;quot; try again in 5 seconds&amp;quot;);&lt;br /&gt;
      // Wait 5 seconds before retrying&lt;br /&gt;
      delay(5000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    reconnect();&lt;br /&gt;
  }&lt;br /&gt;
  client.loop();&lt;br /&gt;
/*&lt;br /&gt;
  long now = millis();&lt;br /&gt;
  if (now - lastMsg &amp;gt; 2000) {&lt;br /&gt;
    lastMsg = now;&lt;br /&gt;
    ++value;&lt;br /&gt;
    snprintf (msg, 75, &amp;quot;hello world #%ld&amp;quot;, value);&lt;br /&gt;
    Serial.print(&amp;quot;Publish message: &amp;quot;);&lt;br /&gt;
    Serial.println(msg);&lt;br /&gt;
   // client.publish(&amp;quot;outTopic&amp;quot;, msg);&lt;br /&gt;
   */&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=MQTT&amp;diff=13943</id>
		<title>MQTT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=MQTT&amp;diff=13943"/>
				<updated>2018-10-29T10:40:59Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Introduction image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're running mosquitto as MQTT broker running on [[Bellatrix]] and here's how to use it:&lt;br /&gt;
&lt;br /&gt;
* Host: 62.220.135.221&lt;br /&gt;
* Port: 1883&lt;br /&gt;
* User: fixme&lt;br /&gt;
* Password: ask [[User:Francois]]&lt;br /&gt;
* No guest access allowed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MQTT un protocole fabuleux ==&lt;br /&gt;
MQTT est un protocole né à la fin des années 1990 permettant de transmettre des messages entre différents nœuds d'un réseau TCP/IP. Les objets situés sur les nœuds '''souscrivent''' à des services pour recevoir des données et/ou se déclarent pour en '''publier'''. Un broker situé à un point du réseau met en relation les ''souscripteurs''  (consommateurs de données) aux ''publieurs'' (fournisseurs de données).&lt;br /&gt;
&lt;br /&gt;
Ce protocole simple et robuste était utilisé à l'origine pour gérer un grand nombre de capteurs/actionneurs sur des pipelines... Il est toujours utilisé en informatique industriel plus simple à mettre en œuvre et à déployer que les WebSockets.&lt;br /&gt;
=== Souscrire ===&lt;br /&gt;
Notre sonoff va s'instancier sur le réseau en contactant le broker dont nous lui avons donné l'adresse IP en souscrivant au service (topic) /sonoff. Quand un objet publiera une donnée 1 sur le topic /sonoff la lampe s'allumera et s'étendra à la réception d'un 0&lt;br /&gt;
=== Publier ===&lt;br /&gt;
Sur un smartphone Android -par exemple - on pourra charger l'application '''MQTT Dash''', se raccorder au Broker mis en place par François et créer un service de bouton on/off qui publiera sur le topic /sonoff et enverra des ordres d'allumage (1) ou d'extinction (0).&lt;br /&gt;
Cette application permet de publier et de souscrire à tout type de services.&lt;br /&gt;
&lt;br /&gt;
== Un exemple d'utilisation avec un SonOff en commande d'éclairage ==&lt;br /&gt;
Les Sonoff sont de petits interrupteurs construits autour d'un ESP8266 et d'un relais 10A.&lt;br /&gt;
On peut facilement hacker ces objets qui ne coutent que 6 CHF pour les insérer dans notre architecture selon nos besoins.&lt;br /&gt;
Les PIN exposées du dispositif permettent de le reflasher pour commander le relais en souscrivant à un service n/off. (une pin-GPIO14) reste disponible pour y connecter un capteur et donc publier cette information.&lt;br /&gt;
&lt;br /&gt;
=== Raccordement pour flashage ===&lt;br /&gt;
Pour le raccorder, il faut un petit dispositif UART&amp;lt;-&amp;gt;USB celui du FabLab (permet de travailler en 3.3v ce qui est pratique pour cet usage.&lt;br /&gt;
Pour le flasher il faut appuyer sur le long bouton reset avant la mise sous tension (par l'USB).&lt;br /&gt;
&lt;br /&gt;
[[File:Sonoff.png | 400 px]]&lt;br /&gt;
=== Le code en service ===&lt;br /&gt;
J'ai utilisé la librairie d'Adafruit que j'ai testée aussi en SSL/TLS, mais je vais essayer PubSubClient de Nick O'Leary qui a bonne réputation.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/***************************************************&lt;br /&gt;
  Adafruit MQTT Library ESP8266 Example&lt;br /&gt;
&lt;br /&gt;
  Must use ESP8266 Arduino from:&lt;br /&gt;
    https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
  Works great with Adafruit's Huzzah ESP board &amp;amp; Feather&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/product/2471&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/products/2821&lt;br /&gt;
&lt;br /&gt;
  Adafruit invests time and resources providing this open source code,&lt;br /&gt;
  please support Adafruit and open-source hardware by purchasing&lt;br /&gt;
  products from Adafruit!&lt;br /&gt;
&lt;br /&gt;
  Written by Tony DiCola for Adafruit Industries.&lt;br /&gt;
  MIT license, all text above must be included in any redistribution&lt;br /&gt;
 ****************************************************/&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
//#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT_Client.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
/************************* WiFi Access Point *********************************/&lt;br /&gt;
&lt;br /&gt;
#define WLAN_SSID   &amp;quot;FIXME-NAT&amp;quot;&lt;br /&gt;
#define WLAN_PASS   &amp;quot;xxxxxxxxx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/************************* Adafruit.io Setup *********************************/&lt;br /&gt;
&lt;br /&gt;
#define AIO_SERVER      &amp;quot;62.220.135.221&amp;quot;&lt;br /&gt;
#define AIO_SERVERPORT  1883                   // use 8883 for SSL&lt;br /&gt;
#define AIO_USERNAME    &amp;quot;fixme&amp;quot;&lt;br /&gt;
#define AIO_KEY         &amp;quot;yyyyyyyyyy&amp;quot;&lt;br /&gt;
#define LED_PIN 13&lt;br /&gt;
#define RELAY_PIN 12&lt;br /&gt;
&lt;br /&gt;
/************ Global State (you don't need to change this!) ******************/&lt;br /&gt;
&lt;br /&gt;
// Create an ESP8266 WiFiClient class to connect to the MQTT server.&lt;br /&gt;
WiFiClient client;&lt;br /&gt;
// or... use WiFiFlientSecure for SSL&lt;br /&gt;
//WiFiClientSecure client;&lt;br /&gt;
&lt;br /&gt;
// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.&lt;br /&gt;
Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);&lt;br /&gt;
//Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT);&lt;br /&gt;
/****************************** Feeds ***************************************/&lt;br /&gt;
&lt;br /&gt;
// Setup a feed called 'photocell' for publishing.&lt;br /&gt;
// Notice MQTT paths for AIO follow the form: &amp;lt;username&amp;gt;/feeds/&amp;lt;feedname&amp;gt;&lt;br /&gt;
//Adafruit_MQTT_Publish photocell = Adafruit_MQTT_Publish(&amp;amp;mqtt, AIO_USERNAME &amp;quot;/feeds/photocell&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish halleffect = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/effethall&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish lipocharge = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/chargelipo&amp;quot;);&lt;br /&gt;
// Setup a feed called 'onoff' for subscribing to changes.&lt;br /&gt;
&lt;br /&gt;
Adafruit_MQTT_Subscribe sonoff = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/sonoff&amp;quot;);&lt;br /&gt;
/*************************** Sketch Code ************************************/&lt;br /&gt;
//Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/onoffbutton&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Bug workaround for Arduino 1.6.6, it seems to need a function declaration&lt;br /&gt;
// for some reason (only affects ESP8266, likely an arduino-builder bug).&lt;br /&gt;
void MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(10);&lt;br /&gt;
  pinMode(LED_PIN,OUTPUT);&lt;br /&gt;
  pinMode(RELAY_PIN,OUTPUT);&lt;br /&gt;
  Serial.println(F(&amp;quot;Adafruit MQTT Sonoff demo&amp;quot;));&lt;br /&gt;
  //ledcSetup(1, 50, TIMER_WIDTH); // channel 1, 50 Hz, 16-bit width&lt;br /&gt;
  //ledcAttachPin(21, 1);   // GPIO 22 assigned to channel 1&lt;br /&gt;
  // Connect to WiFi access point.&lt;br /&gt;
  Serial.println(); Serial.println();&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to &amp;quot;);&lt;br /&gt;
  Serial.println(WLAN_SSID);&lt;br /&gt;
&lt;br /&gt;
  WiFi.begin(WLAN_SSID, WLAN_PASS);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;WiFi connected&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;IP address: &amp;quot;); Serial.println(WiFi.localIP());&lt;br /&gt;
&lt;br /&gt;
  // Setup MQTT subscription for onoff feed.&lt;br /&gt;
  mqtt.subscribe(&amp;amp;sonoff);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // Ensure the connection to the MQTT server is alive (this will make the first&lt;br /&gt;
  // connection and automatically reconnect when disconnected).  See the MQTT_connect&lt;br /&gt;
  // function definition further below.&lt;br /&gt;
  MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
  // this is our 'wait for incoming subscription packets' busy subloop&lt;br /&gt;
  // try to spend your time here&lt;br /&gt;
&lt;br /&gt;
  Adafruit_MQTT_Subscribe *subscription;&lt;br /&gt;
  &lt;br /&gt;
  while ((subscription = mqtt.readSubscription(1000))) {&lt;br /&gt;
    if (subscription == &amp;amp;sonoff) {&lt;br /&gt;
      Serial.print(F(&amp;quot;Got: &amp;quot;));&lt;br /&gt;
      String A = (char *)sonoff.lastread ;&lt;br /&gt;
      Serial.println(A);&lt;br /&gt;
        if (A == &amp;quot;1&amp;quot;) {          &lt;br /&gt;
          digitalWrite(RELAY_PIN, 255);&lt;br /&gt;
          digitalWrite(LED_PIN, 0);&lt;br /&gt;
        } &lt;br /&gt;
        if(A == &amp;quot;0&amp;quot;) {         &lt;br /&gt;
          digitalWrite(RELAY_PIN, 0);&lt;br /&gt;
          digitalWrite(LED_PIN, 255);&lt;br /&gt;
        }&lt;br /&gt;
      &lt;br /&gt;
      } &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // ping the server to keep the mqtt connection alive&lt;br /&gt;
  // NOT required if you are publishing once every KEEPALIVE seconds&lt;br /&gt;
  &lt;br /&gt;
 /*&lt;br /&gt;
  if(! mqtt.ping()) {&lt;br /&gt;
    mqtt.disconnect();&lt;br /&gt;
  }&lt;br /&gt;
*/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Function to connect and reconnect as necessary to the MQTT server.&lt;br /&gt;
// Should be called in the loop function and it will take care if connecting.&lt;br /&gt;
void MQTT_connect() {&lt;br /&gt;
  int8_t ret;&lt;br /&gt;
&lt;br /&gt;
  // Stop if already connected.&lt;br /&gt;
  if (mqtt.connected()) {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to MQTT... &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  uint8_t retries = 3;&lt;br /&gt;
  while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected&lt;br /&gt;
       Serial.println(mqtt.connectErrorString(ret));&lt;br /&gt;
       Serial.println(&amp;quot;Retrying MQTT connection in 5 seconds...&amp;quot;);&lt;br /&gt;
       mqtt.disconnect();&lt;br /&gt;
       delay(5000);  // wait 5 seconds&lt;br /&gt;
       retries--;&lt;br /&gt;
       if (retries == 0) {&lt;br /&gt;
         // basically die and wait for WDT to reset me&lt;br /&gt;
         while (1);&lt;br /&gt;
       }&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;MQTT Connected!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=File:Sonoff.png&amp;diff=13942</id>
		<title>File:Sonoff.png</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=File:Sonoff.png&amp;diff=13942"/>
				<updated>2018-10-29T10:18:29Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Cablage Sonoff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cablage Sonoff&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=MQTT&amp;diff=13941</id>
		<title>MQTT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=MQTT&amp;diff=13941"/>
				<updated>2018-10-29T10:15:26Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're running mosquitto as MQTT broker running on [[Bellatrix]] and here's how to use it:&lt;br /&gt;
&lt;br /&gt;
* Host: 62.220.135.221&lt;br /&gt;
* Port: 1883&lt;br /&gt;
* User: fixme&lt;br /&gt;
* Password: ask [[User:Francois]]&lt;br /&gt;
* No guest access allowed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MQTT un protocole fabuleux ==&lt;br /&gt;
MQTT est un protocole né à la fin des années 1990 permettant de transmettre des messages entre différents nœuds d'un réseau TCP/IP. Les objets situés sur les nœuds '''souscrivent''' à des services pour recevoir des données et/ou se déclarent pour en '''publier'''. Un broker situé à un point du réseau met en relation les ''souscripteurs''  (consommateurs de données) aux ''publieurs'' (fournisseurs de données).&lt;br /&gt;
&lt;br /&gt;
Ce protocole simple et robuste était utilisé à l'origine pour gérer un grand nombre de capteurs/actionneurs sur des pipelines... Il est toujours utilisé en informatique industriel plus simple à mettre en œuvre et à déployer que les WebSockets.&lt;br /&gt;
=== Souscrire ===&lt;br /&gt;
Notre sonoff va s'instancier sur le réseau en contactant le broker dont nous lui avons donné l'adresse IP en souscrivant au service (topic) /sonoff. Quand un objet publiera une donnée 1 sur le topic /sonoff la lampe s'allumera et s'étendra à la réception d'un 0&lt;br /&gt;
=== Publier ===&lt;br /&gt;
Sur un smartphone Android -par exemple - on pourra charger l'application '''MQTT Dash''', se raccorder au Broker mis en place par François et créer un service de bouton on/off qui publiera sur le topic /sonoff et enverra des ordres d'allumage (1) ou d'extinction (0).&lt;br /&gt;
Cette application permet de publier et de souscrire à tout type de services.&lt;br /&gt;
&lt;br /&gt;
== Un exemple d'utilisation avec un SonOff en commande d'éclairage ==&lt;br /&gt;
Les Sonoff sont de petits interrupteurs construits autour d'un ESP8266 et d'un relais 10A.&lt;br /&gt;
On peut facilement hacker ces objets qui ne coutent que 6 CHF pour les insérer dans notre architecture selon nos besoins.&lt;br /&gt;
Les PIN exposées du dispositif permettent de le reflasher pour commander le relais en souscrivant à un service n/off. (une pin-GPIO14) reste disponible pour y connecter un capteur et donc publier cette information.&lt;br /&gt;
=== Raccordement ===&lt;br /&gt;
Pour le raccorder, il faut un petit dispositif UART&amp;lt;-&amp;gt;USB celui du FabLab permet de travailler en 3.3v ce qui est pratique pour cet usage.&lt;br /&gt;
[[File:Sonoff.png]]&lt;br /&gt;
=== Le code en service ===&lt;br /&gt;
J'ai utilisé la librairie d'Adafruit que j'ai testée aussi en SSL/TLS, mais je vais essayer PubSubClient de Nick O'Leary qui a bonne réputation.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/***************************************************&lt;br /&gt;
  Adafruit MQTT Library ESP8266 Example&lt;br /&gt;
&lt;br /&gt;
  Must use ESP8266 Arduino from:&lt;br /&gt;
    https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
  Works great with Adafruit's Huzzah ESP board &amp;amp; Feather&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/product/2471&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/products/2821&lt;br /&gt;
&lt;br /&gt;
  Adafruit invests time and resources providing this open source code,&lt;br /&gt;
  please support Adafruit and open-source hardware by purchasing&lt;br /&gt;
  products from Adafruit!&lt;br /&gt;
&lt;br /&gt;
  Written by Tony DiCola for Adafruit Industries.&lt;br /&gt;
  MIT license, all text above must be included in any redistribution&lt;br /&gt;
 ****************************************************/&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
//#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT_Client.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
/************************* WiFi Access Point *********************************/&lt;br /&gt;
&lt;br /&gt;
#define WLAN_SSID   &amp;quot;FIXME-NAT&amp;quot;&lt;br /&gt;
#define WLAN_PASS   &amp;quot;xxxxxxxxx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/************************* Adafruit.io Setup *********************************/&lt;br /&gt;
&lt;br /&gt;
#define AIO_SERVER      &amp;quot;62.220.135.221&amp;quot;&lt;br /&gt;
#define AIO_SERVERPORT  1883                   // use 8883 for SSL&lt;br /&gt;
#define AIO_USERNAME    &amp;quot;fixme&amp;quot;&lt;br /&gt;
#define AIO_KEY         &amp;quot;yyyyyyyyyy&amp;quot;&lt;br /&gt;
#define LED_PIN 13&lt;br /&gt;
#define RELAY_PIN 12&lt;br /&gt;
&lt;br /&gt;
/************ Global State (you don't need to change this!) ******************/&lt;br /&gt;
&lt;br /&gt;
// Create an ESP8266 WiFiClient class to connect to the MQTT server.&lt;br /&gt;
WiFiClient client;&lt;br /&gt;
// or... use WiFiFlientSecure for SSL&lt;br /&gt;
//WiFiClientSecure client;&lt;br /&gt;
&lt;br /&gt;
// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.&lt;br /&gt;
Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);&lt;br /&gt;
//Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT);&lt;br /&gt;
/****************************** Feeds ***************************************/&lt;br /&gt;
&lt;br /&gt;
// Setup a feed called 'photocell' for publishing.&lt;br /&gt;
// Notice MQTT paths for AIO follow the form: &amp;lt;username&amp;gt;/feeds/&amp;lt;feedname&amp;gt;&lt;br /&gt;
//Adafruit_MQTT_Publish photocell = Adafruit_MQTT_Publish(&amp;amp;mqtt, AIO_USERNAME &amp;quot;/feeds/photocell&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish halleffect = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/effethall&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish lipocharge = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/chargelipo&amp;quot;);&lt;br /&gt;
// Setup a feed called 'onoff' for subscribing to changes.&lt;br /&gt;
&lt;br /&gt;
Adafruit_MQTT_Subscribe sonoff = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/sonoff&amp;quot;);&lt;br /&gt;
/*************************** Sketch Code ************************************/&lt;br /&gt;
//Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/onoffbutton&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Bug workaround for Arduino 1.6.6, it seems to need a function declaration&lt;br /&gt;
// for some reason (only affects ESP8266, likely an arduino-builder bug).&lt;br /&gt;
void MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(10);&lt;br /&gt;
  pinMode(LED_PIN,OUTPUT);&lt;br /&gt;
  pinMode(RELAY_PIN,OUTPUT);&lt;br /&gt;
  Serial.println(F(&amp;quot;Adafruit MQTT Sonoff demo&amp;quot;));&lt;br /&gt;
  //ledcSetup(1, 50, TIMER_WIDTH); // channel 1, 50 Hz, 16-bit width&lt;br /&gt;
  //ledcAttachPin(21, 1);   // GPIO 22 assigned to channel 1&lt;br /&gt;
  // Connect to WiFi access point.&lt;br /&gt;
  Serial.println(); Serial.println();&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to &amp;quot;);&lt;br /&gt;
  Serial.println(WLAN_SSID);&lt;br /&gt;
&lt;br /&gt;
  WiFi.begin(WLAN_SSID, WLAN_PASS);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;WiFi connected&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;IP address: &amp;quot;); Serial.println(WiFi.localIP());&lt;br /&gt;
&lt;br /&gt;
  // Setup MQTT subscription for onoff feed.&lt;br /&gt;
  mqtt.subscribe(&amp;amp;sonoff);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // Ensure the connection to the MQTT server is alive (this will make the first&lt;br /&gt;
  // connection and automatically reconnect when disconnected).  See the MQTT_connect&lt;br /&gt;
  // function definition further below.&lt;br /&gt;
  MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
  // this is our 'wait for incoming subscription packets' busy subloop&lt;br /&gt;
  // try to spend your time here&lt;br /&gt;
&lt;br /&gt;
  Adafruit_MQTT_Subscribe *subscription;&lt;br /&gt;
  &lt;br /&gt;
  while ((subscription = mqtt.readSubscription(1000))) {&lt;br /&gt;
    if (subscription == &amp;amp;sonoff) {&lt;br /&gt;
      Serial.print(F(&amp;quot;Got: &amp;quot;));&lt;br /&gt;
      String A = (char *)sonoff.lastread ;&lt;br /&gt;
      Serial.println(A);&lt;br /&gt;
        if (A == &amp;quot;1&amp;quot;) {          &lt;br /&gt;
          digitalWrite(RELAY_PIN, 255);&lt;br /&gt;
          digitalWrite(LED_PIN, 0);&lt;br /&gt;
        } &lt;br /&gt;
        if(A == &amp;quot;0&amp;quot;) {         &lt;br /&gt;
          digitalWrite(RELAY_PIN, 0);&lt;br /&gt;
          digitalWrite(LED_PIN, 255);&lt;br /&gt;
        }&lt;br /&gt;
      &lt;br /&gt;
      } &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // ping the server to keep the mqtt connection alive&lt;br /&gt;
  // NOT required if you are publishing once every KEEPALIVE seconds&lt;br /&gt;
  &lt;br /&gt;
 /*&lt;br /&gt;
  if(! mqtt.ping()) {&lt;br /&gt;
    mqtt.disconnect();&lt;br /&gt;
  }&lt;br /&gt;
*/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Function to connect and reconnect as necessary to the MQTT server.&lt;br /&gt;
// Should be called in the loop function and it will take care if connecting.&lt;br /&gt;
void MQTT_connect() {&lt;br /&gt;
  int8_t ret;&lt;br /&gt;
&lt;br /&gt;
  // Stop if already connected.&lt;br /&gt;
  if (mqtt.connected()) {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to MQTT... &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  uint8_t retries = 3;&lt;br /&gt;
  while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected&lt;br /&gt;
       Serial.println(mqtt.connectErrorString(ret));&lt;br /&gt;
       Serial.println(&amp;quot;Retrying MQTT connection in 5 seconds...&amp;quot;);&lt;br /&gt;
       mqtt.disconnect();&lt;br /&gt;
       delay(5000);  // wait 5 seconds&lt;br /&gt;
       retries--;&lt;br /&gt;
       if (retries == 0) {&lt;br /&gt;
         // basically die and wait for WDT to reset me&lt;br /&gt;
         while (1);&lt;br /&gt;
       }&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;MQTT Connected!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=MQTT&amp;diff=13940</id>
		<title>MQTT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=MQTT&amp;diff=13940"/>
				<updated>2018-10-29T08:18:33Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're running mosquitto as MQTT broker running on [[Bellatrix]] and here's how to use it:&lt;br /&gt;
&lt;br /&gt;
* Host: 62.220.135.221&lt;br /&gt;
* Port: 1883&lt;br /&gt;
* User: fixme&lt;br /&gt;
* Password: ask [[User:Francois]]&lt;br /&gt;
* No guest access allowed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MQTT un protocole fabuleux ==&lt;br /&gt;
MQTT est un protocole né à la fin des années 1990 permettant de transmettre des messages entre différents nœuds d'un réseau TCP/IP. Les objets situés sur les nœuds '''souscrivent''' à des services pour recevoir des données et/ou se déclarent pour en '''publier'''. Un broker situé à un point du réseau met en relation les ''souscripteurs''  (consommateurs de données) aux ''publieurs'' (fournisseurs de données).&lt;br /&gt;
&lt;br /&gt;
Ce protocole simple et robuste était utilisé à l'origine pour gérer un grand nombre de capteurs/actionneurs sur des pipelines... Il est toujours utilisé en informatique industriel plus simple à mettre en œuvre et à déployer que les WebSockets.&lt;br /&gt;
=== Souscrire ===&lt;br /&gt;
Notre sonoff va s'instancier sur le réseau en contactant le broker dont nous lui avons donné l'adresse IP en souscrivant au service (topic) /sonoff. Quand un objet publiera une donnée 1 sur le topic /sonoff la lampe s'allumera et s'étendra à la réception d'un 0&lt;br /&gt;
=== Publier ===&lt;br /&gt;
Sur un smartphone Android -par exemple - on pourra charger l'application '''MQTT Dash''', se raccorder au Broker mis en place par François et créer un service de bouton on/off qui publiera sur le topic /sonoff et enverra des ordres d'allumage (1) ou d'extinction (0).&lt;br /&gt;
Cette application permet de publier et de souscrire à tout type de services.&lt;br /&gt;
&lt;br /&gt;
== Un exemple d'utilisation avec un SonOff en commande d'éclairage ==&lt;br /&gt;
Les Sonoff sont de petits interrupteurs construits autour d'un ESP8266 et d'un relais 10A.&lt;br /&gt;
On peut facilement hacker ces objets qui ne coutent que 6 CHF pour les insérer dans notre architecture selon nos besoins.&lt;br /&gt;
Les PIN exposées du dispositif permettent de le reflasher pour commander le relais en souscrivant à un service n/off. (une pin-GPIO14) reste disponible pour y connecter un capteur et donc publier cette information.&lt;br /&gt;
&lt;br /&gt;
=== Le code en service ===&lt;br /&gt;
J'ai utilisé la librairie d'Adafruit que j'ai testée aussi en SSL/TLS, mais je vais essayer PubSubClient de Nick O'Leary qui a bonne réputation.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/***************************************************&lt;br /&gt;
  Adafruit MQTT Library ESP8266 Example&lt;br /&gt;
&lt;br /&gt;
  Must use ESP8266 Arduino from:&lt;br /&gt;
    https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
  Works great with Adafruit's Huzzah ESP board &amp;amp; Feather&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/product/2471&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/products/2821&lt;br /&gt;
&lt;br /&gt;
  Adafruit invests time and resources providing this open source code,&lt;br /&gt;
  please support Adafruit and open-source hardware by purchasing&lt;br /&gt;
  products from Adafruit!&lt;br /&gt;
&lt;br /&gt;
  Written by Tony DiCola for Adafruit Industries.&lt;br /&gt;
  MIT license, all text above must be included in any redistribution&lt;br /&gt;
 ****************************************************/&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
//#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT_Client.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
/************************* WiFi Access Point *********************************/&lt;br /&gt;
&lt;br /&gt;
#define WLAN_SSID   &amp;quot;FIXME-NAT&amp;quot;&lt;br /&gt;
#define WLAN_PASS   &amp;quot;xxxxxxxxx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/************************* Adafruit.io Setup *********************************/&lt;br /&gt;
&lt;br /&gt;
#define AIO_SERVER      &amp;quot;62.220.135.221&amp;quot;&lt;br /&gt;
#define AIO_SERVERPORT  1883                   // use 8883 for SSL&lt;br /&gt;
#define AIO_USERNAME    &amp;quot;fixme&amp;quot;&lt;br /&gt;
#define AIO_KEY         &amp;quot;yyyyyyyyyy&amp;quot;&lt;br /&gt;
#define LED_PIN 13&lt;br /&gt;
#define RELAY_PIN 12&lt;br /&gt;
&lt;br /&gt;
/************ Global State (you don't need to change this!) ******************/&lt;br /&gt;
&lt;br /&gt;
// Create an ESP8266 WiFiClient class to connect to the MQTT server.&lt;br /&gt;
WiFiClient client;&lt;br /&gt;
// or... use WiFiFlientSecure for SSL&lt;br /&gt;
//WiFiClientSecure client;&lt;br /&gt;
&lt;br /&gt;
// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.&lt;br /&gt;
Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);&lt;br /&gt;
//Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT);&lt;br /&gt;
/****************************** Feeds ***************************************/&lt;br /&gt;
&lt;br /&gt;
// Setup a feed called 'photocell' for publishing.&lt;br /&gt;
// Notice MQTT paths for AIO follow the form: &amp;lt;username&amp;gt;/feeds/&amp;lt;feedname&amp;gt;&lt;br /&gt;
//Adafruit_MQTT_Publish photocell = Adafruit_MQTT_Publish(&amp;amp;mqtt, AIO_USERNAME &amp;quot;/feeds/photocell&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish halleffect = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/effethall&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish lipocharge = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/chargelipo&amp;quot;);&lt;br /&gt;
// Setup a feed called 'onoff' for subscribing to changes.&lt;br /&gt;
&lt;br /&gt;
Adafruit_MQTT_Subscribe sonoff = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/sonoff&amp;quot;);&lt;br /&gt;
/*************************** Sketch Code ************************************/&lt;br /&gt;
//Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/onoffbutton&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Bug workaround for Arduino 1.6.6, it seems to need a function declaration&lt;br /&gt;
// for some reason (only affects ESP8266, likely an arduino-builder bug).&lt;br /&gt;
void MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(10);&lt;br /&gt;
  pinMode(LED_PIN,OUTPUT);&lt;br /&gt;
  pinMode(RELAY_PIN,OUTPUT);&lt;br /&gt;
  Serial.println(F(&amp;quot;Adafruit MQTT Sonoff demo&amp;quot;));&lt;br /&gt;
  //ledcSetup(1, 50, TIMER_WIDTH); // channel 1, 50 Hz, 16-bit width&lt;br /&gt;
  //ledcAttachPin(21, 1);   // GPIO 22 assigned to channel 1&lt;br /&gt;
  // Connect to WiFi access point.&lt;br /&gt;
  Serial.println(); Serial.println();&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to &amp;quot;);&lt;br /&gt;
  Serial.println(WLAN_SSID);&lt;br /&gt;
&lt;br /&gt;
  WiFi.begin(WLAN_SSID, WLAN_PASS);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;WiFi connected&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;IP address: &amp;quot;); Serial.println(WiFi.localIP());&lt;br /&gt;
&lt;br /&gt;
  // Setup MQTT subscription for onoff feed.&lt;br /&gt;
  mqtt.subscribe(&amp;amp;sonoff);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // Ensure the connection to the MQTT server is alive (this will make the first&lt;br /&gt;
  // connection and automatically reconnect when disconnected).  See the MQTT_connect&lt;br /&gt;
  // function definition further below.&lt;br /&gt;
  MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
  // this is our 'wait for incoming subscription packets' busy subloop&lt;br /&gt;
  // try to spend your time here&lt;br /&gt;
&lt;br /&gt;
  Adafruit_MQTT_Subscribe *subscription;&lt;br /&gt;
  &lt;br /&gt;
  while ((subscription = mqtt.readSubscription(1000))) {&lt;br /&gt;
    if (subscription == &amp;amp;sonoff) {&lt;br /&gt;
      Serial.print(F(&amp;quot;Got: &amp;quot;));&lt;br /&gt;
      String A = (char *)sonoff.lastread ;&lt;br /&gt;
      Serial.println(A);&lt;br /&gt;
        if (A == &amp;quot;1&amp;quot;) {          &lt;br /&gt;
          digitalWrite(RELAY_PIN, 255);&lt;br /&gt;
          digitalWrite(LED_PIN, 0);&lt;br /&gt;
        } &lt;br /&gt;
        if(A == &amp;quot;0&amp;quot;) {         &lt;br /&gt;
          digitalWrite(RELAY_PIN, 0);&lt;br /&gt;
          digitalWrite(LED_PIN, 255);&lt;br /&gt;
        }&lt;br /&gt;
      &lt;br /&gt;
      } &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // ping the server to keep the mqtt connection alive&lt;br /&gt;
  // NOT required if you are publishing once every KEEPALIVE seconds&lt;br /&gt;
  &lt;br /&gt;
 /*&lt;br /&gt;
  if(! mqtt.ping()) {&lt;br /&gt;
    mqtt.disconnect();&lt;br /&gt;
  }&lt;br /&gt;
*/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Function to connect and reconnect as necessary to the MQTT server.&lt;br /&gt;
// Should be called in the loop function and it will take care if connecting.&lt;br /&gt;
void MQTT_connect() {&lt;br /&gt;
  int8_t ret;&lt;br /&gt;
&lt;br /&gt;
  // Stop if already connected.&lt;br /&gt;
  if (mqtt.connected()) {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to MQTT... &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  uint8_t retries = 3;&lt;br /&gt;
  while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected&lt;br /&gt;
       Serial.println(mqtt.connectErrorString(ret));&lt;br /&gt;
       Serial.println(&amp;quot;Retrying MQTT connection in 5 seconds...&amp;quot;);&lt;br /&gt;
       mqtt.disconnect();&lt;br /&gt;
       delay(5000);  // wait 5 seconds&lt;br /&gt;
       retries--;&lt;br /&gt;
       if (retries == 0) {&lt;br /&gt;
         // basically die and wait for WDT to reset me&lt;br /&gt;
         while (1);&lt;br /&gt;
       }&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;MQTT Connected!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=MQTT&amp;diff=13939</id>
		<title>MQTT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=MQTT&amp;diff=13939"/>
				<updated>2018-10-28T21:17:35Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: /* Publier */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're running mosquitto as MQTT broker running on [[Bellatrix]] and here's how to use it:&lt;br /&gt;
&lt;br /&gt;
* Host: 62.220.135.221&lt;br /&gt;
* Port: 1883&lt;br /&gt;
* User: fixme&lt;br /&gt;
* Password: ask [[User:Francois]]&lt;br /&gt;
* No guest access allowed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MQTT un protocole fabuleux ==&lt;br /&gt;
MQTT est un protocole né à la fin des années 1990 permettant de transmettre des messages entre différents nœuds d'un réseau TCP/IP. Les objets situés sur les nœuds '''souscrivent''' à des services pour recevoir des données et/ou se déclarent pour en '''publier'''. Un broker situé à un point du réseau met en relation les ''souscripteurs''  (consommateurs de données) aux ''publieurs'' (fournisseurs de données).&lt;br /&gt;
&lt;br /&gt;
Ce protocole simple et robuste était utilisé à l'origine pour gérer un grand nombre de capteurs/actionneurs sur des pipelines... Il est toujours utilisé en informatique industriel plus simple à mettre en œuvre et à déployer que les WebSockets.&lt;br /&gt;
=== Souscrire ===&lt;br /&gt;
Notre sonoff va s'instancier sur le réseau en contactant le broker dont nous lui avons donné l'adresse IP en souscrivant au service (topic) /sonoff. Quand un objet publiera une donnée 1 sur le topic /sonoff la lampe s'allumera et s'étendra à la réception d'un 0&lt;br /&gt;
=== Publier ===&lt;br /&gt;
Sur un smartphone Android -par exemple - on pourra charger l'application '''MQTT Dash''', se raccorder au Broker mis en place par François et créer un service de bouton on/off qui publiera sur le topic /sonoff et enverra des ordres d'allumage (1) ou d'extinction (0).&lt;br /&gt;
Cette application permet de publier et de souscrire à tout type de services.&lt;br /&gt;
&lt;br /&gt;
== Un exemple d'utilisation avec un SonOff en commande d'éclairage ==&lt;br /&gt;
Les Sonoff sont de petits interrupteurs construits autour d'un ESP8266 et d'un relais 10A.&lt;br /&gt;
On peut facilement hacker ces objets qui ne coutent que 6 CHF pour les insérer dans notre architecture selon nos besoins.&lt;br /&gt;
Les PIN exposées du dispositif permettent de le reflasher pour commander le relais en souscrivant à un service n/off. (une pin-GPIO14) reste disponible pour y connecter un capteur et donc publier cette information.&lt;br /&gt;
&lt;br /&gt;
=== Le code en service ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/***************************************************&lt;br /&gt;
  Adafruit MQTT Library ESP8266 Example&lt;br /&gt;
&lt;br /&gt;
  Must use ESP8266 Arduino from:&lt;br /&gt;
    https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
  Works great with Adafruit's Huzzah ESP board &amp;amp; Feather&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/product/2471&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/products/2821&lt;br /&gt;
&lt;br /&gt;
  Adafruit invests time and resources providing this open source code,&lt;br /&gt;
  please support Adafruit and open-source hardware by purchasing&lt;br /&gt;
  products from Adafruit!&lt;br /&gt;
&lt;br /&gt;
  Written by Tony DiCola for Adafruit Industries.&lt;br /&gt;
  MIT license, all text above must be included in any redistribution&lt;br /&gt;
 ****************************************************/&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
//#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT_Client.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
/************************* WiFi Access Point *********************************/&lt;br /&gt;
&lt;br /&gt;
#define WLAN_SSID   &amp;quot;FIXME-NAT&amp;quot;&lt;br /&gt;
#define WLAN_PASS   &amp;quot;xxxxxxxxx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/************************* Adafruit.io Setup *********************************/&lt;br /&gt;
&lt;br /&gt;
#define AIO_SERVER      &amp;quot;62.220.135.221&amp;quot;&lt;br /&gt;
#define AIO_SERVERPORT  1883                   // use 8883 for SSL&lt;br /&gt;
#define AIO_USERNAME    &amp;quot;fixme&amp;quot;&lt;br /&gt;
#define AIO_KEY         &amp;quot;yyyyyyyyyy&amp;quot;&lt;br /&gt;
#define LED_PIN 13&lt;br /&gt;
#define RELAY_PIN 12&lt;br /&gt;
&lt;br /&gt;
/************ Global State (you don't need to change this!) ******************/&lt;br /&gt;
&lt;br /&gt;
// Create an ESP8266 WiFiClient class to connect to the MQTT server.&lt;br /&gt;
WiFiClient client;&lt;br /&gt;
// or... use WiFiFlientSecure for SSL&lt;br /&gt;
//WiFiClientSecure client;&lt;br /&gt;
&lt;br /&gt;
// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.&lt;br /&gt;
Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);&lt;br /&gt;
//Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT);&lt;br /&gt;
/****************************** Feeds ***************************************/&lt;br /&gt;
&lt;br /&gt;
// Setup a feed called 'photocell' for publishing.&lt;br /&gt;
// Notice MQTT paths for AIO follow the form: &amp;lt;username&amp;gt;/feeds/&amp;lt;feedname&amp;gt;&lt;br /&gt;
//Adafruit_MQTT_Publish photocell = Adafruit_MQTT_Publish(&amp;amp;mqtt, AIO_USERNAME &amp;quot;/feeds/photocell&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish halleffect = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/effethall&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish lipocharge = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/chargelipo&amp;quot;);&lt;br /&gt;
// Setup a feed called 'onoff' for subscribing to changes.&lt;br /&gt;
&lt;br /&gt;
Adafruit_MQTT_Subscribe sonoff = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/sonoff&amp;quot;);&lt;br /&gt;
/*************************** Sketch Code ************************************/&lt;br /&gt;
//Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/onoffbutton&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Bug workaround for Arduino 1.6.6, it seems to need a function declaration&lt;br /&gt;
// for some reason (only affects ESP8266, likely an arduino-builder bug).&lt;br /&gt;
void MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(10);&lt;br /&gt;
  pinMode(LED_PIN,OUTPUT);&lt;br /&gt;
  pinMode(RELAY_PIN,OUTPUT);&lt;br /&gt;
  Serial.println(F(&amp;quot;Adafruit MQTT Sonoff demo&amp;quot;));&lt;br /&gt;
  //ledcSetup(1, 50, TIMER_WIDTH); // channel 1, 50 Hz, 16-bit width&lt;br /&gt;
  //ledcAttachPin(21, 1);   // GPIO 22 assigned to channel 1&lt;br /&gt;
  // Connect to WiFi access point.&lt;br /&gt;
  Serial.println(); Serial.println();&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to &amp;quot;);&lt;br /&gt;
  Serial.println(WLAN_SSID);&lt;br /&gt;
&lt;br /&gt;
  WiFi.begin(WLAN_SSID, WLAN_PASS);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;WiFi connected&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;IP address: &amp;quot;); Serial.println(WiFi.localIP());&lt;br /&gt;
&lt;br /&gt;
  // Setup MQTT subscription for onoff feed.&lt;br /&gt;
  mqtt.subscribe(&amp;amp;sonoff);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // Ensure the connection to the MQTT server is alive (this will make the first&lt;br /&gt;
  // connection and automatically reconnect when disconnected).  See the MQTT_connect&lt;br /&gt;
  // function definition further below.&lt;br /&gt;
  MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
  // this is our 'wait for incoming subscription packets' busy subloop&lt;br /&gt;
  // try to spend your time here&lt;br /&gt;
&lt;br /&gt;
  Adafruit_MQTT_Subscribe *subscription;&lt;br /&gt;
  &lt;br /&gt;
  while ((subscription = mqtt.readSubscription(1000))) {&lt;br /&gt;
    if (subscription == &amp;amp;sonoff) {&lt;br /&gt;
      Serial.print(F(&amp;quot;Got: &amp;quot;));&lt;br /&gt;
      String A = (char *)sonoff.lastread ;&lt;br /&gt;
      Serial.println(A);&lt;br /&gt;
        if (A == &amp;quot;1&amp;quot;) {          &lt;br /&gt;
          digitalWrite(RELAY_PIN, 255);&lt;br /&gt;
          digitalWrite(LED_PIN, 0);&lt;br /&gt;
        } &lt;br /&gt;
        if(A == &amp;quot;0&amp;quot;) {         &lt;br /&gt;
          digitalWrite(RELAY_PIN, 0);&lt;br /&gt;
          digitalWrite(LED_PIN, 255);&lt;br /&gt;
        }&lt;br /&gt;
      &lt;br /&gt;
      } &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // ping the server to keep the mqtt connection alive&lt;br /&gt;
  // NOT required if you are publishing once every KEEPALIVE seconds&lt;br /&gt;
  &lt;br /&gt;
 /*&lt;br /&gt;
  if(! mqtt.ping()) {&lt;br /&gt;
    mqtt.disconnect();&lt;br /&gt;
  }&lt;br /&gt;
*/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Function to connect and reconnect as necessary to the MQTT server.&lt;br /&gt;
// Should be called in the loop function and it will take care if connecting.&lt;br /&gt;
void MQTT_connect() {&lt;br /&gt;
  int8_t ret;&lt;br /&gt;
&lt;br /&gt;
  // Stop if already connected.&lt;br /&gt;
  if (mqtt.connected()) {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to MQTT... &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  uint8_t retries = 3;&lt;br /&gt;
  while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected&lt;br /&gt;
       Serial.println(mqtt.connectErrorString(ret));&lt;br /&gt;
       Serial.println(&amp;quot;Retrying MQTT connection in 5 seconds...&amp;quot;);&lt;br /&gt;
       mqtt.disconnect();&lt;br /&gt;
       delay(5000);  // wait 5 seconds&lt;br /&gt;
       retries--;&lt;br /&gt;
       if (retries == 0) {&lt;br /&gt;
         // basically die and wait for WDT to reset me&lt;br /&gt;
         while (1);&lt;br /&gt;
       }&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;MQTT Connected!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=MQTT&amp;diff=13938</id>
		<title>MQTT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=MQTT&amp;diff=13938"/>
				<updated>2018-10-28T20:50:08Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Initialisation d'un article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We're running mosquitto as MQTT broker running on [[Bellatrix]] and here's how to use it:&lt;br /&gt;
&lt;br /&gt;
* Host: 62.220.135.221&lt;br /&gt;
* Port: 1883&lt;br /&gt;
* User: fixme&lt;br /&gt;
* Password: ask [[User:Francois]]&lt;br /&gt;
* No guest access allowed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MQTT un protocole fabuleux ==&lt;br /&gt;
MQTT est un protocole né à la fin des années 1990 permettant de transmettre des messages entre différents nœuds d'un réseau TCP/IP. Les objets situés sur les nœuds '''souscrivent''' à des services pour recevoir des données et/ou se déclarent pour en '''publier'''. Un broker situé à un point du réseau met en relation les ''souscripteurs''  (consommateurs de données) aux ''publieurs'' (fournisseurs de données).&lt;br /&gt;
&lt;br /&gt;
Ce protocole simple et robuste était utilisé à l'origine pour gérer un grand nombre de capteurs/actionneurs sur des pipelines... Il est toujours utilisé en informatique industriel plus simple à mettre en œuvre et à déployer que les WebSockets.&lt;br /&gt;
=== Souscrire ===&lt;br /&gt;
Notre sonoff va s'instancier sur le réseau en contactant le broker dont nous lui avons donné l'adresse IP en souscrivant au service (topic) /sonoff. Quand un objet publiera une donnée 1 sur le topic /sonoff la lampe s'allumera et s'étendra à la réception d'un 0&lt;br /&gt;
=== Publier ===&lt;br /&gt;
Sur un smartphone Android on peut charger l'application '''MQTT Dash''', se raccorder au Broker mis en place par François et créer un service de bouton on/off qui publiera sur le topic /sonoff et enverra des ordres d'allumage (1) ou d'extinction (0).&lt;br /&gt;
== Un exemple d'utilisation avec un SonOff en commande d'éclairage ==&lt;br /&gt;
Les Sonoff sont de petits interrupteurs construits autour d'un ESP8266 et d'un relais 10A.&lt;br /&gt;
On peut facilement hacker ces objets qui ne coutent que 6 CHF pour les insérer dans notre architecture selon nos besoins.&lt;br /&gt;
Les PIN exposées du dispositif permettent de le reflasher pour commander le relais en souscrivant à un service n/off. (une pin-GPIO14) reste disponible pour y connecter un capteur et donc publier cette information.&lt;br /&gt;
&lt;br /&gt;
=== Le code en service ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/***************************************************&lt;br /&gt;
  Adafruit MQTT Library ESP8266 Example&lt;br /&gt;
&lt;br /&gt;
  Must use ESP8266 Arduino from:&lt;br /&gt;
    https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
  Works great with Adafruit's Huzzah ESP board &amp;amp; Feather&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/product/2471&lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/products/2821&lt;br /&gt;
&lt;br /&gt;
  Adafruit invests time and resources providing this open source code,&lt;br /&gt;
  please support Adafruit and open-source hardware by purchasing&lt;br /&gt;
  products from Adafruit!&lt;br /&gt;
&lt;br /&gt;
  Written by Tony DiCola for Adafruit Industries.&lt;br /&gt;
  MIT license, all text above must be included in any redistribution&lt;br /&gt;
 ****************************************************/&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
//#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Adafruit_MQTT_Client.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
/************************* WiFi Access Point *********************************/&lt;br /&gt;
&lt;br /&gt;
#define WLAN_SSID   &amp;quot;FIXME-NAT&amp;quot;&lt;br /&gt;
#define WLAN_PASS   &amp;quot;xxxxxxxxx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/************************* Adafruit.io Setup *********************************/&lt;br /&gt;
&lt;br /&gt;
#define AIO_SERVER      &amp;quot;62.220.135.221&amp;quot;&lt;br /&gt;
#define AIO_SERVERPORT  1883                   // use 8883 for SSL&lt;br /&gt;
#define AIO_USERNAME    &amp;quot;fixme&amp;quot;&lt;br /&gt;
#define AIO_KEY         &amp;quot;yyyyyyyyyy&amp;quot;&lt;br /&gt;
#define LED_PIN 13&lt;br /&gt;
#define RELAY_PIN 12&lt;br /&gt;
&lt;br /&gt;
/************ Global State (you don't need to change this!) ******************/&lt;br /&gt;
&lt;br /&gt;
// Create an ESP8266 WiFiClient class to connect to the MQTT server.&lt;br /&gt;
WiFiClient client;&lt;br /&gt;
// or... use WiFiFlientSecure for SSL&lt;br /&gt;
//WiFiClientSecure client;&lt;br /&gt;
&lt;br /&gt;
// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.&lt;br /&gt;
Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);&lt;br /&gt;
//Adafruit_MQTT_Client mqtt(&amp;amp;client, AIO_SERVER, AIO_SERVERPORT);&lt;br /&gt;
/****************************** Feeds ***************************************/&lt;br /&gt;
&lt;br /&gt;
// Setup a feed called 'photocell' for publishing.&lt;br /&gt;
// Notice MQTT paths for AIO follow the form: &amp;lt;username&amp;gt;/feeds/&amp;lt;feedname&amp;gt;&lt;br /&gt;
//Adafruit_MQTT_Publish photocell = Adafruit_MQTT_Publish(&amp;amp;mqtt, AIO_USERNAME &amp;quot;/feeds/photocell&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish halleffect = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/effethall&amp;quot;);&lt;br /&gt;
//Adafruit_MQTT_Publish lipocharge = Adafruit_MQTT_Publish(&amp;amp;mqtt, &amp;quot;/chargelipo&amp;quot;);&lt;br /&gt;
// Setup a feed called 'onoff' for subscribing to changes.&lt;br /&gt;
&lt;br /&gt;
Adafruit_MQTT_Subscribe sonoff = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/sonoff&amp;quot;);&lt;br /&gt;
/*************************** Sketch Code ************************************/&lt;br /&gt;
//Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&amp;amp;mqtt, &amp;quot;/onoffbutton&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Bug workaround for Arduino 1.6.6, it seems to need a function declaration&lt;br /&gt;
// for some reason (only affects ESP8266, likely an arduino-builder bug).&lt;br /&gt;
void MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(10);&lt;br /&gt;
  pinMode(LED_PIN,OUTPUT);&lt;br /&gt;
  pinMode(RELAY_PIN,OUTPUT);&lt;br /&gt;
  Serial.println(F(&amp;quot;Adafruit MQTT Sonoff demo&amp;quot;));&lt;br /&gt;
  //ledcSetup(1, 50, TIMER_WIDTH); // channel 1, 50 Hz, 16-bit width&lt;br /&gt;
  //ledcAttachPin(21, 1);   // GPIO 22 assigned to channel 1&lt;br /&gt;
  // Connect to WiFi access point.&lt;br /&gt;
  Serial.println(); Serial.println();&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to &amp;quot;);&lt;br /&gt;
  Serial.println(WLAN_SSID);&lt;br /&gt;
&lt;br /&gt;
  WiFi.begin(WLAN_SSID, WLAN_PASS);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;WiFi connected&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;IP address: &amp;quot;); Serial.println(WiFi.localIP());&lt;br /&gt;
&lt;br /&gt;
  // Setup MQTT subscription for onoff feed.&lt;br /&gt;
  mqtt.subscribe(&amp;amp;sonoff);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // Ensure the connection to the MQTT server is alive (this will make the first&lt;br /&gt;
  // connection and automatically reconnect when disconnected).  See the MQTT_connect&lt;br /&gt;
  // function definition further below.&lt;br /&gt;
  MQTT_connect();&lt;br /&gt;
&lt;br /&gt;
  // this is our 'wait for incoming subscription packets' busy subloop&lt;br /&gt;
  // try to spend your time here&lt;br /&gt;
&lt;br /&gt;
  Adafruit_MQTT_Subscribe *subscription;&lt;br /&gt;
  &lt;br /&gt;
  while ((subscription = mqtt.readSubscription(1000))) {&lt;br /&gt;
    if (subscription == &amp;amp;sonoff) {&lt;br /&gt;
      Serial.print(F(&amp;quot;Got: &amp;quot;));&lt;br /&gt;
      String A = (char *)sonoff.lastread ;&lt;br /&gt;
      Serial.println(A);&lt;br /&gt;
        if (A == &amp;quot;1&amp;quot;) {          &lt;br /&gt;
          digitalWrite(RELAY_PIN, 255);&lt;br /&gt;
          digitalWrite(LED_PIN, 0);&lt;br /&gt;
        } &lt;br /&gt;
        if(A == &amp;quot;0&amp;quot;) {         &lt;br /&gt;
          digitalWrite(RELAY_PIN, 0);&lt;br /&gt;
          digitalWrite(LED_PIN, 255);&lt;br /&gt;
        }&lt;br /&gt;
      &lt;br /&gt;
      } &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // ping the server to keep the mqtt connection alive&lt;br /&gt;
  // NOT required if you are publishing once every KEEPALIVE seconds&lt;br /&gt;
  &lt;br /&gt;
 /*&lt;br /&gt;
  if(! mqtt.ping()) {&lt;br /&gt;
    mqtt.disconnect();&lt;br /&gt;
  }&lt;br /&gt;
*/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Function to connect and reconnect as necessary to the MQTT server.&lt;br /&gt;
// Should be called in the loop function and it will take care if connecting.&lt;br /&gt;
void MQTT_connect() {&lt;br /&gt;
  int8_t ret;&lt;br /&gt;
&lt;br /&gt;
  // Stop if already connected.&lt;br /&gt;
  if (mqtt.connected()) {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to MQTT... &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  uint8_t retries = 3;&lt;br /&gt;
  while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected&lt;br /&gt;
       Serial.println(mqtt.connectErrorString(ret));&lt;br /&gt;
       Serial.println(&amp;quot;Retrying MQTT connection in 5 seconds...&amp;quot;);&lt;br /&gt;
       mqtt.disconnect();&lt;br /&gt;
       delay(5000);  // wait 5 seconds&lt;br /&gt;
       retries--;&lt;br /&gt;
       if (retries == 0) {&lt;br /&gt;
         // basically die and wait for WDT to reset me&lt;br /&gt;
         while (1);&lt;br /&gt;
       }&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;MQTT Connected!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13936</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13936"/>
				<updated>2018-10-28T19:41:10Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IOT]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT [https://www.kickstarter.com/projects/419277966/the-things-network/description] dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZigBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRa ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. &lt;br /&gt;
&lt;br /&gt;
Peut-être aurait-il fallu acheter des modules en 868Mhz. &lt;br /&gt;
&lt;br /&gt;
La documentation sur la technologie en œuvre est disponible ici : [[File:LoRa.pdf]]&lt;br /&gt;
&lt;br /&gt;
Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[[File:Feather_32U4.jpg|500px]] &lt;br /&gt;
&lt;br /&gt;
La soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[File:RF95_TX_ino.txt]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[File:RF95_RX_ino.txt]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
*[[MQTT]]&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
*[[Configuration routage IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13118</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13118"/>
				<updated>2017-02-09T00:03:07Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IOT]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT [https://www.kickstarter.com/projects/419277966/the-things-network/description] dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZigBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRa ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. &lt;br /&gt;
&lt;br /&gt;
Peut-être aurait-il fallu acheter des modules en 868Mhz. &lt;br /&gt;
&lt;br /&gt;
La documentation sur la technologie en œuvre est disponible ici : [[File:LoRa.pdf]]&lt;br /&gt;
&lt;br /&gt;
Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[[File:Feather_32U4.jpg|500px]] &lt;br /&gt;
&lt;br /&gt;
La soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[File:RF95_TX_ino.txt]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[File:RF95_RX_ino.txt]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
*[[Configuration routage IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13117</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13117"/>
				<updated>2017-02-09T00:00:54Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IOT]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT [https://www.kickstarter.com/projects/419277966/the-things-network/description] dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZigBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRa ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. &lt;br /&gt;
&lt;br /&gt;
Peut-être aurait-il fallu acheter des modules en 868Mhz. &lt;br /&gt;
&lt;br /&gt;
La documentation sur la technologie en œuvre est disponible ici : [[File:LoRa.pdf]]&lt;br /&gt;
&lt;br /&gt;
Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[[File:Feather_32U4.jpg|500px]] &lt;br /&gt;
&lt;br /&gt;
La soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[File:RFM95_TX_ino.txt]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[File:RFM95_RX_ino.txt]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
*[[Configuration routage IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=File:RF95_TX_ino.txt&amp;diff=13116</id>
		<title>File:RF95 TX ino.txt</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=File:RF95_TX_ino.txt&amp;diff=13116"/>
				<updated>2017-02-08T23:58:28Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: sketch Arduino&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sketch Arduino&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=File:RF95_RX_ino.txt&amp;diff=13115</id>
		<title>File:RF95 RX ino.txt</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=File:RF95_RX_ino.txt&amp;diff=13115"/>
				<updated>2017-02-08T23:57:24Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: sketch Arduino&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sketch Arduino&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13103</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13103"/>
				<updated>2017-02-02T11:10:20Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IOT]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT [https://www.kickstarter.com/projects/419277966/the-things-network/description] dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZigBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRa ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. &lt;br /&gt;
&lt;br /&gt;
Peut-être aurait-il fallu acheter des modules en 868Mhz. &lt;br /&gt;
&lt;br /&gt;
La documentation sur la technologie en œuvre est disponible ici : [[File:LoRa.pdf]]&lt;br /&gt;
&lt;br /&gt;
Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[[File:Feather_32U4.jpg|500px]] &lt;br /&gt;
&lt;br /&gt;
La soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[RFM95_TX]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[RFM95_RX]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
*[[Configuration routage IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13102</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13102"/>
				<updated>2017-02-02T11:08:22Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Ajout doc Semtech&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IOT]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT [https://www.kickstarter.com/projects/419277966/the-things-network/description] dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZigBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRa ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. &lt;br /&gt;
Peut-être aurait-il fallu acheter des modules en 868Mhz. &lt;br /&gt;
La documentation sur la technologie en œuvre est disponible ici : [[File:LoRa.pdf]]&lt;br /&gt;
Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[[File:Feather_32U4.jpg|500px]] &lt;br /&gt;
&lt;br /&gt;
La soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[RFM95_TX]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[RFM95_RX]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
*[[Configuration routage IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=File:LoRa.pdf&amp;diff=13101</id>
		<title>File:LoRa.pdf</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=File:LoRa.pdf&amp;diff=13101"/>
				<updated>2017-02-02T11:01:23Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Document de Semtech&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Document de Semtech&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Configuration_routage_IPv6&amp;diff=13075</id>
		<title>Configuration routage IPv6</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Configuration_routage_IPv6&amp;diff=13075"/>
				<updated>2017-01-20T14:43:31Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Created page with &amp;quot;Les adresses IPv6 fec0::/10 sont des adresses locales non routables comme les adresses 192.168.0.0 en IPv4. Les adresses globales routables sont toujours attribuées par le fo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les adresses IPv6 fec0::/10 sont des adresses locales non routables comme les adresses 192.168.0.0 en IPv4.&lt;br /&gt;
Les adresses globales routables sont toujours attribuées par le fournisseur d’accès Internet.&lt;br /&gt;
&lt;br /&gt;
Le site [[http://unique-localipv6.com]] attribue des adresses locales IPv6 de façon aléatoire j'ai obtenu celle-ci fd27:1056:fc05::/48 ce qui m'offre la possibilité de construire un réseau avec plein de subnets (équivalent d'une classe B en IPv4) de  fd27:1056:fc05::/64 à  fd27:1056:fc05:ffff:/64&lt;br /&gt;
&lt;br /&gt;
Il faut donc attribuer une de ces adresses sur le gateway du réseau local.&lt;br /&gt;
La grappe des clients se verra attribuer automatiquement le prefixe de son adresse IPv6 locale par le daemon radvd que nous lancerons sur ce gateway. L'adresse complète de chaque client dépendra de la MAC adresse que nous lui aurons attribuée.&lt;br /&gt;
&lt;br /&gt;
Sur le gateway comme sur les clients nous construirons un script de démarrage.&lt;br /&gt;
Nous lancerons sur le gateway le daemon radvd.&lt;br /&gt;
&lt;br /&gt;
* [[Script de démarrage des clients|start_client.sh]]&lt;br /&gt;
* [[Script de démarrage du gateway|start_gateway.sh]]&lt;br /&gt;
* [[Configuration de daemon radvd|radvd.conf]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13074</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13074"/>
				<updated>2017-01-20T14:41:55Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IOT]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT [https://www.kickstarter.com/projects/419277966/the-things-network/description] dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZigBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRA ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. Peut-être aurait-il fallu acheter des modules en 868Mhz. Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[[File:Feather_32U4.jpg|500px]] &lt;br /&gt;
&lt;br /&gt;
La soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[RFM95_TX]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[RFM95_RX]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
*[[Configuration routage IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Configuration_IPv6&amp;diff=13073</id>
		<title>Configuration IPv6</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Configuration_IPv6&amp;diff=13073"/>
				<updated>2017-01-20T14:38:24Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Created page with &amp;quot;Une fois le RPi3 booté avec ses modules chargés la commande ifconfig -a rend cela :   &amp;lt;nowiki&amp;gt; root@raspberrypi:~# ifconfig -a eth0      Link encap:Ethernet  HWaddr b8:27:eb...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Une fois le RPi3 booté avec ses modules chargés la commande ifconfig -a rend cela :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
root@raspberrypi:~# ifconfig -a&lt;br /&gt;
eth0      Link encap:Ethernet  HWaddr b8:27:eb:e3:b4:bb&lt;br /&gt;
          inet6 addr: fe80::fee:cb7a:1ab0:211f/64 Scope:Link&lt;br /&gt;
          UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
          collisions:0 txqueuelen:1000&lt;br /&gt;
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)&lt;br /&gt;
&lt;br /&gt;
lo        Link encap:Local Loopback&lt;br /&gt;
          inet addr:127.0.0.1  Mask:255.0.0.0&lt;br /&gt;
          inet6 addr: ::1/128 Scope:Host&lt;br /&gt;
          UP LOOPBACK RUNNING  MTU:65536  Metric:1&lt;br /&gt;
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
          collisions:0 txqueuelen:1&lt;br /&gt;
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)&lt;br /&gt;
&lt;br /&gt;
wlan0     Link encap:Ethernet  HWaddr b8:27:eb:b6:e1:ee&lt;br /&gt;
          inet addr:192.168.130.204  Bcast:192.168.130.255  Mask:255.255.255.0&lt;br /&gt;
          inet6 addr: fe80::468:a46c:b9be:706e/64 Scope:Link&lt;br /&gt;
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
          RX packets:185 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
          TX packets:169 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
          collisions:0 txqueuelen:1000&lt;br /&gt;
          RX bytes:27991 (27.3 KiB)  TX bytes:32030 (31.2 KiB)&lt;br /&gt;
&lt;br /&gt;
wpan0     Link encap:UNSPEC  HWaddr 0E-79-86-4A-5E-68-30-50-00-00-00-00-00-00-00-00&lt;br /&gt;
          BROADCAST NOARP  MTU:123  Metric:1&lt;br /&gt;
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
          collisions:0 txqueuelen:300&lt;br /&gt;
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
On voit que le wpan0 n'est pas UP et qu'il n'existe pas d'interface lowpan0&lt;br /&gt;
&lt;br /&gt;
Il faut créer le lien entre ce qui est un port de bridge wpan0 et ce qui deviendra une interface lowpan0 puis mettre ces interfaces UP.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ip link add link wpan0 name lowpan0 type lowpan&lt;br /&gt;
ifconfig wpan0 up&lt;br /&gt;
ifconfig lowpan0 up&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
On a alors la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
root@raspberrypi:~# ifconfig -a&lt;br /&gt;
eth0      Link encap:Ethernet  HWaddr b8:27:eb:e3:b4:bb&lt;br /&gt;
          inet6 addr: fe80::fee:cb7a:1ab0:211f/64 Scope:Link&lt;br /&gt;
          UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
          collisions:0 txqueuelen:1000&lt;br /&gt;
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)&lt;br /&gt;
&lt;br /&gt;
lo        Link encap:Local Loopback&lt;br /&gt;
          inet addr:127.0.0.1  Mask:255.0.0.0&lt;br /&gt;
          inet6 addr: ::1/128 Scope:Host&lt;br /&gt;
          UP LOOPBACK RUNNING  MTU:65536  Metric:1&lt;br /&gt;
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
          collisions:0 txqueuelen:1&lt;br /&gt;
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)&lt;br /&gt;
&lt;br /&gt;
lowpan0   Link encap:UNSPEC  HWaddr 2E-29-30-60-57-58-A0-CC-00-00-00-00-00-00-00-00&lt;br /&gt;
          inet6 addr: fe80::2c29:3060:5758:a0cc/64 Scope:Link&lt;br /&gt;
          UP BROADCAST RUNNING MULTICAST  MTU:1280  Metric:1&lt;br /&gt;
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
          collisions:0 txqueuelen:1&lt;br /&gt;
          RX bytes:0 (0.0 B)  TX bytes:3246 (3.1 KiB)&lt;br /&gt;
&lt;br /&gt;
wlan0     Link encap:Ethernet  HWaddr b8:27:eb:b6:e1:ee&lt;br /&gt;
          inet addr:192.168.130.204  Bcast:192.168.130.255  Mask:255.255.255.0&lt;br /&gt;
          inet6 addr: fe80::468:a46c:b9be:706e/64 Scope:Link&lt;br /&gt;
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
          RX packets:555 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
          TX packets:625 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
          collisions:0 txqueuelen:1000&lt;br /&gt;
          RX bytes:67396 (65.8 KiB)  TX bytes:146552 (143.1 KiB)&lt;br /&gt;
&lt;br /&gt;
wpan0     Link encap:UNSPEC  HWaddr 2E-29-30-60-57-58-A0-CC-00-00-00-00-00-00-00-00&lt;br /&gt;
          UP BROADCAST RUNNING NOARP  MTU:123  Metric:1&lt;br /&gt;
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
          TX packets:33 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
          collisions:0 txqueuelen:300&lt;br /&gt;
          RX bytes:0 (0.0 B)  TX bytes:3300 (3.2 KiB)&lt;br /&gt;
&lt;br /&gt;
root@raspberrypi:~#&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Les circuits at86rf230 sont faits de telle sorte que la mac adresse du composant change à chaque reboot du coup, il vaut mieux fixer une adresse IPv6 à cette interface pour savoir à qui l'on parle ;-)&lt;br /&gt;
Par exemple sur une carte qui sera le routeur :&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; ip addr add fd28::1/64 dev lowpan0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Et sur l'autre... &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; ip addr add fd28::2/64 dev lowpan0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour obtenir enfin ce que nous voulions :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
root@raspberrypi:~# ping6 -I lowpan0 fd28::2&lt;br /&gt;
PING fd28::2(fd28::2) from fd28::1 lowpan0: 56 data bytes&lt;br /&gt;
64 bytes from fd28::2: icmp_seq=1 ttl=64 time=24.6 ms&lt;br /&gt;
64 bytes from fd28::2: icmp_seq=2 ttl=64 time=14.9 ms&lt;br /&gt;
64 bytes from fd28::2: icmp_seq=3 ttl=64 time=14.7 ms&lt;br /&gt;
64 bytes from fd28::2: icmp_seq=4 ttl=64 time=13.5 ms&lt;br /&gt;
64 bytes from fd28::2: icmp_seq=5 ttl=64 time=12.9 ms&lt;br /&gt;
64 bytes from fd28::2: icmp_seq=6 ttl=64 time=15.9 ms&lt;br /&gt;
64 bytes from fd28::2: icmp_seq=7 ttl=64 time=22.4 ms&lt;br /&gt;
64 bytes from fd28::2: icmp_seq=8 ttl=64 time=21.8 ms&lt;br /&gt;
64 bytes from fd28::2: icmp_seq=9 ttl=64 time=27.8 ms&lt;br /&gt;
^C&lt;br /&gt;
--- fd28::2 ping statistics ---&lt;br /&gt;
9 packets transmitted, 9 received, 0% packet loss, time 8012ms&lt;br /&gt;
rtt min/avg/max/mdev = 12.901/18.778/27.853/5.172 ms&lt;br /&gt;
root@raspberrypi:~#&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Installons_la_carte&amp;diff=13072</id>
		<title>Installons la carte</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Installons_la_carte&amp;diff=13072"/>
				<updated>2017-01-20T14:25:30Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Created page with &amp;quot;La carte s'installe avec quelques précautions pour le courant électrostatique sur les pins 15-26 du RPi3.  500px (Pas de souci pour ce qui est branché...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La carte s'installe avec quelques précautions pour le courant électrostatique sur les pins 15-26 du RPi3. &lt;br /&gt;
[[File:rpiradio.jpg|500px]] (Pas de souci pour ce qui est branché sur 6-8-10).&lt;br /&gt;
&lt;br /&gt;
Une fois bien vérifié que le fichier /boot/config.txt contienne bien ces 2 lignes :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
dtparam=spi=on &lt;br /&gt;
&lt;br /&gt;
dtoverlay=at86rf233 &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
la commande ``sudo modprobe at86rf230 `` doit charger le bon module.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
ieee802154_6lowpan     19335  0&lt;br /&gt;
nhc_routing              930  0&lt;br /&gt;
nhc_udp                 2722  0&lt;br /&gt;
nhc_mobility             932  0&lt;br /&gt;
nhc_hop                  922  0&lt;br /&gt;
nhc_ipv6                 924  0&lt;br /&gt;
nhc_fragment             932  0&lt;br /&gt;
nhc_dest                 924  0&lt;br /&gt;
6lowpan                13191  8 nhc_fragment,ieee802154_6lowpan,nhc_hop,nhc_udp,nhc_dest,nhc_ipv6,nhc_mobility,nhc_routing&lt;br /&gt;
bnep                   10340  2&lt;br /&gt;
hci_uart               17875  1&lt;br /&gt;
btbcm                   5865  1 hci_uart&lt;br /&gt;
bluetooth             329258  22 bnep,btbcm,hci_uart&lt;br /&gt;
brcmfmac              194920  0&lt;br /&gt;
at86rf230              22211  0&lt;br /&gt;
brcmutil                5661  1 brcmfmac&lt;br /&gt;
mac802154              49099  1 at86rf230&lt;br /&gt;
ieee802154             55762  2 ieee802154_6lowpan,mac802154&lt;br /&gt;
crc_ccitt               1278  1 mac802154&lt;br /&gt;
cfg80211              434231  1 brcmfmac&lt;br /&gt;
rfkill                 15912  4 cfg80211,bluetooth&lt;br /&gt;
snd_soc_bcm2835_i2s     5801  0&lt;br /&gt;
snd_soc_core          128820  1 snd_soc_bcm2835_i2s&lt;br /&gt;
snd_bcm2835            20447  0&lt;br /&gt;
snd_pcm_dmaengine       3455  1 snd_soc_core&lt;br /&gt;
snd_pcm                76497  3 snd_bcm2835,snd_soc_core,snd_pcm_dmaengine&lt;br /&gt;
snd_timer              19374  1 snd_pcm&lt;br /&gt;
snd                    52036  4 snd_bcm2835,snd_soc_core,snd_timer,snd_pcm&lt;br /&gt;
spi_bcm2835             6678  0&lt;br /&gt;
bcm2835_gpiomem         3040  0&lt;br /&gt;
bcm2835_wdt             3097  0&lt;br /&gt;
uio_pdrv_genirq         3164  0&lt;br /&gt;
uio                     7936  1 uio_pdrv_genirq&lt;br /&gt;
i2c_dev                 5920  0&lt;br /&gt;
i2c_bcm2708             4770  0&lt;br /&gt;
ipv6                  354336  36&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
et le résultat attendu après avoir fait tout ce qui précède !!!&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo iwpan list&lt;br /&gt;
wpan_phy phy0&lt;br /&gt;
supported channels:&lt;br /&gt;
        page 0: 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26&lt;br /&gt;
current_page: 0&lt;br /&gt;
current_channel: 13,  2415 MHz&lt;br /&gt;
cca_mode: (1) Energy above threshold&lt;br /&gt;
cca_ed_level: -77&lt;br /&gt;
tx_power: 4&lt;br /&gt;
capabilities:&lt;br /&gt;
        iftypes: node,monitor&lt;br /&gt;
        channels:&lt;br /&gt;
                page 0:&lt;br /&gt;
                        [11]  2405 MHz, [12]  2410 MHz, [13]  2415 MHz,&lt;br /&gt;
                        [14]  2420 MHz, [15]  2425 MHz, [16]  2430 MHz,&lt;br /&gt;
                        [17]  2435 MHz, [18]  2440 MHz, [19]  2445 MHz,&lt;br /&gt;
                        [20]  2450 MHz, [21]  2455 MHz, [22]  2460 MHz,&lt;br /&gt;
                        [23]  2465 MHz, [24]  2470 MHz, [25]  2475 MHz,&lt;br /&gt;
                        [26]  2480 MHz&lt;br /&gt;
        tx_powers:&lt;br /&gt;
                        4 dBm, 3.7 dBm, 3.4 dBm, 3 dBm, 2.5 dBm, 2 dBm,&lt;br /&gt;
                        1 dBm, 0 dBm, -1 dBm, -2 dBm, -3 dBm, -4 dBm,&lt;br /&gt;
                        -6 dBm, -8 dBm, -12 dBm, -17 dBm,&lt;br /&gt;
        cca_ed_levels:&lt;br /&gt;
                        -91 dBm, -89 dBm, -87 dBm, -85 dBm, -83 dBm, -81 dBm,&lt;br /&gt;
                        -79 dBm, -77 dBm, -75 dBm, -73 dBm, -71 dBm, -69 dBm,&lt;br /&gt;
                        -67 dBm, -65 dBm, -63 dBm, -61 dBm,&lt;br /&gt;
        cca_modes:&lt;br /&gt;
                (1) Energy above threshold&lt;br /&gt;
                (2) Carrier sense only&lt;br /&gt;
                (3, cca_opt: 0) Carrier sense with energy above threshold (logic                                               al operator is 'and')&lt;br /&gt;
                (3, cca_opt: 1) Carrier sense with energy above threshold (logic                                               al operator is 'or')&lt;br /&gt;
        min_be: 0,1,2,3,4,5,6,7,8&lt;br /&gt;
        max_be: 3,4,5,6,7,8&lt;br /&gt;
        csma_backoffs: 0,1,2,3,4,5&lt;br /&gt;
        frame_retries: 0,1,2,3,4,5,6,7&lt;br /&gt;
        lbt: false&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il est temps de passer à la [[configuration IPv6|Configuration IPv6]].&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=File:Rpiradio.jpg&amp;diff=13070</id>
		<title>File:Rpiradio.jpg</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=File:Rpiradio.jpg&amp;diff=13070"/>
				<updated>2017-01-20T14:19:43Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Installons_les_bons_outils&amp;diff=13069</id>
		<title>Installons les bons outils</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Installons_les_bons_outils&amp;diff=13069"/>
				<updated>2017-01-20T14:11:55Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Created page with &amp;quot;Allons chercher et installons les outils wpan-tools.  Au préalable installons les outils pour installer les outils...   &amp;lt;nowiki&amp;gt; sudo apt-get install dh-autoreconf sudo apt-g...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Allons chercher et installons les outils wpan-tools.&lt;br /&gt;
&lt;br /&gt;
Au préalable installons les outils pour installer les outils...&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo apt-get install dh-autoreconf&lt;br /&gt;
sudo apt-get install install libnl-genl-3-dev&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cherchons et installons&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
git clone --depth 1 https://github.com/linux-wpan/wpan-tools.git&lt;br /&gt;
cd wpan-tools&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
./configure CFLAGS='-g -O0' --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Installons_le_bon_kernel&amp;diff=13068</id>
		<title>Installons le bon kernel</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Installons_le_bon_kernel&amp;diff=13068"/>
				<updated>2017-01-20T14:08:57Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Created page with &amp;quot;* Je suis passé du noyau 2.4.4-34V7 au noyau 2.7.10 pour pouvoir utiliser la carte et gérer convenablement le 802.15.4 sur un RPi3.   &amp;lt;nowiki&amp;gt; sudo apt-get install git libcu...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Je suis passé du noyau 2.4.4-34V7 au noyau 2.7.10 pour pouvoir utiliser la carte et gérer convenablement le 802.15.4 sur un RPi3.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo apt-get install git libcurses5-dev bc &lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
sudo apt-get reboot&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Une fois cela fait, nous avons un système à jour avec le dernier kernel installé.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
uname -a&lt;br /&gt;
Linux raspberrypi 4.4.34-v7+ #930 SMP Wed Nov 23 15:20:41 GMT 2016 armv7l GNU/Linux&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allons chercher de quoi construire un nouveau kernel.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo mkdir /opt/src/rpi_wpan&lt;br /&gt;
sudo chown -R /opt/src&lt;br /&gt;
cd /opt/src/rpi_wpan&lt;br /&gt;
git clone --depth 1 https://github.com/raspberrypi/linux.git \&lt;br /&gt;
    --branch rpi-4.7.y --single-branch linux-rpi3&lt;br /&gt;
git clone --depth 1 https://github.com/raspberrypi/firmware.git \&lt;br /&gt;
    --branch next --single-branch firmware&lt;br /&gt;
cd linux-rpi3&lt;br /&gt;
make bcm2709_defconfig&lt;br /&gt;
make menuconfig&lt;br /&gt;
make kernelversion&lt;br /&gt;
4.7.10&lt;br /&gt;
menuconfig&lt;br /&gt;
     Device Drivers&lt;br /&gt;
     --&amp;gt; Network device support&lt;br /&gt;
         --&amp;gt; IEEE 802.15.4 drivers&lt;br /&gt;
   &lt;br /&gt;
     Networking support&lt;br /&gt;
     --&amp;gt; Networking Options&lt;br /&gt;
       --&amp;gt; IEEE Std 802.15.4 Low-Rate Wireless Personal Area&lt;br /&gt;
             Networks support&lt;br /&gt;
&lt;br /&gt;
make zImage modules dtbs -j4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Quelques 2 heures après....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo make modules_install dtbs_install&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après un reboot...&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
uname -a&lt;br /&gt;
Linux raspberrypi 4.7.10-v7+ #1 SMP Mon Dec 12 15:21:31 CET 2016 armv7l GNU/Linux&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Maintenant que nous avons un nouveau noyau évitons qu'il soit écrasé par une mise à jour.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo apt-mark hold raspberrypi-kernel&lt;br /&gt;
sudo apt-mark hold raspberrypi-bootloader&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13064</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13064"/>
				<updated>2017-01-13T20:24:46Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: /* 2 Modules LoRA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IOT]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT [https://www.kickstarter.com/projects/419277966/the-things-network/description] dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZygBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRA ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. Peut-être aurait-il fallu acheter des modules en 868Mhz. Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[[File:Feather_32U4.jpg|500px]] &lt;br /&gt;
&lt;br /&gt;
Si la soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[RFM95_TX]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[RFM95_RX]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]] [img[OpenLabs.jpg]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13063</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13063"/>
				<updated>2017-01-13T20:22:33Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: /* 2 Modules LoRA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IOT]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT [https://www.kickstarter.com/projects/419277966/the-things-network/description] dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZygBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRA ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. Peut-être aurait-il fallu acheter des modules en 868Mhz. Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[[File:Feather_32U4.jpg]] &lt;br /&gt;
&lt;br /&gt;
Si la soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[RFM95_TX]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[RFM95_RX]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]] [img[OpenLabs.jpg]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13062</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13062"/>
				<updated>2017-01-13T20:19:49Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: /* 2 Modules LoRA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IOT]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT [https://www.kickstarter.com/projects/419277966/the-things-network/description] dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZygBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRA ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. Peut-être aurait-il fallu acheter des modules en 868Mhz. Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[File:Feather_32U4.jpg] &lt;br /&gt;
&lt;br /&gt;
Si la soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[RFM95_TX]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[RFM95_RX]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]] [img[OpenLabs.jpg]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=File:Feather_32U4.jpg&amp;diff=13061</id>
		<title>File:Feather 32U4.jpg</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=File:Feather_32U4.jpg&amp;diff=13061"/>
				<updated>2017-01-13T20:17:28Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Adafruit 32U4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Adafruit 32U4&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT&amp;diff=13047</id>
		<title>IOT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT&amp;diff=13047"/>
				<updated>2017-01-06T18:26:42Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ongoing_Projects]]&lt;br /&gt;
== Description ==&lt;br /&gt;
* Projet de recherche sur le très bruité sujet Internet des Objets.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
* A goal, explorer les différents modes de communication M2M (machine 2 machine)&lt;br /&gt;
* An other goal, expérimenter les réseaux bas débit LoRA en vue de se passer de tout fournisseur d’accès.&lt;br /&gt;
* An other goal, se familiariser avec les protocoles 6LOWPAN pour le réseau et MQTT ou CoAP au niveau applicatif &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Obstacles ==&lt;br /&gt;
A list of potential obstacles&lt;br /&gt;
* An obstacle : Éviter le bruit...&lt;br /&gt;
&lt;br /&gt;
== Component  ==&lt;br /&gt;
* Something : at86rf230 pour RPi3 fourni par OpenLabs (testé sur kernel 4.7.10 RPi3)&lt;br /&gt;
* Something : RFM95 en 433Mhz et 868Mhz sur arduino (testé sur Feather 32U4 Adafruit)&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
* Opening: Décembre 2016&lt;br /&gt;
* Ending: xxhxx&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[ESP8266]]&lt;br /&gt;
* [[IOT-DOC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* [[User:????]] (Leader)&lt;br /&gt;
* [[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT&amp;diff=13046</id>
		<title>IOT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT&amp;diff=13046"/>
				<updated>2017-01-06T18:25:36Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ongoing_Projects]]&lt;br /&gt;
== Description ==&lt;br /&gt;
* Projet de recherche sur le très bruité sujet Internet des Objets.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
* A goal, explorer les différents modes de communication M2M (machine 2 machine)&lt;br /&gt;
* An other goal, expérimenter les réseaux bas débit LoRA en vue de se passer de tout fournisseur d’accès.&lt;br /&gt;
* An other goal, se familiariser avec les protocoles 6LOWPAN pour le réseau et MQTT ou CoAP au niveau applicatif &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Obstacles ==&lt;br /&gt;
A list of potential obstacles&lt;br /&gt;
* An obstacle : Éviter le bruit...&lt;br /&gt;
&lt;br /&gt;
== Component  ==&lt;br /&gt;
* Something : at86rf230 pour RPi3 fourni par OpenLabs (testé sur kernel 4.7.10 RPi3)&lt;br /&gt;
* Something : RFM95 en 433Mhz et 868Mhz sur arduino (testé sur Feather 32U4 Adafruit)&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
* Opening: Décembre 2016&lt;br /&gt;
* Ending: xxhxx&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[ESP8266]]&lt;br /&gt;
* [[IOT:IOT-DOC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* [[User:????]] (Leader)&lt;br /&gt;
* [[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT&amp;diff=13045</id>
		<title>IOT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT&amp;diff=13045"/>
				<updated>2017-01-06T18:24:12Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ongoing_Projects]]&lt;br /&gt;
== Description ==&lt;br /&gt;
* Projet de recherche sur le très bruité sujet Internet des Objets.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
* A goal, explorer les différents modes de communication M2M (machine 2 machine)&lt;br /&gt;
* An other goal, expérimenter les réseaux bas débit LoRA en vue de se passer de tout fournisseur d’accès.&lt;br /&gt;
* An other goal, se familiariser avec les protocoles 6LOWPAN pour le réseau et MQTT ou CoAP au niveau applicatif &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Obstacles ==&lt;br /&gt;
A list of potential obstacles&lt;br /&gt;
* An obstacle : Éviter le bruit...&lt;br /&gt;
&lt;br /&gt;
== Component  ==&lt;br /&gt;
* Something : at86rf230 pour RPi3 fourni par OpenLabs (testé sur kernel 4.7.10 RPi3)&lt;br /&gt;
* Something : RFM95 en 433Mhz et 868Mhz sur arduino (testé sur Feather 32U4 Adafruit)&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
* Opening: Décembre 2016&lt;br /&gt;
* Ending: xxhxx&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[ESP8266]]&lt;br /&gt;
* [[:IOT:IOT-DOC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* [[User:????]] (Leader)&lt;br /&gt;
* [[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Category:IOT&amp;diff=13044</id>
		<title>Category:IOT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Category:IOT&amp;diff=13044"/>
				<updated>2017-01-06T18:21:12Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Création Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT&amp;diff=13042</id>
		<title>IOT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT&amp;diff=13042"/>
				<updated>2017-01-06T16:32:35Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ongoing_Projects]]&lt;br /&gt;
== Description ==&lt;br /&gt;
* Projet de recherche sur le très bruité sujet Internet des Objets.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
* A goal, explorer les différents modes de communication M2M (machine 2 machine)&lt;br /&gt;
* An other goal, expérimenter les réseaux bas débit LoRA en vue de se passer de tout fournisseur d’accès.&lt;br /&gt;
* An other goal, se familiariser avec les protocoles 6LOWPAN pour le réseau et MQTT ou CoAP au niveau applicatif &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Obstacles ==&lt;br /&gt;
A list of potential obstacles&lt;br /&gt;
* An obstacle : Éviter le bruit...&lt;br /&gt;
&lt;br /&gt;
== Component  ==&lt;br /&gt;
* Something : at86rf230 pour RPi3 fourni par OpenLabs (testé sur kernel 4.7.10 RPi3)&lt;br /&gt;
* Something : RFM95 en 433Mhz et 868Mhz sur arduino (testé sur Feather 32U4 Adafruit)&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
* Opening: Décembre 2016&lt;br /&gt;
* Ending: xxhxx&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[ESP8266]]&lt;br /&gt;
* [[IOT-DOC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* [[User:????]] (Leader)&lt;br /&gt;
* [[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT&amp;diff=13041</id>
		<title>IOT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT&amp;diff=13041"/>
				<updated>2017-01-06T16:31:47Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: /* Modification des liens */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ongoing_Projects]]&lt;br /&gt;
== Description ==&lt;br /&gt;
* Projet de recherche sur le très bruité sujet Internet des Objets.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
* A goal, explorer les différents modes de communication M2M (machine 2 machine)&lt;br /&gt;
* An other goal, expérimenter les réseaux bas débit LoRA en vue de se passer de tout fournisseur d’accès.&lt;br /&gt;
* An other goal, se familiariser avec les protocoles 6LOWPAN pour le réseau et MQTT ou CoAP au niveau applicatif &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Obstacles ==&lt;br /&gt;
A list of potential obstacles&lt;br /&gt;
* An obstacle : Éviter le bruit...&lt;br /&gt;
&lt;br /&gt;
== Component  ==&lt;br /&gt;
* Something : at86rf230 pour RPi3 fourni par OpenLabs (testé sur kernel 4.7.10 RPi3)&lt;br /&gt;
* Something : RFM95 en 433Mhz et 868Mhz sur arduino (testé sur Feather 32U4 Adafruit)&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
* Opening: Décembre 2016&lt;br /&gt;
* Ending: xxhxx&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[ESP8266]]&lt;br /&gt;
* [[IOT:IOT-DOC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* [[User:????]] (Leader)&lt;br /&gt;
* [[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13040</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13040"/>
				<updated>2017-01-06T16:30:37Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Tentative de en place dans la category IOT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IOT]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT [https://www.kickstarter.com/projects/419277966/the-things-network/description] dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZygBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRA ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. Peut-être aurait-il fallu acheter des modules en 868Mhz. Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[img[3079-04.jpg]] &lt;br /&gt;
&lt;br /&gt;
Si la soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[RFM95_TX]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[RFM95_RX]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]] [img[OpenLabs.jpg]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13039</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13039"/>
				<updated>2017-01-06T16:14:39Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT [https://www.kickstarter.com/projects/419277966/the-things-network/description] dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZygBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRA ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. Peut-être aurait-il fallu acheter des modules en 868Mhz. Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[img[3079-04.jpg]] &lt;br /&gt;
&lt;br /&gt;
Si la soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[RFM95_TX]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[RFM95_RX]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]] [img[OpenLabs.jpg]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13038</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13038"/>
				<updated>2017-01-06T16:11:12Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZygBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRA ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. Peut-être aurait-il fallu acheter des modules en 868Mhz. Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[img[3079-04.jpg]] &lt;br /&gt;
&lt;br /&gt;
Si la soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[RFM95_TX]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[RFM95_RX]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]] [img[OpenLabs.jpg]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
*[[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13037</id>
		<title>IOT-DOC</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT-DOC&amp;diff=13037"/>
				<updated>2017-01-06T16:08:17Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Création document projet IOT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Il n'est plus d'objet technique aujourd'hui qui ne soit connecté.&lt;br /&gt;
&lt;br /&gt;
Cela est vrai des ordinateurs et des smartphones qui seraient complètement inutiles sans connectivité. Cela commence à être vrai pour l'ensemble des objets techniques, qui contiennent presque tous des microcontrôleurs pouvant facilement profiter d'une connectique ne serait-ce que pour être mis à jour et évoluer.&lt;br /&gt;
&lt;br /&gt;
Le grand chapitre de l'Internet des objets Internet of Things (IoT) est ouvert. Si les opérateurs de Télécom ont mis la main sur l'Internet mobile en faisant payer extrêmement cher le passage par leur infrastructure 3g, 4g ou 5g il n'est pas question de les laisser faire et de passer par eux pour l'IoT ou par d'autres opérateurs comme Sigfox™. C'est tout le sens du projet TnT dans lequel nous ne pouvons que nous inscrire.&lt;br /&gt;
&lt;br /&gt;
== Définitions ==&lt;br /&gt;
&lt;br /&gt;
On peut utiliser n'importe quelle couche réseau physique pour faire communiquer des dispositifs entre eux. Ethernet si l'on dispose d'un réseau câblé, le WiFi (802.11) si l'on dispose d'une couverture et de l'énergie, du GSM si l'on possède couverture, énergie et argent...&lt;br /&gt;
&lt;br /&gt;
S'il s'agit d'interconnecter une grappe d'objets à proximité d'un système à grande connectivité, le Bluetooth (802.15.1) peut parfaitement convenir. De même, de nombreux petits circuits radio permettent d'interconnecter des systèmes à faible coût (433Mhz, XBee, etc.)&lt;br /&gt;
&lt;br /&gt;
Il n'est pas toujours nécessaire de disposer d'une grande bande passante pour leurs communications. Si quelques ko/s suffissent, il existe des modules qui assurent ce débit sur de courtes (ZygBee) ou plus longues distances (LoRa) réclamant peut d'énergie, les protocoles qui les concerne appartiennent à la famille 802.15.4. Un groupe travaille sur la mise en réseau mesh de ces objets, ce qui nous intéresse beaucoup.&lt;br /&gt;
&lt;br /&gt;
Si les cartes qui supportent un Linux embarqué offrent tout le confort nécessaire pour implémenter les protocoles (RPi,BBB etc). Il n'en est pas de même pour les petites cartes à microcontrôleurs si des micro systèmes d'exploitation n'étaient pas prévus pour l'IoT.&lt;br /&gt;
&lt;br /&gt;
RIOT est l'exemple typique d'un tel système.&lt;br /&gt;
&lt;br /&gt;
Une fois les liaisons établies, reste la raison pour laquelle on l'a établie, la transmission de messages ! Pour cela MQTT va devoir être implémenté... et fera l'objet d'un point à part.&lt;br /&gt;
&lt;br /&gt;
== Réalisations ==&lt;br /&gt;
=== 2 Modules LoRA ===&lt;br /&gt;
Pour diminuer les difficultés nous partons de 2 modules d'AdaFruit RFM95 en 433Mhz sur circuits Feather 32U4 [https://www.adafruit.com/product/3079]. Peut-être aurait-il fallu acheter des modules en 868Mhz. Cette architecture a l’intérêt d’être parfaitement conçue pour un usage embarqué avec alimentation sur batterie Lipo et chargeur intégré.&lt;br /&gt;
&lt;br /&gt;
[img[3079-04.jpg]] &lt;br /&gt;
&lt;br /&gt;
Si la soudure des barrettes de connecteurs et de l'antenne  de 16.5cm ne pose pas de problème. Il faut bien suivre les instructions d'Adafruit pour installer les librairies pour les composants de la famille Feather 32U4 et la librairie RadioHead [http://www.airspayce.com/mikem/arduino/RadioHead/].&lt;br /&gt;
&lt;br /&gt;
Une fois cela fait je me suis empressé d'utiliser les sources d'AdaFruit pour réaliser un émetteur et un récepteur afin de tester la connectivité. (L'hybride RX_TX donné comme exemple dans la librairie ne marche pas out-of-the-box)&lt;br /&gt;
&lt;br /&gt;
Le source de l'émetteur [[RFM95_TX]]&lt;br /&gt;
&lt;br /&gt;
Le source du récepteur [[RFM95_RX]]&lt;br /&gt;
&lt;br /&gt;
La communication entre mon atelier 2°me sous-sol et mon appartement 2°me étage fonctionne bien, il faudra tester sur de plus longues distances et dans d'autres environnements ;-)&lt;br /&gt;
&lt;br /&gt;
=== 2 modules at86rf230 pour RPi ===&lt;br /&gt;
Connexion de 2 cartes Atmel AT86RF233 de chez OpenLabs [http://openlabs.co/store/]&lt;br /&gt;
&lt;br /&gt;
Je vais suivre pas à pas les articles de Linux Journal N°271, 272 et 273.&lt;br /&gt;
&lt;br /&gt;
*[[Installons le bon kernel]] &amp;gt; 4.7&lt;br /&gt;
*[[Installons les bons outils]] wpan-tools&lt;br /&gt;
*[[Installons la carte]] [img[OpenLabs.jpg]]&lt;br /&gt;
*[[Configuration IPv6]]&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
Retrouvez ici la liste des références qui accompagnent l’article « RIOT, le système d’exploitation libre pour l’Internet des objets » (p.45-57), publié dans Open Silicium n°18 (numéro de avril-mai-juin 2016) par Aline Hof :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [1]  Projet RIOT sur GitHub [https://github.com/RIOT-OS/RIOT]&lt;br /&gt;
* [2]  Raisons du choix de RIOT dans le projet Watr.li [http://watr.li/riot.html]&lt;br /&gt;
* [3]  Protocole 6LowPAN [https://fr.wikipedia.org/wiki/6LoWPAN]&lt;br /&gt;
* [4]  Protocole RPL [https://tools.ietf.org/html/rfc6550]&lt;br /&gt;
* [5]  Protocole COAP [https://tools.ietf.org/html/rfc7252]&lt;br /&gt;
* [6]  Wiki RIOT [https://github.com/RIOT-OS/RIOT/wiki]&lt;br /&gt;
* [7]  Documentation de l’API RIOT [http://doc.riot-os.org]&lt;br /&gt;
* [8]  Liste de cartes supportées par RIOT [https://github.com/RIOT-OS/RIOT/wiki/RIOT-Platforms]&lt;br /&gt;
* [9]  Contribuer à RIOT [https://github.com/RIOT-OS/RIOT/wiki/Contributing-to-RIOT]&lt;br /&gt;
* [10] Liste des périphériques externes supportés [http://riot-os.org/api/group__drivers.html]&lt;br /&gt;
* [11] I2C temp[https://github.com/aabadie/riot-apps/tree/master/i2c_temperature]&lt;br /&gt;
* [12] API I2C dans RIOT[http://riot-os.org/api/group__drivers__periph__i2c.html]&lt;br /&gt;
* [13] Doc de carte d’extension Atmel I/O1 Xplained pro [http://www.atmel.com/images/atmel-42078-io1-xplained-pro_user-guide.pdf]&lt;br /&gt;
* [14] Code P2P [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network]&lt;br /&gt;
* [15] IEEE 802.15.4[https://fr.wikipedia.org/wiki/IEEE_802.15.4]&lt;br /&gt;
* [16] Code source de la section 4.2[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/client_with_sensor]&lt;br /&gt;
* [17] Code source de la section 4.3[https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_terminal]&lt;br /&gt;
* [18] SparkFun Bluetooth Modem – BlueSMiRF Silver [https://www.sparkfun.com/products/12577]&lt;br /&gt;
* [19] Adafruit Bluefruit LE UART Friend [https://www.adafruit.com/product/2479]&lt;br /&gt;
* [20] Code source de la section 4.4 [https://github.com/aabadie/riot-apps/tree/master/point_to_point_network/server_to_bluetooth]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=User:Tim&amp;diff=13036</id>
		<title>User:Tim</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=User:Tim&amp;diff=13036"/>
				<updated>2017-01-06T15:27:50Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Création fiche personnelle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Membre du FabLab Renens ==&lt;br /&gt;
Suite à plus de deux décennies d'hacktivisme dans l'équipe réseau de la vénérable institution EPFL, je me suis retiré dans les FabLabs pour continuer à faire ce que j'ai toujours fait...&lt;br /&gt;
&lt;br /&gt;
Faire en sorte qu'un FabLab reste un hackerspace, un espace ouvert et critique sur l'évolution des techniques  et ne devienne pas une boutique, tel est le sens de mon investissement.&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT&amp;diff=13035</id>
		<title>IOT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT&amp;diff=13035"/>
				<updated>2017-01-06T15:17:05Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: /* Participants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ongoing_Projects]]&lt;br /&gt;
== Description ==&lt;br /&gt;
* Projet de recherche sur le très bruité sujet Internet des Objets.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
* A goal, explorer les différents modes de communication M2M (machine 2 machine)&lt;br /&gt;
* An other goal, expérimenter les réseaux bas débit LoRA en vue de se passer de tout fournisseur d’accès.&lt;br /&gt;
* An other goal, se familiariser avec les protocoles 6LOWPAN pour le réseau et MQTT ou CoAP au niveau applicatif &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Obstacles ==&lt;br /&gt;
A list of potential obstacles&lt;br /&gt;
* An obstacle : Éviter le bruit...&lt;br /&gt;
&lt;br /&gt;
== Component  ==&lt;br /&gt;
* Something : at86rf230 pour RPi3 fourni par OpenLabs (testé sur kernel 4.7.10 RPi3)&lt;br /&gt;
* Something : RFM95 en 433Mhz et 868Mhz sur arduino (testé sur Feather 32U4 Adafruit)&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
* Opening: Décembre 2016&lt;br /&gt;
* Ending: xxhxx&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[ESP8266]]&lt;br /&gt;
* [[IOT-DOC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* [[User:????]] (Leader)&lt;br /&gt;
* [[User:Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=IOT&amp;diff=13034</id>
		<title>IOT</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=IOT&amp;diff=13034"/>
				<updated>2017-01-06T15:15:41Z</updated>
		
		<summary type="html">&lt;p&gt;Tim: Création fiche&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ongoing_Projects]]&lt;br /&gt;
== Description ==&lt;br /&gt;
* Projet de recherche sur le très bruité sujet Internet des Objets.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
* A goal, explorer les différents modes de communication M2M (machine 2 machine)&lt;br /&gt;
* An other goal, expérimenter les réseaux bas débit LoRA en vue de se passer de tout fournisseur d’accès.&lt;br /&gt;
* An other goal, se familiariser avec les protocoles 6LOWPAN pour le réseau et MQTT ou CoAP au niveau applicatif &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Obstacles ==&lt;br /&gt;
A list of potential obstacles&lt;br /&gt;
* An obstacle : Éviter le bruit...&lt;br /&gt;
&lt;br /&gt;
== Component  ==&lt;br /&gt;
* Something : at86rf230 pour RPi3 fourni par OpenLabs (testé sur kernel 4.7.10 RPi3)&lt;br /&gt;
* Something : RFM95 en 433Mhz et 868Mhz sur arduino (testé sur Feather 32U4 Adafruit)&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
* Opening: Décembre 2016&lt;br /&gt;
* Ending: xxhxx&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[ESP8266]]&lt;br /&gt;
* [[IOT-DOC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* [[User:????]] (Leader)&lt;br /&gt;
* [[User:Richard|Tim]]&lt;/div&gt;</summary>
		<author><name>Tim</name></author>	</entry>

	</feed>