Eigentlich dachte ich, ich könnte meinen Blog-Beitrag über das einfache WLAN-Thermometer mit NodeMCU für Fhem jetzt löschen. Aber ich benenne den Titel einfach dann in Teil 1 um. Grund hierfür: Es gibt was besseres!
Ich hatte ja neulich über die Software ESP Easy geschrieben (-> Blogbeitrag). Einmal draufgebügelt, und schon habt ihr ein Webinterface auf Eurem ESP 8266 Baustein, egal welchen Typ. Zu diesen Bausteinen zählt natürlich auch der NodeMCU, den ich auch schon seit einiger Zeit verwende (hier, hier, hier).
Zum Thema: Mich erreichten viele Fragen, wie man mehrere DS18B20 Thermometer mit der aus Teil 1 bekannten Software verwenden könnte. Viele benutzen diese One-Wire DS18B20 Bausteine für ihre Heizung (Vorlauf-Rücklauf). Die jetzige Software hätte man anpassen müssen.
Mit ESP Easy ist das jetzt ein Kinderspiel, und alle, die jetzt das WLAN-Thermometer nachgebaut haben, brauchen nicht viel umzustecken. Und der Lötkolben bleibt kalt.
Notwendige Software und Anschlüsse:
Zunächst muss eine aktuelle Version der ESP-Easy-Software geflashed werden. Also einfach mal meinen Blogbeitrag (-> hier), da steht alles drin. Ich möchte in diesem Beitrag nur beschreiben, wie man mehrere Thermometer für EIN WLAN-Modul verwendet.
In meinem Beispiel verwende ich wieder ein NodeMCU und 2 Thermo-Sensoren. Die Thermo-Sensoren habe ich an 0 V und 3,3 V gelegt am NodeMCU und ich verwende den GPIO0 Port. WICHTIG: Das ist nicht der Port D0 auf dem NodeMCU, sondern der Port D3, siehe Grafik hier.
Software:
Jetzt kommt die ESP Easy Software ins Spiel: Einfach einloggen und dort den DS18B20 in der Dropdown-Auswahl nehmen.
Als GPIO nehmt ihr den GPIO 0 und bestätigt unten mit Submit. Wenn alles richtig beschaltet wurde, erscheint schon in der Übersicht (Reiter Devices) der Thermosensor mit seiner ROM-ID und nach einiger Zeit die Temperatur.
Das gleiche macht ihr mit dem zweiten Thermosensor (soweit vorhanden). Dieser ist ja parallel geschaltet mit dem ersten Sensor. Hier macht ihr genau das gleiche, gebt ihm aber einen anderen Namen, bei mir Temperatur2.
In der Übersicht erscheint dann der zweite Sensor mit der GPIO 0 und einer anderen ROM-ID. Alles richtig gemacht.
Bitte gebt auch eine unterschiedliche IDX Variable an, die Sensoren müssen später über MQTT angesprochen werden.
Verbindung zu Fhem
Hier solltet ihr Euch auf Eurem Raspberry Pi (-> Blogbeitrag Raspberry Pi 3) einen MQTT-Broker installieren. Damit macht ihr jetzt das Handling zwischen den Temperatursensoren und Fhem. Ich hatte damals schon etwas über MQTT geschrieben (-> Blogbeitrag hier), aber in dem Fhem-Forum ist das vorbildlich erklärt.
Testen der Sensor-Daten
Ob nach der Installation des MQTT-Brokers überhaupt was vom WLAN-Thermometer ankommt, könnt ihr auf der Konsole testen:
root@raspberrypi:~# mosquitto_sub -d -t /hooks/devices/3/SensorData/Temperature
Client mosqsub/5932-raspberryp sending CONNECT
Client mosqsub/5932-raspberryp received CONNACK
Client mosqsub/5932-raspberryp sending SUBSCRIBE (Mid: 1, Topic: /hooks/devices/3/SensorData/Temperature, QoS: 0)
Client mosqsub/5932-raspberryp received SUBACK
Subscribed (mid: 1): 0
Client mosqsub/5932-raspberryp received PUBLISH (d0, q0, r0, m0, '/hooks/devices/3/SensorData/Temperature', ... (5 bytes))
24.00
Client mosqsub/5932-raspberryp sending PINGREQ
Client mosqsub/5932-raspberryp received PINGRESP
Die Zahl 3 ist hier wichtig und der Name Temperature, siehe meinen Screenshot. Ihr könnt natürlich andere Zahlen nehmen.
Übergabe an Fhem:
In Fhem sieht das mit mehreren Thermosensoren jetzt so aus
# Device DS18b20 definieren
define ESP8266 MQTT_DEVICE DS18B20
attr ESP8266 IODev MyBroker
attr ESP8266 room MQTT
attr ESP8266 stateFormat Temperatur: Temperature°C Temperature2°C
attr ESP8266 subscribeReading_Temperature /hooks/devices/3/SensorData/Temperature
attr ESP8266 subscribeReading_Temperature2 /hooks/devices/5/SensorData/Temperature2
Hiermit können über die Readings einfach Plots etc. gemacht werden. Der Vorteil bei Easy ESP liegt daran, das ich jetzt mehrere DS18B20 Sensoren parallel schalten könnt und einfacher in Fhem einbauen könnt. Mit den blau unterlegten Pfeilen < > (siehe Screenshot oben) wird die Liste erweitert. Man ist also nicht auf 4 Sensoren beschränkt.
Falls ihr andere ESP 8266 Bausteine verwendet, zum Beispiel den ESP 8266 01 (-> Amazon.de: ESP8266 Serial WIFI Wireless Transceiver Modul für Arduino Atmel AVR Raspberry PI
) oder den ESP 8266 12 (amazon.de: 3Pcs ESP8266 ESP-12 Fern Serial Port WIFI Transceiver Wireless Module
), denkt auch an eine vernünftige Stromversorgung und einen großen Glättungskondensator. Ich habe dort einen 1000 uF / 16 V verwurstet, klappt. Ich habe da schon leidvolle Stunden verbracht, um die Dinger zum Laufen zu bekommen. Bedenkt auch, das diese Bausteine nicht OTA (On the Air) mit der ESPEasy- Software geupdatet werden könnten. Es müssen RAM-Bausteine > 1MB sein. Ich verwende die ESP 8266-01 Bausteine nur noch, um diese in Geräten einzubauen, wo wenig Platz zur Verfügung steht. Wer also auf Nummer sicher gehen will, sollte unten in den Links bei den NodeMCUs zuschlagen und nicht auf die Billig-Fakes reinfallen.
Aktion: Ich habe noch die Bauteile komplett als Set hier liegen. Wer zuschlagen möchte, für 29,45 Euro inkl. Versand könnte ich Euch ein Set abgeben. Das Set beinhaltet das Gehäuse, den Wemos D1 mini, Kabel, wasserbeständiges DS18B20-Temperaturmodul und ein 4,7 K-Ohm Widerstand. Alles fertig geflashed, eingerichtet und getestet. Bitte per e-Mail kontaktieren oder unten in den Kommentaren anfragen!
Benötigte Hard- und Software
- NodeMcu-Flasher (Windows)
ESP-Easy - Amazon: ESP8266 Bausteine – NodeMCU
- Amazon: Beispiele: Thermosensoren 18DS20
- Amazon: Passende Steckbrücken
- Amazon: Breadboards zum Prototyp-Aufbau
- Blogbeitrag über selbstgebaute Adapter (Steckbrücken / Pinheaders)
Hallo Robin,
wie Du erwähnst geht es inzwischen auch ohne MQTT. FHEM kann nun direkt mit dem NodeMCU kommunizieren ( siehe https://smarthome.family.blog/2019/02/12/nodemcu-esp8266-mit-fhem-schalten-und-auslesen/ )
Gruss Marc
wemos oder nodemcu? egal
lg
/robin
Servus Robin,
sieht cool aus, fürs erste (ich bin Maschinenbauer und kein Elektrotechniker) würde ich mich an einem BME 280 wagen wollen. Auf das selbst zusammen löten freu ich mich schon jetzt.
Ich musste z.B. erst mal schauen was ein Wemos ist. Wann und warum nimmst du den und wann den NodeMCU?
Ist der Wemos auch so „einfach“ mit den Sensoren zu verbinden (ESP-Easy)?
Wenn ich das mal am laufen haben sollte, würde ich gern die gemessen Daten speichern und dann in Graphen darstellen lassen. Da ich aber erst ganz am Anfang von diesen kleinen Hausautomationen bin wird das spannend.
Bisher habe ich mit openHAB experimentiert, ich nehme an den NodeMCU bekommt man damit auch „verbandelt“?
Danke schon mal für deine Geduld 🙂
Hallo Homer,
ja geht, mit dem BME 280.
Das geht auch mit dem WeMos D1.
Alternativ kann ich dir einen Feinstaubsensor anbieten, der die obige Funktionalität erfüllt
https://blog.moneybag.de/sds011-feinstaubsensor-fuer-fhem/
Habe ich aber gerade nicht da.
Gehäuse habe ich unter dem Vordach oder auf dem Balkon.
LG
/robin
Hallo,
toller BLOG!
Kann man an einem NodeMCU gleichzeitig Luftdruck, Temperatur und Luftfeuchte messen lassen? Wie würde die „Verkabelung“ dann aussehen?
Dann wäre für mich nur noch die Frage offen, wie bekommt man das ganze Wetterdicht nach draußen mit Strom? Oder würdest du da auf eine andere Lösung gehen?
Danke
Hallo,
woran kann es liegen, wenn man in der Konfiguration keine Tempertatur (also 0.00 oder nan) angezeigt bekommt? Auch der Port ist „0-0-0-0-0-0-0-0“
Pingback: WLAN-Thermometer – …
Danke dir Robin.
Ohne diesen Eintrag geht das ganze nicht.
nur blöd das man es in fhem nicht schon eintagen kann oder sogar das fhem es selbst erkennt.
gruß
Hallo Seer,
ich bin da knallhart in der Fhem.cfg reingegangen und habe das so eingegeben.
LG
/robin
Hi Robin.
Könntest du mir bitte sagen wie du das mit den readings hinbekommen hast?
attr ESP8266 subscribeReading_Temperature /hooks/devices/3/SensorData/Temperature
^^^^^^^^^^^^^^
^^^^^^^^^^
das bekomme ich einfach nicht hin.
mein Problem ist das ich die Temperatur nicht in einem reading angezeigt bekomme.
Im Log von FHEM sehe ich die Temperatur.
2016.11.20 18:58:27 5 : MQTT Mosquitto message received: Publish/at-most-once /hooks/devices/20/SensorData/temp01 32 37 2e 38 31 27.81
2016.11.20 18:58:27 5 : publish received for /hooks/devices/20/SensorData/temp01, 27.81
2016.11.20 18:58:27 5 : Triggering Ke_Vorlauf_Temp (1 changes)
2016.11.20 18:58:27 5 : Starting notify loop for Ke_Vorlauf_Temp, first event transmission-state: incoming publish received
2016-11-20 18:58:27 MQTT_DEVICE Ke_Vorlauf_Temp transmission-state: incoming publish received
2016.11.20 18:58:27 5 : calling readingsSingleUpdate(Ke_Vorlauf_Temp,.*,27.81,1
aber im device wird es nicht angezeigt.
Danke Gruß
Pingback: ESPEASY-Firmware Version R140 (RC3) als Image erschienen | Robins Blog – Technik und Multimedia
Pingback: FHEM: Neues Modul ESPEasy (ohne MQTT) | Robins Blog – Technik und Multimedia
Pingback: Einfaches WLAN-Thermometer für Fhem mit NodeMCU ohne Löten (Teil 1) | Robins Blog – Technik und Multimedia
Pingback: Fhem mit LED Statusanzeige / LED-Stripe WD2812B / ESP 8266 | Robins Blog – Technik und Multimedia
Hallo Konrad,
zuviel Stromentnahme an den GPIOs kann auch der NodeMCU nicht ab.
eMail geht, habe ich schon ausprobiert. Der Sonderfall, das bei einer Temperatur eine eMail gesendet werden soll, musst du nachlesen.
Vielleicht musst du die Developer Version draufbeamen und durch scripting die eMail auslösen. Ich würde mal sagen es geht auch ohne LUA.
Schau mal da ins Forum: http://www.esp8266.nu/forum/
Wäre schön wenn Du später hier im Blog darüber berichten kannst.
LG
/robin
Hallo Robin,
das war sehr nett von dir. Wir, als Projektausführende, wussten jedoch nicht, dass du alles vorbereitet hattest. Wir wussten nur von der Aufgabe, deinem Block und haben die Bauteile vorgesetzt bekommen, weitere Informationen erhielten wir nicht.
Wie dem auch sei, wir haben es jetzt endlich zum laufen bekommen. Es ist ja Prinzip wirklich extrem einfach. Wir haben es selbst mit ESP Easy halt zu letzt versucht. Und durch das ganze Herumexperimentieren ist wohl etwas auf dem NodeMCU kaputt gegangen. Wir haben uns jedoch ein neues gekauft.
Trotzdem schonmal Danke für deine Hilfe.
Eine Frage hätte ich jedoch noch : Eine Benachrichtigung (email) bei bestimmten Temperaturausschreitungen ist in der ESP Easy software noch nicht integriert oder? Wenn dem so wäre, müsste man das dann eben selbst mit LUA oder der Arduino IDE schreiben.
Gruß
Konrad
Hallo Konrad,
irgendwie habt ihr das was mißverstanden. Die Bauteile, die ich Euch geschickt habe, waren komplett geflashed und einsatzbereit. Ich hatte es sogar getestet, bevor ich es abgeschickt habe und das in einer eMail kommuniziert. Habt ihr denn auch den richtigen GPIO genommen und in der ESP-Easy Software eingestellt? „Heiß geworden hört sich nach einer falschen Beschaltung an. Meistens wird dann auch der GPIO vom NODEMCU zerstört. Wie man einen DS18b20 richtig anschließt, steht gefühlt 2000 mal im Netz.
LG
/robin
LG
/robin
Hallo Robin,
also ich habe jetzt alle Varianten versucht. Mit dem Arduino IDE habe ich nicht wirklich viel hinbekommen. Mit dem ESPlorer und der lua Sprache habe ich es geschafft, dass er mir etwas in die entsprechende Webadresse schreibt. Das Auslesen der Temperatur habe ich mir aus deinem 1. Blog Eintrag genommen (eben ohne das ganze Fhem Zeugs). War auch auf der github Seite nochmal so zu finden. Jedenfalls lief das fehlerfrei ab nur hat es nie einen Wert geliefert. (also nur 0 angezeigt) Jetzt hatte ich es nochmal mit ESPEasy versucht, auch da liefert es ebenfalls keinerlei Werte. DS18b20 habe ich natürlich ausgewählt, als auch den richtigen PIN.
Geschalten hatte ich das jeweils so, wie es auf der Zeichnung in deinem 1. Blog Eintrag zu lesen war. Wir hatten ursprünglich jedoch einen 10k Ohm Widerstand dabei. Den haben wir aber mittlerweile gegen 1k Ohm ausgetauscht. Ich kann jetzt nur noch vermuten, dass hardware-mäßig irgendwas nicht stimmt. Meine anderen Gruppenmitglieder haben auch viel rumexperimentiert an der Schaltung und auch mal 3.3V statt 5v genommen und da ist der Sensor schnell sehr heiß geworden. Kann er dadurch kaputt gegangen sein?
Die Gründe können jetzt sicherlich vielseitig sein. Hmpf ..
Gruß Konrad
Hallo Konrad,
hast du es denn hinbekommen den NodeMCU zu flashen? Also die EasyESP Software drauf zu flashen?
Ist doch hier alles erklärt: https://blog.moneybag.de/espeasy-administrationsoberflaeche-fuer-esp8266-fuer-iot-und-fhem/
Und nein, Fhem ist unbedingt notwendig um die Temperaturdaten zu empfangen. Schaut Euch doch EspEasy an, da könnt ihr in den Erweiterungen auch bspw. über MQTT Daten empfangen, über ein Webinterface (generic HTTP) glaub ich auch (hab ich aber noch nicht ausprobiert). Infos hier: http://www.esp8266.nu/index.php/EasyProtocols
Finde ich ein klasse Thema übrigens. Ich durfte damals eine Logicanalysator-Software machen – ohne Internet und Hilfe von Facebook und co. , alles reine Software. Das waren noch Zeiten …
LG und viel Erfolg
/robin
Hallo Robin,
danke für deine Antwort.
Ja, wir kommen aus der Industrieschule Chemnitz. Wir haben nachwievor Probleme. Mit einem Arduino haben wir einen ähnlich Aufbau getestet und das klappt einfacher. Wir stellen uns vielleicht etwas dusselig an, aber wir haben nicht wirklich Vorwissen zu dem Thema. Das Thema wurde uns jedoch auch so vorgegeben. Wir wollen natürlich trotzdem das Beste daraus machen. Jetzt nochmal eine wahrscheinlich dumme Frage :
Was ist Fhem so richtig? Sehe ich das richtig, dass ein Fhem-Server quasi die Vorrausstzung für diesen Aufbau ist?
Gruß
Konrad
Hallo Mara,
du kommst nicht zufällig aus Chemnitz von der Industrieschule?
Der im Blog beschriebene Microkontroller kommt von der Firma Espressif. Elektroniker haben an dem Baustein etwas lebenswerter gemacht und daraus ein NodeMCU entwickelt:
http://nodemcu.com/index_en.html. Einiges über den ESP8266 gibt es hier nachzulesen: https://www.mikrocontroller.net/articles/ESP8266. Entwickler aus Holland haben dann eine allgemeine Software geschrieben (http://www.esp8266.nu/index.php/ESPEasy) mit dem man nicht nur Temperaturen messen kannst.
Schade, das es zu meiner Zeit kein Internet gab, da hätte ich bessere Noten gehabt.
LG und viel Spaß beim Lesen und Nachbauen.
Robin
Hallo Robin,
ich befinde mich zur Zeit in einer Ausbildung zum ‚IT-Systemelektroniker‘. In der Schule haben wir dabei die Aufgabe bekommen, ein WLAN Thermometer im Serverraum zu installieren, auf Grundlage deines Blogs. Wir sollen natürlich auch eine Dokumentation und eine Präsentation erstellen. Unser Problem ist jedoch, dass wir so gut wie keine sinnvollen Informationen zu dem Mikro Controller oder anderen theoretischen Grundlagen finden. Kannst du uns da vielleicht irgendwie weiterhelfen?
Hat sich erledigt
Hmmm….
Mosquitto Dienst läuft. Aber Fhem sagt „connection disconnected“
STATE
disconnected
TYPE
MQTT
Hallo RObin,
wenn noch ein Set Verügbar ist, würde ich eines nehmen. Vielleicht auch zwei 😉
Gruß
Christian
Hallo Peter,
ein interessantes Thema! Ich habe mir einige Step-down Step-up und auch Step-down / up booster kommen lassen.
Ich habe schon einige davon ausprobiert, klappen hervorragend. Interessant um alte Batterien (KEINE AKKUS!) endgültig auszulutschen. Ich habe eine Menge 9V Zellen von den PIRs oder Fernbedienungen hier rumliegen. Mal sehen, vielleicht schreibe später mal einen Blog-Beitrag darüber. Die Dinosaurier vom CC2 haben neulich eine Beitrag über diese lustigen Step-Up Module gemacht.
LG
/robin
Hallo Robin,
vielen Dank für die zahlreichen, interessanten Beiträge. Gibt es eigentlich ESP8266-Module, die speziell für den Batteriebetrieb mit z.B. 2 x Mignon optimiert sind? Ich denke dabei an einen Stepup-Konverter, der auch bei abnehmender Batteriespannung noch eine ausreichende Spannung für den ESP8266 zur Verfügung stellen kann und somit die Laufzeit des Moduls verlängert. Anwendungen wären z,B. batteriebetriebene Bewegungsmelder oder Temp/Feuchte-Sensoren.
Viele Grüße
Peter
Pingback: Fhem: Witty-Board, einfache IoT-Funktionen schnell gebaut | Robins Blog – Technik und Multimedia