Dans la première partie de cet article, nous avons abordé le choix du micro-contrôleur, de la carte de développement (grand public), du bus de données et des composants disponibles pour réaliser des prototypes. Dans cet article, nous allons aborder les différents protocoles de communication (HTTP, MQTT, série, LoRa, GSM, Websockets…) ainsi que l’environnement de développement.
Vous pourrez intégrer très facilement vos projets à un serveur domotique. Pour aller plus loin, lisez ce guide.
Débuter avec les objets connectés DIY : thème abordés dans la 2nd partie
Dans la première partie de cet article, nous avons abordé les points suivants :
- Les différents micro-contrôleurs (bon marché) et facile à programmer
- Quel micro-contrôleur choisir (MCU) en fonction de l’application
- Quelle source d’alimentation choisir
- Les protocoles pour communiquer avec des capteurs et des actionneurs
Dans cette seconde partie de l’article consacrée à la fabrication d’objets connectés, nous allons aborder les thèmes suivants
- Quel environnement de développement choisir ? IDE Arduino, PlatformIO, Eclipse…
- Quel protocole utiliser pour communiquer avec des objets connectés ? Bluetooth, HTTP, MQTT, port série, Websockets
- Comment exploiter les données et piloter un objet connecté
- Serveur domotique
- Développer rapidement une interface et des règles de fonctionnement avec Node-RED
- Stocker des données dans une base de données
- Visualiser des données
Débuter avec les objets connectés : quel environnement de développement choisir ?
Lorsqu’on débute, ce qui compte le plus, c’est probablement l’aide que l’on peut trouver. Un développement, c’est bien souvent une suite de problèmes techniques (logiciels, électronique, mécanique…) qu’il faut résoudre. Plus la communauté est importante, plus vous aurez la chance de trouver la réponse à votre question ou votre problème. Bien souvent, il suffit de copier-coller le message d’erreur dans un moteur de recherche pour trouver une solution.
IDE Arduino, le plus facile
C’est l’éditeur officiel de la fondation Arduino. Il est disponible sur tous les systèmes (Windows, macOS, Linux x86 et Linux ARM). Ce n’est pas l’éditeur de code le plus moderne mais il fait très bien son travail et surtout il permet simplifier pas mal de choses lorsqu’on débute :
- Installation / gestion des librairies (sans avoir besoin de relancer l’éditeur)
- Installer de nouvelles cartes
- Moniteur série pour la mise au point des programmes
- Traceur de courbe (écoute du port série)
Pour ceux qui ne maitrise pas (encore) l’anglais, l’IDE Arduino est disponible en français.
Platform.io, plus polyvalent
PlatformIO est un écosystème complet pour développer des objets connectés qui peut remplacer l’IDE Arduino pour des projets profesionnels. PIO est basé sur l’éditeur Open Source Atom développé par GitHub. PlatformIO (PIO) est un environnement de développement professionnel complet qui propose de très nombreux outils :
- Un compilateur multi-plateforme,
- Un gestionnaire de librairie,
- Un deboggeur,
- Un système de test unitaire,
- La mise à jour et le monitoring série à distance (PIO Remote),
- Un support des éditeurs en ligne (Cloud9 par exemple)
- PIO en chiffres
- 31 plateformes (Atmel IMU, Atml AVT, Atml SAM, ESP32, ESP8266, STM32…)
- 18 frameworks
- Plus de 600 cartes de développement
- Plus de 6300 librairies listées !
Les services sont proposés sous la forme d’un abonnement mensuel (à partir de 9,99$). Une version Community permet d’utiliser toutes les fonctions de l’éditeur et de réaliser jusqu’à 50 mises à jour à distance par mois.
Le fonctionnement est un peu différent de l’IDE Arduino. Il y a quelques différences dans la programmation, mais rien de bien compliqué.
PlatformIO a été adopté par la plupart de développeurs car il est beaucoup plus simple de compiler pour différentes plateforme en créant un simple fichier de configuration. La force de PlatformIO est qu’il est capable de télécharger et d’installer toutes les librairies nécessaires à partir du fichier de configuration.
Même si vous ne l’utilisez pas au quotidien, vous serez certainement obligé de l’installer. Voici quelques articles pour découvrir PlatformIO
- Développer avec PlatformIO. Problèmes et solutions
- Platformio.ini, astuces et paramètres utiles. data_dir, monitor_speed, upload_port…
- ESP8266. Téléverser le dossier data (SPIFFS ou LittleFS) depuis PlatformIO
- Migrer un projet de l’IDE Arduino vers PlatformIO. ESP32, ESP8266 ou autre
- ESP Easy Mega. Installation facile avec PlatformIO sur ESP8266 (R120 obsolète)
- Débuter avec PlatformIO IDE sur VSCode (Windows, macOS, Raspbian, Linux)
- Deviot, le package Sublime Text 3 PlatformIO pour PC recyclé sous Linux 32-bits
- Débuter avec l’ESP32 et IDE PlatformIO. Programmation C++ d’objets connectés
- Démarrer avec PlatformIO sur Atom
Les autres environnements
Il existe beaucoup d’autres environnement de développement. La plupart d’entre eux sont destinés à des usages professionnels. En voici quelque uns, n’hésitez pas à utiliser les commentaires pour compléter cette liste :
- Atmel Studio
- Eclipse IDE
- MPLAB X de Microchip Technology
- STM32CubeIDE de STMicroElectronic
Quel protocole utiliser pour communiquer avec des objets connectés
Un objet connecté et rarement totalement autonome. On voudra très certainement récupérer des données ou piloter des actionneurs à distance. Pour cela on va avoir besoin de mettre en place un moyen et un langage de communication.
Bluetooth
Le bluetooth permet une communication directe avec le micro-contrôleur. L’ESP32 dispose d’une connectivité bluetooth native. Pour les autres micro-contrôleurs (Atmega, ESP8266, STM32…), il est possible d’ajouter un module HC-05 ou HC-06.
Le module HC-06 ne peut fonctionner qu’en mode “esclave”, c’est à dire qu’il ne peut que recevoir que des demandes d’appairage. Le module HC-06 est très simple à câbler et suffira pour la plupart des projets.
Le module HC-05 qui est un module “maître”, c’est à dire qu’il peut demander à un autre élément Bluetooth de s’appairer avec lui. Il peut aussi fonctionner en mode esclave comme le HC-06.
Le bluetooth fonctionne comme un port série. La vitesse et le volume reste réduit mais c’est largement suffisant pour faire des relevés ou piloter un servo-moteur depuis un smartphone (faible temps de latence).
- Vitesse suffisante
- Communication directe, aucune dépendance à une infrastructure
- Intégré sur l’ESP32
- Nombreuses appli mobile existent déjà (serial bluetooth)
- Communication locale (30 m maxi. environ)
- Faible volume de données
- Non sécurisé (pas vraiment utile toutefois)
- Reconnexion nécessaire au redémarrage, lancement appli
- Déconnexion intempestives
GSM / GPRS
Le réseaux Sigfox ou LoRa sont encore réservé à des usages professionnels. Il n’est pas aussi simple de s’abonner (pour le moment) au réseau Sigfox ou LoRa qu’à un opérateur téléphonique. Pour un projet très éloigné ou hors de porté d’une gateway LoRa privée (11km en champ libre et 2km en zone dense), une carte d’extension GSM est une bonne solution.
Avec une connexion 3G ou 4G pour pourrez vus connecter à un broker MQTT (un exemple à lire). En mode dégradé, vous pourrez envoyer des données via des SMS.
HTTP (HTTPS)
Le protocole HTTP est le standard de communication utilisé pour accéder à n’importe site sur internet. Ce protocole dispose d’un jeu de méthodes qui permettent de facilement communiquer avec un serveur
GET C’est la méthode la plus courante pour demander une ressource à un serveur.
HEAD Cette méthode permet de passer au serveur des paramètres. Identifiant ou Token d’authentification, type de méthode, format des données que l’on souhaite recevoir…
POST Cette méthode est utilisée pour transmettre des données. Les données pourront être mise en forme directement dans l’URL, par exemple http://ip_du_serveur/api.html?param1=a¶m2=b
D’autres méthodes plus spécifiques existent OPTIONS, CONNECT, TRACE, PUT, PATCH, DELETE.
Le protocole HTTP est une bonne solution pour stocker des données directement dans une base de données (MySQL, MariaDB ou InfluxDB par exemple).
Les plusieurs tutoriels pour aller plus loin
- Mesure de température DS18B20, code Arduino compatible ESP8266 et ESP32, publication sur Domoticz en HTTP
- ESP8266. Comment utiliser la librairie WiFiManager pour gérer les connexions WiFi
- Comment envoyer des données à Jeedom via l’API JSON depuis un IoT ESP8266
- Domoticz. Comment envoyer des données via l’API/JSON depuis un IoT ESP8266
- ESP8266. Comment se connecter au réseau WiFi (ESP8266WiFi et ESP8266WiFiMulti)
LoRaWan ou Sigfox
LoRaWan et Sigfox sont des technologies de transmissions de données qui utilisent certaines fréquences radio sans licence et sans restriction. Les cartes de développement sont encore assez couteuses pour le moment.
Sigfox est un opérateur présent dans plus de 60 pays. Sigfox utilise la bande 868Mhz en Europe et 902Mhz aux US. Le protocole Sigfox peut envoyer jusqu’à 140 messages à 300bits/s par jour et le payload (contenu utile) de chaque message ne peut pas dépasser 12 octets. Le protocole Sigfox est bidirectionnel mais un objet Sigfox ne pourra pas recevoir plus de 4 messages par jour à des instants prédéfinis.
LoRa est un protocole radio conçu par la société Semtech (ancienne société Cycleo rachetée en 2012). LoRa utilise la bande de fréquences 868Mhz. LoRaWAN peut être opéré par un opérateur TélécomBT, Orange… ou être déployé sur un réseau privé. Le protocole LoRa est bidirectionnel (sous conditions).
Sigfox et Lora permettent la création d’objets connectés fonctionnant sur batterie pendant plusieurs années. La portée peut atteindre 12km en région peu dense et 2km en zone urbaine pour le réseau LoRa.
Source des infos : https://www.webdyn.com/articles-radio/comparaison-sigfox-lora-lte/
Port série
On aurait tendance à l’oublier, mais le port série ne sert pas qu’à la mise au point d’un programme. On peut très facilement récupérer les données via un script Python, un flow Node-RED, un projet Processing.
La vitesse et le volume de données est largement suffisamment dans la majorité des cas.
Voici deux tutoriels qui pourrait vous intéresser.
Débuter avec l’Arduino et Node-RED. Enregistrer et afficher des mesures en JSON depuis le port série | Code Python pour lire sur le port Série d’un Raspberry Pi |
MQTT
MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie qui fonctionne sur le principe de souscription / publication qui a été développé à la base pour simplifier la communication entre les machines. Pour fonctionner il faut installer un serveur, qui est désigné par Broker. Vous pouvez installer votre propre Broker, ce que nous allons faire dans cet article. Vous pouvez l’installer sur quasiment toutes les plateformes dont les plus communes (Windows, Linux, Mac OS X….) mais aussi sur un Raspberry Pi (qui fonctionne sous Linux après tout).
Depuis novembre 2014, la version 3.1.1 de MQTT est devenue un standard international pour la communication entre machines (M2M) et les objets (IoT). Il est soutenu par la fondation OASIS qui regroupent de grands entreprises de l’industrie informatique et télécom (BlackBerry, Cisco, IBM, Kaazing, LogMeIn, M2Mi, MachineShop, PTC, Red Hat, Software AG, TIBCO…).
En plus de simplifier la communication, MQTT a été conçu pour économiser au maximum la batterie des appareils mobiles. MQTT consomme 11 fois moins d’énergie pour envoyer des messages et 170 fois moins pour en recevoir que le protocole HTTP. MQTT est également 93 fois plus rapide que le protocole HTTP.
Voici plusieurs tutoriels sur MQTT pour bien débuter ou aller plus loin.
- Jeedom. Publier en MQTT des commandes virtuelles vers ESP8266 ou ESP32 (interrupteur, poussoir, dimmer)
- Brokers MQTT en ligne avec une offre gratuite pour tester et connecter vos objets à internet
- Installer le broker MQTT Mosquitto sur NAS Synology (DSM 6.2+) avec Docker
- Routeur MQTT Node-RED vers cloudMQTT, accéder à vos modules Sonoff Tasmota
- Hack de la prise connectée Sonoff S26, installation du firmware Tasmota
- Test de cloudMQTT, broker MQTT en ligne gratuit. Piloter Domoticz avec l’API JSON
- Inclure les accessoires domotiques Xiaomi Aqara ou Mijia à Jeedom avec les plugins Virtuel et MQTT
- Test du détecteur de fumée Xiaomi Mijia Honeywell avec Domoticz, notification d’urgence avec PushOver
- Zigbee2MQTT. Inclure des accessoires Xiaomi Aqara à Domoticz via plugin ou Node-RED
- Assembler le pont Zigbee2MQTT, boitier, démo Node-RED. Hack ponts zigbee Hue et Xiaomi Aqara
- Hack du Xiaomi Mi Plant, intercepter et publier sur MQTT les mesures avec un Raspberry Pi (MiFlora-MQTT-Deamon)
- Hack Sonoff RF Bridge 433 (R1/R2), test du firmware OpenMQTTGateway
- Matériel et kit pour projet Zigbee2MQTT, pont domotique Zigbee Open Source compatible Xiaomi, Philips Hue, Tradfi…
- Inclure un objet connecté ESP8266 + DHT22 + Homie MQTT dans Home Assistant (HASS)
- Bien débuter avec la librairie Homie (MQTT) pour objets connectés à base d’ESP8266
- Node-RED + MQTT + ESP8266 : comment piloter un système articulé PTZ en WiFi
- ESP Easy + MQTT + Node-RED. Communication bi-directionnelle + dashboard
- Fabriquer une gateway WiFi / nRF24L01 MySensors 2.3 avec un ESP8266. Test avec Jeedom et Domoticz
- Instrument virtuel+Widget : améliorer l’affichage MQTT dans Jeedom
- Jeedom + MQTT, intégrer un objet connecté DIY au Dashboard (ESP8266, ESP32, Arduino)
- ESP8266 + DHT22 + MQTT : fabriquer un objet connecté et l’inclure dans Home Assistant
- Débuter avec le Broker MQTT Mosquitto (Raspberry Pi, Windows, macOS, Linux)
Quel Broker MQTT Open Source choisir ?
Voici les principaux projets de brokers Open Source
- ActiveMQ qui permet d’ajouter MQTT à un serveur Web Apache (Développé par la fondation Apache)
- JoramMQ pour l’intégration de MQTT en Java
- Mosquitto, le broker open-source le plus utilisé dans les projets DIY soutenu par la fondation eclipse.org
- RabbitMQ, un projet open source disponible également avec un support commercial
- EMQTT, un projet développé en Erlang/OTP est disponible sur Windows, macOS et Linux conçu pour recevoir de très nombreuses connexions (jusqu’à 1 million par serveur). Il est possible de créer un cluster (réseau de serveur) pour accroitre le nombres de connexions simultanées.
Mosquitto est un très bon choix. Il est disponible sur toutes les plateformes et s’installe en quelques minutes. Comme MQTT est un standard, quelque soit votre choix, vous pourrez communiquer avec vos objets de la même façon.
Débuter avec le Broker MQTT Mosquitto (Raspberry Pi, Windows, macOS, Linux)
Radio sans licence. 315MHz, 433MHz, 868MHz, 2.4GHz
WiFi, Bluetooth, XBee, Zigbee, Z-Wave+ sont des technologies de transmission de données par onde radio propriétaires. Elles sont développées par un consortium d’entreprises. Il existe des modules radio génériques qui n’utilisent aucun protocole de communication propriétaire. Il y a deux solutions principales pour utiliser ces modules dans vos projets Arduino :
- Gérer vous même la communication entre les 2 appareils. Dans ce cas, la bibliothèque VirtualWire (très bien expliquée en Français ici) est toute indiquée à cette usage. Bien-sûr il existe d’autres bibliothèques (Mirf, Radio…)
- Utiliser la bibliothèque MySensors qui en plus de prendre en charge la transmission de données créé et gère un réseau d’objets connectés. Cette solution sera très bien adaptée pour développer ses propres capteurs ou actionneurs dans le cadre d’un projet domotique DIY.
Coté matériel, il y en a tellement qu’il est très difficile de tous les lister. Si vous souhaitez utiliser la librairie MySensors, le plus facile (et le moins cher) et d’opter pour un module à base de nRF24L01 de Nordic Semiconductor qui utilise la bande de fréquence 2,4GHz. Il est maintenant également supporté par la gateway RFLink.
Voici quelques modules très courants que l’on trouve en direct de chine.
XD-RF-5V : 315MHz
Ce sont les modules bas coût par excellence…mais attention aux performances (déconseillés pour fabriquer une gateway RFLink par exemple). Il existent dans plusieurs fréquences, 315 MHz (XD-FST) ou 433 MHz (XD-RF-5V). On peut espérer attendre 200m en champ libre et 20m en intérieur |
|
APC220 : 433MHz
Module permettant de configurer la fréquence porteuse de 418 à 455MHz. Tension d’alimentation de 3.4V à 5.5V. Jusqu’à 1000m en champ libre. Environ 27€. |
|
nRF24L01+ : 2.4GHz
Ce sont des modules très classiques très bien gérés par les librairies (MySensors) et le projet Open Source RFLink. Ces modules fonctionnent à 2.4GHz (identique au WiFi). Il existe plusieurs versions :
Avec une antenne externe, on peut espérer atteindre 1100m en champ libre à très bas débit (à vérifier en conditions réelles). |
Voici une série d’articles sur la librairie MySensors pour vous lancer si le sujet vous intéresse
Websocket
Le protocole HTTP n’est pas adapté aux applications qui nécessitent des réponses rapides ou interactives. En effet, à chaque fois que le client fait une requête au serveur, on doit ouvrir une connexion et attendre la réponse du serveur. La communication se fait essentiellement dans le sens client vers serveur.
Le Websocket vise à résoudre ces problèmes. Le Websocket ouvre un tunnel de communication entre deux appareils. Ce tunnel reste ouvert jusqu’à ce que le client se déconnecte. Ce tunnel est bi-directionnel, c’est à dire qu’à n’importe quel moment le client peut envoyer des messages (JSON, binaire, texte…) et vis versa. Tout comme MQTT, le protocole Websocket est beaucoup plus rapide que HTTP comme le montre ce comparatif réalisé par Fatherjs. Si le sujet vous intéresse, vous pouvez lire l’étude compète ici.
Voici quelques tutoriels pour aller plus loin.
Projet kit robotique ROT2U 6DOF WiFi (Websocket) avec Gamepad et Raspberry Pi. Code Python evdev
Synthèse, quel protocole choisir pour communiquer avec un objet connecté
Pour vous aider à choisir le protocole le mieux adapté à vos besoins, voici un tableau de synthèse qui prend en compte plusieurs critères :
- Vitesse de communication
- Fiabilité de la communication
- Portée
- Sécurité. Certains protocoles supportent le transfert de données cryptées
- Volume de données transmissible. Du simple message (une température) à une image
Protocole | Vitesse | Portée | Sécurité | Fiabilité | Volume de données |
Bluetooth | *** | ** | * | *** | *** |
GSM/GPRS | Dépend du réseau | ***** | Dépend du protocole | **** | **** |
HTTP | *** | NA | * | ***** | ***** |
HTTPS* | *** | NA | ***** | ***** | ***** |
LoRa / Sigfox | **** | **** | ***** | ***** | * |
Port série | **** | Local | * | **** | ** |
MQTT | ***** | NA | Si sécurisé | ***** | ***** |
Radio sans licence | ** | *** | * | ** | * |
Websockets | ***** | NA | Si sécurisé | ***** | ***** |
(*) Attention, vérifier que le micro-contrôleur supporte le protocole HTTPS.
NA. Non Applicable. Dépend de la couverture du réseau WiFi.
Exemple, une interface de contrôle accessible en WiFi (ou internet)
Il est possible de développer une interface pour contrôler ou visualiser l’état des capteurs et des détecteurs. Voici un exemple réalisé avec Bootstrap et Google Charts
Tous les tutoriels sur le sujet
- Projet de station météo avec interface HTML sur ESP8266 (DHT22 + BMP180)
- Projet station météo ESP8266 (Partie 3). Récupérer l’heure avec NTPClient et stockage SPIFFS
- ESP8266. Comment utiliser la librairie WiFiManager pour gérer les connexions WiFi
- Piloter le GPIO de l’ESP8266 (Serveur Web) depuis Jeedom en TCP/IP sans fil – Partie 2
- Piloter le GPIO de l’ESP8266 (2) depuis Domoticz en TCP/IP sans fil. Serveur Web et requête HTTP
- Projet station météo ESP8266 (Partie 5). Afficher des jauges et graphiques Google Charts
- ESP8266. Développer et tester l’interface HTML avec Node.js et Pug (ancien Jade)
- Projet station météo ESP8266 (Partie 4). ArduinoJson, charger, enregistrer des fichiers (SPIFFS)
- Projet station météo ESP8266 (Partie 2). Piloter le code Arduino depuis l’interface HTML
- Projet station météo ESP8266 (Partie 1). Créer l’interface HTML, stockage SPIFFS
- Interface HTML pour ESP8266. Changer de thème Bootstrap avec Bootswatch et bootstrapCDN
- Interface HTML pour ESP8266. Améliorer le design avec Bootstrap
- ESP8266. Comprendre le code Arduino d’un serveur web avec interface HTML
Comment exploiter vos objets connectés
La plupart du temps, on voudra piloter ou récupérer les données d’un objet connecté à distance depuis un smartphone ou un ordinateur. Pour commencer, voici plusieurs exemples d’applications
A l’aide d’un serveur domotique
Utiliser un serveur domotique pour récupérer les mesures et piloter les actionneurs (relais, LED, pompe, moteur…) et probablement la méthode la plus rapide et la plus facile. Pour bien débuter avec la domotique, je vous conseille de commencer par lire cet article.
Développement rapide d’interface et des règles avec Node-RED
Node-RED (site officiel) est une boite à outil logicielle qui permet de quasiment tout faire. Node-RED est un projet Open Source supporté par IBM. Node-RED est devenu un projet incontournable. Node-RED fonctionne par un assemblage de blocs fonctionnels. Chaque bloc permet de réaliser un traitement, voici quelques exemples concrets :
- Se connecter au port série d’un Arduino et lire les mesures d’un capteur
- Extraire une mesure
- Tracer une courbe sur une dashboard
- Enregistrer la mesure dans une base de données locale (MySQL, MariaDB, InfluxDB, MongoDB…)
- Envoyer une notification (email, pushbullet, tweet…) si un seuil est atteint
Les données passent d’un bloc à l’autre (d’un traitement à l’autre). Node-RED a entièrement été développé en Javascript. Il est possible de coder en Javascript si aucun node de permet de réaliser le traitement souhaité. Tous les Nodes et des exemples de Flows sont répertoriés ici (déjà plus de 3200). Votre projet pourra être intégré à un projet Javascript “classique”. Suivez ce tutoriel officiel (en anglais) qui explique comment faire.
Voici un exemple de flow Node-RED qui permet de récupérer la mesure d’une sonde d’humidité et d’en tracer une courbe
Débuter avec l’Arduino et Node-RED. Enregistrer et afficher des mesures en JSON depuis le port série
Et la version en vidéo
- Diversité des blocs
- Connectivité : bases de données, serveurs distants
- Très simple de créer une interface graphique (boutons, courbes, formulaires, afficheurs numériques…)
- Difficile de se passer du code javascript dès que qu’on sort de ce qui est prévu dans le flow
- Rendre un flow Node-RED autonome demande des compétences supplémentaires
Deux tutoriels pour bien débuter avec Node-RED
Tous les tutoriels pour aller plus loin avec Node-RED
- Node-RED. Ajouter un widget météo au Dashboard connecté à OpenWeatherMap avec du code HTML / Angular
- Node-RED. Créer un dashboard pour objet connecté. Bouton, liste, interrupteur, slider, formulaire (Partie 1)
- Node-RED. Dashboard pour objet connecté. Jauges, graphiques, notifications, template HTML (Partie 2)
- Intégrer un module ESP32-CAM à un Dashboard Node-RED (firmware modifié)
- Node-RED. Sauvegarde automatique des flows par email, FTP, copie locale
- Débuter avec l’Arduino et Node-RED. Enregistrer et afficher des mesures en JSON depuis le port série
- Routeur MQTT Node-RED vers cloudMQTT, accéder à vos modules Sonoff Tasmota
- Test du détecteur de fumée Xiaomi Mijia Honeywell avec Domoticz, notification d’urgence avec PushOver
- Installer Grafana sur macOS et Raspbian pour Raspberry Pi. Exemple de dashboard pour objet connecté MySensors avec Node-RED et InfluxDB
- Plugin HomeKit pour Node-RED, plus facile à utiliser que Homebridge
- Installer Node-RED sur Raspbian Lite (Raspberry Pi Zero WH ou autre modèle)
- Node-RED + MQTT + ESP8266 : comment piloter un système articulé PTZ en WiFi
- Orange Pi : test du package OPI.GPIO pour Node-Red (node-red-contrib-opi-gpio)
- Utiliser Node-RED pour créer une passerelle entre MySensors et Blynk (serveur local)
- ESP Easy + MQTT + Node-RED. Communication bi-directionnelle + dashboard
- Installer Node-Red sur Orange Pi sous Armbian, démarrage automatique [Màj]
- Sécuriser Node-RED avec Nginx et OpenSSL sur Ubuntu 16.04
- Node-RED : installation et configuration sur Ubuntu 16.04 LTS
- Enregistrer les mesures d’un objet connecté MySensors vers InfluxDB à l’aide de Node-RED
- Node-RED+MySensors : stocker des données dans une base MongoDB
- Node-RED : comment intégrer un objet connecté MySensors v2
- Node-RED. Installer et désinstaller facilement des modules avec le gestionnaire de palette
- Installer Node-RED sur macOS ou Windows 10, démarrage automatique avec PM2
- MySensors v2.3. Décoder et envoyer des messages avec Node-RED
- Débuter avec le Broker MQTT Mosquitto (Raspberry Pi, Windows, macOS, Linux)
Stocker des données (sur un serveur distant)
Le stockage de données permettra de tracer des courbes pour visualiser l’évolution d’un phénomène ou analyser des évolutions dans le temps. Par exemple suivre la courbe de teneur en CO2 ou les polluants dans une pièce.
Base de données Open Source (MySQL, MariaDB, PostgreSQL, SQLLite…)
Il existe de très nombreuses bases de données Open Source. Voici les bases de données Open Source les plus utilisées :
MyQSL est la base de données Open Source la plus utilisée. Vous pouvez également utiliser MariaDB qui est le fork (clone) Open Source de MySQL qui a vu le jour suite au rachat de MySQL par Sun Microsystem en 2008.
SQLite est une base de données relationnelle légère et puissante qui ne nécessite aucune installation. Toutes les données sont stockées dans un fichier auquel on accède via une librairie. SQLite est très utilisé pour le développement d’applications mobiles
Pour les projets qui nécessitent un stock
Stocker les données sur l’objet connecté : zone SPIFFS, EEPROM, carte microSD
Il est possible de stoker des données ou des paramètres directement sur l’objet connecté. On pourra par exemple s’en servir comme une mémoire tampon et envoyer périodiquement les données sur un serveur afin d’économiser la batterie (la connectivité WiFi est consommatrice en énergie).
Voici les différentes solutions à notre disposition :
- L’EEPROM est une petite mémoire qui permet de stocker des réglages. En générale, tous les micro-contrôleurs disposent d’une EEPROM accessible au programme de l’utilisateur
- La zone SPIFFS est une zone beaucoup plus importante. De quelques centaines de kilooctets à plusieurs méga (ESP8266 par exemple). Elle est gérée par un système de fichier. On pourra accéder aux fichiers comme sur une carte micro-SD. Pour en savoir plus, vous pouvez lire ce tutoriel. On pourra également enregistrer tous les fichiers d’une interface graphique (HTML + CSS).
- Carte micro-SD. Pour quelques euros, vous pouvez ajouter un lecteur de carte micro-SD pour stocker des données.
Sous quel format stocker des données ?
Aucune base de données n’est disponible. Un micro-contrôleur même moderne ne dispose pas d’assez de puissance.
Vous pouvez structurer vos données de plusieurs façons :
- Tableau de données en colonne ou à la ligne (fichier à plat). Utilisez un séparateur de données standard de façon à pouvoir exploiter facilement celles-ci sur un tableur. Utilisez de préférence ; | ou ,. Oubliez la tabulation.
- Au format JSON. La librairie ArduJSON permet d’organiser les données au format JSON. La librairie est capable d’exporter les données “à plat” pour les stocker temporairement dans un fichier (sur une carte micro-SD ou la zone SPIFFS). On pourra recharger les données à la mise sous tension par exemple (ou n’importe quand) pour retrouver le même état de fonctionnement
Visualiser les données collectées
Il existe deux outils Open Source assez simple à mettre en oeuvre pour visualiser des données sous la forme de courbes.
Le visualiseur de données de l’IE Arduino. C’est tout bête, mais il suffit d’envoyer les mesures sur le port série pour afficher une courbe du phénomène observé. On aurait tendance à l’oublier !
Le plugin dashboard de Node-RED est super simple à déployer. Il suffit de brancher une source de données et la courbe s’affiche instantannément. Seul bémol, c’est une boite noire. Impossible de gérer le nombre de point affichés, recharger les points sur une période. C’est un affichage temps réel basique qui pourra être suffisant dans un grand nombre de cas.
Grafana, est un logiciel Open Source spécialisé dans le tracé de données temporelles initialement conçu pour l’affichage de métrics pour des serveurs. Grafana trouve un usage idéal pour afficher des données en provenance de sondes connectées. Attention, Grafana ne s’occupe que d’afficher sur une période de temps. Grafana supporte plusieurs sources de données. InfluxDB également pris en charge par un plugin Node-RED est une excellente solution.
Vous n’y connaissez rien en programmation, essayez ESP Easy !
Vous n’avez jamais programmé, ce n’est pas grave, ESP Easy est fait pour vous. ESP Easy est un firmware (micro-logiciel) que l’on installe sur un ESP8266 (et bientôt sur ESP32). Une fois installé et connecté au réseau WiFi local, on construit son projet en configurant les modules qui correspondent aux capteurs et actionneurs utilisés.
Voici une série de tutoriels sur le firmware ESP Easy.
- ESP Easy Mega. Installation facile avec PlatformIO sur ESP8266 (R120 obsolète)
- Hack . Prise connectée SONOFF S20 pour en faire un super smart plug avec ESP Easy R120
- ESP Easy R120 ou Mega. Flasher le firmware avec esptool.py sur ESP8266
- ESP Easy R120. Ecran d’affichage OLED SSD1306 déporté avec un script Lua
- ESP Easy R120. Utiliser les Rules pour créer la consigne d’un thermostat connecté (Jeedom, Domoticz, Node-RED…)
- Test du shield LoLin d1 mini DHT11 ou DHT22 avec du code Arduino ou ESP Easy
- ESP Easy + MQTT + Node-RED. Communication bi-directionnelle + dashboard
- ESP Easy R120. Ecran d’affichage OLED SSD1306 pour Jeedom actualisé par requête HTTP
- ESP Easy 120. Exploiter des accessoires domotiques DIY connectés à Jeedom
- Débuter avec les Rules d’ESP Easy. Créer un mini serveur domotique à base d’ESP8266
- ESP Easy R120. Fabriquer un baromètre connecté BME280 virtuel. Test sur Domoticz
- ESP Easy R120. Installation OTA, Firmware personnalisé, Playground
- Capteur et matériel virtuel Domoticz. Test avec ESP Easy et ESP8266
- ESP Easy R120. Projet IoT ESP8266 avec un affichage OLED SSD1306
- Débuter avec ESP Easy R120, firmware ESP8266 pour créer des objets connectés sans programmation
- ESP Easy R120. Projet domotique ESP8266, objet connecté à Jeedom en MQTT
Concevoir et (faire) fabriquer des circuits imprimés
Les shields constituent une très bonne solution pour réaliser une maquette fonctionnelle très rapidement, mais l’encombrement est loin d’être optimal. Pour en savoir plus sur la conception et la réalisation de circuit imprimés, vous pouvez commencer par lire cet article.
Concevoir, fabriquer et assembler des circuits et PCB pour projets DIY à base d’ESP32 ou ESP8266
Prêt à vous lancer
Prêt à vous lancer ou aller encore plus loin, voici un tableau qui vous permet d’accéder rapidement aux articles et tutoriels. Les sujets déjà traité sur le blog sont indiqués par un fond verte.
—> Faites défiler le tableau vers la droite pour accéder à la suite
Acquisition |
Asservissements |
Traitement local (Micro-contrôleur / ordinateur carte) |
Communication |
Traitement déporté |
|||||||
Capteurs |
Actionneurs |
Interfaces |
MCU |
Logiciel |
NRJ |
Protocoles |
Couche matérielle |
Développement | Stockage | IHM / Courbe | Domotique |
Bruits / microphone | Ecrans ePaper | 1-Wire | Atmega | Blockly | Batterie | HTTP(S) | Bluetooth | Johny-Five | InfluxDB | Grafana | Domoticz |
Caméra | Ecrans OLED | ADC | ATTiny | C++ | Solaire | MQTT | GSM | Node-RED | MongoDB | Node-RED | Home Assistant |
CO2 | LED | CAN | ESP32 | Lua | Deep Sleep | Radio sans licence | LoRa | Python, C++ | MySQL | Jeedom / NextDom | |
Courant | Moteur DC | DAC | ESP8266 | MicroPython | Série | Radio (MySensors) | NodeJS | SQLite | OpenHAB | ||
Distance | Pas à pas | I2C | PIC | Websockets | USB | OpenCV (vision) | Homy | ||||
Humidité | Servo-moteur | I2S | SAMD21 | Environnements dev. | WiFi | IA / Réseaux de neurones | |||||
Luminosité | CNC | PWM | STM32 | Atmel Studio | |||||||
Particules (PM2.5) | SPI | IDE Arduino | Domotique | Plateformes | |||||||
Polluants (CO2) | UART | ARM | PlatformIO | EnOcean | Ordi carte ARM (Armbian) | ||||||
Pression Atm. | Raspberry Pi | Eclipse | Homebridge | Docker | |||||||
Pression mécanique | Orange Pi | MPLAB X | RFLink | Machine Virtuelle | |||||||
RFID< | STM32CubeIDE | Zigbee | NAS | ||||||||
Santé | Mini-PC x86 | Z-Wave+ | Raspberry Pi | ||||||||
Température | Firmwares dédiés IoT | Mini PC Intel | |||||||||
Vent (vitesse, direction) | Blynk | ||||||||||
Humidité du sol | Cayenne | ||||||||||
ESPEasy | |||||||||||
Espurna | |||||||||||
Homie (MQTT) | |||||||||||
MySensors (radio) | |||||||||||
Tasmota (MQTT) | |||||||||||
Robotique | |||||||||||
Johny Five |
- ESP32, broches GPIO et fonctions associées. I/O, PWM, RTC, I2C, SPI, ADC, DAC
- ESP32-CAM. Broches et équipements ESP-EYE, AI Thinker, TTGO T-Camera, M5Stack Timer Camera…
- ESP32-CAM. Quel modèle choisir ? ESP-EYE, AI Thinker, TTGO T-Camera, M5Stack Timer Camera…
- M5Stack Atomic GPS. Tracker ESP32 TinyGPS++, export GPX sur carte SD, visualisation sur Google Maps ou VSCode
- Home Assistant. Installer le snap sur NAS Synology sur une machine virtuelle Ubuntu
Bonjour,
la visualisation de données peut également se faire avec Crouton (dans le cas de données transitant pas le protocole MQTT) : https://github.com/edfungus/Crouton
D’autre part sur le même protocole preur, OpenMQTTGateway est un inter-acteur entre les IoT et le Serveur domotique communiquant à double sens avec d’autres protocoles : https://projetsdiy.fr/bien-debuter-avec-les-objets-connectes-diy-micro-controleur-langages/
Merci beaucoup pour le rappel, c’est ajouté à l’article