MQTT Datum als Datum in OpenHab

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

djd1983
Beiträge: 18
Registriert: 7. Dez 2023 09:38
Answers: 0

MQTT Datum als Datum in OpenHab

Beitrag von djd1983 »

Hallo,
mein laufender funktionierender MQTT Server wird unter anderem vom EBusd Adapter mit Daten gefüttert. Darunter existiert auch ein Datum/Zeit topic im Format

HH:mm:SS;DD.MM.YYYY

Ich habe Interesse daran dieses Zeitsignal als Date/Time Value, als Item, natürlich untergeordnet einem Channl dem System hinzuzufügen. Ein Thing mit diversen anderen BroadcastDaten habe ich bereits erstellt und ist auch online. Darunter erstelle ich ein Channel und werde hierbei schon gefragt, welche Art. Nach jetzigem Kentnisstand ist es lediglich möglich das Datum als TextValue anzeigen zu lassen. Wähle ich ein Channel aus als Date/Time Value, wird nichts angezeigt. Gibt es dort die Möglichkeit im Rahmen von Transformierungen das Datum richtig anzeigen zu lassen?

VG

Sepp

Harka
Beiträge: 310
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: MQTT Datum als Datum in OpenHab

Beitrag von Harka »

Moin,
eine Variante ist via Javascript-Transformation

Code: Alles auswählen

(function (str) {
	var sEingang = str.split(';');
	var sDatum = sEingang.slice(-1)[0].split('.');
	var sAusgabe = [sDatum.pop(),'-',sDatum.pop(),'-',sDatum.pop(),'T',sEingang[0]].join('');
	return sAusgabe;
})(input)
JS (ECMAScript 262 Edition 11) muss installiert sein und Transformationen lassen sich ab OH 4 auch über die UI einrichten. Wenn Du nun ein neues Item vom Typ DateTime anlegst unter Profil ECMA und das Script unter "Thing To Item Transformation" wählen.
Hat so bei mir für 21:02:05;23.01.2024 -> 2024-01-23T21:02:05.000+0100 geliefert

djd1983
Beiträge: 18
Registriert: 7. Dez 2023 09:38
Answers: 0

Re: MQTT Datum als Datum in OpenHab

Beitrag von djd1983 »

Hallo, danke Dir für die ersten Tips. Habe, soweit ich das begriffen habe, alles soweit befolgt. Komme aber noch nicht zu meinem Ergebnis. Insbesondere fehlt mir noch ein bisschen Basic KnowHow. Folgendes habe ich jetzt gemacht.

- Unter Scripts habe ich ein ECMA Script erstellt und deinen Code kopiert und abgespeichert.
- Channel als TextValue erstellt und dort das MQTT-Topic eingegeben
- Item erstellt, als Type "DateTime" ausgewählt
- Unter Pfofile SCRIPT ECMAScript (ECMAScript 262 Edition 11) ausgewählt.
- Erste Zweifel kamen mir beim nächsten Punkt. Unter den Profile Configuration "Thing To Item Transformation" kann ich kein Script auswählen. Hier muss ich freitextlich was eingeben. Habe hier den Namen des Scrpits ohne Endung und mit der Endung .js eingegeben. Leider klappt das so nicht.

Übersehe ich da etwas?

Gruß

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

Re: MQTT Datum als Datum in OpenHab

Beitrag von udo1toni »

Es handelt sich nicht um ein Script (ja, schon, aber eben nicht im openHAB-Sinn) ;)

Vielmehr handelt es sich um eine Transformation.
Entsprechend musst Du das Script (...! und es ist doch ein Script...!) in dem Unterbereich Transformations anlegen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

djd1983
Beiträge: 18
Registriert: 7. Dez 2023 09:38
Answers: 0

Re: MQTT Datum als Datum in OpenHab

Beitrag von djd1983 »

Ok ich denke ich bin einer Lösung auf der Spur... Habe jetzt einen etwas anderen Ansatz. Es wird ein Channel mit TextValue erstellt. Hier wird das MQTT Topic eingegeben. Weiter erstelle ich ein Item im DateTime Format. hier wähle ich jetzt kein -kein Script- aus ... (was in wirklichkeit kein Script ist, aber irgendwie doch) sondern gehe auf die Auswahl "Zeitstempel bei Aktualisierung" oder "Zeitstempel bei Änderung". Dann wird die Uhrzeit in dem auf dem Bild zu sehenden Format schonmal angezeigt. Da aber mein MQTT Server die Zeit nur einmal in der Minute aktualisiert, weil es dieser auch nur einmal in der Minute das Zeitsignal empfängt, laufen die Sekunden nicht mit.

Gibt es da die Möglichkeit eine Automatik zu hinterlegen, wo die Sekunden selbstständig gezählt werden? Ich wette, da muss ein Script her :D

Über Sinnn und Zweck der ganzen Sache brauchen wir uns nicht zu unterhalten. Dass es (vieeel) einfacher geht weiß ich. Aber irgendwie verbeißt man sich dann doch und möchte es gerne ausreizen ... Danke euch nochmal.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Harka
Beiträge: 310
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: MQTT Datum als Datum in OpenHab

Beitrag von Harka »

Hi,
zur Transformation - diese findest Du unter Settings zwischen Pages und Rules. Dort kannst Du mit (+) eine neue erstellen. Name (und ggf. auch UID) vergeben z.B. StringToDatetimeEbus und JS auswählen. Den dort vorgelegten Code ersetzt Du durch den von oben. Nach dem speichern wird Dir beim nächsten mal unter "Thing To Item Transformation" dieses zur Auswahl angeboten.

Die von Dir jetzt gewählten Zeitstempel kommen imho nicht vom MQTT-Broker sondern von OH. Was meinst Du mit Sekunden zählen?

djd1983
Beiträge: 18
Registriert: 7. Dez 2023 09:38
Answers: 0

Re: MQTT Datum als Datum in OpenHab

Beitrag von djd1983 »

Harka hat geschrieben: 24. Jan 2024 16:56 diese findest Du unter Settings zwischen Pages und Rules
Diese Angabe hat mir noch gefehlt. Kannte ich noch nicht. Das meinte ich auch mit Basic Knowledge. :)
Harka hat geschrieben: 24. Jan 2024 16:56 Die von Dir jetzt gewählten Zeitstempel kommen imho nicht vom MQTT-Broker sondern von OH
Un ich hab gedacht es wäre ein Fortschritt in meiner manipulier-/rumprobierphase .... :oops:
Harka hat geschrieben: 24. Jan 2024 16:56 Was meinst Du mit Sekunden zählen?
Dein Script konnte ich erfolgreich anwenden. Jetzt habe ich auf meiner Übersichtsseite ein Label erzeugt, wo ich dieses von mir so toll angepriesene ZeitItem als Zeitangabe eingebunden habe. Die Sekunden laufen da aber nicht mit. Die Zeit wird lediglich nur jede Minute einmal aktualisiert. Wäre das Anzeigen der aktellen Sekunde möglich?

Harka
Beiträge: 310
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: MQTT Datum als Datum in OpenHab

Beitrag von Harka »

Das ist ein Zeitstempel der zeigt wann das letzte mal Daten vom Ebus eingegangen sind. Für eine Uhr mit laufender Sekundenanzeige in der Übersichtseite nehme ich Clock-Card. Dafür Add_Column, + und Digital_Clock_Card

djd1983
Beiträge: 18
Registriert: 7. Dez 2023 09:38
Answers: 0

Re: MQTT Datum als Datum in OpenHab

Beitrag von djd1983 »

Harka hat geschrieben: 24. Jan 2024 17:40 Das ist ein Zeitstempel der zeigt wann das letzte mal Daten vom Ebus eingegangen sind. Für eine Uhr mit laufender Sekundenanzeige in der Übersichtseite nehme ich Clock-Card. Dafür Add_Column, + und Digital_Clock_Card
Besten Dank für das Script. Hast mir weiter geholfen. :)

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

Re: MQTT Datum als Datum in OpenHab

Beitrag von udo1toni »

Ich möchte noch mal darauf hinweisen, dass man in openHAB eine ganze Menge DateTime Items haben kann und alle zeigen unterschiedliche Zeiten und Daten an (und alle sind sie korrekt...)

Wenn es um die (aktuelle) Uhrzeit geht, dann gibt es nur eine "korrekte" Quelle, selbst wenn man diverse System hat, welche die Uhrzeit bereitstellen, und das ist das ntp Binding. :) Und nein, das hat nichts mit der Systemzeit zu tun, die muss man separat über einen eigenen ntp Client stellen. Das ntp Binding bringt die Uhrzeit (und das Datum) für wählbare Standorte auf den openHAB Bus, von dem aus man sie dann anzeigen lassen kann.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten