Har gjort en floating switch med ESP8266, som uppdaterar en dummy-switch i Domoticz. I Domoticz har jag ett program som kontrollerar denna switch och skickar ett meddelande till min telefon om vattnet behöver fyllas på.
Att den uppdaterar min Domoticz kan ju lätt bytas ut mot vad man själv använder.
Två filer i ESP8266.
init.lua
Kod: Markera allt
--init.lua
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","password")
wifi.sta.connect()
tmr.alarm(1, 1000, 1, function()
if wifi.sta.getip()== nil then
print("IP unavaiable, Waiting...")
else
tmr.stop(1)
print("ESP8266 mode is: " .. wifi.getmode())
print("The module MAC address is: " .. wifi.ap.getmac())
print("Config done, IP is "..wifi.sta.getip())
print("Wait 3 sec if something is wrong")
tmr.alarm(0,3000, tmr.ALARM_SINGLE, function()
print("Waited 3 sec")
dofile ("switch.lua")
end)
end
end)
Kod: Markera allt
buttonPin = 2
gpio.mode(buttonPin,gpio.INPUT)
watersensor = 106
tmr.alarm(0,120000, 1, function()
value = gpio.read(buttonPin)
print("Switch state: " .. value .. "\n")
if(value == 1) then
value = "On"
else
value = "Off"
end
print("Switch state: " .. value .. "\n")
sendData(value, watersensor)
end)
function sendData(value, device)
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end )
conn:connect(8080,"192.168.1.128")
conn:on("connection", function(sck, c)
sck:send("GET /json.htm?type=command¶m=switchlight&idx=" .. device .. "&switchcmd=" .. value .. " HTTP/1.1\r\nHost: 192.168.1.128\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
end)
end
script_device_watersensor.lua
Använder en dummy switch och en variabel av typen int.
Detta program sänder ut en notifiering till min telefon.
Kod: Markera allt
-- Waterdevice script
userVariableWaterSensorTriggered='WaterSensorTriggered'
commandArray = {}
if (devicechanged['VattenSensor'] == 'On' and uservariables[userVariableWaterSensorTriggered] == 0) then
print('Waterdevice is On')
commandArray[1] = {['SendNotification'] = 'Vatten slut!'}
commandArray[2] = {['Variable:'..userVariableWaterSensorTriggered] = tostring(1)}
end
if (devicechanged['VattenSensor'] == 'Off' and uservariables[userVariableWaterSensorTriggered] == 1) then
print('Waterdevice is Off')
commandArray[1] = {['Variable:'..userVariableWaterSensorTriggered] = tostring(0)}
end
return commandArray