Ich bin ein großer Fan der kleinen ESP8266-Bausteine. Bereits beim MySensoors-WLAN-Gatewaykommt eine Version des ESP8266-Chips zum Einsatz. Mit diesem Chip lassen sich leicht eigene Schaltungen ins heimische WLAN-Netzwerk einbinden und so die Verbindung zu FHEM herstellen. Ein weiterer Vorteil ist der geringe Preis. Bereits für knappe 4€ lässt sich der Chip bei Amazon bestellen (Amazon Affiliate-Link).
Nun habe ich im Internet die WeMos-Bausteine (http://www.wemos.cc/) entdeckt. WeMos bietet bereits seit längerem größere Boards mit WLAN-Funktion an. Neuerdings vertreiben sie aber auch ein kleines Board mit integriertem ESP8266-Baustein -> den D1-Mini. Zusätzlich gibt es bereits eine große Auswahl ein WeMos-Shields. Diese werden einfach auf das „Grundboard“ draufgesteckt. Der Vorteil, diese Boards lassen sich stapeln. So lässt sich mit einem Grundboard ein komplexer Sensor/Aktor realisieren und dies in einer verdammt kompakten Bauform ? Perfekt für die Hausautomation.
D1-Mini-Board
Der D1-Mini ist ein kleines Board mit 11 digitalen Ein-/Ausgänge und einem analoger Eingang. Programmiert kann das Board mit der Arduino- oder nodemcu-Umgebung. Angeschlossen wird es über Micro-USB.
Klingt nach einem Arduino-Nano oder Micro. Im großen und ganzen stimmt dies auch. Aber das WeMos-Board kann noch mit einem Extra auftrumpfen. Nämlich den ESP8266-WLAN-Chip. Das Board lässt sich also ohne extra Hardware mit dem WLAN verbinden.
D1-Mini-Shield
Sensoren und Aktoren lassen sich entweder direkt an das Board über die Ein-/Ausgänge anschließen. Oder man verwendet die bereits oben genannten WeMos-Shields. WeMos bietet da bereits eine große Auswahl:
- DHT-Shield (DHT11)
- DHT-ProShield (DHT22)
- OLED-Shield
- I-Button-Shield
- Relay-Shield
- MicroSD-Shield
- ProtoBoard-Shield
Zu kaufen gibt es das Board und die Shields im WeMos-Shop auf AliExpress.
Ich persönlich habe mir einige D1-Mini-Boards, DHT-ProShields, I-Button-Shields, Relay-Shields und ein OLED-Shield zugelegt.
Einstieg und Beispiel-Programme
Für den schnellen Einstieg gibt es bereits einige Beispiel-Programme. Mit diesen lässt sich das Board und das verwendete Shield schnell auf Funktion testen. Ich habe dafürdie Arduino-Umgebung verwendet.
Board-Treiber installieren
Damit man mit der Arduino-IDE das WeMos-Board programmieren kann, ist es notwendig, dass der passende Board-Treiber installiert ist. Dazu trägt man unter der Arduino-IDE unter Datei/Voreinstellung die folgende „Zusätzliche Boardverwalter-URL“ ein:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Anschließend kann man unter Werkzeuge/Board/Boardverwalter die benötigten ESP8266-Treiber installieren.
Unter Werkzeuge/Board kann man nun das WeMos D1 mini auswählen. Nun noch den passenden Port auswählen und schon kann das Programmieren beginnen.
Benötigte Libaries
Damit man die Beispiel-Programme auf dem Board zum laufen bekommt, müssen folgende Libaries in das Arduino-Sketchbook eingebunden werden:
D1-Mini-Exmaplehttps://github.com/wemos/D1_mini_Examples/archive/master.zip
DHT-Sensor-Libary für die DHT-Shieldshttps://github.com/adafruit/DHT-sensor-library
SparkFun Micro OLED Libary für das OLED-Shieldhttps://github.com/sparkfun/SparkFun_Micro_OLED_Arduino_Library/tree/master
Dazu einfach die oben genannten Beispiele/Libaries downloaden und in euren persönlichen Sketchordner kopieren. Den Pfad zu eurem Sketchordner findet ihr unter Datei/Voreinstellungen.
Die D1-Mini-Exmaple würde ich ich direkt im Sketchordner unter „D1-Mini-Example“ kopieren. Die beiden Libaries in einen Ordner mit dem Namen „libaries“.
Alternativ könnt ihr die Libaries natürlich auch in euren Installationsordner der Arduino-Installation kopieren. Ich persönlch speicher jedoch zusätzliche Beispiele/Libarys in meinem persönlichen Sketchordner. Dies hat den Vorteil, dass der Sketchordner schnell mit anderen Arduino-Installationen verwendet werden kann.
Für weitere Beispiele müssen eventuell noch weitere Libaries eingebunden werden. Welche benötigt werden, lassen sich auf der entsprechenden Shield-Homepage nachlesen.
Nach einem Neustart der Arduino-IDE lassen sich die Beispiele unter Datei/Sketchbook finden. Unter Punkt 4 finden sich Beispiele für die Shields.
Mit Hilfe der Beispiele kann man relativ schnell die Syntax lernen und beginnen eigene Projekte zu realisieren.
Auf meiner „to-do-Liste“ sind die WeMos-Chips weit nach oben gerutscht. Der Gedanke diese WeMos-Sensoren/Aktoren in FHEM einzubinden lässt mich nicht locker ? Mit Easy-ESP ist dies auch schnell und simple erledigt und die WeMos-Shields können mit FHEM gesteuert bzw. ausgelesen werden.
WeMos-Geräte in meiner FHEM Live-Demo
Wer die WeMos-Geräte in freier Wildbahn erleben möchte, dem empfehle ich einen Besuch auf meiner FHEM Live-Demo. Im Raum „WeMos“ findet ihr einige WeMos-Sensoren.
Hi,
Habe mal eine bescheidene Frage:
Wieviel Sensoren kann man an so ein WeMos hängen?
Ich möchte daran 5 Reedkontakte unabhängig von einander überwachen können.
Gruß Markus
Hallo Markus. Das Relais-Shield von WeMos lässt sich nur einemmal einsetzten, da dieses über die GPIO5 an das D1-Shield angeschlossen wird. Was natürlich geht, ist der Einsatz von selbst gebauten Reedkontakten. Da kann man ja dann an jedem Ausgang vom D1-Shield ein Kontakt anschließen. Insgesamt dann bis zu 11.
Gruß Daniel.
Hallo,
oder https://lh3.googleusercontent.com/5SRJOblxuvx6G8NGc8ouEyWvVHq5ZZmCWL1tb6eCZPwdNSdLqqWx8dPyyOMbCkLBTACl0FJ5lkUfDXjzyHnypSXLgcUVNhkNHC8v21qjEmHFMAINCPjxVrRn
ich habe auch einen Wemos, allerdings den älteren D1. An diesem ist ein Hall-Effekt angeschlossen. Wenn ich ihn Neustarte (Szenario Stromausfall) während der Sensor am Magneten liegt, dann scheint der Wemos nicht zu booten (ESPEasy WebGUI nicht erreichbar). Außerdem signalisiert die Indikator-LED am Hall-Effekt auch dann einen Magneten, wenn ich diesen entfernt habe. Ich muss ihn also dann außer Reichweite des Magneten erneut neustarten, damit er wieder funktioniert. Ist das vielleicht ein Wemos-spezifisches Problem? Würde das selbe auch am Wemos mini passieren? Würde notfalls auf alternative Boards ausweichen.
Wo hier schon die Rede von Reed-Kontakten war: Gern würde ich auch den Hall-Effekt durch einen Reed-Schalter ablösen, da es auf Ali günstige Fensterkontakte gibt und diese leichter zu befestigen sind. Kann ich diesen dann ebenso an einen digitalen GPIO anschließen und erwarten, dass mir via ESPEasy 0 und 1 übertragen werden? Ich habe verschiedene Schaltungen gefunden, welche wären geeignet (Widerstand notwendig?)? Bsp.
Freue mich über Input.
Beste Grüße
Flo
Hallo Flo,
zu deiner ersten Frage kann ich leider nichts zu sagen. Besitze leider keinen Hall-Effekt-Sensor und im Internet habe ich auch nicht wirklich was gefunden. Welchen Sensor benutzt du den? Dann würde ich mal probieren diesen zu besorgen. Das Zusammenspiel mit den WeMos-Boards klingt interessant.
Zu deiner zweiten Frage. Der Einsatz eines Reed-Kontaktes sollte problemlos klappen. Einfach an einen GPIO anschließen und über ESPEasy entsprechend konfigurieren. Der Status des Kontaktes sollte dann über ESPEasy ablesbar sein.
Schaltplantechnisch funktionieren beide Pläne die du verlinkt hast. Bei dem Schaltplan ohne Widerstand ist jedoch darauf zu achten, dass man den internen Pull-Up-Widerstand aktiviert. Dies geschieht unter ESPEasy über den „Switch-Button-Type“ (http://www.esp8266.nu/index.php/Switch). Wenn der Button also an GND angeschlossen wird, dann muss der Button-Type auf „Push Button Active HIGH“ eingestellt sein. Ist der Button nun nicht gedrückt, dann wird das Potential intern auf HIGH gelegt. Beim Schaltplan 2 wird dies über den externen Widerstand geregelt. Ich persönlich benutze meistens einen externen Widerstand. Da fühl ich mich irgendwie mehr auf der sicheren Seite 😉 Aber wie gesagt, Schaltplan 1 reicht aus, da man den sogenannten Pull-Up-Widerstand auch softwareseitig realisieren kann.
Gruß Daniel
Hallo Daniel,
danke für deine schnelle Antwort und dein Engagement 🙂
Den Hall-Effekt hab ich damals von diesem Link hier bezogen: http://www.banggood.com/Hall-Effect-Magnetic-Sensor-Module-DC-5V-For-Arduino-p-76469.html?p=DQ30066511122014069J&utm_campaign=educ8stv&utm_content=huangwenjie Allerdings wurde scheinbar das konkrete Produkt geändert, denn auf meinem steht nicht „Keyes“. Wahrscheinlich funktioniert dieser aber genau gleich. (In diesem Video wird meine Version verwendet: https://www.youtube.com/watch?v=4eqi0G7uY_4#t=1m11s )
Dann würde sich ja die Notwendigkeit des Hall-Effekts erübrigen, wenn ich auf Reed umschalte. Mithilfe der Doku wäre ich wohl nie darauf gekommen, den Widerstand softwareseitig zu schalten 🙂 Vermutlich muss dann auch in ESPEasy Pull Up unter Devices eingestellt werden? Welche Sicherheitsbedenken hast du denn? Sollte der softwareseitige Widerstand nicht greifen, dann versagt doch einfach nur der GPIO und kann die Signale nicht „erkennen“. Oder ist mit ernsthafter Überlastung mit Schädigung des Boards zu rechnen oder sogar, dass es Feuer fängt? 😀
Beste Grüße
Flo
Hallo Flo,
danke für die Links.
Das mit dem Pull-Up habe ich gar nicht gesehen, aber das würde ich dann auch aktivieren. Einfach mal bisschen mit den Einstellungen spielen.
Denke der Widerstand ist nicht nötigt. Softwareseitig kann man da ja genug einstellen. Im Fehlerfall hast du dann maximal ein „Fehlalarm“ bzw. es wird nicht richtig erkannt ob der Schalter geschlossen oder offen ist. Aber abbrennen kann da nichts. Und Überlastung an dem GPIO eigentlich auch nicht. So wie ich es verstanden habe, willst du den Reed-Kontakt ja nur zur Fenster-Überwachung verwenden, du wirst ja keine großen Verbraucher mit viel Leistung oder so schalten. Also alles im grünen Bereich ? sichere Seite war eher darauf bezogen, dass der Taster richtig erkannt wird. Aber das kommt daher, dass ich früher viel selbst programmiert habe und so. Bei so einem WeMos-Baustein mit ESPEasy wird die Software schon akurat funktionieren.
Gruß Daniel
Hallo Daniel,
in der Zwischenzeit sind die Wemos Mini Pro sowie Reed-Kontakte bei mir eingetroffen 🙂 Seit gestern versuche ich allerdings vergeblich mittels ESPtool espeasy auf den Wemos zu flashen. Nach Ausführung der flash.cmd kommt am Ende immer die Fehlermeldung „warning: espcomm_sync failed error: espcomm_open failed“. Habe mittlerweile Version R120, R140 sowie R142 sowie 3 USB-Kabel versucht. Im Internet habe ich gelesen, dass GPIO0 GND 3,3V und RST in einer Kombination miteinander verbunden werden sollen, um einen Pull-Up zu bewirken. Wenn ich das richtig umgesetzt habe, hat auch das nicht geholfen. Auch Tips, erst kurz vor dem Hochladen den Wemos mit Strom zu versorgen, hat leider nichts gebracht. Übersehe ich hier etwas? Bin so langsam ratlos. Vielleicht hast du ja noch Tips bzw. kennst die Probleme vom Vorgänger.
PS.: Bei meinem alten Wemos D1 R1 (reitred) hat das problemlos funktioniert per ESPtool.
Beste Grüße
Flo
Hallo Flo,
habe leider nur die normalen Wemos Minis hier. Hab es gerade nochmal probiert. Das Flaschen mit dem Tool klappt wunderbar. Hast du den richtigen Port eingegeben?
Kann natürlich auch sein, dass es ein spezielles Problem der Pros sind. Habe mir nun auch mal ein paar davon bestellt. Kann dir aber leider erst in 21-47 Tagen mehr dazu sagen 😉
Ich denke, dass das Tool nicht für die Pros funktioniert. Man gibt ja den Flash-Size an. Zur Auswahl stehen ja nur 512, 1024 oder 4096. Man kann zwar auch andere Werte eingeben, der Pro hat zum Beispiel 16384 (16M). Problem ist dann aber, dass keine Datei für diese Flash-Größe vorhanden ist (Im Ordner ESP_Easy_R120 –> ESPEasy_R120_512.bin etc.). Andersrum kann man aber zum Beispiel den normales Wemos Mini (der hat 4096) mit 512 flashen. Also vllt. klappt es auch die Pros mit der 4096 Datei zu flashen. Naja, nur so ein paar Gedanken 😉 Wenn meine Pros ankommen, dann weiß ich mehr.
Was vllt. eine Lösung sein kann, wenn man die Pros manuell mit der Arduino-IDE programmiert. Die benötigten Files befinden sich ja im Source-Ordner.
Gruß Daniel
Hi Daniel,
danke für deine wiedermal sehr schnelle Antwort! Bin sehr auf deinen Lösungsweg gespannt, bei mir eilt das Projekt nicht sonderlich 🙂
Ich gehe davon aus, so wie du bereits sagtest, dass das flashen mit 4096 schon möglich sein sollte – habe jedenfalls gelesen, dass dann nur die 4096 adressiert werden und nicht die ganzen 16MB. Für easyesp sollten die 4096 ja locker reichen.
Vermutlich hängt das irgendwie mit dem Reboot bzw. mit dem Bootloader zusammen, denn ein paar „Trying to connect“ macht das esptool ja erfolgreich, bevor es failed.
Lass dann auf jeden Fall was hören 🙂
Beste Grüße
Flo
Hallo Flo,
die WeMos D1 Pros sind jetzt eingetroffen. Habe dann sofort probiert, sie über das ESP-Tool zu flashen. Habe mir dazu heute die Firmware „Firmware image R147_RC8 “ heruntergeladen.
Das Flashen hat problemlos geklappt. Ausgewählt habe ich die 4096 Flash-Size mit dem Build 147. Hatte alles geklappt. ESP Easy konnte ich danach ohne Probleme einrichten und konfigurieren. Als USB-Kabel habe ich eins von Amazon-Basic genommen. Hatte davor son Billig-Kabel von eBay probiert, da klappte es nicht, da der WeMos gar nicht erst vom PC erkannt wurde.
Dachte es sei vllt Glück, dass es direkt geklappt hat. Habe dann 5 weitere WeMos D1 Pros versucht zu flashen, alle haben ohne Probleme geklappt.
Konnte deinen Fehler deswegen leider nicht reproduzieren.
Gruß Daniel
Hi Daniel,
mittlerweile habe ich mir mal neue Kabel besorgt und siehe da, das Flashen hat diesmal auf anhieb geklappt! Danke für den richtigen Hinweis!
Nun habe ich meine Reedschaltung (ein Kabel an 5V, eins an GPIO15) gebaut und über EasyESP eingerichtet (inkl. Pullup). In der Weboberfläche wird auch alles richtig angezeigt, bis auf bei folgender Ausnahme: Ich wollte simulieren, was bei einem Stromausfall o. ä. und einem damit verbundenem Neustart passiert. Magnet liegt an -> die Weboberfläche ist nicht erreichbar (auch nicht nach einiger Zeit). Magnet liegt nicht an -> die Oberfläche funktioniert zwar, allerdings wird mir als Wert angegeben, dass der Magnet anliegt. Um es wieder richtig zum Laufen zu kriegen, muss ich den Magneten wegnehmen, Neustarten und dann erst den Magneten wieder anlegen. Ist alles etwas merkwürdig und wäre im Betrieb nicht so schön. Die Frage ist auch, ob es ein EasyESP- oder Wemos Mini- Problem ist. Hast du vielleicht einen Tipp oder bist selbst vielleicht schon über das Problem gestolpert?
Beste Grüße
Flo
Hallo Flo,
ich selber habe leider keine Reedkontakte, konnte es deswegen nicht testen. Aber ich habe mir mal die Pin-Belegung angeschaut. Demnach hat der GPIO15 intern einen 10kOhm-Pull-Dowm Widerstand (siehe Bild). Vielleicht kommt es deswegen zu Problemen bei einem Neustart. Ich würde mal den GPIO16 nehmen (D0). Das ist ein „nackter“ Input-Output.
Gruß Daniel
Hallo Daniel,
leider haben bei D0 dann die Werte nicht mehr gestimmt (immer 0). Habe auch probiert, den pullup rauszunehmen. Auch andere pins habe ich stichprobenartig ausprobiert, leider ohne Erfolg. Hast du vielleicht noch eine Idee? Könnte meine Schaltung falsch sein?
Viele Grüße
Flo
Hi Daniel,
danke für das Feedback! Das ist ja eigenartig. Vielleicht sollte ich es auch nochmal mit einem anderen Kabel versuchen. Wobei ich letztens schon 2 verschiedene probiert habe (eines davon war vom Amazon Kindle).
Ich halte dich auf dem Laufenden.
Beste Grüße und einen schönen Feiertag.
Flo