HAL1

Github

Tous les scripts pythons et code des wemos sont disponibles sur le repos suivant: https://github.com/UrLab/alain

Broker :

Le broker MQTT (ou serveur) est le programme s'occupant de la cummunication entre les differents wemos, les scripts pythons, ...

Il est composé de 3 parties:

  • Le broker: il s'occupe de relayer les informations.
  • Les publishers: c'est la nom utilisé pour les composants qui envoient des messages vers le broker sur certains topics.
  • Les subscribers: c'est le nom utilisé pour les composants qui listen sur certains topics. Le broker leur enverra les messages sur ces topics lorsqu'il en reçois des publishers.

Un même composant peut bien sûr être subscriber et publisher sur le même ou de différents topics.

Les topics sont les noms des channels utilisés pour communiquer.

Les valeurs entre <> sont à remplacer judicieusement.

Pour les topics persistants, il faut mettre l'argument retained à true, ça permet a un subscriber qui vient de se connecter au broker de connaître le dernier état et donc de ne pas devoir attendre le prochain changement avant de fonctionner.

A l'exception des topics stream et frames, tous les messages sont à envoyer en chaîne de caractères facilement lisible pour un humain. Par exemple, la valeur 60 est envoyé en tant que la chaîne de caractère "60" au lieu du byte 60 converti en char ('<').

Emitters (Publishers):

Switch

switch/<hostname>/<switch_name>

Valeurs possibles:

  • 0 : off
  • 1 : on

c'est persistant

Buttons

button/<hostname>/<button_name>/trigger

Valeurs possibles:

  • 1 : Simple press
  • 2 : Double press
  • 3 : Long press
button/<hostname>/<button_name>/state

Valeurs possibles:

  • 0 : off
  • 1 : on

c'est persistant

Sensor

sensor/<location>/<hostname>/<sublocation>/type

Valeur déjà convertie du senseurs sans l’unité.

Receivers (Subscribers):

Trigger

trigger/<trigger_name>

Valeurs possibles:

  • 0 : off
  • 1 : on

c'est persistant

Animation

animation/<animation_name>/stream

Permet de contrôler en temps réel une animation en envoyant directement la valeur pwm au wemos sans devoir passer par une animation. La valeur reçue sera jouée directement après réception. L'animation devrait être stoppée (envoyer 0 sur le topic play) afin de pouvoir pleinement profiter de ce mode.

Pour éteindre complètement une led, la valeur a envoyer serait \x00 et pour l'avoir la plus lumineuse possible, \xff.

animation/<animation_name>/frames

Une chaîne de char (caractères) ayant les différentes valeurs de pwm par lesquels l'animation doit passer (un byte par valeur).

c'est persistant

Notes:

  • analogWriteRange(25) doit être appelé dans la fonction de setup pour pouvoir avoir le valeur de pwm qui tienne sur un byte au lieu d'être ente 0 et 1024 non inclus.
  • Pour les leds strips rgb, le topic est subdivisé en frames_r pour le rouge, frames_g pour le vert et frames_b pour le bleu.
animation/<animation_name>/fps

Le nombre de frames/valeurs (récupérées sur le topic juste au dessus) qui doivent être lues par seconde.

c'est persistant

animation/<animation_name>/loop

Défini si l'animation doit être lue en boucle.

Valeurs possible:

  • 0 : faux
  • 1 : vrai

c'est persistant

animation/<animation_name>/play

Valeurs possible:

  • 0 : off
  • 1 : on

c'est persistant

Particularité d'UrLab :

On a un script python qui est à la fois publisher et subscriber. Grâce à celà, les ESP ne doivent pas se connaitre tous entre eux.

Programation :

Des scripts seront disponibles sur le github d'UrLab pour permettre de flasher les ESP via le wifi, le connecter au broker facilement et il sera possible de modifier le script python via github.

Liens sympa :

http://172.23.42.206:1880/
http://paste.awesom.eu/kNAE

Problèmes et solutions :

si il ne retrouves pas pubsubclient, rajouter lib_deps = PubSubClient à la fin de platformio.ini

Commandes sympa :

créer un projet: platformio init -b d1-mini

compiler et exporter un projet: platformio run --target upload

Pour platformio sur l'éditeur Atom

Dans l'onglet + install, choisir platformio-ide. Redémarrer Atom. Lors de la création d'un projet platformio choisir WeMos D1 mini Lite (WEMOS) comme board.

troubleshooting Atom

si erreur lors de l'upload sur la board: sudo adduser $USER username 'dialout'.