Accueil / esp8266 / ESP Easy / ESP Easy : installation OTA, Firmware personnalisé, Playground

ESP Easy : installation OTA, Firmware personnalisé, Playground

ESP Easy étant un projet Open Source, il nous est possible d’apporter des modifications ou d’ajouter des modules en cours de développement. ESP Easy dispose d’un dépôt dédié (Playground) à l’expérimentation de modules sur GitHub sur cette page. Dans le précédent article, nous avons vu comment installer le firmware sur un ESP8266 à l’aide de utilitaire flashtool, les principaux réglages (Wi-Fi, heure…), comment communiquer avec les protocoles domotiques, comment créer des devices, etc…. Dans ce tutoriel, nous allons voir comment personnaliser le firmware, exporter le binaire compilé et mettre à jour le firmware ESP Easy dans les airs en WiFi (OTA).

Récupérer les sources d’ESP Easy

Récupérez le code source et l’utilitaire d’installation d’ESP Easy sur cette page. Installez ESP Easy en suivant ce guide.

 

Préparer le firmware ESP Easy

Dans le répertoire d’ESP Easy, allez dans le dossier sources et ouvrez le fichier espeasy.ino dans l’IDE Arduino.

espeasy source espeasy

Avant d’aller plus loin, il faut installer manuellement les librairies nécessaires au firmware. Elles sont disponibles dans le répertoire Libraries. Depuis l’IDE, installez les librairies suivantes :

  • ArduinoJson
  • IRremoteESP8266
  • LiquidCrystal_I2C
  • pubsubclient

espeasy firmware libraries

Personnaliser le firmware avec des modules du Playground

Récupérez les modules du playground et décompressez l’archive : https://github.com/ESP8266nu/ESPEasyPluginPlayground

Une page du forum esp8266.nu est dédiée au playground : http://www.esp8266.nu/forum/viewtopic.php?t=718

Attention. Les modules du playground sont en cours de développement, donc sans aucune garantie de fonctionnement. Ils sont susceptibles d’être modifiés sans préavis pour les développeurs.

Les contrôleurs sont préfixés par _C. Les plugins sont préfixés _P et sont numérotés entre 100 et 199.

Le playground contient les contrôleurs et plugins suivants actuellement

NomContrôleurPlugin
_C022Pimatic RestApiX
_C025Protocole HTTP génériqueX
_P100_SRF01Mesure de distance par ultrason – SRF01X
Montre à partir de NeoPixel AdafruitX
Pont vers NodoX
_P103_EventAction sur événement : boot, timer, action utilisateur, heure, tâcheX
_P104_SRF02Mesure de distance par ultrason – SRF02X
_P105_RGBWPiloter des ampoules MiLightX
_P107_Email_DemoEnvoi d’un email (démo, n’est pas relié à un GPIO)X
_P108_WOLWake On Lan. Utilité limitée car le module WiFi est inactif en mode deepsleepX
_P109_RESOL_DeltaSol_ProCommunication avec le régulateur solaire RESOL DeltaSol ProX
_P110_P1WifiGatewayPour sheild P1 WiFiX
_P111_SenseAirPour récupérer les mesures des capteurs de CO2 S8 et K30 (en cours) SenseAirX
_P112_PowerCalculateur de puissance électriqueX
_P113_SI1145Pour capteur SI1145 Adafruit UV, IR, VisibleX
_P114_DSM501Pour détecteur de poussières DMS501AX
_P115_HeatpumpIRPiloter une climatisation ou (pompe à chaleur) par IR. D’après la librairie originale de ToniA. Commandes prises en charge : marche/arrêt, mode, vitesse ventilateur, température, inclinaison verticale et horizontale du flux d’air. Principaux modèles supportés : Panasonic ( E9/E12-CKP, E9/E12-DKE, E9/E12-JKE  E9/E12-NKE), Midea (MSR1-12HRN1-QC2, MOA1-12HN1-QC2), Carrier (42NQV035G, 38NYV035H2), Fujitsu Nocria (AWYZ14, MSZ FD-25), Sharp AY-ZP40KR, Daikin (RXS25G2V1B, FVXS25FV1B), Mitsubishi Heavy (SRKxxZJ-S, SRKxxZM-S)X
_P120_ThermocouplePour utiliser des thermocouples d type K (-200°C à +1350°C) MAX6675 ou MAX31855X
_P199_RF443_KaKuPour émetteur / récepteur RF Kaku 433 Mhz pour piloter des appareils domotiques Klik-Aan-Klik-UitX
_P205_FrameOLEDAffichage animé pour écran OLED 0.96 » SSD1306 monochromeX
_P209_IFTTTMakerEn cours de développementX
_P210_MQTTImportSouscription à un broker MQTTX

Pour certains plugins, vous aurez peut être besoin de chercher sur GitHub des librairies supplémentaires.

Remarque. La mémoire de l’ESP8266 reste limitée, il faudra donc se limiter aux modules nécessaires à votre application.

Sélectionnez la carte ESP8266 sur laquelle vous voulez installer le firmware.

espeasy-choix-esp8266-destination

Une fois que vous avez ajouté les modules, faites une vérification du code pour vérifier s’il ne manque pas des librairies supplémentaires. Une fois que le firmware est prêt, allez dans le menu croquis et lancez la préparation du fichier binaire à l’aide de l’option Exporter les binaires compilés.

1 espeasy playground firmware personnalise exporter les binaires

Le binaire est créé dans le dossier source du firmware. Pour la WeMos, le binaire est nommé ESPEasy.ino.d1-mini.bin

playground chemin fichier binaire cree

Mise à jour OTA (Over The Air) du firmware

Le firmware ESP Easy supporte la mise à jour sans fil ce qui est très pratique si votre projet est déjà en service.

Sauvegarder la configuration

Même si la mise à jour ne supprime pas la configuration, il est préférable de faire une sauvegarde de votre configuration avant de faire une mise à jour. Le fichier de configuration est téléchargé automatiquement sur votre ordinateur.

espeasy sauvegarde settings

Installation du nouveau firmware

De retour sur la page Tools, cliquez sur Load à coté de Firmware.

http://www.projetsdiy.fr/wp-content/uploads/2016/10/espeasy load firmware.png

Indiquez le chemin vers le fichier binaire créé précédemment puis upload.

playground-selection-fichier-binaire

Après installation, l’ESP8266 redémarre.

playground-firmware-update-terminee

C’est terminé !

Test : Affichage animé sur écran OLED SSD1306 (_P205_FrameOLED)

Dans l’article précédent nous avons vu comment utilisé un écran OLED SSD1306. L’affichage est basique (mais efficace). Si vous voulez un affichage plus sympa, je vous propose de tester le plugin _P205_FrameOLED qui permet d’animer les pages d’info. Si vous voulez afficher des graphismes, c’est aussi une bonne base de développement.

Commencez par ajouter le plugin _P205_FrameOLED en le déposant dans le projet ESPEasy.ino. Ajoutez la librairie esp8266-oled-ssd1306.zip qui se trouve dans le même répertoire que le plugin.

Compilez et mettez à jour le firmware comme précédemment.

Ajoutez un nouveau Device. Dans la liste choisissez Display – OLED SSD1306 Framed. On retrouve une page presque identique au module officiel. Une nouvelle liste de choix permet de choisir la vitesse d’affichage de chaque page :

  • Très lent (very slow)
  • Lent (slow)
  • Rapide (Fast)
  • Très rapide (Vey fast)
  • Sans scrolling (Instant)

On a 12 lignes disponibles. Chaque ligne correspond à une page. Le plugin saute les pages (ligne) vides. J’ai repris le petit projets de l’article précédent qui affiche la température et l’humidité mesurée par un DHT22 et la pression atmosphérique d’un BMP180.

On peut regrouper plusieurs lignes (entre 1 et 4) par page (frame). Avec une ligne par page, on sera limité à 10 caractères (pas de quoi en écrire un romain, mais au moins c’est gros). Choisissez le nombre de ligne par page dans la liste de choix Lines per Frame (1 à 4).

playground espeasy ssd1306 framed oled

Et voici ce que ça donne en image. Sur la partie supérieure de l’écran on trouve l’heure affichée, le nom du Device et le niveau de réception du WiFi. Su la partie centrale, la page (la ligne de texte). En bas de l’écran, un point symbolise la position de la page dans la liste.

espeasy playground _P205_FrameOLED

Avec 2 lignes par page

espeasy oled frame playground 2 lignes

Et 4 lignes par page

espeasy-oled-frame-4-lignes-frame

espeasy oled frame playground 4 lignes

 

Le playground recèle bien des surprises, à vous de tester et d’aller plus loin pour vos futurs projets DIY.

  • papoo

    Bonjour,
    je souhaitais tester easyESP sur un wemos D1 min avec un thermocouple de type MAX6675 et j’ai donc suivi pas à pas vos explications mais je bloque à : « il faut installer manuellement les librairies nécessaires au firmware »
    pourriez vous explique la méthodologie pour faire cela?
    Merci d’avance
    papoo

    • Bonjour Papoo. Le plus facile est de compresser chaque répertoire (ArduinoJson, IRremoteESP8266, Liquicrystal_I2C, pubsubclient). Puis dans l’IDE Arduino, il faut aller dans Croquis -> Inclure des bibliothèques -> Ajouter la bibliothèque .ZIP. On indique successivement le chemin vers les librairies pour les inclure à l’environnement de développement. Tout devrait fonctionner après. A très bientôt.

  • qcvictor

    Extrement interessent tes sujets, comment fait tu pour faire afficher l’heure et la force du signal wifi ?

    • Bonjour Victor et merci beaucoup. C’est l’auteur du plugin _P205_FrameOLED (squix78) qui a tout développé. Il utilise les librairies ssd1306 et images. Regarde les fonctions display_time() et display_wifibars() dans le code source (https://github.com/ESP8266nu/ESPEasyPluginPlayground/blob/master/_P205_FrameOLED.ino). A très bientôt

      • Robert Lemoux

        Bonjour,
        tout d’abord, mes meilleurs voeux pour cette nouvelle année, ensuite, un grand merci pour tous les tutos que tu mets à disposition… cela permet de grandement simplifier le « travail » pour les noobs tels que moi. Grâce à toi (et à la communauté Domoticz/jeedom) j’ai pu mettre en place relativement facilement un système d’affichage… je rencontre toutefois comme qcvictor un problème avec l’affichage de l’heure… en fait je n’ai pas compris comment faire… en gros, ça reste bloqué sur 0:00… il y a quelque chose dans le code source à rajouter avant de compiler et envoyer au wemos??
        merci de ta réponse

        • Bonjour Robert. Merci beaucoup et meilleurs voeux également. Non, il n’y a rien de plus à faire au moment de la compilation. Il faut aller dans l’onglet Advanced et cocher Use NTP. Tout est expliqué dans ce tutoriel : http://www.projetsdiy.fr/esp-easy-objet-connecte-domotique-esp8266/ Bonne journée et à très bientôt.

          • Robert Lemoux

            Bonjour,
            c’est ce que j’avais fait mais du coup, quoi mettre dans la partie NTP Hostname?
            a tout hasard, j’ai mis du rien dans un premier temps, pis après pool.ntp.org mais rien à faire, l’heure démarre à…0 mais à aucun moment ne se met à jour…. Je dois vraiment être une bille!!

            merci de ton aide

          • Bonsoir Robert. Non, non, c’est pas toujours très clair, ça reste du bricolage ;-). Alors, le mieux est de laisser le champ vide car il y a déjà un serveur par défaut dans le code. Ensuite il faut que l’ESP soit relié à internet mais ça c’est la première chose qu’on configure donc normalement c’est bon. Enfin, sur une ligne d’affichage, il faut appeler la variable qui contient l’heure système comme ceci %systime%. J’ai pas trop testé mais l’heure va être mise à jour suivant le délai d’actualisation de l’affichage (champ delai). Si le « delai » est trop long, il faudra attendre longtemps la 1ère fois. Attribué bein un iDX également, si vous laissez 0, ça ne marche pas. Voilà, j’espère que ça va fonctionner. Dites moisi c’est ok

  • Cdrx

    Bonjour, j’ai un message d’erreur lorsque je compil sur l’IDE arduino, il me manque apparement la librairie « image.h » mais impossible de la trouver, avez-vous une idée?
    Merci d’avance.

    • Bonjour Cdrx. Oui, la librairie image.h est nécessaire pour le plugin 205 qui permet de gérer un écran OLED SSD1306. Il installer la librairie qui est dans le répertoire des sources. Il suffit de fermer l’IDE Arduino et décompresser le fichier esp8266-oled-ssd1306.zip dans le dossier Documents/Arduino/libraries puis de relancer l’IDE pour la prendre en compte (on peut aussi le faire depuis l’IDE : croquis -> Gérer les bibliothèques -> ajouter depuis un fichier Zip). Voilà, ça devrait fonctionner après. Bonnes fêtes de fin d’année. A très bientôt.

      • Cdrx

        Bonjour, merci pour les informations. C’est bon ça fonctionne. Merci

      • Cdrx

        Re-bonjour,
        Je souhaite faire un thermostat avec esp easy, est-ce que l’on a la possibilité d’incrémenter une température par des poussoir et un affichage sur l’écran?

  • Sébastien B

    Bonjour et bonne année !
    Je n’arrive pas à compiler le OLED SSD1306… 🙁
    Le IDE de Ardu me met pleins d’erreurs au niveau des quotes et de « > » mal fermé.
    J’ai essayé de tout corriger mais ça ne marche pas
    (J’ai installé la librairie sans pb)
    avez-vous réussi à l’installer (je pars du espeasy-120)

    pourquoi ils n’y aurait pas des Binaire tout pret selon les besoins ! O:-)

    • Bonjour Sébastien et meilleurs voeux également. Si vous n’avez pas besoin de plugin spécifique (ou développé par vous même), je vous conseille de suivre cet article http://www.projetsdiy.fr/esp-easy-objet-connecte-domotique-esp8266/. Effectivement, il y a une version déjà prête à être flashée à la racine du projet (tout est détaillé dans l’article indiqué). Pour l’erreur renvoyée par l’IDE Arduino, je n’ai pas assez d’infos pour vous aider. A vue de nez, on dirait qu’il manque un ; quelque part avant l’erreur. A très bientôt.

      • Sébastien B

        Bonjour,
        Justement, je m’amuse bien avec les différents plugin mais c’est le 205_oled qui ne fonctionne pas sur un esp-01 ou wemos d1

        je voulais savoir si il y avait la source binaire du projet réaliser avec le plugin en question. Merci d’avance

        • D’accord. Je n’ai pas testé sur un ESP-01. Non il n’y a pas de binaire déjà prêt pour le playground. il faut ajouter les modules manuellement au projet ESP Easy puis recompiler le bianaire. Avez vous essayé de faire une vérification du projet ESP Easy (sans autre plugin) pour voir ce qui se passe ? Il faut bien choisir la carte de destination sinon ça ne marche pas.

          • Sébastien B

            Problème résolu !
            J’ai refais une installation propre de arduino (1.8) et installation seulement des plugins et librairies utile au Wemos et la pas d’erreur !
            Merci pour tout ! et bravo encore pour toutes ces réalisations que je suis de près depuis quelques mois

          • Bonne nouvelle ! Merci beaucoup pour le retour. Alors, à très bientôt !