[TUTORIEL] Shelly Cloud - Shelly 1 OS

shelly
tutoriel

#1

Comme convenu, j’ai fait joujou…
Voici mes impressions:

Le produit est vraiment top!
J’adore le fait qu’il soit tout petit et qu’il se glisse parfaitement dans la cloison.
Le fait qu’il gère le retour d’état d’un interrupteur physique permet en plus de garder Gladys synchro tout le temps, qu’on manipule la lampe avec Gladys ou à l’interrupteur. J’ai testé sur un montage simple, mais je pense que c’est tout à fait adaptable à un système va et vient, sans trop devoir changer les branchements et surtout en ayant qu’un seul module !
C’est du wifi! Pas de gateway… enfin, si, c’est Gladys !
Bref, c’est que du bonheur… passé le délai d’attente car la chaîne d’appro ne suit pas la demande…
[EDIT]
Note importante que j’avais omise et que @piznel a justement remarqué :
Le module a besoin d’un neutre. Ca paraît anodin, mais la plupart du temps, et sur les installations récentes, ça va être chaud d’en trouver un… Dans mon cas perso, j’avais un interrupteur poussoir connecté à un télérupteur juste à côté, ça m’a bien aidé, car cablé au neutre.
On peut être tenté de se raccorder au circuit prise, qui lui a toujours à neutre dispo…
NON! La lumière c’est lumière, les prises, c’est les prises.

[/EDIT]

Aller, j’suis enthousiaste, ci-après un p’tit how-to pour installer le joujou:

1. Je l’avais déjà dit lors du “unpacking” mais faut encore le préciser :

  • "Woaw! C’est rikiki! Pour les plus techniques : 41 x 36 x 17 mm

2. Livré avec son firmware maison, c’est cool, on peut faire joujou avé une app, mais bon… personne n’est ici pour ça. Il faut que ça s’intègre à Gladys ! Qu’à cela ne tienne, le module est prévu pour… C’est du ESP8266.

3. Le petit joujou dispose d’une interface série pour y pousser le firmware de son choix :+1:

Le principe est assez simple, mais il faut être un minimum équipé. En l’occurence, il faut un adaptateur USB to TTL ou USB-UART.
… J’m’en veux, J’n’ai pas pris de photo, mais heureusement, je ne suis pas le seul à l’avoir fait :

Là ils ont soulevé le capot pour brancher, mais ce n’est pas nécessaire… J’ai pu tout faire en gardant le bouzin sous couvercle, les fils Dupont passent pile poil! … Genre on dirait c’est fait d’exprès :thinking:

Une fois branché, t’as le choix du firmware à installer.
Perso, mon choix c’est tourné vers ESPEASY parce que c’est vachement bien!.. et puis je connaissais déjà un peu. Mais libre à chacun d’y mettre ce qu’il veut ! C bô l’OSS :heart_eyes:
Télécharge et flashe la version 2 de ESPEASY:
T’auras un zip avec une palanquée de versions… Il faut prendre la mega 1Mo:
ESP_Easy_mega-20180802_normal_ESP8266_1024.bin
Fais pas trop attention au numéro de version, je crois qu’ils en sortent tout le temps. Il faut juste vérifier que le nom contient “mega” et “1024”. Et puis… j’l’ai pas dit mais ESPEASY se met à jour OTA (Over The Air) … Comme un tel portable quoi Gladys :wink: Tu cliques sur MAJ et BIM !
Je ne m’épanche pas sur la marche à suivre, “let’s control it” les gens qui mènent le projet le font bien : ici

4. Branchement à son installation électrique.

Hey, ho! C’est du 220!!! On fout le(s) gosse(s) à la sieste et on coupe tout ! … J’ai dit tout! Tu me vires pas juste le fusible de la lampe du bural!

… C’est bon? C’est compris que c’est dangerous ?
OK. On continue.

Pour ceux qui savent lire un schéma :
Shelly1_User_Guide_EN_v5_pdf

Pour les autres :

  • Le bouzin a besoin d’être alimenté en permanence. Connect-z-y la phase sur le L (“Line”) et le Neutre sur le N (“Neu… tral”, bien ouej :wink: ) Cool! Il est déjà visible sur ton réseau local :ok_hand:

NON! On t’as dit de couper le jus b%$&?l !!!
C’est maintenant que ça se “complique”… Bon, pas tant que ça en fait, si t’as déjà branché un interrupteur…
L’idée, c’est de brancher le SW (“switch”) à ton interrupteur mural à la place de ton ampoule.

  • Tu déconnectes le “retour de lampe” à l’inter (si ton électricien n’était pas saoul, ça doit être le fil noir sur un montage simple) et à la place, tu mets un cable vers le SW. => Comme ça, Shelly sait dans quel état est ton inter. :+1:
  • Le fil noir que t’as déconnecté de l’inter (“le retour de lampe”) quant à lui, se connecte au 0.
  • Il reste le 1 à brancher… à une phase. (Tu peux ponter sur l’inter par exemple :wink: )

Pour un interrupteur simple le montage se présente comme ça :


Oué… J’ai pas de cable noir alors j’ai mis du scotch… au moins c’est marqué :wink:
N’essaies pas de suivre les cables, l’inter géré est de l’autre côté de la cloison… Celui qu’est visible, c’est un poussoir qu’à rien à voir… Les avantages d’avoir un ancien proprio bricoleur et poseur de papier peint à ses heures…

Ayé, tu peux tout remettre dans la cloison et cacher la misère avec un bô cache prise. C’est du placo chez moi, j’ai cassé un peu autour du logement (mais non pas chez les voisins… roooo :man_facepalming: ) pour y glisser le module. Askip, ça peut aussi passer derrière l’inter.

5. Enfin! On peut troquer le tournevis contre une souris!

Installer le module pour communiquer avec ESPEASY

Dans l’attente de faire fonctionner tout ça en MQTT, j’ai fait un p’tit “wrapper” autour de gladys.utils.request afin d’envoyer la requête http qui va bien :
L’installation est donc manuelle, car rien de très officiel :
Module => Avancé. Puis:
Nom : simple-http
Version: 0.1
Url (git): https://github.com/Boimb/gladys-devicetype-http-request.git
Slug: simple-http

Install puis reboot

Créer un device dans Gladys

Nomme le device comme tu le souhaites. Seules deux choses sont obligatoires :
L’IP, à renseigner dans “identifier”. Note absolument “http://xxx.xxx.xxx”. Sinon ça ne marchera pas.
Le service. Là, tu dois inscrire le nom du slug que tu as choisi lors de l’install du module ci-dessus. En l’occurence, simple-http si t’es discipliné :wink:


Le deviceType associé devra être de type binary, et de catégorie lumière.
Dans le champ identifier, saisis :
/control?cmd=GPIO,4, (avec la virgule à la fin c’est important)
Note l’ID, il servira plus tard.

Configurer ESPEASY

Je passe l’étape de la première connexion et du paramétrage du réseau local. Cf doc. d’ESPEASY.
On aura deux devices à configurer : Le Switch, qui permet d’actionner manuellement la lampe (GPIO5) et le relais (GPIO4) qui fil du jus à la lampe:

Le relais :

Le switch:

N’oublie pas d’appuyer sur Submit ^^

Note qu’aucun des deux ne communique sont état via le controller d’ESPEASY.
C’est pas très best-practice, mais tout de suite, je n’ai pas encore bien saisi comment saisir cela dans le controller alors on va le faire différemment…

A cette étape, Gladys peut contrôler la lampe:

ESPEASY configure par défaut des routes pour actionner les GPIO. En l’occurence:

http://ip_shelly/control?cmd=GPIO,4,1
=> allume la lampe.

http://ip_shelly/control?cmd=GPIO,4,0
=> éteins la lampe.

Il nous manque deux choses :

  • Controler le relay depuis l’inter mural,
  • Signifier les changements d’état à Gladys si c’est par l’inter et non via elle qu’on a changé l’état.

Tout ça va se faire sur le dernier écran de paramétrage (… ouf)

GOTO “Tools” sur l’ESPEASY et active “System” “Advanced” … on se sent trop puissant quand on clique sur ce genre de bouton :smiley:

Un nouveau panel est apparu : “Rules”

One To Rule them all!

Dans l’espace prévu pour la saisie, colle ça en adaptant à ton cas.
En gros, change l’IP pour celle de ton Gladys, puis mets ton token à toi et l’ID du deviceType que t’as noté plus haut:

on Switch#Switch=1 do
  if [Relay#Switch]=0
   GPIO,4,1
   SendToHTTP 192.168.1.24,8080,/devicestate/create?token=cf31279fa2f0f3aa6e08bc974cd7a7ba9c23&devicetype=7&value=1
  else
   GPIO,4,0
   SendToHTTP 192.168.1.24,8080,/devicestate/create?token=cf31279fa2f0f3aa6e08bc974cd7a7ba9c23&devicetype=7&value=0
  endif
endon

on Switch#Switch=0 do
  if [Relay#Switch]=0
   GPIO,4,1
   SendToHTTP 192.168.1.24,8080,/devicestate/create?token=cf31279fa2f0f3aa6e08bc974cd7a7ba9c23&devicetype=7&value=1
  else
   GPIO,4,0
   SendToHTTP 192.168.1.24,8080,/devicestate/create?token=cf31279fa2f0f3aa6e08bc974cd7a7ba9c23&devicetype=7&value=0
  endif
endon

Je n’explique pas ce que ça fait, c’est plutôt compréhensible (… et c’est déjà bien assez long mon histoire là…)

WALA !
Gladys peut contrôler le relais, l’interrupteur peut le controller aussi, et Gladys reste synchro tout du long de ce process :wink:

Prochaine étape, faire ça avec du MQTT, car l’air de rien, les requêtes HTTP ça met un peu de latence dans tout ça et ça oblige à faire de la bidouille avec le module bidon que j’ai créé pour l’occasion… ESPEASY gère nativement MQTT, on va pas s’priver :wink:


Matos - Shelly cloud
Matos - Shelly cloud
#2

Y’a peut être moyen de faire un module générique “ESP8266” (Tasmota, ESPEasy, …) en se basant sur celui-que j’ai fait pour les SONOFF.


Si tu veux, je peux regarder ça ? :wink:


#3

Justement, l’idée serait de se passer du moindre module autre que gladys-mqtt qui a l’air de proposer déjà tout ce qu’il faut. “Ecouter à la recherche de nouveau device state” et “Forwarder les nouveaux états”.

C’est une force de ESPeasy, (je connais pas Tasmota), c’est que tu peux choisir les topic sur les lesquels tu publies et ceux sur lesquels tu écoutes. Ca éviterait toute dépendance à un autre module, et ça permettrait d’uniformiser la communication entre instances et devices, tout comme ça l’est pour l’API REST.

Il ne nous viendrait pas à l’idée de faire un module pour gérer un route “http://gladysIP/monDeviceGerePasCommeLesAutres/createState
J’aimerais rester dans cet esprit pour gérer le state du device par MQTT:

  • L’interrupteur fait changer l’état du device:
    => ESPEASY publie sur un topic générique (voire spécifique à l’instance qui le gère) et écouté par Gladys (ou une instance spécifique) qui MAJ la DB (ou forward à master).
  • MAJ de l’état depuis Gladys via scénario ou UI ou whatever
    => Gladys publie sur un topic dédié au device qui update son état

Pour autant, de ce que j’ai compris, ce n’est pas tout à fait comment fonctionne gladys-MQTT. Et j’avoue que l’implémentation m’échappe… En fait, j’oserais presque la contester. Pardon @pierre-gilles, c’est l’insouciance de l’ignorance…

De ce que j’ai compris :

Gladys-MQTT écoute sur “gladys/master/devicestate/create”
Gladys-MQTT publie sur “gladys/machine/${data.machine_id}/module/${data.module_slug}/devicetype/exec”
Je restreins volontairement aux topics liés aux deviceState

Mais why ? J’aurais naturellement presque fait l’inverse o_O
Pourquoi chaque instance n’écoute-t-elle pas justement les devices qu’elle manage ? Et éventuellement forward à master ?
Pourquoi publier sur un topic avec une référence à un module ?
Et le exec ?!?

Dans mon esprit, MQTT n’est qu’un passe-plat. La couche module devrait être rendue abstraite, d’autant plus qu’une fois la data traitée par Gladys (même au travers d’un module) cette info (le slug) n’intéresse plus personne…

Tout ça m’échappe.

Alors oui, @Pti_Nico je veux bien de ton aide :hugs:
Tu as déjà bossé sur le sujet et je serai ravi que tu m’expliques tout ça. Mais tu vois… Je vais être relou :stuck_out_tongue_winking_eye:
#fallaitPasProposer :smiley:

Pour ne rien te cacher, le seul truc que j’aurais pensé devoir développer, c’est un protocol “Gladys MQTT” à ajouter à la base de code ESPEASY. Ca peut être fun aussi :wink:


#4

J’ai flasher mon Sonoff Basic avec le firmware ESPEasy.
Reste à modifier mon module pour le faire fonctionner :wink:


#5

Salut @Boimb,

Je suis en train de regarder comment interfacer Node-Red avec Gladys et je rencontre exactement la même problématique au niveau communication.
Du coup, avec @spenceur, on regarde pour développer un module pour Gladys qui écouterait et publierait sur Mqtt tout les changements intéressants des deviceTypes, et sélectionnés par le user.
On en est encore à la phase de réflexion, et je suis assez d’accord avec toi sur le fonctionnement du module Mqtt.


#6

@Pti_Nico: vu que tu peux choisir ton topic dans espeasy, tu peux même calquer sur le sonoff pour ne pas modifier ton module du coup :wink:

@piznel ahhh. J’avais trouvé ça pour nourrir votre réflexion
http://iot-datamodels.blogspot.com/2013/10/m2m-protocol-interoperability-using.html?m=1
… prends une grande inspiration avant quand même… c’est plutôt technique comme doc. J’ai pas tout compris, mais ouf… y’a des schémas :slight_smile: