Intégrer des nodes LoraWan connectés au réseau TTN dans Jeedom
Publié : 24 nov. 2018, 23:33
Bonjour,
Voici un partage de mon expérience sur l'intégration dans Jeedom d'objets connectés via le réseau TTN, en espérant que cela sera utile à qqu'un.
Qu'est-ce qu'un "node" LoraWan et quelles sont les applications: un node est un module électronique qui intègre des capteurs (eg. température, humidité, GPS, distance, niveau cuve, qualité air, relais, contact sec, bouton d'urgence, etc.) et qui va communiquer par signal radio les données de ces capteurs. Un node est typiquement d'encombrement assez faible, alimenté par pile avec une grande autonomie (plusieurs années possible) et une portée allant de 1km en centre ville à plusieurs dizaines de km en champ libre, ce qui sont les principaux atouts de cette technologie et qui la rendent complémentaire aux technologies de type WiFi, BlueTooth, ZWave, etc.
La principale limitation de cette technologie est qu'elle ne permet que des débits de données très faibles, donc pas question de transmettre une image ou du son via LoraWan. C'est plus adapté à transmettre par exemple une température ou une position GPS toutes les 5 minutes sur des grandes distances.
Un node peut également recevoir des commandes (eg. allumer une LED ou fermer un contact) mais le nombre de commandes est limité (typiquement 10/jour max.)
Qu'est-ce que LoraWan: c'est un protocole de communication de type LPWan (low-power wide-area network) basé sur le système de modulation radio "LoRa" (inventé en France, Cocorico).
Qu'est-ce que "The Things Network (TTN)": c'est un réseau qui se veut planétaire et communautaire gratuit basé sur le protocole LoraWan. La communauté le construit en y ajoutant volontairement des gateways (passerelles) afin de densifier le maillage et améliorer la couverture mondiale.
Le réseau SigFox est basé sur une technologie similaire mais est privé et payant.
Pour qu'un node puisse communiquer avec le réseau TTN, il faut que le message radio qu'il envoie puisse être reçu par un ou plusieurs gateways à proximité.
On peut vérifier ici si un gateway TTN offre une couverture à proximité de sa maison.
A ce jour, la couverture du réseau SigFox ou autres opérateurs LPWan privés est souvent meilleure que celle de TTN. Le gros avantage du réseau TTN réside dans le fait qu'il est gratuit et que n'importe qui peut ajouter un gateway chez lui et améliorer ainsi la couverture du réseau TTN.
Il existe une foule de possibilités (DIY à base de RPI par exemple ou off-the-shelf) pour fabriquer/ajouter des gateways compatibles TTN
Intégration dans Jeedom: ci-dessous un exemple d'intégration dans Jeedom. TTN possède une API officielle donc si un développeur Jeedom s'y intérresse un jour, il est possible de créer un plugin et simplifier l'intégration que je propose ici (par exemple en supprimant le besoin d'installer NodeRed)
Donc pour l'intégration dans Jeedom suivant le schéma ci-dessus il faut effectuer les étapes suivantes:
- vérifier la couverture du réseau TTN près de chez soi (https://www.thethingsnetwork.org/map). Si pas de gateway à proximité, il faudra en ajouter un
- créer un compte TTN et y enregistrer son/ses nodes et son gateway le cas échéant (https://www.thethingsnetwork.org/docs/d ... start.html)
- installer le broker MQTT Mosquitto et NodeRed (cela peut être sur le même système où tourne Jeedom). Pour ce faire il existe un excellent script qui automatise l'installation de ces deux logiciels et plus (https://tech.scargill.net/the-script/)
- ajouter le node "node-red-contrib-ttn" dans NodeRed qui va permettre à NodeRed de se connecter aux serveurs de TTN et récupérer les données de votre node (https://www.npmjs.com/package/node-red-contrib-ttn)
- créer un flow (un programme en language NodeRed) qui se connecte à TTN d'un coté, au broker MQTT de l'autre et qui fait passer les données des nodes entre les deux. Example de flow ultra simple ci-dessous:
- installer le plugin MQTT ou jMQTT dans Jeedom et le configurer pour qu'il se connecte au broker MQTT installé à l'étape précédente et qu'il crée les commandes info associées aux données qu'il recevra des nodes
Voilà pour cette première mouture de ce tuto.
Je détaillerai ces étapes au fur et à mesure si besoin et j'ajouterai un exemple de développement de node à partir d'un Arduino MKR WAN 1300 qui permet par exemple de domotiser sa boite aux lettre quand elle est hors de portée du Wifi et autre protocole sans fil.
[edit 07/04/2019] bon j'ai finalement commencé par un node de mesure de distance pour le niveau de la citerne + retour d'état du volet piscine: viewtopic.php?f=133&t=44545
Voici un partage de mon expérience sur l'intégration dans Jeedom d'objets connectés via le réseau TTN, en espérant que cela sera utile à qqu'un.
Qu'est-ce qu'un "node" LoraWan et quelles sont les applications: un node est un module électronique qui intègre des capteurs (eg. température, humidité, GPS, distance, niveau cuve, qualité air, relais, contact sec, bouton d'urgence, etc.) et qui va communiquer par signal radio les données de ces capteurs. Un node est typiquement d'encombrement assez faible, alimenté par pile avec une grande autonomie (plusieurs années possible) et une portée allant de 1km en centre ville à plusieurs dizaines de km en champ libre, ce qui sont les principaux atouts de cette technologie et qui la rendent complémentaire aux technologies de type WiFi, BlueTooth, ZWave, etc.
La principale limitation de cette technologie est qu'elle ne permet que des débits de données très faibles, donc pas question de transmettre une image ou du son via LoraWan. C'est plus adapté à transmettre par exemple une température ou une position GPS toutes les 5 minutes sur des grandes distances.
Un node peut également recevoir des commandes (eg. allumer une LED ou fermer un contact) mais le nombre de commandes est limité (typiquement 10/jour max.)
Qu'est-ce que LoraWan: c'est un protocole de communication de type LPWan (low-power wide-area network) basé sur le système de modulation radio "LoRa" (inventé en France, Cocorico).
Qu'est-ce que "The Things Network (TTN)": c'est un réseau qui se veut planétaire et communautaire gratuit basé sur le protocole LoraWan. La communauté le construit en y ajoutant volontairement des gateways (passerelles) afin de densifier le maillage et améliorer la couverture mondiale.
Le réseau SigFox est basé sur une technologie similaire mais est privé et payant.
Pour qu'un node puisse communiquer avec le réseau TTN, il faut que le message radio qu'il envoie puisse être reçu par un ou plusieurs gateways à proximité.
On peut vérifier ici si un gateway TTN offre une couverture à proximité de sa maison.
A ce jour, la couverture du réseau SigFox ou autres opérateurs LPWan privés est souvent meilleure que celle de TTN. Le gros avantage du réseau TTN réside dans le fait qu'il est gratuit et que n'importe qui peut ajouter un gateway chez lui et améliorer ainsi la couverture du réseau TTN.
Il existe une foule de possibilités (DIY à base de RPI par exemple ou off-the-shelf) pour fabriquer/ajouter des gateways compatibles TTN
Intégration dans Jeedom: ci-dessous un exemple d'intégration dans Jeedom. TTN possède une API officielle donc si un développeur Jeedom s'y intérresse un jour, il est possible de créer un plugin et simplifier l'intégration que je propose ici (par exemple en supprimant le besoin d'installer NodeRed)
Donc pour l'intégration dans Jeedom suivant le schéma ci-dessus il faut effectuer les étapes suivantes:
- vérifier la couverture du réseau TTN près de chez soi (https://www.thethingsnetwork.org/map). Si pas de gateway à proximité, il faudra en ajouter un
- créer un compte TTN et y enregistrer son/ses nodes et son gateway le cas échéant (https://www.thethingsnetwork.org/docs/d ... start.html)
- installer le broker MQTT Mosquitto et NodeRed (cela peut être sur le même système où tourne Jeedom). Pour ce faire il existe un excellent script qui automatise l'installation de ces deux logiciels et plus (https://tech.scargill.net/the-script/)
- ajouter le node "node-red-contrib-ttn" dans NodeRed qui va permettre à NodeRed de se connecter aux serveurs de TTN et récupérer les données de votre node (https://www.npmjs.com/package/node-red-contrib-ttn)
- créer un flow (un programme en language NodeRed) qui se connecte à TTN d'un coté, au broker MQTT de l'autre et qui fait passer les données des nodes entre les deux. Example de flow ultra simple ci-dessous:
- installer le plugin MQTT ou jMQTT dans Jeedom et le configurer pour qu'il se connecte au broker MQTT installé à l'étape précédente et qu'il crée les commandes info associées aux données qu'il recevra des nodes
Voilà pour cette première mouture de ce tuto.
Je détaillerai ces étapes au fur et à mesure si besoin et j'ajouterai un exemple de développement de node à partir d'un Arduino MKR WAN 1300 qui permet par exemple de domotiser sa boite aux lettre quand elle est hors de portée du Wifi et autre protocole sans fil.
[edit 07/04/2019] bon j'ai finalement commencé par un node de mesure de distance pour le niveau de la citerne + retour d'état du volet piscine: viewtopic.php?f=133&t=44545