ESP Easy R120. Ecran d’affichage OLED SSD1306 pour Jeedom actualisé par requête HTTP – Jeedom – Bienvenue sur le forum de domotique-et-objets-connectes.fr

Dans le tutoriel précédent, nous avons vu comment intégrer dans Jeedom (récupérer des données et envoyer des commandes) de petits objets connectés Wi-Fi développés à l’aide du framework ESP Easy pour les modules ESP8266. 

Article actualisé le 21 avril 2020

Nous allons réaliser un petit affichage déporté à l’aide d’un écran OLED SSD1306 et un module ESP8266 LoLin D1 Mini (ou n’importe quel autre module NodeMCU). Les données à afficher sur l’écran seront envoyées depuis Jeedom via une requête HTTP. Le firmware ESP Easy permet

ESP Easy (R120) ou ESP Easy Mega, attention à la confusion !

Il existe 2 branches (versions) d’ESP Easy ce qui peut entraîner une certaine confusion lorsqu’on débute.

ESP Easy est la version stable (R120) que l’on peut récupérer sur cette page. L’installation à partir de la compilation du code source est difficile (impossible) avec les versions récente de l’IDE Arduino. Suivez ce tutoriel qui explique étape par étape comment installer et configurer le firmware ESPEasy R120 sur un module ESP8266. En cas de problème, utilisez l’utilitaire ESP Tools d’Espressif. Tout est expliqué étape par étape dans ce tutoriel.

ESP Easy Mega est la version en cours de développement disponible ici. Elle embarque plus de plugins, une nouvelle interface et supporte (quelques) cartes de développement ESP32. Pour en savoir plus, vous pouvez lire cet article de présentation. Attention, pour fonctionner votre carte ESP8266 doit au moins disposer d’1MB de mémoire flash (attention à bien choisir votre module ESP-01).

Matériel utilisé

Pour ce tutoriel, nous allons nous contenter d’utiliser un écran OLED mais rien ne vous empêche de combiner avec d’autres éléments, par exemple un capteur de température DHT22, un baromètre BME280 ou un détecteur de particules dans l’atmosphère pour réaliser un analyseur de qualité de l’air miniature par exemple.

Tous les shields compatibles avec la LoLin d1 Mini

Circuit

L’écran OLED se connecte sur le bus I2C. Par défaut ce sont les broches GPIO4 (SDA, D2 de l’ESP8266) et GPIO5 (SCL, D1 de l’EP8266) qui sont utilisées. Le montage est identique au tutoriel précédent.

Configuration de l’écran OLED sur ESP Easy R120

Un fois connecté à ESP Easy, nous allons utiliser le protocole HTTP Generic pour communiquer avec Jeedom. Allez sur la page Config et renseignez les champs en fonction de votre configuration :

  • Protocol choisir Generic HTTP
  • Locate Controller choisir Use IP address
  • Controller IP indiquer l’adresse IP de la box Jeedom
  • Controller Port indiquer 8121
  • Enregistrer avec submit

Si vous avez besoin d’envoyer des données à Jeedom, allez sur la page Tools puis sur Advanced. Dans le champ Publish Template collez

device=%sysname%&taskid=%id%&cmd=%valname%&value=%value%

Enregistrer avec submit.

Installation des plugins script et weather sur Jeedom

Pour les besoins du tutoriel, j’ai utilisé le module météo (gratuit) pour disposer d’informations intéressantes à afficher sur l’écran OLED.

Une fois installé, activez le. Vous aurez besoin d’une clé API gratuite pour un usage personnel (et limité) sur openweathermap.org. Une fois cette clé récupérée, allez sur la page de configuration du plugin et enregistrez la dans le champ correspondant. Enregistrez la configuration.

Retournez sur la page du plugin météo et ajoutez (+) un nouveau lieu. OpenWeatherMap va renvoyer à Jeedom les prévisions pour la ville indiquée dans le champ Ville. Vous pouvez faire un test en complétant puis en saisissant cette URL dans un navigateur internet

 http://api.openweathermap.org/data/2.5/weather?q=paris,fr&appid=CLE_API 

Ce qui vous donnera par exemple (au format JSON)

{"coord":{"lon":2.35,"lat":48.85},"weather":[{"id":701,"main":"Mist","description":"mist","icon":"50d"},{"id":741,"main":"Fog","description":"fog","icon":"50d"}],"base":"stations","main":{"temp":273.48,"pressure":1029,"humidity":98,"temp_min":272.15,"temp_max":274.15},"visibility":4000,"wind":{"speed":2.6,"deg":240},"clouds":{"all":90},"dt":1483457400,"sys":{"type":1,"id":5615,"message":0.005,"country":"FR","sunrise":1483429423,"sunset":1483459649},"id":2988507,"name":"Paris","cod":200}

Nous allons pouvoir récupérer la valeur de nombreuses informations envoyées par OpenWeatherMap, mais on pourra envoyer sur l’écran la valeur de n’importe quelle autre variable. Cliquez sur l’engrenage (en mode expert) pour afficher la liste des variables disponibles pour le plugin météo.

Nous allons utiliser le plugin Script disponible gratuitement sur le Market pour piloter directement l’affichage OLED.

Activez le plugin à la fin de l’installation et retournez sur la page du plugin.

Script pour afficher sur un écran OLED des informations depuis Jeedom

Maintenant, on va pouvoir commencer les choses sérieuses. Cliquez sur le + pour créer un nouveau script. Donnez lui un nom, un objet parent et activez le. Dans le cas d’un afficheur, on souhaite que le contenu soit mis à jour régulièrement. C’est très simple à configurer. Appuyez le ? à droite du champ Auto-actualisation (cron).

Une boite de dialogue s’ouvre. Dans la liste de sélection « A exécuter », choisissez Répétitivement. Puis choisissez la fréquence désirée dans la liste every (minute, heure, jour, semaine; mois, année). Validez

Allez maintenant à l’onglet Commande et ajoutez un nouvelle commande.

Comment afficher du texte sur l’écran OLED avec ESP Easy à l’aide d’une requête HTTP ?

ESP Easy permet de récupérer des requêtes HTTP (envoyées depuis un navigateur ou un serveur domotique par exemple). Le requête est se situe après le slash (/) et commence par ?cmd=.

Ici, on va créer une commande OLED qui permettra de déclencher l’actualisation de affichage sur l’écran SSD1306. On passe en paramètre l’index de la colonne (une par caractère), la ligne et enfin le texte à afficher. Par contre, le plugin ESP Easy ne permet pas indiquer la taille de l’affichage.

Pour cela, il faudra développer votre propre plugin en suivant ce tutoriel

Pour résumer, la requête HTTP est de la forme suivante :

 http:///control?cmd=oled,,,
  • row position de la ligne où afficher le texte
  • col position de la colonne où afficher le texte
  • text texte à afficher

Limitations :

  • Il faut d’abord vider l’écran clear avant d’envoyer un nouveau texte (sinon les anciens caractères persistent)
  • Le texte sera affiché jusqu’au prochaine rafraichissement Delay

Autres commandes disponibles :

Configurer le script Jeedom

Ajoutez une nouvelle commande. On va commencer par créer une commande qui envoi la commande clear pour vider l’affichage. Voici comment configurer la commande :

Ensuite, ajoutez une commande par ligne d’affichage. Par exemple, nous allons commencer par afficher un titre

Puis la température, l’humidité et la prévision du jour. Pour récupérer le contenu d’un variable, on doit le mettre entre #. Vous pouvez encadrer la valeur par une chaine de caractères. Attention toutefois à ne pas dépasser 15 caractères au total.

Enregistrez le script. Celui-ci est exécuté après chaque enregistrement. L’affichage de l’écran OLED s’actualise donc immédiatement puis suivant la fréquence configurée précédemment.

Voilà, vous pouvez maintenant créer très facilement de petites afficheurs connectés à Jeedom sur lesquels vous pouvez afficher ce que vous voulez (météo, consigne d’un thermostat, consommation électrique…).

djjwni1j4awmy6vy0m6t-1907713