Ankündigung

Einklappen
Keine Ankündigung bisher.

ESP8266-12E als Aktor im Hutschienengehäuse

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    ESP8266-12E als Aktor im Hutschienengehäuse

    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:
    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)
    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


    You do not have permission to view this gallery.
    This gallery has 4 photos.
Lädt...
X