openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4
-
- Beiträge: 251
- Registriert: 14. Apr 2020 11:35
- Wohnort: bei Hamburg
openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4
Hi,
ich lasse mir von meinem 3D Drucker die Daten über Temperaturen, Druckfortschritt, Restzeit an opeHab senden/anzeigen über MQTT. Der Drucker ist mit einem Raspberry Pi 4 verbunden über octoPrint. In openHAB habe ich die Daten/Werte in einem Thing und den jeweiligen channels. Jetzt würde ich gern das ganze mir auf einem Display anzeigen lassen, weiß leider nicht wie ich es machen soll.
Der Wemos D1 Mini mit dem Display ist in openHAB auch als Thing. Als was muß ich den channel (String ? ) anlegen um die Daten an das Display zu senden ? Wie müßte die Rule mit Zeilenangabe für das Display aussehen, gern auch per Blockly (versuche mich gerade daran), finde aber nicht die Lösung.
Danke
ich lasse mir von meinem 3D Drucker die Daten über Temperaturen, Druckfortschritt, Restzeit an opeHab senden/anzeigen über MQTT. Der Drucker ist mit einem Raspberry Pi 4 verbunden über octoPrint. In openHAB habe ich die Daten/Werte in einem Thing und den jeweiligen channels. Jetzt würde ich gern das ganze mir auf einem Display anzeigen lassen, weiß leider nicht wie ich es machen soll.
Der Wemos D1 Mini mit dem Display ist in openHAB auch als Thing. Als was muß ich den channel (String ? ) anlegen um die Daten an das Display zu senden ? Wie müßte die Rule mit Zeilenangabe für das Display aussehen, gern auch per Blockly (versuche mich gerade daran), finde aber nicht die Lösung.
Danke
thnx
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4
Na ja, wie Du das Display ansteuerst, weißt nur Du
das ist ja vor allem abhängig von der verwendeten Software auf dem D1 Mini.
Grundsätzlich wirst Du sicher einen String senden müssen, evtl. als JSON verpackt. Aber das ist nichts openHAB-spezifisches, Du musst wissen, was Du senden musst, anschließend können wir dazu eine Rule bauen.

Grundsätzlich wirst Du sicher einen String senden müssen, evtl. als JSON verpackt. Aber das ist nichts openHAB-spezifisches, Du musst wissen, was Du senden musst, anschließend können wir dazu eine Rule bauen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 251
- Registriert: 14. Apr 2020 11:35
- Wohnort: bei Hamburg
Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4
Hi Udo,
sorry vergessen zu sagen das auf dem Wemos D1 (nenne ihn mal 2) Tasmota läuft.
In meinem Druckerschrank ist auch ein Wemos D1 ( nenne ihn mal 1) mit Tasmota an dem ist ein DHT22 Sensor angeschloßen, die Werte habe ich in openHab.
Der Wemos 2 soll mit ins Wohnzimmer um die Übersicht zu behalten beim Drucken.
In Wemos 2 habe ich zwei Tasmota Regeln um mir die daten von Wemos 1 auf Wemos 2 zu holen.
Code: Alles auswählen
Rule1 ON mqtt#connected DO Subscribe DruckerTemp, tele/3D_Drucker_Temp_Luft/SENSOR, AM2301.Temperature ENDON ON Event#DruckerTemp DO DisplayText[l1c1]Temp %value%~dfC ENDON
Rule2 ON mqtt#connected DO Subscribe DruckerHumi, tele/3D_Drucker_Temp_Luft/SENSOR, AM2301.Humidity ENDON ON Event#DruckerHumi DO DisplayText[l2c1]Feuchte %value% % ENDON
MQTT FX liefert mir unter octoPrint/progress/printing folgendes:
Code: Alles auswählen
{"location": "local", "path": "BB1_Adapter LR44 zu LR41 passt.gcode", "progress": 58, "printer_data": {"state": {"text": "Printing", "flags": {"operational": true, "printing": true, "cancelling": false, "pausing": false, "resuming": false, "finishing": false, "closedOrError": false, "error": false, "paused": false, "ready": false, "sdReady": false}, "error": ""}, "job": {"file": {"name": "BB1_Adapter LR44 zu LR41 passt.gcode", "path": "BB1_Adapter LR44 zu LR41 passt.gcode", "display": "BB1_Adapter LR44 zu LR41 passt.gcode", "origin": "local", "size": 255558, "date": 1676819986}, "estimatedPrintTime": 309.90948992092274, "averagePrintTime": 549.6826381054452, "lastPrintTime": 582.7677503828891, "filament": {"tool0": {"length": 162.58849999999947, "volume": 0.0}}, "user": "Biqu"}, "currentZ": 1.8, "progress": {"completion": 58.09248781098616, "filepos": 148460, "printTime": 348, "printTimeLeft": 379, "printTimeLeftOrigin": "linear"}, "offsets": {}, "resends": {"count": 0, "transmitted": 4892, "ratio": 0}}, "_timestamp": 1692376009}
Code: Alles auswählen
octoPrint/event/Alert
octoPrint/event/CaptureDone
octoPrint/event/CaptureStart
octoPrint/event/ChartMarked
octoPrint/event/ClientAuthed
octoPrint/event/ClientClosed
octoPrint/event/ClientOpened
octoPrint/event/CommandSuppressed
octoPrint/event/Connected
octoPrint/event/Connecting
octoPrint/event/ConnectionsAutorefreshed
octoPrint/event/Disconnected
octoPrint/event/Disconnecting
octoPrint/event/Dwelling
octoPrint/event/EStop
octoPrint/event/Error
octoPrint/event/FilamentChange
octoPrint/event/FileAdded
octoPrint/event/FileDeselected
octoPrint/event/FileRemoved
octoPrint/event/FileSelected
octoPrint/event/FirmwareData
octoPrint/event/GcodeScriptAfterPrintCancelledFinished
octoPrint/event/GcodeScriptAfterPrintCancelledRunning
octoPrint/event/GcodeScriptAfterPrintDoneFinished
octoPrint/event/GcodeScriptAfterPrintDoneRunning
octoPrint/event/GcodeScriptAfterPrintPausedFinished
octoPrint/event/GcodeScriptAfterPrintPausedRunning
octoPrint/event/GcodeScriptBeforePrintResumedFinished
octoPrint/event/GcodeScriptBeforePrintResumedRunning
octoPrint/event/GcodeScriptBeforePrintStartedFinished
octoPrint/event/GcodeScriptBeforePrintStartedRunning
octoPrint/event/Home
octoPrint/event/MetadataAnalysisFinished
octoPrint/event/MetadataAnalysisStarted
octoPrint/event/MetadataStatisticsUpdated
octoPrint/event/MovieDone
octoPrint/event/MovieRendering
octoPrint/event/PositionUpdate
octoPrint/event/PrintCancelled
octoPrint/event/PrintCancelling
octoPrint/event/PrintDone
octoPrint/event/PrintFailed
octoPrint/event/PrintPaused
octoPrint/event/PrintResumed
octoPrint/event/PrintStarted
octoPrint/event/PrinterProfileModified
octoPrint/event/PrinterStateChanged
octoPrint/event/SettingsUpdated
octoPrint/event/Shutdown
octoPrint/event/ToolChange
octoPrint/event/UpdatedFiles
octoPrint/event/Upload
octoPrint/event/UserLoggedIn
octoPrint/event/ZChange
octoPrint/event/plugin_backup_backup_created
octoPrint/event/plugin_firmware_check_warning
octoPrint/event/plugin_pi_support_throttle_state
octoPrint/event/plugin_pluginmanager_install_plugin
octoPrint/event/plugin_softwareupdate_update_succeeded
octoPrint/mqtt
octoPrint/plugins/mqttsubscribe/debug
octoPrint/progress/printing
octoPrint/progress/slicing
octoPrint/temperature/W
octoPrint/temperature/bed
octoPrint/temperature/tool0
octoPrint/temperature/tool1
octoprint/plugin/mqttpublish/pub
octoprint/plugin/tasmota
Code: Alles auswählen
UID: mqtt:topic:Broker_163:Drucker_Fortschritt
label: 3D Drucker Fortschritt
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:Broker_163
channels:
- id: Drucker_Fortschritt
channelTypeUID: mqtt:number
label: Drucker Fortschritt
description: ""
configuration:
stateTopic: octoPrint/progress/printing
transformationPattern: JSONPATH:$.progress
Ich hoffe es hilft Dir weiter.
thnx
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4
Ja, dann musst Du halt passende Topics abonnieren.
Entweder ziehst Du die Informationen direkt aus octoPrint/progress/printing heraus (analog zu tele/3D_Drucker_Temp_Luft/SENSOR, das ist ja auch nur ein Topic wie jedes andere)
oder Du definierst ein Topic, an das openHAB sendet, dann kannst Du den Inhalt des auszugebenden Textes halt noch manipulieren.
Also z.B. als Rule auf dem Wemos:
Wobei ich das noch nie selbst ausprobiert habe, die Rule ist lediglich anhand Deiner schon funktionierenden Rules erstellt.
Wenn Du den Text über openHAB erstellen willst (weil Du hier vielleicht noch andere Sachen im Wechsel ausgeben willst), müsstest Du die Rule halt anders definieren:
Nun musst Du in openHAB einen ausgehenden Channel definieren:
Der Befehl auf dem Wemos liest in diesem Fall also aus dem Topic openHAB/message, nimmt die Payload und verwendet den Wert im Feld "text" und gibt ihn einfach so aus wie er ist.
in openHAB musst Du entsprechend über den Channel Drucker_Message den String senden, wobei formatBeforePublish dafür sorgt, dass der String in ein passendes JSON Objekt eingebaut wird.

oder Du definierst ein Topic, an das openHAB sendet, dann kannst Du den Inhalt des auszugebenden Textes halt noch manipulieren.
Also z.B. als Rule auf dem Wemos:
Code: Alles auswählen
Rule3 ON mqtt#connected DO Subscribe DruckerProgress, octoPrint/progress/printing, progress ENDON ON Event#DruckerProgress DO DisplayText[l3c1]Fortschritt %value% % ENDON
Wenn Du den Text über openHAB erstellen willst (weil Du hier vielleicht noch andere Sachen im Wechsel ausgeben willst), müsstest Du die Rule halt anders definieren:
Code: Alles auswählen
Rule3 ON mqtt#connected DO Subscribe DruckerProgress, openHAB/message, text ENDON ON Event#DruckerProgress DO DisplayText[l3c1]%value% ENDON
Code: Alles auswählen
UID: mqtt:topic:Broker_163:Drucker_Fortschritt
label: 3D Drucker Fortschritt
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:Broker_163
channels:
- id: Drucker_Fortschritt
channelTypeUID: mqtt:number
label: Drucker Fortschritt
description: ""
configuration:
stateTopic: octoPrint/progress/printing
transformationPattern: JSONPATH:$.progress
- id: Drucker_Message
channelTypeUID: mqtt:string
label: Nachricht
description: ""
configuration:
commandTopic: openHAB/message
formatBeforePublish: {"text":%s}
in openHAB musst Du entsprechend über den Channel Drucker_Message den String senden, wobei formatBeforePublish dafür sorgt, dass der String in ein passendes JSON Objekt eingebaut wird.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 251
- Registriert: 14. Apr 2020 11:35
- Wohnort: bei Hamburg
Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4
ich werde es später noch testen, Regierung hat jetzt Hunger
Danke schon mal

Danke schon mal
thnx
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
-
- Beiträge: 251
- Registriert: 14. Apr 2020 11:35
- Wohnort: bei Hamburg
Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4
habe es mal getestet, leider kein erfolg egal wie ich es versuche.
Ist es richtig das nach dem speichern die beiden letzten Zeilen sich immer austauschen ?
Ist es richtig das nach dem speichern die beiden letzten Zeilen sich immer austauschen ?
Code: Alles auswählen
commandTopic: openHAB/message
formatBeforePublish: {"text":%s}
nach dem speichern steht es so im code:
formatBeforePublish: {"text":%s}
commandTopic: openHAB/message
thnx
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4
Die Reihenfolge spielt keine Rolle.
Schau mal mit einem mqtt Sniffer (z.B. MQTT Explorer), ob das Topic überhaupt funktioniert.
Kommt der Befehl von openHAB in MQTT Explorer an?
Wenn Du ein passendes JSON Objekt über MQTT Explorer abschickst, kommt es im Wemos an?
Schau mal mit einem mqtt Sniffer (z.B. MQTT Explorer), ob das Topic überhaupt funktioniert.
Kommt der Befehl von openHAB in MQTT Explorer an?
Wenn Du ein passendes JSON Objekt über MQTT Explorer abschickst, kommt es im Wemos an?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 251
- Registriert: 14. Apr 2020 11:35
- Wohnort: bei Hamburg
Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4
in MQTT FX und MQTT Explorer ist nichts zu sehen.
wie ich das machen muß weiß ich leider nicht sorry, nutze MQTT FX nur um die Topics auszulesen.Wenn Du ein passendes JSON Objekt über MQTT Explorer abschickst, kommt es im Wemos an?
thnx
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
-
- Beiträge: 251
- Registriert: 14. Apr 2020 11:35
- Wohnort: bei Hamburg
Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4
Auszug aus dem Log
Code: Alles auswählen
2023-08-19 00:41:13.608 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Display20x4_Text' changed from {"Rule3":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":134,"Free":377,"Rules":"ON mqtt#connected DO Subscribe DruckerProgress, openHAB/message, text ENDON ON Event#DruckerProgress DO DisplayText[l3c1]%value% ENDON"}} to {"DisplayText":"[l1c1]Temp 32.5~dfC"}
Code: Alles auswählen
2023-08-19 00:39:53.559 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Display20x4_Text' changed from {"DisplayText":"[l2c1]Feuchte 59.4 %"} to {"DisplayText":"[l1c1]Temp 32.3~dfC"}
2023-08-19 00:39:53.608 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Display20x4_Text' changed from {"DisplayText":"[l1c1]Temp 32.3~dfC"} to {"DisplayText":"[l2c1]Feuchte 59.4 %"}
thnx
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4
MQTT.fx kann auch Payloads senden. Das gehört schon zu den Grundlagen und ist nicht weiter schwer. Ein passender JSON String z.B.:
Und den musst Du mit MQTT.fx an das Topic openHAB/message senden.
Die erste Logzeile aus openHAB enthält ja die komplette Tasmota Rule, so kann das nicht funktionieren.
Du musst die Tasmota Rule über Tasmota im Wemos D1 speichern, so wie Du die beiden anderen Rules auch dort gespeichert hast, damit Luftfeuchte und Temperatur angezeigt werden. Der Wemos muss die Daten hier aktiv abonnieren (das ist jeweils der erste Teil der Rule) und im weiteren Verlauf empfangene Daten auf das Display bringen (das ist jeweils der zweite Teil der Rule)
Code: Alles auswählen
{"text":"Hallo Welt!"}
Die erste Logzeile aus openHAB enthält ja die komplette Tasmota Rule, so kann das nicht funktionieren.
Du musst die Tasmota Rule über Tasmota im Wemos D1 speichern, so wie Du die beiden anderen Rules auch dort gespeichert hast, damit Luftfeuchte und Temperatur angezeigt werden. Der Wemos muss die Daten hier aktiv abonnieren (das ist jeweils der erste Teil der Rule) und im weiteren Verlauf empfangene Daten auf das Display bringen (das ist jeweils der zweite Teil der Rule)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet