Gå till innehåll

Få larm när RO-vatten behöver påfyllning - Floating switch med ESP8266 och Domoticz


Rekommenderade inlägg

Postat (ändrat)

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&param=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

 

2016-08-04 09.24.21-2.jpg

2016-08-04 09.53.14-2.jpg

2016-08-04 09.25.07.jpg

2016-07-13 10.12.14.jpg

Ändrat av redina
  • Gilla 2
Postat

Intressant, helt oinsatt men gissar att man kan koppla flera switchar?

Skulle i så fall lägga till en för när skummarkoppen blir full tex.

Skickat via Tapatalk

Postat

Ja chipet kan ha flera switchar. Finns flera in/ut.

Så som jag gjort i detta fall. Är att chipet rapportera en 1 eller 0 om läget på switchen. Detta värde kan man skicka var som helst. Behöver inte vara lokalt utan det kan vara en eller flera av de många tjänster som finns på internet.

Det jag ville visa var att man ganska billigt kan göra en egen sensor som kopplas in på egna wi-fi nätverket.

OBS jag är helt nybörjare på svagströmmen och lödning. Så det kanske finns en bättre lösning.

Gå med i konversationen

Du kan posta nu och registrera dig senare. Om du har ett konto, logga in nu för att posta med ditt konto.

Guest
Svara på detta ämne...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Ditt tidigare innehåll har återskapats.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Skapa Ny...