Inspiration!
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 (Prowl) 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.
ESP8266 är ett lite Wifi-kort, som det finns folk som gjort ny kod till som man flashar dom med, så kan man göra egna program. Det är den som är hjärnan kan man säga i detta projekt.
Jag har använt mig av WeMos D1 mini - NodeMCU ESP8266 development, vilket gör det lite enklare, då den har USB, så man kan flasha/programmera och sen ha en vanlig strömadapter till den.
Om man vill veta mer så kan jag ge lite mera information. Detta inlägg är lite inspiration, vad man kan göra.
Två filer i ESP8266.
init.lua
--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)
switch.lua
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
Fil i Domoticz.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 (jag använder Prowl, konfigureras i Domoticz).
-- 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