Accueil | Domotique | Jeedom : créer un affichage déporté OLED avec ESP Easy actualisé par requête HTTP

Jeedom : créer un affichage déporté OLED avec ESP Easy actualisé par requête HTTP

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. Dans ce tutoriel, nous allons voir comment réaliser un petit affichage déporté à l’aide d’un écran OLED SSD1306 et d’un module ESP8266 Wemos D1 Mini (ou n’importe quel autre module NodeMCU).

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 capteur de particules dans l’atmosphère pour réaliser un analyseur de qualité de l’air miniature par exemple.

esp8266 Wemos D1 miniWemos D1 Mini (compact et économique) ou n’importe quel autre ESP8266 ESP-12
oled ssd1306 ecran i2cEcran OLED monochrome 168×64 pixels 0.96″

SSD1306

wemos d1 mini oled shieldEcran OLED officiel Wemos. Compact à empiler sur la D1 Mini.

environ 4,40€

jumper dupontJumper Dupont (optionnel)
breadboardBreadboard (optionnel)

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 le même que le tutoriel précédent.

espeasy + dht22 + ssd1306 + bmp180

Configuration de l’écran OLED sur ESP Easy

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 : choisissez Generic HTTP
  • Locate Controller : choisissez Use IP address
  • Controller IP : indiquez l’adresse IP de la box Jeedom
  • Controller Port : indiquez 8121
  • Enregistrez avec submit

jeedom esp easy protocol generic

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

jeedom esp easy publish template

Enregistrez 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.

jeedom plugin meteo

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.

jeedom cle api openweathermap

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

Ce qui vous donnera par exemple (au format JSON)

 jeedom lieu meteo

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.

jeedom variables disponibles affichage oled espeasy

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

jeedom plugin script espeasy http requete

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).

jeedom auto-actualisation

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

jeedom frequence actualisation affichage oled

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

Comment afficher du texte sur l’écran OLED avec ESP Easy

Avant d’aller plus loin, voyons déjà comment le plugin SSD1306 d’ESP Easy gère l’affichage. ESP Easy récupère les 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=. La commande OLED permet de déclencher un affichage sur l’écran. On passe en paramètre l’index de la colonne (une par caractère), la ligne et enfin le texte à afficher. Par contre on ne peut pas indiquer la taille de l’affichage (si vous êtes tenté par l’écriture de nouveaux plugins, voici comment faire).

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

http://<ESP IP address>/control?cmd=oled,<row>,<col>,<text>

  • row : ligne d’affichage
  • col : colonne d’affichage
  • 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 :

  • Allumer l’écran : http://<ESP IP address>/control?cmd=oledcmd,on
  • Eteindre l’écran : http://<ESP IP address>/control?cmd=oledcmd,off
  • Vider l’écran : http://<ESP IP address>/control?cmd=oledcmd,clear

Configuration du script Jeddom

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 :

  • Nom : nom de la commande
  • Type de script : HTTP
  • Laisser Info
  • Type d’information : autre
  • Commande : saisissez http://192.168.1.21/control?cmd=oledcmd,clear
  • Cochez (optionnel) Retour vide et Pas d’erreurs

jeedom script clear oled display esp easy

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

jeedom script titre oled display esp easyPuis 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.

jeedom script temperature oled display esp easy

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…).

jeedom affichage oled ssd1306 esp easy meteo

 

  • Michael Peres

    Merci beaucoup pour ce tuto, ça règle mon problème d’affichage de variable !!!
    Efficacité et rapidité, ne changez rien !
    Je vous souhaite mes meilleurs vœux, et de nombreux tutos à venir 🙂

    • Merci beaucoup. Je suis très content si ça répond à vos besoins. Oui je travaille sur beaucoup d’autres tutos. A très bientôt

  • Sébastien B

    Génial ce tuto, mais pour ma part j’utilise Domoticz existe il un équivalent pour faire la même chose !

    • Bonjour Sébastien et merci beaucoup. Oui c’est certainement possible, je termine la série d’article sur la programmation des ESP8266 comme serveur web et je regarde. Ce sera un bon exemple d’application. A très bientôt.

  • JJ

    Super tuto !!