Hej,
Mam ogromną prośbę o pomoc z ESPhome bo sam nawet nie wiem od czego zacząć.
Parę lat temu zrobiłem sobie stację meteo - główny uC to ATmega328 (kod pisany w Bascom) + ESP8266-07 jako “most” Wi-Fi (kod pisany w LUA) do wysyłania danych na serwer. Stacja pracuje już od bardzo dawna, ale teraz chciałbym do wszytko przenieść do Home Assistant - nie chcę przerabiać dosłownie wszystkiego i pomyślałem aby zmienić/dostosować tylko kod w ESP. Tu zaczynają się schody… teraz działa to tak, że ATmega robi ciągłe pomiary, raz na minutę budzi ESP, przesyła wszystkie odczyty, ESP je sortuje, wysyła do serwera i przechodzi w stan uśpienia. Po nowemu myślę, że trzeba by użyć już MQTT.
Obecne kody wyglądają tak:
- init.lua
uart.setup(0,19200,8,0,1,0)
require("netconfig")
print("")
print("")
print(" METEO Weather Station ")
print("projekt by team nettemp.pl")
print("")
wifi.setmode(wifi.STATION)
if (IPmode=="static") then
cfg={ip=IPaddr,netmask=IPmask,gateway=IPgw}
wifi.sta.setip(cfg)
end
wifi.sta.config(Siec,Haslo,1)
dofile("avr.lua")
- avr.lua
function SendsData()
print("Sends data...")
conn=net.createConnection(net.TCP,0)
conn:connect(NTport,NTip)
conn:on("connection",function(con)
con:send("GET /receiver.php?key=" .. NTkey
.. "&id=1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22"
.. "&type=rainfall;speed;wind;uv;lux;press;humid;temp;temp;temp;temp;temp;temp;temp;volt;volt;volt;volt;battery;gust;storm;lightining"
.. "&value=" .. str .. "&ip=" .. wifi.sta.getip() .. "&device=ip&name=" .. Name
.. " HTTP/1.1\r\nHost: NTip\r\nAuthorization: Basic "
.. WWWauthmod .. "\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
conn:on("receive",function(conn,payload)end)
end)
tmr.alarm(0,1000,0,function()
conn:close()
conn=nil
data,str=nil,nil
Siec,Haslo=nil,nil
IPaddr,IPmask,IPgw,Name=nil,nil,nil,nil
NTkey,NTip,NTpPort,WWWauthmod=nil,nil,nil,nil
collectgarbage("collect")
print("")
print("I go to sleep...")
node.dsleep(0)
end)
end
uart.on("data","\r",function(data)
str=(data)
str=string.gsub(str,"\r?\n?","")
SendsData()
end,0)
- netconfig.lua
--required
Siec="moja_siec"
Haslo="moje_haslo"
NTip="192.168.1.2"
NTport="80"
NTkey="123456"
Name="meteo"
WWWauthmod="YWRtaW46YWRtaW4="
IPmode="dhcp" --dhcp or static
--only if set server
IPport="80"
--required if IPmode="static"
IPaddr="192.168.1.182"
IPmask="255.255.255.0"
IPgw="192.168.1.1"
Będę ogromnie wdzięczny za pomoc w ogarnięciu tego
Pozdrawiam. Piotrek