Betriebsstundenzähler auf Number:Time umstellen
- udo1toni
- Beiträge: 15243
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Betriebsstundenzähler auf Number:Time umstellen
Du rechnest allerdings nicht mit Einheiten, sondern entfernst die Einheit (mit dem .doubleValue). Es ging ja darum, explizit mit Einheiten zu rechnen...
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: Betriebsstundenzähler auf Number:Time umstellen
Das ist aber auch verzwickt....
Wobei das Teilen durch 3600000 (respektive 3600, je nachdem, ob man in Millis oder in Sekunden rechnet) und ein "h" dranoperieren ja kein wirklich smartes Arbeiten mit UoM ist.
Nächster Ansatz:
.items:
.rules:
So geht's. Das Item Sonne_delta wird in Sekunden gefüttert (allerdings ist der postUpdate Wert auch ohne Einheit, just saying...).
Sonnen_std arbeitet in Stunden.
Hierbei stört mich aber, dass ich mit einem weiteren Item arbeiten muss.
Denn ich habe irgendwo mal aufgeschnappt, dass man innerhalb von rules nur mit Variablen rechnen soll, da openHAB Items ggf. mal zeitversetzt speichert. Damit stünde der aktuelle Wert bei der nächsten Code-Zeile nicht korrekt zur Verfügung.
Schöner wäre ja:
aber dann erhalte ich folgende Fehlermeldung:
Wobei das Teilen durch 3600000 (respektive 3600, je nachdem, ob man in Millis oder in Sekunden rechnet) und ein "h" dranoperieren ja kein wirklich smartes Arbeiten mit UoM ist.
Nächster Ansatz:
.items:
Code: Alles auswählen
Number:Time Sonnen_std "Sonnenstunden" {unit="h", stateDescription=""[pattern="%.3f h"]}
Number:Time Sonne_delta {unit="s"}
Code: Alles auswählen
var long lStart = now.toEpochSecond
rule "Sonnenstunden"
when Item Sonne changed then
if (Sonne.state == ON) lStart = now.toEpochSecond
else if (Sonne.state == OFF) {
if(previousState == NULL) return;
Sonne_delta.postUpdate(now.toEpochSecond - lStart)
Sonnen_std.postUpdate(((Sonnen_std.state as QuantityType<?>) + (Sonne_delta.state as QuantityType<?>)).toString)}
end
Sonnen_std arbeitet in Stunden.
Hierbei stört mich aber, dass ich mit einem weiteren Item arbeiten muss.
Denn ich habe irgendwo mal aufgeschnappt, dass man innerhalb von rules nur mit Variablen rechnen soll, da openHAB Items ggf. mal zeitversetzt speichert. Damit stünde der aktuelle Wert bei der nächsten Code-Zeile nicht korrekt zur Verfügung.
Schöner wäre ja:
Code: Alles auswählen
var Sonnen_delta = 0|s as QuantityType<?>
Sonnen_delta = (now.toEpochSecond - lStart)
Code: Alles auswählen
Type mismatch: cannot convert from long to QuantityType<?>
openHAB 4.3.3 @ RPi 4 / SSD - InfluxDB2 und Grafana @ Synology Docker - KNX
- udo1toni
- Beiträge: 15243
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Betriebsstundenzähler auf Number:Time umstellen
Ja, das stimmt halt noch nicht...nw378 hat geschrieben: ↑14. Okt 2023 11:04 Schöner wäre ja:aber dann erhalte ich folgende Fehlermeldung:Code: Alles auswählen
var Sonnen_delta = 0|s as QuantityType<?> Sonnen_delta = (now.toEpochSecond - lStart)
Code: Alles auswählen
Type mismatch: cannot convert from long to QuantityType<?>
Nächste Idee:
Code: Alles auswählen
var Sonnen_delta = new QuantityType<?>((now.toEpochSecond - lStart)|s)
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: Betriebsstundenzähler auf Number:Time umstellen
Leider nein, hatte ich bereits probiert. Ist ein "mismatch".
Genauso wie
Das scheint aber am Datentyp zu liegen, mit Energy klappt's nämlich (macht hier keinen Sinn, nur zu Versuchszwecken):
Ist jetzt aber halb so wild, ich bleibe zunächst bei der double-Lösung. Vllt. kommt ja bei OH 4.2 o.ä. mal ein QuantityType<Time> dazu.
Genauso wie
Code: Alles auswählen
var Sonnen_delta = new QuantityType<?>((now.toEpochSecond - lStart).toString +" s")
Code: Alles auswählen
var Sonnen_delta = new QuantityType<Energy>((now.toEpochSecond - lStart).toString +" kWh")
openHAB 4.3.3 @ RPi 4 / SSD - InfluxDB2 und Grafana @ Synology Docker - KNX
-
- Beiträge: 110
- Registriert: 7. Mai 2021 19:11
Re: Betriebsstundenzähler auf Number:Time umstellen
Hey,
Danke für Eure Antworten.
Bin leider noch nicht dazu gekommen das zu testen.
Meld mich sobald ich es testen konnte.
Danke für Eure Antworten.
Bin leider noch nicht dazu gekommen das zu testen.
Meld mich sobald ich es testen konnte.
- udo1toni
- Beiträge: 15243
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Betriebsstundenzähler auf Number:Time umstellen
Der Witz ist, es gibt ja die Einheit, es scheint nur, dass es an dieser Stelle etwas hakt. IC hhabe bei mir aber auch schon festgestellt, dass z.B. y als Größe auch nicht richtig funktioniert.
Eventuell müsste man mal im englischen Forum nachfragen...
Eventuell müsste man mal im englischen Forum nachfragen...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 110
- Registriert: 7. Mai 2021 19:11
Re: Betriebsstundenzähler auf Number:Time umstellen
Hallo zusammen,
ich bin jetzt auch mal dazugekommen das einzubauen. Funktioniert soweit. Danke.
Wenn ich mal etwas Zeit habe werde ich vielleicht mal im englischen Forum nachfragen.
ich bin jetzt auch mal dazugekommen das einzubauen. Funktioniert soweit. Danke.
Wenn ich mal etwas Zeit habe werde ich vielleicht mal im englischen Forum nachfragen.