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

