Avec le développement de mon RaspiDomo, le branchement de détecteurs d’ouverture est rapidement arrivé à l’ordre du jour. Comme je n’ai pas envie de tirer des fils de partout, la solution totalement connectée semble la plus intéressante : tout passe via le réseau ethernet ou WiFi, un réseau sauvegardé et protégé, et donc impossible à interrompre par le cambrioleur de base.
C’est ici que va intervenir le petit ESP8266, associé à un bout de code Lua que nous allons injecter dans init.lua pour qu’il se lance dès la mise sous tension :
-- connexion au reseau wifi wifi.sta.config("nom_du_reseau","password") wifi.sta.connect() tmr.delay(1000000) print(wifi.sta.status()) print(wifi.sta.getip())
-- contact porte ferme par defaut ouvert = 0
function contact(level) -- on lit le contact du gpio3 etat = gpio.read(3) if etat == 1 then ouvert = 1 print('PORTE OUVERTE') cu=net.createConnection(net.UDP) cu:on("receive",function(cu,c) print(c) end) cu:connect(5665,"192.168.1.124") -- envoi port 5665 udp a l ip 192.168.1.124 -- code ouvertA et retour ligne cu:send("ouvertA\n")
else ouvert = 0 end end
-- configuration port gpio 3 en entree
gpio.mode(3, gpio.INT, gpio.PULLUP) gpio.trig(3, 'down', contact) -- si changement etat on lance la fonction contact
Sur la platine d’expérimentation Nodemcu, voici le branchement du contact de fermeture :
En bas à gauche, la masse (GND), en haut à droite, 4ème broche en partant de la droite, GPiO3. Lorsque le port est lu, à l’intérieur de la fonction contact, la valeur 1 est retournée si le contact est ouvert, 0 s’il est fermé.
En cas d’ouverture, nous indiquons PORTE OUVERTE et émettons une trame ouvertA sur le port UDP 5665, à destination de l’IP de notre Raspberry Pi, 192.168.1.124 (à adapter selon VOTRE configuration donc).
Coté Raspberry Pi, il va nous falloir recevoir cette trame avec un bout de code python, à placer dans udp.py par exemple :
import socket sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM ) sock.bind( ('',5000) ) while True: data, addr = sock.recvfrom(1024) data = str(data, encoding='utf8') if "ouvertA" in data: print ("PORTE OUVERTE")
que vous allez lancer avec un sudo python udp.py.
A vous désormais de tester avec un ou plusieurs capteurs d’ouverture connectés au WiFi de votre box internet, et de programmer des actions sur le Raspberry Pi : alerter par email, alerter par SMS, etc.
Bonjour,
Comment faire pour envoyer l’état du capteur vers un autre esp8266 (récepteur) en wifi et monter un gpio en sortie sur le esp8266 récepteur
Merci
sans doute via un peu de programmation ?