Projet

Général

Profil

IOT by Tetaneutral » Historique » Version 33

julien Bresciani, 13/01/2022 18:12

1 1 julien Bresciani
h1. IOT by Tetaneutral
2 3 julien Bresciani
3 1 julien Bresciani
h1. contexte
4 2 julien Bresciani
5 24 julien Bresciani
Courant 2021 nous avons lancé un mini projet baptisé le "frigo challenge", ce projet a pour but initial de collecter les données de consommations de frigos de différents participants, ce afin de pouvoir avoir un comparatif réel de différents appareils , le frigo a été choisi car c est un appareil dont sa consommation peut varier de 1 a 5 par rapport a ses performances initiales en fonction de son état. l’intérêt étant aussi de démontrer que faire tourner des frigos peu efficaces est extrêmement énergivore.
6 24 julien Bresciani
7 24 julien Bresciani
Forts de cette mini expérience, nous entendons proposer aux adhérents de Tetaneutral une infrastructure technique soutenue de bout en bout par du logiciel libre afin de pouvoir publier et utiliser les données de divers capteurs "IOT".
8 24 julien Bresciani
9 13 julien Bresciani
Nous documenterons donc dans cette section l architecture et les différentes manipulations pour connecter, gérer et exploiter différents objets de différentes manières.
10 2 julien Bresciani
11 6 julien Bresciani
12 2 julien Bresciani
h1. Le serveur iot.tetaneutral.net
13 3 julien Bresciani
14 2 julien Bresciani
h2. architecture : 
15 2 julien Bresciani
16 2 julien Bresciani
Le serveur regroupe un ensemble de logiciels permettant
17 2 julien Bresciani
* de collecter les données publiées par exemple via le bus logiciel MQTT : usage de mosquitto
18 13 julien Bresciani
* de pré-formater, transformer, convertir les données provenant de différents formats : usage de nodered
19 13 julien Bresciani
* de stocker les données sur une base de donnée orientée "time series" : usage de influxdb
20 2 julien Bresciani
* d'afficher et creer des graphiques afin d exploiter les données publiées par les objets : usage de grafana
21 4 julien Bresciani
22 1 julien Bresciani
h1. Les objets connectables.
23 1 julien Bresciani
24 13 julien Bresciani
Les objets connectés sont autant de nouvelles menottes numériques par le fait que l'on ne connaît pas leur comportement , que l'on ne sait pas qui utilise nos données et à quelles fins. l’objectif au niveau des objets connectes est de n'inciter qu'a l usage d objets dont on maîtrise un minimum le comportement.
25 13 julien Bresciani
à cette fin nous documenterons et encouragerons l'usage de logiciel libre destiné a être flashé sur les objets connectés.
26 4 julien Bresciani
les deux projets majeurs sur lesquels nous nous pencherons pour les objets connectables en wifi sont TASMOTA et ESPHOME
27 13 julien Bresciani
Ces deux projets supportent les matériels intégrant les puces ESP8266 esp32 et tous leurs dérivés.
28 13 julien Bresciani
Une liste non exhaustive du matériel commercialement vendu et flashable est tenue a jour par un mainteneur de TASMOTA via https://templates.blakadder.com/
29 5 julien Bresciani
30 16 julien Bresciani
Nous nous attacherons particulièrement aux prises connectée possédant un relais + la mesure de consommation mais la liste des appareils flashable avec tasmota ou esphome est tres longue (interrupteurs, capteurs de mouvement, vannes d arrosages, pilotes de ventilateurs de plafond , doubles relais pouvant faire des volets roulants. etc etc).
31 16 julien Bresciani
Le matériel recommandé est du plus facile au moins facile : 
32 16 julien Bresciani
les prise NOUS préflashées avec tasmota : https://www.amazon.de/gp/product/B0054PSIPA?tag=tasmotatempla-21
33 16 julien Bresciani
les prises athom préflashées avec tasmota (form factor moins interressant) : https://fr.aliexpress.com/item/4001230982267.html
34 16 julien Bresciani
les prises gosund sp111 si vous en trouvez encore
35 16 julien Bresciani
éviter les prises gosund EP2 car elles sont non demontables facilement (collées)
36 16 julien Bresciani
toutes prises avec monitoring de conso que vous trouverez sur https://templates.blakadder.com/
37 16 julien Bresciani
38 16 julien Bresciani
39 13 julien Bresciani
h2. architecture de la connexion
40 6 julien Bresciani
41 13 julien Bresciani
Nous nous orientons vers deux principes de connexion pour les objets :
42 13 julien Bresciani
43 14 julien Bresciani
h3. le bridge MQTT
44 13 julien Bresciani
45 1 julien Bresciani
* une connexion via un serveur MQTT installé localement sur votre routeur Tetaneutral ou sur une machine que vous possédez , le serveur MQTT servant de relais (BRIDGE) entre votre environnement local et le serveur IOT.tetaneutral.net ce setup a l'avantage de laisser un choix d usages plus important localement (interactions possibles avec un serveur de domotique ), il demande plus de savoir faire technique.
46 15 julien Bresciani
!iotbridgettnn.png!
47 14 julien Bresciani
48 14 julien Bresciani
h3. connexion directe de l'objet
49 13 julien Bresciani
50 1 julien Bresciani
* une connexion sécurisée directe de l'objet au serveur iot.tetaneutral.net : cette méthode, plus simple est à préférer si vous avez peu de compétences technique ou pas de machine capable de faire fonctionner un serveur mqtt.
51 16 julien Bresciani
!iotdirectsslttnn.png!
52 16 julien Bresciani
53 16 julien Bresciani
h2. setup avec tasmota + bridge MQTT sur routeur tetaneutral
54 16 julien Bresciani
55 18 julien Bresciani
h3. flasher tasmota sur l appareil connecté 
56 17 julien Bresciani
57 17 julien Bresciani
lorsque l'on utilise ce setup, la version standard de tasmota suffit , si votre appareil a déjà été flashé avec tasmota et que vous voulez le mettre à jour, suivre les instructions ici : https://tasmota.github.io/docs/Upgrading/#upgrade-using-webui
58 21 julien Bresciani
pour flasher un appareil qui n'a pas encore le firmware tasmota, la méthode universelle est le flashage avec un adaptateur USB série avec des niveaux de tension de 3.3V
59 23 julien Bresciani
60 21 julien Bresciani
attention, ne jamais connecter de port serie sur un appareil alimenté par le 220V comme une prise connectée, c est la destruction de votre pc assurée et danger d’électrocution, lors du flashage, l objet doit etre alimenté par le convertisseur usb serie.
61 23 julien Bresciani
62 17 julien Bresciani
cette methode necessite de localiser sur la carte de l'appareil les broches TX RX VCC GND et GPIO0
63 17 julien Bresciani
pour pouvoir mettre l appareil dans le mode ou il accepte d etre flashé, il faut alimenter VCC pendant que GPIO0 est relié à GND , l'esp8266 passe alors en mode bootloader et acceptera de recevoir un nouveau firmware.
64 23 julien Bresciani
65 17 julien Bresciani
la méthode la plus simple est d utiliser tasmotizer (seulement pour les appareils a base d esp8266 ou 8285 la majorité des appareils) : https://github.com/tasmota/tasmotizer
66 17 julien Bresciani
pour les appareils équipés de puces ESP32, se référer à : https://tasmota.github.io/docs/ESP32/#flashing
67 17 julien Bresciani
68 18 julien Bresciani
h3. premier démarrage
69 1 julien Bresciani
70 23 julien Bresciani
A compléter
71 18 julien Bresciani
72 18 julien Bresciani
h3. parametrer les capteurs et relais de l'appareil
73 1 julien Bresciani
74 23 julien Bresciani
Chaque appareil connecté comporte différents capteurs (mesure de courant, de température, baromètre, hygromètre  etc etc) et actionneurs (relais, moteurs, gradateurs etc)
75 23 julien Bresciani
76 1 julien Bresciani
Tasmota permet d associer chaque broche du microcontrôleur à une fonction ou un périphérique, il n'est pas toujours aisé de les connaître ou de les reconnaître, c est pourquoi les créateurs de tasmota ont mis en place un concept de template ainsi qu'une base de connaissance répertoriant le hardware connu pour embarquer un esp8266 ou un esp32 : https://templates.blakadder.com/
77 23 julien Bresciani
78 19 julien Bresciani
prenons par exemple la prise Athom 16 amps , nous la trouvons a cette adresse : https://templates.blakadder.com/athom_PG01EU16A.html
79 19 julien Bresciani
le site nous indique son template : {"NAME":"Athom Power Monitoring Plug","GPIO":[0,0,0,32,2720,2656,0,0,2624,544,224,0,0,1],"FLAG":0,"BASE":18}
80 1 julien Bresciani
chaque numéro correspond au code de périphérique attaché a chaque broche du microcontrôleur e.g : sur la broche 3 est présent le device code 32 ce qui correspond au bouton 1. (la liste des périphériques et de leur identifieur est disponible ici pour info : https://tasmota.github.io/docs/GPIO-Conversion/#gpio-conversion
81 23 julien Bresciani
82 1 julien Bresciani
il est donc bien pratique de ne pas avoir a faire la configuration soi meme mais d avoir une base de données répertoriant le matériel et ses caractéristiques.
83 23 julien Bresciani
84 19 julien Bresciani
pour appliquer un template a votre appareil, rendez vous sur l'interface web de votre appareil , dans le menu configuration > configure other
85 31 julien Bresciani
!apply_template.png!
86 1 julien Bresciani
coller le template que vous avez récupéré sur la base de templates dans la case template, cocher la case activate et cliquer sur save, le microcontrôleur va redémarrer, quelques secondes après, revenez dans le menu principal , vous constaterez que les données des capteurs que vous avez configuré sont maintenant disponibles.
87 23 julien Bresciani
88 22 julien Bresciani
ci dessous la vue d une prise connectée, on voit le bouton toggle qui sert a faire basculer l'etat du relais , ainsi que toutes les informations de consommation de la prise.
89 22 julien Bresciani
!menu_principal_tasmota_prise.png!
90 19 julien Bresciani
91 33 julien Bresciani
h3. mqtt : installer mosquitto avec support ssl sur le routeur tetaneutral :
92 25 julien Bresciani
93 26 julien Bresciani
* en accedant au routeur via ssh :
94 25 julien Bresciani
<pre><code class="c">
95 1 julien Bresciani
opkg install mosquitto-ssl
96 1 julien Bresciani
</code></pre>
97 33 julien Bresciani
98 33 julien Bresciani
* via l interface web dans l onglet system > software
99 33 julien Bresciani
>rafraichir la liste des paquets avec le bouton "update-lists" , rechercher ensuite mosquitto-ssl
100 33 julien Bresciani
>!opkg_web_interface.png!
101 33 julien Bresciani
>il vous faut connaitre le nom ou l'adresse ip de votre serveur mqtt
102 33 julien Bresciani
103 33 julien Bresciani
104 33 julien Bresciani
105 33 julien Bresciani
* editer de configuration de mosquitto pour creer un bridge qui se connectera de maniere chiffrée au serveur iot.tetaneutral.net
106 33 julien Bresciani
>en local vous utilisez mqtt sans chiffrement donc le port utilisé sera 1883
107 26 julien Bresciani
<pre><code class="c">
108 26 julien Bresciani
listener 1883
109 26 julien Bresciani
allow_anonymous true
110 26 julien Bresciani
connection tetaneutral
111 26 julien Bresciani
cleansession true
112 26 julien Bresciani
try_private false
113 27 julien Bresciani
address iot.tetaneutral.net:8883
114 32 julien Bresciani
topic tele/# out 0 "" MonNomIci/
115 28 julien Bresciani
bridge_cafile ca.crt
116 28 julien Bresciani
# log_dest file /var/log/mosquitto.log
117 1 julien Bresciani
log_type all
118 1 julien Bresciani
#remote_clientid un_nom_au_hasard
119 1 julien Bresciani
</code></pre>
120 1 julien Bresciani
121 33 julien Bresciani
la configuration implique de récupérer le certificat (ca.crt) , pour le moment il est disponible sur demande sur le chat matrix de tetaneutral
122 1 julien Bresciani
il faut ensuite copier le fichier ca.crt dans le repertoire /etc/mosquitto/ via scp
123 1 julien Bresciani
124 33 julien Bresciani
h3. mqtt : paramétrer l objet connecté
125 1 julien Bresciani
126 33 julien Bresciani
dans le menu configuration > configure mqtt
127 33 julien Bresciani
dans la case host mettre l'adresse du serveur local mqtt laisser la sace port a la valeur 1883
128 33 julien Bresciani
dans la case topic mettre le nom de la prise ou bien par exemple le nom de l'appareil qui sera connecté derriere cette prise. ce nom consituera la racine de l'arborescence pour cet objet dans l'arbre MQTT
129 33 julien Bresciani
le reste de la configuration de cette page peut rester par defaut.
130 1 julien Bresciani
131 33 julien Bresciani
!config_mqtt_tasmota.png!
132 33 julien Bresciani
133 33 julien Bresciani
dans le menu configuration > configure other
134 33 julien Bresciani
mettre une fois de plus le nom de l'objet connecté dans le champ "device name" (cette fois ci c est le nom qui apparaitra dans la payload transportée par mqtt , e.g si vous utilisez home assistant ou autre, c est le nom de l'appareil qui apparaîtra dans home assistant)
135 33 julien Bresciani
dans le champ friendly name vous pouvez identifier plus precisement l'equipement, par exemple sur un module a 4 relais , vous auriez ici 4 champs "friendly name1" "friendly name2" "friendly name3" "friendly name4"
136 33 julien Bresciani
vous les nommeriez par exemple : volet_1_montee volet_1_descente volet_2_montee volet_2_descente 
137 33 julien Bresciani
pour une prise connectée , vous n'avez qu'un friendly name, vous pourriez le nommer relais_prise_frigo par exemple
138 33 julien Bresciani
139 33 julien Bresciani
!tasmota_configuration_other.png!
140 33 julien Bresciani
141 21 julien Bresciani
142 1 julien Bresciani
h2. setup avec tasmota connexion directe TLS