Seite 2 von 2

Re: Wetterdaten vom Deutschen Wetter Dienst

Verfasst: 11. Jun 2023 20:51
von JohnDoe2000
udo1toni hat geschrieben: 11. Jun 2023 19:55 Wie ich befürchtet habe, funktioniert die Deziminute als Zeiteinheit leider nicht.
Ehrlich gesagt ist das aber auch eine saudumme Einteilung.
Dem Programmierer, der das verzapft hat gehört ein kräftiger Tritt in den Allerwertesten.

Deshalb hier die sehr unschöne Lösung (sie aber funktioniert):
...
Die JavaScript Datei teilt die übergebene Zahl durch 10, als Einheit wird min für Minute gesetzt, in der Anzeige dann h für Stunden.

Voraussetzung: http Binding, JSONPATH und JavaScript Transformation Service müssen installiert sein.
Das Zeichen ∩ stammt aus dem Hilfstext zur stateTransformation (das ist das Zeichen für Schnittmenge, welches im Windows Zeichensatz als "Durchschnitt" benannt ist.
Hi,

ja, hat super funktioniert. Danke dafür. Ich hatte tatsächlich Jasonpath und JavaScript noch nicht installiert. Ebenfalls danke für den Hinweis zu dem Zeichen. Das kann ich von einem kleinen N kaum oder gar nicht unterscheiden. Das Zeichen geht mMn gar nicht.

Kannst Du mir sagen wo der Vorteil ggü. der Lösung mit der Regel bei Update und dem teilen durch 10 bzw. 600 darin? Es "fühlt" sich eleganter an aber wo liegt der Vorteil?

Re: Wetterdaten vom Deutschen Wetter Dienst

Verfasst: 11. Jun 2023 21:26
von JohnDoe2000
Ich habe übrigens auch die Umrechnung der Uhrzeit (Sonnenauf/untergang) hinbekommen.

Thing:

Code: Alles auswählen

Type number : SunriseDay1 "SunriseDay1" [ stateTransformation="JSONPATH:$.days[1].sunrise" ]
Item:

Code: Alles auswählen

DateTime	DWDSunriseDay1			"Sonnenaufgang (morgen) [%1$tH:%1$tM]"	<time>		(gDWD)	 {channel="http:url:dwd:SunriseDay1"}
Klappt ohne Probleme. Die Zeiten stimmen auch mit der von der DWD App überein.

Habe ich alles richtig gemacht? Verbesserungsvorschläge?

Re: Wetterdaten vom Deutschen Wetter Dienst

Verfasst: 11. Jun 2023 23:25
von udo1toni
JohnDoe2000 hat geschrieben: 11. Jun 2023 20:51 Ebenfalls danke für den Hinweis zu dem Zeichen. Das kann ich von einem kleinen N kaum oder gar nicht unterscheiden. Das Zeichen geht mMn gar nicht.
Es ist halt das (mathematisch) korrekte Zeichen für die Verknüpfung zweier Transformations. Es ging dem Programmierer dabei vor allem darum, keinerlei Einschränkungen durch irgendwelche anderen verwendeten Zeichen fürchten zu müssen. Der Programmcode nimmt einfach den kompletten Transformationstring und teilt ihn an den ∩ in Teilstrings auf. Die Sache mit dem n gegen ∩ liegt am verwendeten Zeichensatz :) aber Du hast schon recht, man hätte durchaus andere Zeichen verwenden können.
JohnDoe2000 hat geschrieben: 11. Jun 2023 20:51 Kannst Du mir sagen wo der Vorteil ggü. der Lösung mit der Regel bei Update und dem teilen durch 10 bzw. 600 darin?
Generell ist es besser, die benötigten Werte direkt im Item stehen zu haben. Hier benötige ich kein weiteres Item. Die Umrechnung per Rule hingegen erfordert zwingend ein weiteres Item. Die Sache mit dem Teilen durch 10 ist natürlich ein übler Hack :) mein Punkt war ja, ohne weitere Funktionen oder Rules auszukommen, was halt leider bei der dämlichen Wahl des übergebenen Wertes für die Sonnenstunden fehlschlägt - das ist aber nicht openHAB anzulasten, Deziminuten sind einfach keine übliche Einheit. Wäre der Wert in Sekunden oder Minuten, bräuchte es überhaupt kein JS.
Es mag aber durchaus vorkommen, dass man an anderer Stelle einen Wert bekommt, den man durch zehn teilen muss, dann kann man die bereits vorhandene Funktion direkt nutzen, teilen durch 600 ist eher speziell :) und man kann leider beim Aufruf eines Scripts keine Variablen mit übergeben