Tutorial WLan-Schalter mit ESP8266

  • Hallo zusammen, ich denke, ich hab das Ding im Kasten ;)
    Nach wie vor gilt natürlich, wenn ihr Verbesserungen am Code habt, sagt gerne Bescheid ;)

    Erstmal zur Beschreibung:

    Ich habe mit einem Arduino Pro Mini 3,3V, einem ESP8266 WiFi-Modul und einem Taster ein netzwerkfähiges Modul gebaut, mit dem man z.B. Lampen etc. schalten können soll.

    Dafür fehlt nur noch ein kleines Relais anstelle der im Skript beschriebenen LEDs und man kann mehrere Lampen an einem Modul fernsteuern.

    Ferner wird noch ein Gleichrichter und ein Spannungswandler auf 3,3 Volt dazukommen, damit man quasi den vorhandenen Schalter aus der Dose nehmen kann, das Modul dazwischen hängen kann, und mit einem Taster wieder alles schön dicht machen kann.

    Da das ganze im 2,4 ghz Netz läuft, ist die Abdeckung um einiges Besser als mit den ganzen Funkmodulen, die hier meistens verwendet werden, wie sich das mit der EMV verhält kann ich erst nach ein paar Testwochen sagen, hoffe aber dass das soweit kein Problem darstellt.

    Hier das Fritzing von meinem Aufbau:

    arduineespstexlo31m5gjq.png

    Und hier mein Sketch:
    Dazu ist noch zu sagen, ich habe meinem ESP eine andere Firmware gegönnt, um die BaudRate auf 19200 senken zu können, damit ich nicht immer umstecken muss, wenn ich was neues ausprobiere, so konnte ich ihn einfach auf Softserial einstecken.


    So ich hoffe ihr könnt damit was anfangen, ansonsten einfach fragen! Wünsche euch viel Spaß beim Testen ;)

    Gruß,
    Rabbit

    Schalten lässt sich das ganze dann über die Konsole:

    Code
    echo "Schalter2" > /dev/tcp/eureIP/7878

    Einmal editiert, zuletzt von DeadRabbit (9. Dezember 2014 um 21:48)

  • Hi Rabbit,

    dein Konzept klingt echt super! Ich würde das gerne Nachbauen!
    Hast du es schon geschafft, das in eine Unterputzdose zu verstauen? :)

    Würde mich brennend interessieren, ob es mit allem "Drum und Dran" passen würde.
    Der (Einbau-Licht-) Schalter an sich nimmt ja leider schon recht viel Platz weg... den würde ich am liebsten mit dem "Wlan-Schalter" verODERn, weshalb er nach Möglichkeit in der Dose bleiben sollte.

    Ich habe mir überlegt so etwas zu kaufen:

    Dann fehlt hier aber noch das "Mini Netzteil" um die 3,3V bzw. 5V (für das Relais + Arduino) aus den 230V~ zu erzeugen... das weiß ich auch noch nicht, wie viel Platz das einnehmen könnte. (Schaltnetzteil? Oder Trafo+Gleichrichter+Spannungsregler?...)

    Ich fürchte aber mit den Kabeln in der Unterputzdose wird da kein grüner Zweig daraus...

    Wenn du da schon Erfahrungen hast, würde ich mich auch über ein Bild freuen :)

    Beste Grüße
    Tersus

  • Also ich hab mich von dem Gedanken an die Unterputzdose vorläufig verabschiedet, da wie du schon sagst, der Platz einfach zu eng ist.
    Angedacht hatte ich noch, dass man das ganze in eine Verteilerdose setzt, den Taster direkt und nur an den Arduino anschließt und dort dann die Lampe steuert. Immerhin liegt das Kabel vom Taster zur Verteilerdose ja schon ;)

    Als Schaltnetzteil nutze ich das hier:
    http://www.pollin.de/shop/dt/NjExOT…DSA_15P_05.html
    Betreibe auch den ESP mit 5 V, scheint ihm nichts auszumachen.

    Allerdings hab ich ein Stabilitätsproblem, suche noch nach einer Firmware für den ESP die stabil über Tage funktioniert... Momentan bricht nach einem Tag die WLan-Verbindung ab...

  • Ach so ... alles in eine Dose ...
    Denkbar: eine Dose unter der Decke mit Trafo, dann die Module in verschiedene Räume mit Stromversorung aus dieser einen Dose ...

    Bei 230V ist halt entweder ein fetter Trafo oder Kondensator fällig ... das macht die Sache etwas schwierig.
    cu,
    -ds-

  • Ja daran hatte ich auch schon überlegt, aber das würde bei mir leider eine aufwendigere Verkabelung bedeuten, was auch ein 1-WireSystem wieder hergeben würde ;)

    War halt mal als einfache Modifikation für stinknormale elektrische Verkabelungen gedacht...

  • Danke für die Antwort, hatte ich schon befürchtet :(

    Dann muss man doch schon eine eigene kreisförmige Platine designen, auf der alles drauf ist... ich denke das wird die einzige Möglichkeit sein um alles kostengünstig in die Dose zu bekommen.

    Beim den Chinesen kann man auch die Platinen halbwegs günstig herstellen lassen (z.B. http://www.elecrow.com 5Stk- 5*5cm 2 Layer PCB für $9.50)

    Vielleicht finde ich noch die Muße dazu :D

  • ...

    Code
    echo "Schalter2" > /dev/tcp/eureIP/7878

    Hi Rabbit,

    kannst du mir noch sagen, wie genau das gemeint ist? Wenn ich beim Raspberry das in die Konsole eingebe,
    passiert nichts. Die IP bekomme ich aber vom Arduino über die serielle Schnittstelle (per USB am Windows Rechner) mitgeteilt nach dem der Arduino gestartet hat (das ist dann die 192.168.4.1).

    Bin gerade etwas ratlos... :s

    Hast du hier noch einen Tip?

    Gruß und Danke
    Tersus

  • Zur Stromversorgung könnte man so was nehmen:

    http://www.aliexpress.com/item/5-pcs-HLK…2267273843.html

    Oder so einen vom Gehäuse befreien und die Innereien nutzen.

    http://www.dx.com/p/ultra-mini-u…6753#.VKGDTYAN8

    Ich verstehe nicht ganz, wieso Du noch den Pro Mini mit rein packst. Wieso packst Du den passenden Code nicht direkt auf den ESP? Ich habe etwas ähnliches vor. Ich möchte eine 433Mhz Funksteckdose umrüsten auf Wlan. Da werde ich dann nur den ESP (ohne Arduino) rein bauen.

    edit: Zu Deinem Problem mit dem abbrechenden Wlan könnte das hier vielleicht helfen? https://blog.thesen.eu/stabiler-http-…er/#comment-327

  • Hi Zusammen,

    musste bei der Funktion noch

    Code
    boolean connectWiFi()
    {
      dbgSerial.println("AT+CWMODE=1");
    
    
    //Restlicher Code....
    
    
    }


    einfügen, damit es geklappt hat. :)

    Als stromversorgung habe ich mir, wie Neueinsteiger schon die Idee hatte, ein Billiges 1,50€ steckernetzteil gekauft:
    Steckernetzteil bei Amazon [Anzeige] sind aber inzwischen teurer geworden.

    Um auf die 3,3V zu kommen hab ich das Teil hier benutzt:
    DC-DC Buck Converter einstellbar bei Ebay super winzig und ausreichend Leistung... Die Platine passt sogar sehr gut auf die Rücksete des Pro Mini, z.B. zwischen die Stiftleisten geklebt.


    Vielen Dank nochmal für die Unterstützung! :)

    Gruß
    Tersus

  • Ich möchte hier keine falschen Tipps geben, aber ich fahre meinen ESP mittlerweile seit nem halben Jahr ca. mit 5 Volt und hatte noch keinerlei Probleme :)

    Wenn noch niemand seinen dadruch gegrillt hat, würde ich fast behaupten, dass der die 5 Volt locker abkann

  • Ich hab mir nen ordentlichen 230V auf 5 Volt Gleichstromtrafo drangehängt, außerdem hängt der bei mir am USB an 5 Volt, außer ich muss ihn flashen, dann braucht der tatsächlich seine 3,3V
    Bisher wiegesagt keinerlei Probleme, und der läuft mittlerweile bald ein Jahr :)

  • Habe aber auch schon öfter gelesen, dass der ESP bei 5 Volt betrieben wird, ist also bei mir kein Einzelfall ;)
    Außerdem hab ich 10 Stück rumliegen, die alle noch funktionieren :P

    Liegt vielleicht an der ESP-Version?
    Ich nutze den guten alten 01er

  • hi

    also ich habe auch einige ESP8266-01 im betrieb
    die meisten laufen ebenfalls mit 5V einer davon sorgar mit 5,6V ( an ihm ist ein DHT22 angeschlossen )
    allerdings habe ich einen der jede sek einen reed-kontakt abfragt diese hängt sich bei 5V regelmäsig auf auf 3,3v läuft er nun schon einige tage druch


    ich habe bereits einen schalter mit ESP8266-01 auf "wlan" umgebaut und schalte damit ein Relay für die lampe kann das relay über einen kleinen TCP server schalten ober halt direkt mit dem schalter ( das ganze funktioniert als Wechselschaltung )

    ich habe das glück das ich erst vor kurzem gebaut habe und habe in jeder schalter dose ein buskabel gelegt und auserdem alles Sternförmig verkabelt d.h. kabel von schalter in verteiler kabel von lampe auch in verteiler
    so kann ich alles im verteiler einbauen


    mit dem ESP8266 Frage ich alle 250ms den zustand vom schalter ab wenn dieser geschaltet wird schaltet ich über einen gpio das relay


    im anhang mein lua skript


    [code=php]---------------------------------------
    function send_to_visu(api)
    conn=net.createConnection(net.TCP, 0)
    conn:on("receive", function(conn, payload) print(payload) end)
    -- senden an shc
    conn:connect(80,"192.168.0.15")
    conn:send("GET ".. api.. " HTTP/1.1\r\n")
    conn:send("Host: 192.168.0.15\r\n")
    conn:send("Accept: */*\r\n")
    conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
    conn:send("\r\n")
    conn:on("sent",function(conn)
    conn:close()
    end)
    conn:on("disconnection", function(conn)
    print("Got disconnection...")
    end)

    end
    -----------------------------------------------


    -- wlan verbinden
    -----------------------------------------------
    -- STA Modus
    wifi.setmode(wifi.STATION)
    -- SSID, Passwort
    wifi.sta.config("ssid", "wlanpassword")
    ---------------------------------


    gpio.mode(4,gpio.HIGH)

    zustand = 10
    gpio.write(4, gpio.HIGH)
    gpio.write(3, gpio.LOW)
    stop = 0
    runterx = 0
    hochx = 0
    print("wait")

    puls = 0
    an = 0
    ipshow = 0
    tmr.alarm(0, 250, 1, function()
    if wifi.sta.getip() == nil then
    --print("wait\n")
    elseif(ipshow == 0) then
    print("SS Running v0.3")
    print(wifi.sta.getip())
    ipshow = 1
    ss_port = 1337
    sv=net.createServer(net.TCP, 30)


    sv:listen(ss_port,function(c)
    c:on("receive", function(c, pl)

    print(pl)
    if(pl == "GPIO3:AN") then
    gpio.write(3,gpio.LOW)
    elseif(pl == "GPIO3:AUS") then
    gpio.write(3, gpio.HIGH)
    elseif(pl == "GPIO3:STATUS") then
    c:send(gpio.read(3))
    end
    -- end
       
       
    end)
    c:send("LichtServer\n")

    end)
    end


    schalter = gpio.read(4)
    licht = gpio.read(3)

    print("schalter:" ..schalter.. " | gpio3:" ..licht.. " and an:" ..an.. "\n") -- " ..runter.. "

    if(an == 0 and zustand1 ~= schalter) then
    print("licht über schalter aus")
    send_to_visu("/light.php?light=lisa1&zustand=0")

    gpio.write(3,gpio.HIGH)
    end
    if(an == 1 and zustand2 ~= schalter) then
    print("licht über schalter an")
    send_to_visu("/light.php?light=lisa1&zustand=1")
    gpio.write(3,gpio.LOW)
    end
    if(licht == 0) then
    print("licht AN")

    an = 0
    zustand1 = schalter
           
    end
    if(licht == 1) then
    print("licht AUS")
    an = 1
    zustand2 = schalter

    end


    end)
    [/php]

    mit einen kleinen php skript werte ich den zustand aus und sende ihn an SHC

    Einmal editiert, zuletzt von gMaN (18. Juli 2015 um 19:12)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!