Quoi de mieux pour de la domotique que de pouvoir mesurer la température où et quand nous le souhaitons ? Et si j’avais envie de déployer 50 sondes dans les 50 pièces de mon immmmmmmmense château familial ?!

Eh bien là encore, nous allons passer via l’ESP8266 et une sonde DS18B20 que vous trouverez sans mal sur ebay pour quelques euros :

esp8266_temperature

Notre sonde (le tube métallique étanche en haut à gauche de l’image) se branche sur le port GPiO 3 :

esp8266_tempe_schema

Sur la platine d’expérimentation Nodemcu, DQ se relie à D3, VDD à 3v3 et GND à… GND.

Chargez ds18b20.lua sur ce lien et injectez le dans l’ESP8266.

Le script maintenant, tempe.lua :

require('ds18b20')
-- connexion au reseau wifi
wifi.sta.config("reseau_wifi","password")
wifi.sta.connect()
tmr.delay(1000000)
print(wifi.sta.status())
print(wifi.sta.getip())
-- Choix du GPiO pour la sonde DS18B20
gpio0 = 3
ds18b20.setup(gpio0)
-- Activation du serveur UDP port 5665 pour recevoir les trames
-- de commande
port=5665
srv=net.createServer(net.UDP)
srv:on("receive", function(srv, pl)
 print("Trame UDP")
 print(pl)
 -- si trame recue = SONDE, alors on lit temperature
 if pl=="SONDE\n" then
 t1=ds18b20.read()
 t1=ds18b20.read()
 print("Temp:"..t1.." C\n")
 tempe="TEMPE"..t1..""
-- et on repond sur l'IP 192.168.1.124 avec la
 -- valeur de la temperature
cu=net.createConnection(net.UDP)
 cu:on("receive",function(cu,c) print(c) end)
 cu:connect(5665,"192.168.1.124")
 cu:send(tempe)
 end
 end)
srv:listen(port)

Ici nous allons donc écouter le port UDP 5665 et guetter l’apparition d’une trame SONDE, trame qui va déclencher la lecture de la température, puis son envoi à notre Raspberry Pi chargé de recevoir et traiter les informations, sur 192.168.1.124 : vous adapterez en fonction de vos besoins et de votre installation, ce billet n’existe que pour vous présenter le principe.

 

 

Be Sociable, Share!