Sensordaten konvertieren

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

cromatrom
Beiträge: 6
Registriert: 20. Dez 2023 11:28
Answers: 0

Re: Sensordaten konvertieren

Beitrag von cromatrom »

Hallo, ich habe ein ähnlich gelagertes Problem, ebenfalls mit Windrichtung.
Ich habe meine Wetterstation erfolgreich eingebunden und auch ein Item Windrichtung welches
aber lediglich die Gradzahl der Windrichtung bezogen auf Norden liefert.
Ich habe nun versucht mit Blockly ein Script zur Konvertierung in Nord,Sued,West und Ost zu
bauen.
WindrichtungWort.png
Was mir auffällt ist, dass ich dem Item WindrichtungWort einen Command sende wobei das doch eher ein
Status oder ein Wert sein sollte?
Ich habe das Item vorher einfach angelegt.Hier das zugehörige Snippet:
WindrichtungWortItem2.png
Hätte jemand einen Tip wo das Problem zu suchen ist?

Vielen Dank erstmal für alle die sich das ansehen....
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: Sensordaten konvertieren

Beitrag von udo1toni »

Herzlich willkommen im openHAB Forum!

Du denkst zu kompliziert...

Es gibt für die gewünschte Funktion (Gradzahl in Himmelsrichtung umsetzen) einen viel einfacheren Weg, und zwar die Scale Transformation.
Du musst natürlich dazu die Scale Transformation installieren :) und dann eine passende Scale anlegen.
In openHAB4 zunächst über Main UI->Administration->Einstellungen->Transformations->Add (das weiße plus im blauen Kreis rechts unten)->Unique ID vergeben (z.B. windrichtung), Label vergeben (z.B. Windrichtung), Language einstellen (z.B. de), Transformation Type auswählen (SCALE) -> CREATE.
Es wird ein Texteditor geöffnet, in dem Du die Scale eintragen kannst:

Code: Alles auswählen

[0..45[=Nord
[45..135[=Ost
[135..225[=Süd
[225..315[=West
[315..360]=Nord
Die Schreibweise bedeutet:
[0..45[ -> von 0 einschließlich bis 45 ausschließlich, also 0 - 44.999...
Man könnte auch mit [0..45] die 45 einschließen, aber Achtung: bei der Definition muss es für jeden möglichen Wert eine eindeutige Zuordnung geben, man wird also immer Teile haben, die den Randwert ausschließen.
Man kann natürlich auch den linken Wert ausschließen... ]0..45[ beinhaltet weder 0 noch 45, aber alles dazwischen.
Die Liste ist beliebig fein erstellbar, üblich wäre z.B. Nord-Nordwest, also sechzehn Unterteilungen statt wie oben vier (!)
Und oben in der Liste stehen ja fünf Zeilen, aber eben nur vier verschiedene Ergebnisse, was daran liegt, dass Norden halt sowohl im Maximalbereich als auch im Minimalbereich ausgeliefert werden muss, und [315..45] ist NICHT erlaubt, entsprechend braucht es hier also immer eine Zeile mehr (17 für eine feingegliederte Ausgabe der Windrichtung)

Sobald Du die Transformation gespeichert hast, kannst Du über die passende UID darauf zugreifen, hier also z.B. config:scale:windrichtung:de, und das trägst Du direkt im Itemlink ein. Als Profile wählst Du SCALE aus, als "Dateiname" trägst Du direkt die UID ein. Alternativ kann man die Scale halt auch im Dateisystem anlegen (bis OH4 war das die einzige Möglichkeit), die Datei muss dann in $OPENHAB_CONF/transform/ abgelegt werden, mit der Endung .scale, also z.B. /etc/openhab/transform/windrichtung_de.scale, wobei der Dateiname bis auf die Endung natürlich beliebig ist.
Wenn man die Transformation im Profile vornimmt, muss das Zielitem natürlich ein String Item sein, weil das Ergebnis ja ein String ist.
Du kannst die Transformation aber auch rein im Label bzw. des Display Status verwenden, dann wird das Item als Number:Angle Item angelegt und lediglich die Ausgabe erfolgt als transformierter Text. Die Transformation kann z.B. auch innerhalb eines Widgets mit angegeben werden :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

nw378
Beiträge: 296
Registriert: 22. Sep 2018 10:38
Answers: 5

Re: Sensordaten konvertieren

Beitrag von nw378 »

...und falls Du wie Udo angemerkt hast, das ganze feiner unterteilen willst, und nicht alle Winkel ausrechnen willst:

Code: Alles auswählen

[..22.5[ = Nord ↓
[22.5..67.5[ = Nord-Ost ↙
[67.5..112.5[  = Ost ←
[112.5..157.5[ = Süd-Ost ↖
[157.5..202.5[ = Süd ↑
[202.5..247.5[ = Süd-West ↗
[247.5..292.5[ = West →
[292.5..337.5[ = Nord-West ↘
[337.5..]  = Nord ↓
openHAB 4.3.3 @ RPi 4 / SSD - InfluxDB2 und Grafana @ Synology Docker - KNX

Harka
Beiträge: 489
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Sensordaten konvertieren

Beitrag von Harka »

Moin,
bin zu langsam ;)
Der Vollständig halber hier noch per Blockly (Scale Transformation ist effektiver).
Ich sah mehrere Fehler:
1.) KEINE Vergleiche von Zahlenwerten mit "Text". Das geht in die Hose.
2.) den Wert von "Wetterstation_Windrichtung" lieber mit get_numeric_state auslesen und, weil es mehrfach benötigt wird, in einer Variable zwischenspeichern.
3.) Nord geht von 315° bis 45°...
ForumWinkel.png
E: zum einen hab ich hier Ost und West vertauscht und zum anderen ist mir noch eingefallen das ich an anderer Stelle (vor >12 Jahren) schon mal mit Winkeln gearbeitet habe. Ist doch gleich viel kompakter und lässt sich auch relativ einfach auf 8 Himmelsrichtungen erweitern.
ForumWinkel2.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

cromatrom
Beiträge: 6
Registriert: 20. Dez 2023 11:28
Answers: 0

Re: Sensordaten konvertieren

Beitrag von cromatrom »

Vielen Dank für Die tollen Hinweise, ich habe ab morgen Urlaub
und werde mich hinsetzen und das ganze ausprobieren.
Vielen Dank

cromatrom
Beiträge: 6
Registriert: 20. Dez 2023 11:28
Answers: 0

Re: Sensordaten konvertieren

Beitrag von cromatrom »

Hallo ich habe mich heute hingesetzt und es gemacht. Ich habe mich vor allem an die
Antwort von udo1toni gehalten. Leider funktioniert das ganze BEI MIR so nicht. Ich habe es sowohl
bei der Windrichtung als auch bei der Windgeschwindigkeit ausprobiert (Transformation
entsprechend angepasst Lau- Windig_Stürmisch). Während der Link mit dem Wert
anstandslos funktioniert wird mir beim ItemLink jeweils nur NULL ausgegeben auch
wenn sich der zugrunde liegende Wert ändert. Ich habe auch mal die ganze Wetterstation
rausgenommen und neu reingemacht mit allen Itemlinks neu etc. Service habe ich auch
mal neu gestartet. Ich hänge mal ein paar snippets an, damit der Fehler evtl.
auffällt. Ich habe auch mal die Datei von nw378 in die Datei kopiert. Selbes
Ergebnis.
Wenn ihr bitte mal drüber schauen könntet, ich glaube nicht das da noch ein
riesen Problem ist.
KonvertierenItemTransfom1.png
KonvertierenItemLink2.png
KonvertierenItemLink.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

cromatrom
Beiträge: 6
Registriert: 20. Dez 2023 11:28
Answers: 0

Re: Sensordaten konvertieren

Beitrag von cromatrom »

Hier noch der Inhalt der Datei:
KonvertierenItemTransfom2.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

nw378
Beiträge: 296
Registriert: 22. Sep 2018 10:38
Answers: 5

Re: Sensordaten konvertieren

Beitrag von nw378 »

Dein Item Wetterstation_WindrichtungWORT muss ein String-Item sein, du hast es als Number:Angle deklariert.

Und: dein Dateiname mit den Doppelpunkten wird vermutlich auch nicht funktionieren, nimm lieber Unterstriche.
openHAB 4.3.3 @ RPi 4 / SSD - InfluxDB2 und Grafana @ Synology Docker - KNX

cromatrom
Beiträge: 6
Registriert: 20. Dez 2023 11:28
Answers: 0

Re: Sensordaten konvertieren

Beitrag von cromatrom »

Hey, du bist spitze, das war es.
Ich habe es umgestellt und sofort hat es funktioniert.
Vielen Dank an alle Beteiligten.

cromatrom
Beiträge: 6
Registriert: 20. Dez 2023 11:28
Answers: 0

Re: Sensordaten konvertieren

Beitrag von cromatrom »

Noch eine kleine Ansicht meiner Wetterwerte.
Da macht sich richtige Weihnachtsstimmung breit.

Vielen Dank nochmal
Wetterstation.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten