Robins Blog – Technik und Multimedia

Einfaches WLAN-Thermometer für Fhem mit NodeMCU ohne Löten (Teil 2)

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

Wemos D1 mit 18DS20 Thermosensor (Löten erforderlich)

 

Die mobile Version verlassen