Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

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