Im nachfolgenden Artikel beschreibe ich das Steuern gängiger Funksteckdosen (wie z.B. Elro 440) mit dem günstigen Wlan-SoC ESP8266 (bzw. dem darauf basierenden NodeMCU-Board). Dabei erfolgt die Umsetzung wie bei der Lösung mit dem Raspberry Pi inklusive Webinterface, das auch über HTTP-Requests, wie z.B. zur Sprachsteuerung über AIVC oder dem Steuern über die NetIO-App benötigt, steuern lässt. Damit lassen sich für einen Gesamtpreis von unter 10€ vorhandene Funksteckdosen vernetzen.
1. Benötigte Hardware
- ESP8266 (hier: ESP-201) oder NodeMCU-Entwicklungsboard (hier: V1.0): ca. 5€
- 433 MHz-Sender + Jumper-Kabel: ca. 1€
- Netzteil (für NodeMCU-Board ein Micro-USB-Netzteil, für ESP-201 3V Netzteil) + USB-Kabel: ca. 4€
→ insgesamt ca. 10€
Für den ESP-201 benötigt ihr zusätzlich noch einen USB-to-UART-Adapter (3 Volt-Variante!), welchen es für 1-2€ in China gibt (dafür ist der ESP-201 etwas günstiger als das NodeMCU-Entwicklungsboard). Habt ihr kein 3V Netzteil, so könnt ihr behelfsweise auch die Stromversorgung des FTDI-Adapters verwenden, welche ihr mit einem Elko (hier verwendet: 220µF) stützt. Das ist aber nur eine Behelfslösung.
Hinweis: Kauft euch am Besten keinen Billig-FTDI-Clone aus China – damit habe ich bereits schlechte Erfahrungen gemacht, was die Qualität betrifft. Gerade am Anfang kann es frustrierend sein, wenn die Kommunikation einfach nicht stabil laufen will, egal, wie man die Stromversorgung und Verkabelung macht. Wenn es möglichst günstig sein soll, greift besser zu Adaptern mit CP2102- oder CH340-Chip.
(+ geeignete Funksteckdosen; hier verwendet: Elro AB440S [analog zum Raspberry Pi-Tutorial])
2. Die Verkabelung
Beginnen möchte ich dabei mit dem Anschluss des 433 MHz-Transmitters an das NodeMCU-Board, da dieser sehr simpel über 3 Jumper-Kabel erfolgt.
Der Anschluss ist nachfolgendem Schaltplan zu entnehmen:
In tabellarischer Form:
NodeMCU | 433 MHz Transmitter |
GND | GND |
3V3 | VCC |
D4 | Data |
Beim ESP-201 sieht der Anschluss etwas komplizierter aus, was daran liegt, dass hier noch der FTDI-Adapter sowie ein Netzteil (bzw. hier ein Stützkondensator) zum Einsatz kommt:
In tabellarischer Form:
ESP-201 | FTDI-Adapter | 433 MHz Transmitter |
RX | TX | |
TX | RX | |
3.3V | VCC | |
GND | GND | |
IO15 | GND | |
IO0 | GND | |
CHIP_EN | VCC | |
3.3V | VCC | |
GND | GND | |
IO2 | Data |
Hinweis (danke an Tobi!): Wenn ihr das Programm auf den ESP-201 übertragen habt und ihr den ESP-201 nach Trennung vom Strom damit betreiben wollt, so müsst ihr die Verbindung zwischen IO0 und GND trennen, da der ESP8266 sonst in den Flash-Modus startet, statt das bereits darauf vorhandene Programm zu starten. Eventuell hilft es bei Problemen auch, den IO0 mit 3.3V zu Verbinden, um den Flash-Modus zu unterdrücken.
[Update 07.12.2015] Wollt ihr den ESP-201 mit einer externen Stromversorgung betreiben (empfohlen!), könnt ihr den Schaltungsaufbau nachfolgendem Bild entnehmen:Es sollte auch das kleine Modell ESP-01 reichen, um die Funksteckdosensteuerung umzusetzen. Der Aufbau der entsprechenden Schaltung (mit externer Stromversorgung) ist nachfolgendem Bild zu entnehmen:
2.1 Exkurs: Hintergrundinfos zu Pinbelegung
Vorweg: Dieser Teil ist nicht relevant, wenn ihr das Tutorial nur nachbauen wollt. Ihr könnt diesen Teil also überspringen. Für den, den es interessiert, habe ich hier ein PinOut vom NodeMCU-Board:
Wie man sehen kann, entspricht der D4-Pin dem GPIO2. Daher der unterschied an dieser Stelle bei der Verkabelung im Vergleich zum ESP-201.
Das entsprechende PinOut des ESP-201 findet ihr auf dieser Seite.
3. Einstellen der Funksteckdosen
Da dieser Schritt komplett gleich, wie bei der Umsetzung mit Raspberry Pi abläuft, habe ich die entsprechende Passage übernommen:
Aber zuerst solltet ihr noch den Hauscode bei euren Dosen ändern, nicht, dass euer Nachbar zufällig auch diese Steckdosen hat und ihr euch diese gegenseitig an- und ausschaltet. Dazu öffnet ihr einfach mit einem Kreuz-Schraubendreher die Dosen hinten und legt die Dip-Schalter mit einem Code eurer Wahl um. Also z.B. hoch, hoch, unten, hoch, unten.
Diese Kombination solltet ihr bei allen Steckdosen eingeben und dann auch bei dem Handsender. Mit diesem könnt ihr dann auch überprüfen, ob alles soweit schon funktioniert.
4. Einrichten der Entwicklungsumgebung
Bei diesem Projekt verwende ich als IDE die Arduino IDE, welche es einfach ermöglicht, auch ESP8266-Modelle und NodeMCU-Boards mit Software zu versorgen.
Dazu muss die IDE in der Version 1.6.5 (oder neuer) auf eurem Rechner installiert sein. Öffnet die IDE und öffnet den Punkt „Voreinstellungen“ unter „Datei“ (unter Umständen variiert die Benennung ja nach IDE-Version und Betriebssystem etwas).
Im sich nun öffnenden Fenster „Voreinstellungen“ gebt ihr unten im Textfeld neben „Additional Boards Manager URLs“ die folgende URL ein:
1 | http://arduino.esp8266.com/stable/package_esp8266com_index.json |
Klickt auf „OK“ und startet die IDE neu. Geht dann auf „Werkzeuge“ → „Platine“ → „Boards Manager…“ und tippt in das Suchfeld „esp“ ein. Klickt bei „esp8266“ auf „Install“.
Die benötigten Komponenten werden nun heruntergeladen und installiert.
Nun solltet ihr unter „Werkzeuge“ → „Platine“ unten ein paar neue Einträge für ESP8266-Modelle haben. Wählt für den ESP-201 „Generic ESP8266 Module“ aus und für ein NodeMCU-Board den entsprechenden Eintrag eures Modells (aktuell verkaufte Boards sind in der Regel 1.0er Versionen).
Die restlichen Einstellungen („CPU Frequency“ und „Upload Speed“) könnt ihr vom Screenshot übernehmen. Als Port wählt ihr den seriellen Anschluss aus, unter dem sich der ESP8266 am PC angemeldet hat. Startet dazu am einfachsten einfach die IDE, ohne das jeweilige Board eingesteckt zu haben, schaut dann, welche Ports zur Verfügung stehen und schließt das Board anschließend an den PC an. Es sollte nun ein neuer Port zur Auswahl stehen, welchen ihr anklickt.
Hinweis für Mac-Nutzer (bzw. für Nutzer anderer Betriebssysteme, bei denen der Port nach Anschluss des NodeMCU-Boards nicht angezeigt wird): Unter OS X „El Capitan“ erhielt ich nach Anschluss des NodeMCU-Boards mit CP2102-Chip keinen neuen Port angezeigt. Es stellte sich heraus, dass der entsprechende Treiber des Herstellers noch installiert werden musste. Dieser ist für alle verfügbaren Betriebssysteme auf dieser Seite zu bekommen. Habt ihr bei eurem NodeMCU-Board also auch das Problem, dass kein Port angezeigt wird, müsst ihr vermutlich noch den Treiber installieren. Da dieser (je nach Betriebssystem) nur wenige Kilobyte bis Megabyte groß ist, geht das allerdings recht zügig.
Damit habt ihr eure Arduino IDE erfolgreich erweitert, um ESP8266-Module programmieren zu können. Was jetzt noch fehlt für die Steckdosensteuerung ist eine Bibliothek namens „RCSwitch“. Diese ist hier erhältlich. Ladet sie euch herunter und installiert sie für die Verwendung mit der Arduino IDE. Wie das geht ist detailliert auf dieser Arduino-Seite beschrieben.
5. Der Sketch (= Programm)
Den benötigten Sketch habe ich so gestaltet, dass er einfach an das eigene Setup an Funksteckdosen angepasst werden kann. Lediglich euer Hauscode der Funksteckdosen, die jeweiligen Gerätecodes und Namen für die einzelnen Steckdosen müssen eingetragen werden. Daraus wird dann dynamisch ein kleines Webinterface erstellt.
Das Interface ist sehr einfach gehalten, ich habe aber den .css-Teil in eine eigene Variable gepackt, sodass ihr es einfach anpassen könnt. Auch die HTML-Komponenten lassen sich natürlich noch an eure Wünsche anpassen.
Mein Sketch sieht folgendermaßen aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); MDNSResponder mdns; // Replace with your network credentials const char* ssid = "your_ssid"; const char* password = "your_password"; ESP8266WebServer server(80); // replace with your values char* housecode = "11010"; char* socketcodes[] = {"00010", "00001", "10000", "01000"}; char* socketnames[] = {"Lampe", "Lautsprecher", "Fernseher", "Ventilator"}; int numofsockets = sizeof(socketcodes)/4; // you can write your own css and html code (head) here String css = "body {background-color:#ffffff; color: #000000; font-family: 'Century Gothic', CenturyGothic, AppleGothic, sans-serif;}h1 {font-size: 2em;}"; String head1 = "<!DOCTYPE html> <html> <head> <title>Steckdosensteuerung</title> <style>"; String head2 = "</style></head><body><center>"; String header = head1 + css + head2; String body = ""; String website(String h, String b){ String complete = h+b; return complete; } void setup(void){ // if you want to modify body part of html start here body = "<h1>Steckdosensteuerung</h1>"; // socket names and buttons are created dynamical for(int i = 0; i < numofsockets; i++){ String namesocket = socketnames[i]; body = body + "<p>" + namesocket + " <a href=\"socket" + String(i) + "On\"><button>AN</button></a> <a href=\"socket" + String(i) + "Off\"><button>AUS</button></a></p>"; } body += "</center></body>"; mySwitch.enableTransmit(2); delay(1000); Serial.begin(115200); WiFi.begin(ssid, password); Serial.println(""); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // serial output of connection details Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); if (mdns.begin("esp8266", WiFi.localIP())) { Serial.println("MDNS responder started"); } // this page is loaded when accessing the root of esp8266´s IP server.on("/", [](){ String webPage = website(header, body); server.send(200, "text/html", webPage); }); // pages for all your sockets are created dynamical for(int i = 0; i < numofsockets; i++){ String pathOn = "/socket"+String(i)+"On"; const char* pathOnChar = pathOn.c_str(); String pathOff = "/socket"+String(i)+"Off"; const char* pathOffChar = pathOff.c_str(); server.on(pathOnChar, [i](){ String webPage = website(header, body); server.send(200, "text/html", webPage); mySwitch.switchOn(housecode, socketcodes[i]); delay(1000); }); server.on(pathOffChar, [i](){ String webPage = website(header, body); server.send(200, "text/html", webPage); mySwitch.switchOff(housecode, socketcodes[i]); delay(1000); }); } server.begin(); Serial.println("HTTP server started"); } void loop(void){ server.handleClient(); } |
Tragt in die Variable „housecode“ den Hauscode eurer Funksteckdosen ein (Dip-Schalter oben entspricht einer „1“ und Dip-Schalter unten einer „0“) und in die Variable „socketcodes“ alle Codes eurer Steckdosen (A-E) in gleicher Form wie beim Hauscode. In die Variable „socketnames“ könnt ihr euren Steckdosen dann noch Namen geben, die im Webinterface angezeigt werden.
Außerdem müsst ihr bei den Variablen „ssid“ und „password“ die jeweiligen Daten eures WLAN-Netzes eingeben.
Übertragt den Sketch nun auf euren ESP8266 und öffnet den seriellen Monitor der Arduino IDE. Stellt dort die Baudrate auf 115200 und wartet, bis sich euer ESP8266 mit dem WLAN verbunden hat. Ihr solltet nun die IP-Adresse angezeigt bekommen, die eurem ESP8266 zugewiesen wurde.
Öffnet diese in einem Browser eurer Wahl (der PC oder anderes Gerät, das ihr hierzu verwendet, muss natürlich im gleichen Netzwerk sein). Ihr solltet nun das oben abgebildete Webinterface sehen. Bei einem Klick auf den jeweiligen Button sollten sich nun eure Funksteckdosen bequem schalten lassen.
Hinweis: Die Steuerung ist im Übrigen nicht nur via Browser möglich, sondern auch mittels HTTP-Request auf die entsprechende Adresse. Damit könnt ihr eure Steckdosen beispielsweise auch per Tastatur-Shortcut, per Sprachsteuerung unter Android, per Android oder iOS Widget oder auch via NetIO steuern – also all das, was mit der Umsetzung via Raspberry Pi auch möglich ist.
Das Webinterface hat aktuell noch keine Statusspeicherung implementiert, auch eine zeitverzögerte Schaltung habe ich noch nicht eingebaut. Ich denke aber, dass der Sketch einfach ausbaubar ist und als Grundlage für eigene Umsetzung ausreichende Grundfunktionen liefert. Gerne dürft ihr den Sketch erweitern und mich auch über erweiterte Webinterfaces benachrichtigen, wenn ich diese im Artikel verlinken soll.
Ich wünsche euch viel Erfolg und Spaß bei der Umsetzung! Bei Fragen, Problemen oder Anregungen könnt ihr natürlich wie immer das Kommentarfeld unten verwenden.
Hallo!
Danke erstmal für das Tutorial!
Verstehe ich das richtig, dass man das Board nach dem flashen nur noch mit Strom versorgen muss und dann alles funktioniert?
Hi Andi,
genau – wie ein Arduino muss es anschließend nur noch mit Strom versorgt werden. Der Sketch läuft dann automatisch ab. Praktisch dabei ist auch, dass es keine Probleme durch einen spontanen Stromausfall gibt, wie z.B. beim Raspberry Pi möglich, wenn dadurch das Dateisystem zerstört wird.
Hallo Alexander,
eine wirklich sehr schöne Anleitung hast du uns hier zur Verfügung gestellt. Ich bin gerade dabei mit dem ESP-201 zu experimentieren und habe ein Problem was ich bis jetzt nicht lösen konnte. Wenn ich den ESP von der Stromzufuhr trenne, dann vergisst der ESP das Sketch und ich muss wieder neu flashen. Ich glaube da muss bei mir was nicht stimmen aber ich konnte den Fehler bisher nicht finden. Hast du da einen Tipp für mich. Danke
Gruß
Tobi
Hi Tobi,
mit dem ESP-201 habe ich bislang auch nur ein wenig herumprobiert (mehr mit dem NodeMCU-Board, da mein China FTDI-Adapter ziemlicher Mist ist).
Dein Problem klingt für mich danach, als würdest du den ESP im Flash-Modus starten, weshalb der Sketch nicht geladen wird. Versuch mal den IO0 entweder abzustecken oder auf 3.3V zu setzen und den ESP dann mit Strom zu betreiben. Normal sollte er dann normal starten (direkt nach dem Flashen des Sketches wechselt er automatisch in den normalen Modus, sodass ein Abstecken zumindest nicht gleich erforderlich ist, nur wenn er eben vom Strom getrennt wurde).
Ich hab den 201er leider gerade nicht zu Hand um es auszuprobieren.
Sollte das dein Problem lösen, würde ich mich über eine kurze Rückmeldung freuen, dann passe ich den Artikel entsprechend an :)
Hallo,
danke für deine schnelle Antwort. Du hast recht, ich muss den IO0 nach dem flashen einmalig auf 3,3V setzen. Danach kann ich auch beim IO0 das 3,3V Kabel abstecken. Wenn ich beim IO0 nur GND entferne funktioniert es nicht.
Dann bleiben nur folgende Kabel am ESP-201
3.3V VCC
GND GND
IO15 GND
CHIP_EN VCC
Ich verstehe aber trotzdem noch nicht warum mein ESP einmalig 3,3V am IO0 braucht. Das konnte ich noch nirgendwo nachlesen. Ich experimentiere mal weiter. Danke für deine Hilfe.
Gruß
Tobi
Hi Tobi,
danke für das Feedback!
Das mit dem einmaligen setzen auf 3.3V klingt in der Tat merkwürdig. Wenn das Kabel am IO0 abgesteckt wurde, sollte es recht zufällig sein, ob High oder Low erkannt wird, durch setzen auf 3.3V kann man sichergehen, dass High erkannt wird und der Flash-Modus nicht startet. Warum er anschließend auch ohne Anschluss an 3.3V nicht manchmal in den Flash-Modus startet, kann ich leider auch nicht erklären.
Ich werde das mit dem Umstecken des Kabels in den nächsten Tagen auf jeden Fall in den Artikel aufnehmen (+ ein paar weitere Kleinigkeiten).
Hi Alexander,
ich habe heute nochmal einen anderen ESP aus meiner Bestellung ausprobiert. Und siehe da – ich muss nicht erst den IO0 einmalig auf 3,3V ziehen. Ich denke das der andere ESP beim Transport einen kleinen Treffer bekommen hat. Also du hast recht. GND beim IO0 abstecken und dann geht es. Vielleicht wäre ein kleiner Hinweis nicht schlecht, dass es sich dabei um Ware aus China handelt und man hin und wieder auch einen schlechten ESP bekommen kann. Gruß
Wahnsinnn wie günstig man mittlerweile vorhandene Geräte vernetzne kann! Werde mir alleine schon aus Spaß an der Sache die Komponentnen man bestellen – Funskteckdosen habe ich bereits (keine Ahnung, ob die damit auf Anhieb laufen, den Verusch isses wert). Wenn ich damit die Beleuchtung meines Weihnachtsbaums per Sprache schalten kann, bin ich mehr als glücklich :))))
super Beschreibung finde ich echt Klasse
kann ich das auch für einen ESP8266 (01) verwenden?
Hi Tanja,
ja, der ESP-01 sollte auch funktionieren, der hier verwendete GPIO2 ist auch auf dem kleinen Modell vorhanden.
Hallo!
Hat das mit der Statusspeicherung schon jemand hinbekommen oder kann mir einen kleinen Tipp geben, wie ich das umsetzen könnte?
Vielen Dank!
Hallo,
vielen Dank für das schöne Tutorial, was ich auch gleich nachbauen wollte. Leider habe ich nur Funksteckdosen von REV Ritter. Hier gibt es keine Schalter für die Programmierung, ich habe auch extra die Funksteckdose aufgeschraubt, aber hier ist auch nichts zu finden.
Gibt es Möglichkeit REV Ritter Funksteckdosen auch zu nutzen?
Hi Theo,
generell sollten sich so gut wie alle 433MHz Steckdosen darüber ansprechen lassen, die über keinen rolling code (also sich ändernden Code) verfügen. Eventuell wird bei deinen Dosen ein anderes Protokoll eingesetzt. Die Bibliothek rc-switch bietet aber auch eine Empfangsmöglichkeit. Also einfach 433 MHz Empfänger an den ESP8266 (alternativ Arduino) anschließen, den ReceiveDemo-Sketch laden und schauen, was bei Drücken einer Taste auf der Fernbedienung auf der seriellen Konsole ausgegeben wird.
Der Code für den Webserver müsste dann natürlich entsprechend angepasst werden.
Hallo Alex! Du betreibst den Sender ja nach deinen Bildern mit 3V. Reicht das für eine gute Reichweite aus? Habe sonst immer was von mind 5V glesen.
Hi Richard,
ja, die 3V reichen für mich mit externer Antenne. Allerdings hast du recht: mit mehr Spannung sollte die Reichweite deutlich höher sein. Hast du also eine Stromquelle mit mehr Spannung zur Verfügung, kannst du auch diese nutzen.
Where did you get the pintout diagram of the NodeMCU? The reason I ask is I want to include one on my website.
Hi Michael,
I just used the Fritzing part of the NodeMCU board and one of the common pinout definitions of the board as a background.
Hallo Alexander,
ich bin ein neuling was Arduino angeht.
Finde deine Anleitung echt toll würde mir das gerne nachbauen.
Ich habe versucht dein Sketch zu kompilieren ohne ein Board angeschlossen zu haben.
Beim kompilieren der Sketch von oben kommt ein Fehlermeldung.
exit status 1
‚website‘ was not declared in this scope
Ist das nur bei mir so, oder mach ich da was falsch
Hi Orhan,
danke für dein Feedback!
So wie es aussieht erhalte ich den Fehler mit der neuen Arduino IDE ebenfalls. Das liegt daran, dass ich die Funktion zum Generieren des Webseiten-Strings am Ende des Sketches hatte. Ich habe den Sketch soeben umgestellt, er sollte nun kompilieren.
echt super… jetzt hat es bei mir auch geklappt… Vielen Dank! :))
Hi guys,
I’d like to show you something similar, I’ve built with 433mhz modules and RPi to control RC sockets:
https://github.com/roccomuso/iot-433mhz
;)
Super Idee das mit dem billigen Board umzusetzen. Mit 2 davon komme ich in jede Ecke des Hauses. Würde mir nur noch eine Statusspeicherung wie beim Raspberry Pi wünschen. Wäre das damit umsetzbar?
Hi Ugo,
ja, klar – wenn man es wie im Sketch oben mit einem vorgegebenen Array für die Dosen umsetzt sollte das generell kein Problem darstellen.
OFF-TOPIC
Hallo Alex,
klasse Anleitungen – vielen Dank dafür!
Ein kleiner Hinweis am Rande, da ich selbst damit Probleme in der Vergangenheit hatte: Du hast kein Impressum angegeben, das solltest Du tun, da es auch Deinem Landesrecht nach gefordert ist.
Wie erwähnt – wirklich nur eine gut gemeinte Info!
Viele Grüße
MiSo
Hi, ich habe das HTML mit Hilfe eines Kumpels etwas angepasst das es auch auf einem Smartphone leicht nutzbar ist.
Des Weiteren habe ich eine Variable zum aendern des Hostnamens eingebunden damit, bei entsprechendem Router, man auch ueber den Hostnamen auf den ESP kommt.
Den veraenderten Code kann man unter http://pastebin.com/BsZRi1q4 abrufen.
Meine Codeaenderungen darf natuerlich frei verwendet werden.
Hallo Alexander,
ersteinmal ein dickes Lob für Deine Arbeit. Dein Sketch läuft bei mir out of the box. Hast mir eine menge Freude damit bereitet.
Leider habe ich null Ahnung von HTML und CSS. Kannst Du mir vieleicht dabei helfen einen dritten Button einzufügen welcher nach 60 Sekunden ausschaltet?
Danke und Gruß
Thomas
Hi Thomas,
danke ?
Das mit dem Button für verzögertes Schalten sollte machbar sein, auch wenn der ESP8266 kein Threading unterstützt. Um den ESP8266 auch noch während der Wartephase bis zum Schalten nutzen zu können, bietet sich millis() an. Das ist auf der Arduino-Seite an einem praktischen Beispiel schön erklärt.
Hallo Alexander,
Ich habe es auf Basis von Solarstorms Code modifiziert und es läuft. Finde bei Ihm die Skalierung optimal. Kann jetzt 60s Zeitverzögert schalten.
Gruß Thomas
Eine Frage habe ich noch. Wie funktioniert dass mit dem MdNS Responder?
Danke und Gruß
Thomas
Hallo Thomas,
da verweise ich mal auf diese GitHub-Seite. Dort gibt es auch Beispiele zum MDNS.
Hallo Alexander,
ich habe es noch nicht verstanden.
Wofür benötigt man dass?
Danke und Gruß
Thomas
Hallo Thomas,
das ist ein Workaround für die Delay-Funktion, die den Microcontroller für die Zeit des Delays „lahmlegen“ würde. Das ist notwendig, da der ESP8266 keine Multithreading unterstützt.
Hallo Alex,
klasse wie du das Tutorial zusammengestellt hast.
Meinst du es wäre möglich, sowas wie hier http://max-sundermeier.de/esp8266-wireless-flashtool/
einzubauen?
Leider sind meine Kenntnisse momentan noch zu begrenzt was den ESP angeht.
Danke Christian
Hi Christian,
bin leider noch nicht dazu gekommen, das selbst zu testen, aber das Flashen von Software auf den ESP8266 OTA sollte auch mit der Arduino IDE funktionieren. Weiteres z.B. hier.
Ja, das hab ich auch gefunden, nur laufen will es nicht so richtiog, aber das Wochenende ist ja noch lang …
Hast du schon Erfahrungen mit der Vergabe einer festen IP- nicht vom Router sondern vom ESP vergeben?
Viele Grüße aus dem Bastelkeller
Christian
Hallo Christian,
ja, einen ESP8266 habe ich hier auch stabil mit statischer IP am laufen, siehe anderer Artikel hier.
Klasse, das kommende Wochenende ist gesichert.
Vielen Dank
Hallo Christian und Alexander,
ich habe eben mal meinen Steckdosen-Sketch um OTA erweitert und betreibe den ESP8266 mit fest vergebener IP-Adresse.
Funktioniert einwandfrei.
OTA: Im Sketch muss die OTA-Lib eingebunden werden. Im Setup die Initialisierung mit ArduinoOTA.begin und im Loop der ArduinoOTA.handle ergänzt werden.
Im Beispiel-Sketch ArduinoOTA –> BasicOTA ist das hinreichend dokumentiert.
Wichtig: Am besten an die Vorgehensweise von Alex‘ Link halten und die python-Installation nicht vergessen.
Es grüßt
Thomas (der andere)
Hallo Thomas,#würdest du mir (uns) deinen Code mal zeigen?
VG
Christian
Hallo Alex,
nochmals auch von mir danke für Deine Tutorials! Ich habe Deine Funksteckdosensteuerung noch mit einer NTP-Abfrage ergänzt und eine Zeitsteuerung eingebaut.
Die Schaltzeiten lassen sich mit per NetIO komfortabel einstellen.
Es grüßt herzlich
Thomas
Hallo anderer Thomas,
bitte zeig uns Deinen Code:-)
Danke und Gruß
Thomas
Hallo Thomas,
welcher Teil interessiert Dich? Der Code ist mittlerweile recht umfangreich geworden.
Freundliche Grüße
Thomas (der andere)
Hallo Alex, vielen Dank für dein Code. Funktioniert bei mir wunderbar. Ich rufe Domoticz die jeweilige URL zum schalten auf. Ich frage mich allerdings, ob es auch möglich ist, den ESP8266 direkt als Gateway zu verwenden ohne jedesmal den Code neu anzupassen.
Also statt x.x.x.x/socket3on /socket3on direkt den zusenden Code (x.x.x.x/send01001 o.ä.).
Ist dieses möglich?
Nachtrag: Gerade gesehen: https://alexbloggt.com/esp8266-smarthome-gateway/
Hallo Alex, Danke für dein Tutorial, ich habe bis jetzt nur mit Rasberry Pi etwas “ experimentiert“, jetzt ist mir gelungen( dank deinem Tutorial) auch mit dem ESP 8266 meine Steckdosen zu Schalten, nur ich habe die als Intertechno Steckdosen „konfiguriert“, d.h. ich kann die mit einer Intertechno Funkfernbedienung schalten, weil die original FB von Elro zu wenig Tasten hat. Jetzt brauche ich dein Code so zu ändern, das ich die Steckdosen als Intertechno schalten kann, in der Library von RC Switch habe ich etwas gefunden , getauscht „mySwitch.switchOn(housecode, socketcodes[i])“ auf „mySwitch.switchOn(‚b‘, 3, 2);“ also familycode, group number, device number. Ich habe keine Ahnung wie ich den Rest Umbauen soll, so das ich jede Steckdose auf der Seite habe und schalten kann, ich kann bis jetzt nur alle ein und ausschalten egal welche Steckdose das ist. Meine Kenntnisse dafür sind fast Null, und ich finde das sehr interesant. Für die Hilfe Danke ich im Vorraus.
Hallo Alex,
ich habe einen 32 Bit Code aus dem Sender ausgelesen.
er wurde in housecode =24 Bit und socketcodes = 8 Bit aufgeteilt
und eingetragen.
Der Empfänger ist eine 4 Kanal Relaisschalter.
2 Kanäle schalten, aber die falschen, die anderen Kanäle senden,
aber schalten nicht.
Was mach ich falsch?
Funktioniert es mit dem 32 Bit Code nicht?
Oder hab ich ihn falsch geteilt?
Gruss Manfred
Hallo Manfred,
die Funktion „switchOff(const char* sGroup, const char* sDevice)“ bzw. „switchOff(const char* sGroup, const char* sDevice)“ ist lt. Doku im Quelltext der Bibliothek für Funksteckdosen mit 10 Dip-Schaltern gedacht.
Es gibt in der Bibliothek allerdings wohl auch die Möglichkeit benutzerdefinierten Code zu senden (siehe hier). Das Webinterface könntest du dazu entsprechend statisch deinen Anforderungen nach umsetzen.
Hallo,
ich versuchte die Funksteckdosensteuerung mit ESP8266 nachzubauen. Ich konnte jedoch den Sketch wegen einer Fehlermeldung nicht kompilieren:
In file included from \Documents\Arduino\libraries\ESP8266Wifi\
src/ESP8266WiFi.h:33:0,
\Documents\Arduino\libraries\ESP8266Wifi\src/ESP8266WiFiType.h:26:19: fatal error: queue.h: No such file or directory
#include
^
compilation terminated.
Was kann ich da tun bzw. wo liegt der Fehler?
Viele Grüße
Julian
Hallo Julian,
hast du das richtige Board im Boardmanager ausgewählt? Da das eine Standardbibliothek für den ESP8266 ist, sollte es da eigentlich keine großen Probleme geben.