openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Locke
Beiträge: 251
Registriert: 14. Apr 2020 11:35
Answers: 3
Wohnort: bei Hamburg

openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4

Beitrag von Locke »

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
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)

Benutzeravatar
udo1toni
Beiträge: 15246
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4

Beitrag von udo1toni »

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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Locke
Beiträge: 251
Registriert: 14. Apr 2020 11:35
Answers: 3
Wohnort: bei Hamburg

Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4

Beitrag von Locke »

udo1toni hat geschrieben: 18. Aug 2023 17:21
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
Das funktioniert auch super, allerdings schaffe ich es nicht über Subscribe mir die Daten von octoPrint zu holen, da dort keine tele/ gesendet wird.

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}
Die Topics in MQTT FX von octoPrint sind:

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
In opeHab ist der Fortschritt so angelegt und funktioniert auch:

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 dachte es müßte doch auch gehen mir die vorhandenen Dat von openHab an den Wemos 2 zu senden in den Zeilen 3 und 4

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)

Benutzeravatar
udo1toni
Beiträge: 15246
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4

Beitrag von udo1toni »

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:

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
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:

Code: Alles auswählen

Rule3 ON mqtt#connected DO Subscribe DruckerProgress, openHAB/message, text ENDON ON Event#DruckerProgress DO DisplayText[l3c1]%value% ENDON
Nun musst Du in openHAB einen ausgehenden Channel definieren:

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}
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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Locke
Beiträge: 251
Registriert: 14. Apr 2020 11:35
Answers: 3
Wohnort: bei Hamburg

Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4

Beitrag von Locke »

ich werde es später noch testen, Regierung hat jetzt Hunger :D

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)

Locke
Beiträge: 251
Registriert: 14. Apr 2020 11:35
Answers: 3
Wohnort: bei Hamburg

Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4

Beitrag von Locke »

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 ?

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)

Benutzeravatar
udo1toni
Beiträge: 15246
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4

Beitrag von udo1toni »

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?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Locke
Beiträge: 251
Registriert: 14. Apr 2020 11:35
Answers: 3
Wohnort: bei Hamburg

Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4

Beitrag von Locke »

in MQTT FX und MQTT Explorer ist nichts zu sehen.
Wenn Du ein passendes JSON Objekt über MQTT Explorer abschickst, kommt es im Wemos an?
wie ich das machen muß weiß ich leider nicht sorry, nutze MQTT FX nur um die Topics auszulesen.
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)

Locke
Beiträge: 251
Registriert: 14. Apr 2020 11:35
Answers: 3
Wohnort: bei Hamburg

Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4

Beitrag von Locke »

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)

Benutzeravatar
udo1toni
Beiträge: 15246
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: openhab 3 Regel zum Daten senden an Wemos D1 Mini mit i2c Display 20x4

Beitrag von udo1toni »

MQTT.fx kann auch Payloads senden. Das gehört schon zu den Grundlagen und ist nicht weiter schwer. Ein passender JSON String z.B.:

Code: Alles auswählen

{"text":"Hallo Welt!"}
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)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten