Sida 1 av 1

Floating switch med ESP8266 och Domoticz

Postat: 04 aug 2016, 10:02
av redina
Hej!

Har gjort en floating switch med ESP8266, som uppdaterar en switch i Domoticz. Det fungerar. Det jag undrar om vad jag kunde gjort bättre då jag är nybörjare på svagström och lödning? Kan programmering, men har inte hållit på med sådana här små komponenter. Synpunkter mottages.

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)
switch.lua

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&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.

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