Sensordaten konvertieren
-
- Beiträge: 6
- Registriert: 20. Dez 2023 11:28
Re: Sensordaten konvertieren
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. 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: Hätte jemand einen Tip wo das Problem zu suchen ist?
Vielen Dank erstmal für alle die sich das ansehen....
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. 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: 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.
- udo1toni
- Beiträge: 15244
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Sensordaten konvertieren
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: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
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

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
[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
-
- Beiträge: 296
- Registriert: 22. Sep 2018 10:38
Re: Sensordaten konvertieren
...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
-
- Beiträge: 489
- Registriert: 30. Apr 2021 13:13
Re: Sensordaten konvertieren
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°...
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.
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°...
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.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Beiträge: 6
- Registriert: 20. Dez 2023 11:28
Re: Sensordaten konvertieren
Vielen Dank für Die tollen Hinweise, ich habe ab morgen Urlaub
und werde mich hinsetzen und das ganze ausprobieren.
Vielen Dank
und werde mich hinsetzen und das ganze ausprobieren.
Vielen Dank
-
- Beiträge: 6
- Registriert: 20. Dez 2023 11:28
Re: Sensordaten konvertieren
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.
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.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Beiträge: 6
- Registriert: 20. Dez 2023 11:28
Re: Sensordaten konvertieren
Hier noch der Inhalt der Datei:
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Beiträge: 296
- Registriert: 22. Sep 2018 10:38
Re: Sensordaten konvertieren
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.
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
-
- Beiträge: 6
- Registriert: 20. Dez 2023 11:28
Re: Sensordaten konvertieren
Hey, du bist spitze, das war es.
Ich habe es umgestellt und sofort hat es funktioniert.
Vielen Dank an alle Beteiligten.
Ich habe es umgestellt und sofort hat es funktioniert.
Vielen Dank an alle Beteiligten.
-
- Beiträge: 6
- Registriert: 20. Dez 2023 11:28
Re: Sensordaten konvertieren
Noch eine kleine Ansicht meiner Wetterwerte.
Da macht sich richtige Weihnachtsstimmung breit.
Vielen Dank nochmal
Da macht sich richtige Weihnachtsstimmung breit.
Vielen Dank nochmal
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.