OWM Item Nachkommastellen

Hier bitte alles rein was Off-topic ist.

Moderatoren: Cyrelian, seppy

Antworten
Subla
Beiträge: 2
Registriert: 17. Okt 2021 16:07

OWM Item Nachkommastellen

Beitrag von Subla »

Hallööööchen zusammen,

das ist mein erster Beitrag hier bzw. generell mein erster Beitrag irgendwo. Meistens finde ich selbst meine Lösungen im Netz. Eigentlich immer… naja bis jetzt. Ich bin so verzweifelt und genervt, dass ich hoffe hier Hilfe zu finden.

Ich habe mich vor einiger Zeit entschschlossen unter OpenHAB 3 eine eigene Steuerzentrale zu realisieren um mehre Komponenten miteinander zu verbinden. Wie die meisten halt :D . Immer wenn ich etwas Zeit habe bastelte ich dran herrum. Ich nutze hauptsächlich das HabPanel. Relativ am Anfang wollte ich ein Wetter-Widget darstellen. Dachte mir einfach ein Customer-Widget zu nehmen. Pustekuchen.. die meistens funktionieren nicht mit OH3. Oder ich war einfach zu blöd dazu. Naja wie auch immer… Nach einer langen Suche habe ich eine einfache HTML Variante gefunden und habe die etwas angepasst. Zugegeben hatte ich vorher null Ahnung und lerne noch dazu.

NUN ZU MEINER FRAGE:

Ich versuche die ganze Zeit die Werte die von OWM ausgegeben werden so zu formatieren, dass ich die nachkommastellen selbst bestimmen kann. Wenn ich das Item als dummy anlege und im Format Feld [%.1f] Eingebe funktioniert es. Auch alle anderen Varianten im Netz habe ich versucht aber ich kriege es einfach nicht hin. Ich hoffe ihr könnt mir helfen. Hier ein Ausschnitt von Anfang bis zur aktuellen Temperatur Ausgabe:

<style>
.DayListRowBorder {
border-right: 1px solid black;
border-color: #ffffff;
text-align: center;
}

.DayListRowNoBorder {
text-align: center;
}

.TempMax {
font-style: bold;
}

.TempMin {
font-style: ;
color: ;
}

.TempCurrent {
font-size: ;
}
</style>

<table border=0 width="100%">
<tr>
<td valign="top" align="left">


<img src="http://123.160.999.99:8080/static/image ... ').replace(' ','-') | lowercase }}.png" width="100pt" height="100" />
<span style="font-size: 1.3vw">{{itemValue('OneCallAPIWeatherandForecast_Current_Condition')}} </span>
</td>


<td valign="top" align="right">
<span class="TempCurrent" style="font-size: 1.8vw">{{itemValue('OneCallAPIWeatherandForecast_Current_Temperature')}} </span><br>


Der Wert wird durch OWM mit zwei nachkommastellen angegeben, wenn ich in Items die State-Description im Pattern-Feld ändere zeigt er mir die Änderung in den items an aber übermittelt trotzdem den Wert unverändert. Schlimmer ist es bei den Windgeschwindigkeiten, die haben drei nachkommastellen.

Ich bedanke mich für jede Hilfe und Hinweis schon mal im Vorfeld.
Zuletzt geändert von Subla am 17. Okt 2021 21:09, insgesamt 2-mal geändert.

Benutzeravatar
sihui
Beiträge: 1520
Registriert: 11. Apr 2018 19:03
Answers: 14

Re: OWM Item Nachkommastellen

Beitrag von sihui »

Subla hat geschrieben: 17. Okt 2021 16:57 Ich bedanke mich für jede Hilfe und Hinweis schon mal im Vorfeld.
Eine Temperatur mit einer Nachkommastelle würde man wie folgt realisieren:

Code: Alles auswählen

{{'%.1f' | sprintf:itemValue('Temperature')}}°C
temp.jpg
Den Rest kannst du daraus bestimmt ableiten, viel Erfolg.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Debian Buster über VirtualBox VM.

Subla
Beiträge: 2
Registriert: 17. Okt 2021 16:07

Re: OWM Item Nachkommastellen

Beitrag von Subla »

Hallo sihui,

erst mal vielen Dank für deine Hilfsbereitschaft und für die Zeit die du dir genommen hast um auf meine Thread zu antwortet. In der Tat hatte ich auch diesen Befehl im Netz gefunden gehabt. Doch bei der Eingabe brach dann immer alles zusammen und die Darstellung war nur noch der reine Quelltext.
Durch weitere suchen im Netz bin ich auf einen Hinweis gestoßen. Und zwar hatte noch jemand das selbe Problem wie ich und ein anderer User antwortete darauf, dass sein itemwert keine reine Zahl sei sondern noch die Einheit beinhaltet. Daraufhin schaute ich genauer hin bei den items und stellte fest, dass der Wert zwar als number angegeben wird aber mit Temperatur zusammen. Sprich OWM, insofern man das nicht ändert, belegt automatisch die items mit der dazugehörigen Einheit. Nachdem ich die Items als reine Zahl deklariert hatte und deinen Befehl eingefügt habe, hat nun alles funktioniert.

Vielen lieben Dank noch mal :) das hat mich viel Zeit und nerven gekostet, dabei war es nur eine kleine Änderung :roll: .

Benutzeravatar
peter-pan
Beiträge: 1841
Registriert: 28. Nov 2018 12:03
Answers: 18
Wohnort: Schwäbisch Gmünd

Re: OWM Item Nachkommastellen

Beitrag von peter-pan »

Subla hat geschrieben: 20. Okt 2021 00:04 Sprich OWM, insofern man das nicht ändert, belegt automatisch die items mit der dazugehörigen Einheit
Eine kleine Anmerkung hierzu am Rande(Ohne klugscheißern zu wollen).
OWM ist eigentlich die Abkürzung für OpenWeatherMap.
Das was du eigentlich meinst, ist allgemein bekannt als UoM -> Units of Measurement in openHAB.
Zuletzt geändert von peter-pan am 17. Nov 2021 12:23, insgesamt 1-mal geändert.

Benutzeravatar
peter-pan
Beiträge: 1841
Registriert: 28. Nov 2018 12:03
Answers: 18
Wohnort: Schwäbisch Gmünd

Re: OWM Item Nachkommastellen

Beitrag von peter-pan »

...Es hat mir keine Ruhe gelassen. Deshalb habe ich ein bisschen experimentiert. Allerdings mit den Standard-Widgets aus OH3.

Screenshot:
temp.jpg
YamL-Code des Widgets:

Code: Alles auswählen

component: oh-label-cell
config:
  item: OneCallAPIweatherandforecast_Current_Temperature
  title: OWM - Aussentemperatur
  subtitle: =items.OneCallAPIweatherandforecast_Current_Temperature.state + " mit
    '.state '" +" - " +
    items.OneCallAPIweatherandforecast_Current_Temperature.displayState + " mit
    '.displayState'"
  footer: =Number.parseFloat(items.OneCallAPIweatherandforecast_Current_Temperature.state).toFixed(1)  +
    " ist das kalt"
  trendItem: OneCallAPIweatherandforecast_Current_Temperature
slots: null
Item-Definition (Text-File):

Code: Alles auswählen

Number:Temperature OneCallAPIweatherandforecast_Current_Temperature "Outdoor Temperature [%.1f %unit%]" <Temperature>   (gOCact)         ["Point"]  { channel="openweathermap:onecall:bridge:local:current#temperature" }                  
Im Normalfall, wird die "Pattern-Definition" im OH-Widget umgesetzt(mit dem UoM). Man kann aber auch davon abweichen (.state oder .displayState).

Oder mit einer Eigendefinition (=Number.parseFloat(items.OneCallAPIweatherandforecast_Current_Temperature.state).toFixed(1) + " ist das kalt"), in der das UoM eliminiert wird.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten