Die Tage kam die Idee auf, aktuelle Benzinpreise über ein OLED-Display auszugeben.
Da im Lager noch ESP8266 + OLED Display waren, machte ich mich ans Werk.
Stückliste:
- ESP8266-12 / NodeMCU (*) mit ESP Easy Firmware https://amzn.to/2tg768y
https://github.com/letscontrolit/ESPEasy - OLED Display 0.96 Zoll 128*64 (*) https://amzn.to/2BtgVER
- Gehäuse aus dem 3D-Drucker https://www.thingiverse.com/thing:2993338
- Verbindungskabel (*) https://amzn.to/2DlKZlP
Druck des Gehäuse im 3D-Drucker mit PLA:
Nun gehen wir ans programmieren
Wir installieren nun die Software auf den ESP8266. Download Software hier :
https://github.com/letscontrolit/ESPEasy/releases
Dann installieren wir den Benzinpreis Flow als Node in Node-Red :
[{"id":"f4356834.fa1b9","type":"http request","z":"3e94ac6b.14ec4c","name":"Bavaria Petrol - Munich","method":"GET","ret":"txt","url":"https://www.clever-tanken.de/tankstelle_details/33072","tls":"","x":390,"y":220,"wires":[["99c4504c.9752e8"]]},{"id":"dcc69e72.2d2b7","type":"inject","z":"3e94ac6b.14ec4c","name":"","topic":"tank1","payload":"","payloadType":"date","repeat":"","crontab":"*/30 6-22 * * *","once":false,"onceDelay":0.1,"x":130,"y":220,"wires":[["f4356834.fa1b9"]]},{"id":"99c4504c.9752e8","type":"html","z":"3e94ac6b.14ec4c","name":"","property":"payload","tag":"span","ret":"text","as":"single","x":630,"y":220,"wires":[["c82b6057.1d4178","f0488e18.7bbe28"]]},{"id":"f08d0285.7aed98","type":"http request","z":"3e94ac6b.14ec4c","name":"Jet Gasoline Station Munich ","method":"GET","ret":"txt","url":"https://www.clever-tanken.de/tankstelle_details/3525","tls":"","x":400,"y":300,"wires":[["99c4504c.9752e8"]]},{"id":"c82b6057.1d4178","type":"function","z":"3e94ac6b.14ec4c","name":"Parse Value","func":"msg.payload = msg.payload[38];\nreturn msg;","outputs":1,"noerr":0,"x":790,"y":180,"wires":[["19abc7a8.27acd","345c6c56.07a18c","a0f4e3b7.15172","2bc1949.1ea4cec"]]},{"id":"f0488e18.7bbe28","type":"function","z":"3e94ac6b.14ec4c","name":"Parse Value","func":"msg.payload = msg.payload[25];\nreturn msg;","outputs":1,"noerr":0,"x":798,"y":343,"wires":[["718c3793.9f05b","da5e38a5.75422","24e7a44c.4f8adc"]]},{"id":"97ced692.21332","type":"inject","z":"3e94ac6b.14ec4c","name":"","topic":"tank2","payload":"","payloadType":"date","repeat":"","crontab":"*/30 6-22 * * *","once":false,"onceDelay":0.1,"x":130,"y":300,"wires":[["f08d0285.7aed98"]]},{"id":"19abc7a8.27acd","type":"debug","z":"3e94ac6b.14ec4c","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1030,"y":140,"wires":[]},{"id":"345c6c56.07a18c","type":"ui_chart","z":"3e94ac6b.14ec4c","name":"","group":"71098437.c4817c","order":16,"width":0,"height":0,"label":"Benzinpreis Super+","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"6","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"x":1010,"y":180,"wires":[[],[]]},{"id":"a0f4e3b7.15172","type":"mqtt out","z":"3e94ac6b.14ec4c","name":"SuperPlus","topic":"/benzin/superplus","qos":"1","retain":"","broker":"ec5b75d5.c274e8","x":989,"y":220,"wires":[]},{"id":"2bc1949.1ea4cec","type":"mqtt out","z":"3e94ac6b.14ec4c","name":"SuperPlus ESP1","topic":"esp1","qos":"1","retain":"","broker":"ec5b75d5.c274e8","x":1032,"y":92,"wires":[]},{"id":"718c3793.9f05b","type":"ui_chart","z":"3e94ac6b.14ec4c","name":"","group":"71098437.c4817c","order":17,"width":0,"height":0,"label":"Benzinpreis E10","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"6","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"x":993,"y":344,"wires":[[],[]]},{"id":"da5e38a5.75422","type":"mqtt out","z":"3e94ac6b.14ec4c","name":"Super E10","topic":"/benzin/e10","qos":"1","retain":"","broker":"ec5b75d5.c274e8","x":987,"y":392,"wires":[]},{"id":"24e7a44c.4f8adc","type":"mqtt out","z":"3e94ac6b.14ec4c","name":"Super E10 ESP2","topic":"esp2","qos":"","retain":"","broker":"ec5b75d5.c274e8","x":1014,"y":444,"wires":[]},{"id":"71098437.c4817c","type":"ui_group","z":"","name":"Licht","tab":"8caaa69e.5cf878","order":1,"disp":true,"width":"6","collapse":false},{"id":"ec5b75d5.c274e8","type":"mqtt-broker","z":"","broker":"mqtt.unixweb.de","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"8caaa69e.5cf878","type":"ui_tab","z":"","name":"Home","icon":"dashboard","order":1}]
Jetzt konfigurieren und verbinden wir den ESP8266 und das Display SSD1306
Jetzt installieren und konfigurieren wir einen MQTT-Generic Import als neues Gerät:
Hinweis : Bei Name unbedingt „MQ“ + „MQTT Topic“ + „Value1, Value2“ nehmen sonst klappt das Beispiel nicht. Achte auf die exakte Groß- und Kleinschreibung, denn diese ist sehr wichtig.
Im Anschluss brauchen wir noch eine Anbindung an einen MQTT-Broker. Dazu nehmen wir den mqtt.unixweb.de als Broker. Später kannst Du auch Deinen eigenen nehmen.
Nun können wir alles einschalten, starten und wenn der NodeMCU eingeschaltet ist , drücken wir im Node-Red auf den Trigger „tank1:timestamp“, denn erst jetzt werden die aktuellen Daten an den MQTT-Broker gesendet und ich Echtzeit am NodeMCU/ESP8266 mit Display angezeigt.
Falls es Fragen gibt einfach einen Kommentar hier hinterlassen
Viel Spaß und Erfolg mit dem kleinen Projekt.
Alle Artikel auf dieser Seite sind mit einem sogenannte Provision-Links. Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Weiterführende Infos gibt es hier unter Punkt 8 in der Datenschutzerklärung https://blog.unixweb.de/datenschutzerklaerung/
Auf welchem Ihrer Systeme läuft denn Node-red? Auch auf dem Esp?
Nein , Node-Red läuft immer und überall auf einem Raspberry, Beaglebone oder in einer virtuellen Linux Maschine. Node-Red wird nie auf einem ESP laufen.
Hier gibt es eine Installationsanleitung für den Raspberry:
https://nodered.org/docs/hardware/raspberrypi
Grüße , Joachim
Hi,
sehr schön erklärt. Vielen Dank.
Gerne würde ich neben Werten auch Texte/Strings über MQTT darstellen.
Ich weiß nur nicht wie. Mit Werten klappt es einwandfrei. Strings werden als Zahl erkannt und als 0,00 dargestellt. Gibt es hier eine Möglichkeit?
Grüße
Chris
Hallo Chris
daran bin ich auch gescheitert. Es gibt hier keine Möglichkeit ASCII Zeichen als Strings zu übergeben zur Anzeige. Tut mir leid da nicht helfen zu können.
Grüße Joachim
Über einen HTML-Reqest kann das Display mit Text beschrieben werden.
Einfachmal nach dem Muster :
http://espeasy-IP/control?cmd=OLED,, ,
ausprobieren.
Ich benutze ein 4×20-LED-Display und erstelle im iobroker mit blockly
einen Script, der die jeweilige Zeile mit Text ausgibt.
Hallo Klaus-Peter
Danke für den Tipp, der mir auch bekannt ist. Nur es geht darum eine Variable als Text an dem MQTT-Broker zu schicken, der dann vom ESP-Node ausgelesen wird und angezeigt wird. Das funktioniert hier leider nicht. Es funktionieren Variablen nur mit Numerischen Werten.
Grüße nach Bamberg von Joachim
Hallo Klaus-Peter,
kannst Du mir ein paar Hinweise geben, wie ich konkret einen Datenpunkt im iobroker an den ESP sende? Habe bisher nur vom ESP über MQTT Daten zum iobroker übertragen. Mir fehlt aber der Zugang, wie ich es umgekehrt hin bekomme.