Où sommes nous ?

Retour

Répéteur WiFi

Les murs sont les gros ennemis du WiFi. Alors, même si un (faible) signal est détecté par notre tablette au fond du jardin, force est de constater qu'il n'est pas suffisant pour domotiser notre poulailler situé à une 15e de mètres : connexions instables, délais très longs pour établir la liaison, coupures fréquentes ... bref, pas bon pour la durée de vie des batteries de ces objets distants.
Il existe dans le commerce des répéteurs WiFi qui, comme le nom le laisse présager, répètent le signal pour étendre la zone de couverture. C'est relativement cher et totalement fermé : comme s'assurer dès lors de la sécurité ?

Ce billet propose une solution à base d'ESP-01 qui ne coutera que quelques €uros et sur lequel vous gardez entièrement la main.

Côté logiciel

Les ESP8266 ont l'avantage de pouvoir ouvrir simultanément 2 réseaux WiFi :

La limitation apparait quand on se rend compte que le firmware ne permet pas de router les trames d'un réseau à l'autre (pas de forward).

martin-ger nous propose 2 solutions pour résoudre ce problème

esp_wifi_repeater

Il s'agit d'un routeur NAT qui permettra aux clients de son réseau privé de se connecter au réseau domestique. L'avantage est que pour eux, c'est totalement transparent ; un peu moins pour les applications à l'autre bout pour qui tous les dits clients proviendront de la même IP, différenciés par leurs seuls ports. Ça ne gène absolument pas : c'est même sans doute la méthode utilisée par votre box pour connecter toutes vos machines à Internet.
Les sources et une docs se trouvent ici.

Du fait des limitations de l'ESP, seuls 8 clients pourront se connecter simultanément.

esp_uMQTT_broker

Grâce à esp_uMQTT_broker, l'ESP devient un petit système domotique contenant :

Bref, une mini centrale domotique ! Mini car les ressources de l'ESP étant limitées, les possibilités de ce broker aussi : peu de clients concurrents, taille des messages réduite et les règles ne peuvent être que simples. Idéale pour publier des données vers une plateforme de cloud ou pour communiquer avec une Box domotique qui sera chargée des automatismes, mais trop limité pour une domotique comme la mienne.

Mon choix

Installer un second broker aurait été totalement redondant avec mon installation existante et uMQTT est trop limité pour prendre en charge tous mes messages. D'un autre côté, mon besoin est surtout d'augmenter la portée de mon WiFi : très pratique quand même de pouvoir connecter sa tablette de l'autre côté du jardin lors des tests. Bref, c'est parti pour esp_wifi_repeater ...

Installation de esp_wifi_repeater

On récupère les fichiers 0x00000.bin et 0x10000.bin depuis le github et on les grave

esptool.py --port /dev/ttyS2 write_flash 0x00000 0x00000.bin
esptool.py --port /dev/ttyS2 write_flash 0x10000 0x10000.bin

l'adresse 0x10000 dependra de la mémoire sur l'ESP : lire la doc.

Une fois le flashage terminé, l'ESP reboote même si je rajoute l'option

--after no_reset

Il m'a fallu le redémarré à chaque fois électriquement pour qu'il repasse en mode programmation.

Ça ne marche pas : sec fd error

Mon premier essai n'a pas fonctionné

epeater V1.5 starting

Config found and loaded
Starting Console TCP Server on port 7777
Starting Web Config Server on port 80
mode : sta(5c:cf:7f:15:74:b6) + softAP(5e:cf:7f:15:74:b6)
add if0
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
mode: 0 -> 2
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 2
cnt

connected with xxxx, channel x
sec fd error
Fatal exception 0(IllegalInstruc�ionCause):
epc1=0xc0138c8e, ep�2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x0�000000
ets Jan 8 2013,rst cause:4, boot mode:(3,7)

En cherchant sur le web, c'est parce que le firmware de l'ESP est trop ancien : j'ai récupéré le dernier ici puis

esptool.py --port /dev/ttyS2 write_flash 0xfc000 esp_init_data_default.bin

l'adresse 0xfc000 dependra de la mémoire sur l'ESP (un classic 1Mo pour le mien) : lire la doc.

Configuration (minimale)

L'étape suivante est de configurer les réseaux en entrant les commandes suivantes dans sa console.

CMD>set ssid réseau_de_la_maison
SSID set (auto_connect = 1)
CMD>set password MdP_pour_la_maison

CMD>set ap_ssid nouveau_réseau
CMD>set ap_password MdP_nouveau_réseau

CMD>save
CMD>reset

On reboote et ... ça marche.

MQTT

L'ESP peut aussi agir en tant que client MQTT, publier quelques statistiques et accepter des commandes.

Grace au port de commande déclaré par mqtt_command_topic, on peut envoyer des ordres comme lorsque nous étions connecté par la console. Les réponses sont reçues par le topic .../responses.
Ainsi

$ mosquitto_pub -t 'monESP/command' -m 'help'

renvoie

$ mosquitto_sub -v -t 'monESP/#'
monESP/command help
monESP/response show [config|stats|mqtt]
set [ssid|password|auto_connect|ap_ssid|ap_password|ap_on|ap_open|ap_mac|sta_mac|ssid_hidden] <val>
set [network|dns|ip|netmask|gw] <val>
set [speed|status_led|config_port|config_access|web_port] <val>
portmap [add|remove] [TCP|UDP] <ext_port> <int_addr> <int_port>
save [config|dhcp]
reset [factory] | lock | unlock <password> | quit
scan
set phy_mode [1|2|3]
sleep
set [vmin|vmin_sleep] <val>
monitor [on|off] <portnumber>
set [upstream_kbps|downstream_kbps] <val>
acl [from_sta|to_sta] clear
acl [from_sta|to_sta] [IP|TCP|UDP] <src_addr> [<src_port>] <dest_addr> [<dest_port>] [allow|deny|allow_monitor|deny_monitor]
set [mqtt_host|mqtt_port|mqtt_user|mqtt_password|mqtt_id|mqtt_prefix|mqtt_command_topic|mqtt_interval] <val>

Il faut bien sûr que ce topic ait été autorisé par la directive mqtt_mask. Je l'ai mis dans mon cas à 207B ce qui correspond à

Conclusion

Et bien, cela marche plutôt pas mal : j'ai maintenant un signal fort et clair dans le jardin. Comme sur n'importe quel NAT, il est possible d'ouvrir des ports du réseau STATION (la maison) vers l'interne (l'AP) et donc un canal vers les objets connectés.

On peut gérer le WiFi par un simple telnet ... mais aussi par MQTT : une fois le répéteur installé, il n'est même plus besoin de se connecter physiquement dessus.
Il y a évidemment quelques limitations : par exemple, impossible de désactiver le DHCP sur le réseau AP, je verrai à l'usage l'impacte sur la batterie de mes objets connectés.

Par contre, j'ai un peu galéré lorsque le signal STATION était un peu faible : je pensais au début à un bug, mais non, c'est juste que l'ESP tirait trop sur l'alimentation ce qui le faisait planter. Un gros condo à ses bornes a résolu le pb.
Je pensais l'alimenter par des cellules solaires mais ... ça risque d'être compromis s'il ne peut sortir de lui-même de son plantage. Pour plus tard ...


Visitez :
La liste de nos voyages
Nos sorties Ski et rando
Copyright Laurent Faillie 2001-2017
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso.
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution.
Visites durant les 7 derniers jours Nombre de visites au total.

Vous pouvez laissez un commentaire sur cette page.