Spielzeug :)

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

spirit
Beiträge: 25
Registriert: 28. Nov 2019 08:19
Answers: 0

Re: Spielzeug :)

Beitrag von spirit »

Hallo :)

Wie habt ihr es denn gelöst die Werte ohne entsprechende Nachkommastellen bzw. mit vorgegebenen Nachkommastellen darzustellen?

Die übliche Konfiguration im Item funktioniert leider nicht.

Daher kommt es zum scrollen (was wiederum den WAF nicht erfüllt) :D

Hier zum Beispiel die Erzeugung der PV Anlage. 62,44kWh sollen angezeigt werden. Tatsächlich ist der Wert aber viel länger.

Danke!
IMG_4082.jpeg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB 4.2.0 Release Build (openHABian auf Proxmox - Dell Optiplex 7040)

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

Re: Spielzeug :)

Beitrag von udo1toni »

Der Wert mag in openHAB viel länger angezeigt werden, dabei vergisst Du aber vermutlich, dass openHAB Float als Zahlenformat verwendet.
Float kann Werte von ≈-3.4*10^38 bis +3,4*10^38 darstellen, und zwar mit 32 Bit. Es sollte klar sein, dass dieser Wertebereich nur (äußerst) verlustbehaftet abgedeckt werden kann. Float codiert den Wert in Form einer 23 Bit großen Mantisse und einem 8 Bit großen Exponenten (+ 1 Bit Vorzeichen).
Wenn der Wert dann als Dezimalzahl dargestellt werden soll, wird dieser Rundungsfehler gnadenlos übernommen. Das betrifft sogar Ganzzahlen...

Und noch ein weiterer Punkt sollte klar sein: Messwerte müssen... gemessen werden. Energiemessung kann hochpräzise erfolgen - dann kosten die Messgeräte schnell sechsstellig aufwärts plus Labor plus häufige Kalibrierung. Oder man lebt mit etwa 5 % Messfehler (oder mehr...). Bei einer Leistung von 100 Watt wären das also etwa +/- 5 Watt, da sollte spätestens die zweite Nachkommastelle keine Rolle mehr spielen. :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

spirit
Beiträge: 25
Registriert: 28. Nov 2019 08:19
Answers: 0

Re: Spielzeug :)

Beitrag von spirit »

Rundungstoleranzen würde ich natürlich in Kauf nehmen. Bei den PV Anlagen schwankt der Wert ja so oder so innerhalb von Sekunden gern mal ziemlich :)

Ich habe auch schon versucht die Werte (z.B. 3120W) durch 1000 rechnen zu lassen, doch leider kommt dabei dann 3,120000kW raus.
openHAB 4.2.0 Release Build (openHABian auf Proxmox - Dell Optiplex 7040)

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

Re: Spielzeug :)

Beitrag von udo1toni »

Es geht ja nicht darum, den Wert zu teilen, stattdessen willst Du die Anzahl angezeigter (Nachkomma-)stellen begrenzen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

spirit
Beiträge: 25
Registriert: 28. Nov 2019 08:19
Answers: 0

Re: Spielzeug :)

Beitrag von spirit »

Ja genau, nur wie am besten :D
openHAB 4.2.0 Release Build (openHABian auf Proxmox - Dell Optiplex 7040)

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

Re: Spielzeug :)

Beitrag von udo1toni »

Normal wirst Du das nur für das Display machen, in diesem Fall (Ausgabe über AwTrix light) musst Du lediglich sowas machen:

Code: Alles auswählen

String.format("%1.1f",(Item.state as Number).floatValue)
%1 ist der erste übergebene Wert
.1 ist eine Nachkommastelle
f bedeuetet, es handelt sich um einen Float Wert.

Entsprechend muss auch ein Float Wert angeliefert werden :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

spirit
Beiträge: 25
Registriert: 28. Nov 2019 08:19
Answers: 0

Re: Spielzeug :)

Beitrag von spirit »

Genau fürs Display reicht das vollkommen.

Wenn ich das nun in deine Rule einbauen will, komme ich aber leider nicht klar.

So sieht eine der Rules aus. Wie bekomme ich deine Lösung nun mit " + strPower +" zusammen? :)

Vielen Dank schon mal.

Code: Alles auswählen

rule "Awtrix Light Stromertrag PV"
when
    Item Stromerzeugung_PV_Gesamt_Heute_kWh changed // Wert geändert
then
    if(tSend3 !== null)                               // Timervariable gesetzt?
        return;                                      // dann Abbruch

    val strPower = newState.toString                 // hole den Wert als String

    // json Objekt bauen
    val json='{"pos" : 5,"text" : "' + strPower + 'kWh","icon" : 48314,"duration" : 12,"rainbow": false,"color" : "#FFFFFF"}'

    Awtrix_Stromertrag.sendCommand(json)                     // json senden

    tSend3 = createTimer(now.plusSeconds(20), [|      // Zeitsperre aktivieren
        tSend3 = null                                 // Timervariable löschen
    ])
end
openHAB 4.2.0 Release Build (openHABian auf Proxmox - Dell Optiplex 7040)

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

Re: Spielzeug :)

Beitrag von udo1toni »

Was ist Stromerzeugung_PV_Gesamt_Heute_kWh für ein Item (exakt... String? Number? Number:Power? Number:Energy?)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

spirit
Beiträge: 25
Registriert: 28. Nov 2019 08:19
Answers: 0

Re: Spielzeug :)

Beitrag von spirit »

Smartmeter Items:

Code: Alles auswählen

Number             Stromerzeugung_PV_Gesamt_Heute_kWh   "Erzeugung PV-Anlagen Heute [%.2f kWh]"             <energy>
openHAB 4.2.0 Release Build (openHABian auf Proxmox - Dell Optiplex 7040)

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

Re: Spielzeug :)

Beitrag von udo1toni »

Dann so:

Code: Alles auswählen

rule "Awtrix Light Stromertrag PV"
when
    Item Stromerzeugung_PV_Gesamt_Heute_kWh changed // Wert geändert
then
    if(tSend3 !== null)                               // Timervariable gesetzt?
        return;                                      // dann Abbruch

    val strPower = String.format("%.1f",newState as Number)                 // hole den Wert als String

    // json Objekt bauen
    val json='{"pos" : 5,"text" : "' + strPower + 'kWh","icon" : 48314,"duration" : 12,"rainbow": false,"color" : "#FFFFFF"}'

    Awtrix_Stromertrag.sendCommand(json)                     // json senden

    tSend3 = createTimer(now.plusSeconds(20), [|      // Zeitsperre aktivieren
        tSend3 = null                                 // Timervariable löschen
    ])
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten