Hallo
Würde euch hier gerne einer meiner Projekte auf Basis vom ESP8266 Modul vorstellen
Teile die ich verwendet habe
Gehäuse : CB Hutkit 9 von Reichelt ~ 9,55€
Relais Modul 8 fach ~ 9€
Esp8266-12€ + Adapterplatine und Sockel ~ 4€
Dc-Dc Wandler ~ 0,50€
Lochraster,schraubklemmen,pins,kabel ~ 2€
= 25,05€
Aufbau wie auf den bilder zu sehen relativ einfach
auf dem ESP8266 ist die nodemcu firmware drauf, software zum abfragen von 3 Eingängen (ganz normale schalter im raum ) und schalten von 3 Relays über mqtt bei mir über Openhab
lua code:
ist bestimmt nicht der schönste code aber funktioniert ganz gut 
Wie auf den bildern zu sehen verwender ich hier nur einen esp8266 und nutze zurzeit auch erstmal nur 3 relays, aber eine einfache erweiterung ist möglich
Würde euch hier gerne einer meiner Projekte auf Basis vom ESP8266 Modul vorstellen
Teile die ich verwendet habe
Gehäuse : CB Hutkit 9 von Reichelt ~ 9,55€
Relais Modul 8 fach ~ 9€
Esp8266-12€ + Adapterplatine und Sockel ~ 4€
Dc-Dc Wandler ~ 0,50€
Lochraster,schraubklemmen,pins,kabel ~ 2€
= 25,05€
Aufbau wie auf den bilder zu sehen relativ einfach
auf dem ESP8266 ist die nodemcu firmware drauf, software zum abfragen von 3 Eingängen (ganz normale schalter im raum ) und schalten von 3 Relays über mqtt bei mir über Openhab
lua code:
Code:
-- pin tabelle -- gpio4 = pin 1 -- gpio5 = pin 2 -- gpio0 = pin 3 -- gpio2 = pin 4 -- gpio12 = pin 6 -- gpio13 = pin 7 -- gpio14 = pin 5 --------------------------------------- -- Eingang -- Gpio 12,13,14 (pin 5,6,7 ) -- Ausgang: -- Gpio 0,2,4 (pin 1,2,3 ) mqtt = mqtt.Client("Aktor_Lisa", 120, "", "") mqtt:on("connect", function(con) print ("connected") end) --mqtt:on("offline", function(con) print ("offline") node.restart() end) mqtt:on("offline", function(con) print ("reconnecting...") print(node.heap()) tmr.alarm(2, 2000, 0, function() mqtt:connect("192.168.0.43", 1883, 0) end) end) mqtt:connect("192.168.0.43", 1883, 0, function(conn) print("connected") -- subscribe topic with qos = 0 mqtt:subscribe("/home/#",0, function(conn) -- publish a message with data = my_message, QoS = 0, retain = 0 mqtt:publish("/home","Aktor_Lisa_Online",0,0, function(conn) print("sent") end) end) end) mqtt:on("message", function(conn, topic, data) print(topic .. ":" ) if data ~= nil then print(data) if(topic == "/home/light/lisa/l1") then if(data == "ON") then print("debug39a") lampe1 = 1 xyc1 = 0 end if(data == "OFF") then print("debug44a") lampe1 = 0 xyc1 = 0 end end if(topic == "/home/light/lisa/l2") then if(data == "ON") then lampe2 = 1 xyc2 = 0 end if(data == "OFF") then lampe2 = 0 xyc2 = 0 end end if(topic == "/home/light/lisa/l3") then if(data == "ON") then lampe3 = 1 xyc3 = 0 end if(data == "OFF") then lampe3 = 0 xyc3 = 0 end end end end) p1 = 0 p2 = 0 p3 = 0 relay1 = 1 relay2 = 2 relay3 = 3 lampe1 = 0 manuel1 = 0 lampe2 = 0 manuel2 = 0 lampe3 = 0 manuel3 = 0 gpio.mode(relay1,gpio.OUTPUT) gpio.mode(relay2,gpio.OUTPUT) gpio.mode(relay3,gpio.OUTPUT) gpio.mode(5, gpio.HIGH) gpio.write(5, gpio.HIGH) gpio.mode(6, gpio.HIGH) gpio.write(6, gpio.HIGH) gpio.mode(7, gpio.HIGH) gpio.write(7, gpio.HIGH) --- Timer für Schalter Abfrage tmr.alarm(0, 100, 1, function() -- Status immer neu ermitteln schalter1 = gpio.read(5) schalter2 = gpio.read(6) schalter3 = gpio.read(7) status1 = gpio.read(relay1) status2 = gpio.read(relay2) status3 = gpio.read(relay3) --print("debug 108: " ..schalter1.. "\n S2: " ..schalter2.. "\n S3: " ..schalter3) -- If abfrage für Schalter#1 if(schalter1 == 0 and p1 ~= schalter1) then xyc1 = 0 p1 = 0 if(lampe1 == 0) then lampe1 = 1 manuel1 = 1 --print("debug116 : lampe1 = 1 & manuel = 1") elseif(lampe1 == 1) then lampe1 = 0 manuel1 = 1 --print("debug121 lampe=0 manuel=1") end elseif(schalter1 == 1 and p1 ~= schalter1) then xyc1 = 0 p1 = 1 if(lampe1 == 0) then lampe1 = 1 manuel1 = 1 --print("debug133 : lampe1 = 1 & manuel = 1") elseif(lampe1 == 1) then lampe1 = 0 manuel1 = 1 --print("debug138 lampe=0 manuel=1") end end -- Ende if abfrage Schalter#1 -- If abfrage für Schalter#2 if(schalter2 == 0 and p2 ~= schalter2) then xyc2 = 0 p2 = 0 if(lampe2 == 0) then lampe2 = 1 manuel2 = 1 print("licht zu lampe1 = 1") elseif(lampe2 == 1) then lampe2 = 0 manuel2 = 1 print("licht zu lampe1 = 0") end elseif(schalter2 == 1 and p2 ~= schalter2) then xyc2 = 0 p2 = 1 if(lampe2 == 0) then lampe2 = 1 manuel2 = 1 print("licht zu lampe1 = 1") elseif(lampe2 == 1) then lampe2 = 0 manuel2 = 1 print("licht zu lampe1 = 0") end end -- Ende if abfrage Schalter#2 -- If abfrage für Schalter#2 if(schalter3 == 0 and p3 ~= schalter3) then xyc3 = 0 p3 = 0 if(lampe3 == 0) then lampe3 = 1 manuel3 = 1 print("licht zu lampe1 = 1") elseif(lampe3 == 1) then lampe3 = 0 manuel3 = 1 print("licht zu lampe1 = 0") end elseif(schalter3 == 1 and p3 ~= schalter3) then xyc3 = 0 p3 = 1 if(lampe3 == 0) then lampe3 = 1 manuel3 = 1 print("licht zu lampe1 = 1") elseif(lampe3 == 1) then lampe3 = 0 manuel3 = 1 print("licht zu lampe1 = 0") end end -- Ende if abfrage Schalter#2 end) -- Timer für Relay Schaltung xyc1 = 0 xyc2 = 0 xyc3 = 0 tmr.alarm(1, 50, 1, function() -- Für Relay 1 --print("debug l1: " ..licht1.. "\n L2: " ..licht2.. "\n L3: " ..licht3.. "\n xyc: " ..xyc) if(lampe1 == 0 and xyc1 == 0) then --print("debug 203a" ..lampe1.. " xyc: " ..xyc1) xyc1 = 1 gpio.write(relay1,gpio.HIGH) if(manuel1 == 1) then --print("debug 203b manuel" ..lampe1.. " xyc: " ..xyc1) manuel1 = 0 mqtt:publish("/home/light/lisa/l1","OFF",0,0, function(conn) print("done") end) end elseif(lampe1 == 1 and xyc1 == 0) then xyc1 = 1 --print("debug 214a" ..lampe1.. " xyc: " ..xyc1) if(manuel1 == 1) then manuel1 = 0 --print("debug 214b manuel" ..lampe1.. " xyc: " ..xyc1) mqtt:publish("/home/light/lisa/l1","ON",0,0, function(conn) print("done") end) end gpio.write(relay1,gpio.LOW) end -- End Relay 1 -- Für Relay 2 if(lampe2 == 0 and xyc2 == 0) then xyc2 = 1 gpio.write(relay2,gpio.HIGH) if(manuel2 == 1) then manuel2 = 0 mqtt:publish("/home/light/lisa/l2","OFF",0,0, function(conn) print("done") end) end elseif(lampe2 == 1 and xyc2 == 0) then xyc2 = 1 if(manuel2 == 1) then manuel2 = 0 mqtt:publish("/home/light/lisa/l2","ON",0,0, function(conn) print("done") end) end gpio.write(relay2,gpio.LOW) end -- End Relay 2 -- Für Relay 3 if(lampe3 == 0 and xyc3 == 0) then xyc3 = 1 gpio.write(relay3,gpio.HIGH) if(manuel3 == 1) then manuel3 = 0 mqtt:publish("/home/light/lisa/l3","OFF",0,0, function(conn) print("done") end) end elseif(lampe3 == 1 and xyc3 == 0) then xyc3 = 1 if(manuel3 == 1) then manuel3 = 0 mqtt:publish("/home/light/lisa/l3","ON",0,0, function(conn) print("done") end) end gpio.write(relay3,gpio.LOW) end -- End Relay 2 end)

Wie auf den bildern zu sehen verwender ich hier nur einen esp8266 und nutze zurzeit auch erstmal nur 3 relays, aber eine einfache erweiterung ist möglich