Simulateur de présence (modifié avec utilisation de Painless Mesh)

Les prises sont commandées soit par l'ESP32, soit par l'interface web. Dans ce dernier cas, d'autres commandes sont disponibles :

  • / connexion simple, affiche l'état et un bouton pour changer
  • /web/on réservé à la commande ESP32 (allumage relais & led)
  • /web/off réservé à la commande ESP32 (extinction relais & led)
  • /cmd/blink led cignote (arguments : nombre, durée_ms)
  • /cmd/all/on allumage relais & led
  • /cmd/all/off extinction relais & led
  • /cmd/relay/on allumage relais (led inchangée)
  • /cmd/relay/off extinction relais (led inchangée)
  • /cmd/led/on allumage led (relais inchangé)
  • /cmd/led/off extinction led (relais inchangé)
  • /cmd/get_id renvoie l'id de la prise
  • /cmd/get_name renvoie le nom de la prise
  • /cmd/set_id changer l'id (donc l'IP : reboote la prise) et le nom de la prise
  • /cmd/set_name changer le nom de la prise (si les noms par défaut ne conviennent pas)
  • /cmd/get_ip renvoie l'IP de la prise
  • /cmd/relay/status renvoie l'état de relais (1, 0 pour on, off)
  • /cmd/led/status renvoie l'état de la led (1, 0 pour on, off)

Au besoin voir la syntaxe des commandes plus bas.
Exemple : http://192.168.0.52/cmd/led/on

Le code se lance au moment où la prise est branchée.
Il est alors possible de configurer la prise avec le bouton : l'utilisateur dispose de 15 secondes pour appuyer sur le bouton. Le nombre d'appuis devient l'identifiant de la prise (+1). Exemple : 3 appuis --> l'identifiant sera 2 (1 appui pour 0) et l'IP de la prise sera 192.168.0.54

Pendant les 15 secondes, la led rouge clignote, de plus en plus vite au fur et à mesure que les secondes s'écoulent. S'il n'y a plus d'appui pendant 2 secondes, le délai de 15 secondes s'arrête.

Si on n'a pas appuyé sur le bouton pendant le délai, l'IP sera 192.168.0.99

Ensuite, la prise se connecte au Wifi. Il est alors possible d'accéder à l'IHM par le web, avec l'IP de la prise. L'adresse IP (ex: http://192.168.0.54) affiche l'état de la prise (voir photo ci-dessous). Cliquer sur le bouton permet d'allumer ou éteindre la prise.

Les commandes sont accessibles via la barre d'adresse du browser. Exemple :
http://192.168.0.54/cmd/blink?N=5&d=200 fera clignoter la led 5 fois avec une durée de 200 ms à chaque fois.

Les commandes ont une syntaxe de base identique http://adresse_ip/cmd/commande?paramètres
La syntaxe est indiquée dans le code. La commande set_id est particulière : elle permet de changer d'identifiant (si on n'a pas pu le faire avec le bouton au boot), de changer d'adresse IP et éventuellement de changer de nom pour la prise. Syntaxe:
http://ip_address/cmd/set_id?ID=new_id&Name=new_device_name
Exemple : http://ip_address/cmd/set_id?ID=4&Name=Ch.J --> l'identifiant de la prise devient le numéro 4, l'IP devient automatiquement 192.168.0.55 (=51+4) et le nom de la prise devient "Ch.J", qui devrait s'afficher sur l'IHM (je ne sais pas s'il change sur l'IHM de l'ESP32...). La prise va alors rebooter (sans la phase initiale de 15 secondes) et son adresse IP sera changée (elle sera indiquée dans l'IHM) : il faudra alors utiliser la nouvelle pour connaitre son état.

Quelques photos :

Screenshot_20190529-172732_Chrome-270x480.jpg
IHM de commande d'une prise

J'aurais voulu stocker les paramètres tels que l'identifiant et le nom de chaque prise dans un fichier dans la SPIFFS pour le relire à la prochaine utilisation, mais je me suis aperçu que mes ESP8266 n'ont pas de SPIFFS. Donc tant pis. Le code est là mais reste inexploité.

20190529_101317-270x151.jpg
Des fils soudés sur les ports RX et TX de la prise (fils bleus) et sur VCC (fils rouge) et GND (fil gris)

La difficulté principale est de se connecter à la prise pour flasher le code. Il faut 4 fils, deux pour RX et TX, un pour VCC et un pour GND, et un adaptateur. Les contacts VCC et GND sont assez faciles à souder car ils sont en un endroit assez robuste. Par contre les contacts RX et TX se font sur des pastilles très fines et fragiles. D'une part il n'est pas facile d'y souder des fils, d'autre part les pastilles se détachent si elles sont soumises à des contraintes trop fortes. Et là, les ennuis commencent...

Pour RX, on dispose d'un autre point de soudure à côté des VCC et GND, et je conseille de l'utiliser plutôt que la pastille. Mais pour TX il n'y a pas le choix et si la pastille se détache, la seule solution qui reste est de se brancher sur la patte TX de l'esp8266 (galère).

20190529_101437-270x151.jpg

20190529_101449-270x480.jpg
On voit bien les pastilles
J'ai utilisé des fils monobrins assez rigides et je pense que c'était une erreur car lors des manipulations, ils forcent sur les pastilles.

En résumé : la carte principale de la sonoff comporte des points d'accès étiquetés :

  • J1 = 3V3
  • J2 = GND
  • J3 = GPIO12 = RELAI
  • J4 = GPIO0 = BOUTON
  • J5 = GPI13 = LED
  • J10 = RX (ERX) EDIT : sauf si la pastille a sauté, car elle fait le contact !!!

Je conseille de se brancher à cet endroit pour VCC, GND et RX, et sur la pastille pour TX (pas trop le choix). Utiliser des fils souples ou les coller sur le PCB après la soudure afin que les opérations de branchement et flashage ne transmettent pas de contrainte sur les pastilles. Au pire, il suffit de le faire pour la TX, les autres peuvent être resoudées plusieurs fois.


Sur cette photo, le fil blanc / rose est pour RX

L'adaptateur : Al1fch m'a prêté celui-ci qui est parfait et permet d'alimenter l'ESP8266 pendant le flashage et son utilisation.

Screenshot_20190529-172732_Chrome-270x480.jpg

20190529_101317-270x151.jpg

20190529_101437-270x151.jpg

20190529_101449-270x480.jpg