Tous les scripts pythons et code des wemos sont disponibles sur le repos suivant: https://github.com/UrLab/alain
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:
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 ('<').
switch/<hostname>/<switch_name>
Valeurs possibles:
c'est persistant
button/<hostname>/<button_name>/trigger
Valeurs possibles:
button/<hostname>/<button_name>/state
Valeurs possibles:
c'est persistant
sensor/<location>/<hostname>/<sublocation>/type
Valeur déjà convertie du senseurs sans l’unité.
trigger/<trigger_name>
Valeurs possibles:
c'est persistant
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.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:
c'est persistant
animation/<animation_name>/play
Valeurs possible:
c'est persistant
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.
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.
http://172.23.42.206:1880/
http://paste.awesom.eu/kNAE
si il ne retrouves pas pubsubclient, rajouter lib_deps = PubSubClient
à la fin de platformio.ini
créer un projet: platformio init -b d1-mini
compiler et exporter un projet: platformio run --target upload
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.
si erreur lors de l'upload sur la board: sudo adduser $USER username 'dialout'
.
Le code couleur utilisé l'ethernet vers les leds du plafond
Les leds sont controlables à partir de leddyd.lan (depuis le réseau du hs)