Les exemples ci-dessous ont été testés avec une carte ESP8266-12 et une carte Arduino MEGA.
A) S’assurer que l’ESP est bien pris en compte par l’IDE Arduino (possibilité de choisir une carte ESP). Sinon, saisissez dans fichier préférences l’URL http://arduino.esp8266.com/stable/package_esp8266com_index.json
B) Installer la librairie PubSubClient en la téléchargeant ici ou en téléchargeant la dernière version sur GitHub là la documentation est disponible sur la page http://pubsubclient.knolleary.net/
C) Exemple 1 : Lecture de valeurs (heure et lumière ON/OFF) en provenance d’un serveur domotique MQTT (Domoticz). Matériel : ESP8266 et RaspBerry. Attention, comme les messages MQTT de Domoticz sont assez volumineux, il est nécessaire de modifier la valeur de la variable MQTT_MAX_PACKET_SIZE située dans le fichier PubSubClient.h en l’augmentant à 255 : #define MQTT_MAX_PACKET_SIZE 255 Tout message dont la taille est supérieure à MQTT_MAX_PACKET_SIZE est ignoré.
- Créez un serveur MQTT sur Rapsberry et ajoutez le support MQTT pour Domoticz en suivant les indications ici.
- Implémentez NodeRed et créez un scénario et un capteur pour récupérer la date et l’heure en suivant les instructions ici
- Téléchargez sur l’ESP le sketch en choisissant Node MCU 1.0 (ESP12-E Module)
D) Exemple 2 (Récupération et envoi de données d’un serveur Domoticz par une carte MEGA) : Lecture de valeurs (heure et lumière ON/OFF) en provenance d’un serveur domotique MQTT (cf infos Domoticz) activation de la LED Arduino (ON/OFF) et envoi vers le serveur Domoticz d’information concernant l’état d’un interrupteur. Matériel : ESP8266, ARDUINO MEGA et RaspBerry.
- Sous Domoticz créez des capteurs AA_Porte_Entree, AA_Porte_Parking et récupérer les idx (exemple 103, 104), créez aussi un scénario NodeRed afin d’alimenter automatiquement le champ NodeRedDate de Domoticz (cf. ici)
- Téléchargez le sketch REF_MQTT_ARDUINO_ENVOI_INTER sur la carte ARDUINO MEGA
- Téléchargez le sketch REF_mqtt_esp8266_DOMOTICZ_READ_WRITE sur l’ESP
- Reliez l’Arduino à l’ESP :
- ARDUINO RX3 -> ESP TX
- ARDUINO TX3 -> ESP RX
- ARDUINO 5v -> ESP VCC
- ARDUINO GND -> ESP GND
E) Exemple 3 : ESP seul : via l’URL http://ip_esp exemple http://192.168.0.53/LON saisie de commande et retour du résultat de la commande sur le navigateur. Sketch ici
F) Exemple 4 : REF_WEB_MQTT_esp8266_2 Idem que ci-dessus mais avec envoi des données vers un serveur MQTTet possibilité d’envoyer des commandes à l’ESP => Alarme ON/OFF et lecture des valeurs des capteurs de la carte Arduino. Exemple : si saisie via l’url de l’esp LON alors la Led de l’ESP s’allume et le serveur DOMOTICZ à le switch AACTIV_LIGHT à ON et la carte Arduino a aussi sa LED allumée. Si appui sur le switch de la carte ARDUINO, la LED de l’ESP s’allume, le switch Domoticz à ON. Si appui sur le witch domoticz <=> Led ESP et Arduino allumées. Matériel : ESP8266-12, ARDUINO MEGA, RaspBerry et serveur WEB : Téléchargez le sketch REF_MQTT_ESP8266_WEB sur la carte ARDUINO MEGA et REF_WEB_MQTT_esp8266_1 sur l’ESP
G) Exemple 5 : idem que le 4 mais envoi en plus vers un serveur web. Ce serveur posséde une base de données MYSQL destinée à stocker la valeur des capteurs et enregistrer les valeurs. Deux tables sont présentes en base (xxx, xxxx). Un fichier PHP pour la mise à jour. Une page web pour afficher le journal des contacts et une autre pour la liste des contacts avec leur statut.
a) Création de la base :
Sur un serveur Web équipé de MySql et PHP, sous PhpMyAdmin, créez une base « Domotic » et deux tables c_statut qui condiendra le statut des contacts (ON/OFF) et une autre c_log qui enregistrera les actions sur ces contacts. Le script de création est ici.
b) Fichiers PHP :
listelog <=> donne le journal des contacts activés, listestatut donne l’état des contacts et updatedable met à jour un contact. Les fichiers sont là.
c) Sketch : REF_WEB_PHP_MQTT_esp8266