Betriebsstundenzähler auf Number:Time umstellen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Betriebsstundenzähler auf Number:Time umstellen

Beitrag von udo1toni »

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

nw378
Beiträge: 296
Registriert: 22. Sep 2018 10:38
Answers: 5

Re: Betriebsstundenzähler auf Number:Time umstellen

Beitrag von nw378 »

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:

Code: Alles auswählen

Number:Time Sonnen_std  "Sonnenstunden"  {unit="h", stateDescription=""[pattern="%.3f h"]} 
Number:Time Sonne_delta {unit="s"}
.rules:

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
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:

Code: Alles auswählen

var Sonnen_delta = 0|s as QuantityType<?>
      Sonnen_delta = (now.toEpochSecond - lStart)
aber dann erhalte ich folgende Fehlermeldung:

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

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

Re: Betriebsstundenzähler auf Number:Time umstellen

Beitrag von udo1toni »

nw378 hat geschrieben: 14. Okt 2023 11:04 Schöner wäre ja:

Code: Alles auswählen

var Sonnen_delta = 0|s as QuantityType<?>
      Sonnen_delta = (now.toEpochSecond - lStart)
aber dann erhalte ich folgende Fehlermeldung:

Code: Alles auswählen

Type mismatch: cannot convert from long to QuantityType<?>
Ja, das stimmt halt noch nicht...
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

nw378
Beiträge: 296
Registriert: 22. Sep 2018 10:38
Answers: 5

Re: Betriebsstundenzähler auf Number:Time umstellen

Beitrag von nw378 »

Leider nein, hatte ich bereits probiert. Ist ein "mismatch".
Genauso wie

Code: Alles auswählen

var Sonnen_delta = new QuantityType<?>((now.toEpochSecond - lStart).toString +" s")
Das scheint aber am Datentyp zu liegen, mit Energy klappt's nämlich (macht hier keinen Sinn, nur zu Versuchszwecken):

Code: Alles auswählen

var Sonnen_delta = new QuantityType<Energy>((now.toEpochSecond - lStart).toString +" kWh")
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.
openHAB 4.3.3 @ RPi 4 / SSD - InfluxDB2 und Grafana @ Synology Docker - KNX

TomW80
Beiträge: 110
Registriert: 7. Mai 2021 19:11
Answers: 0

Re: Betriebsstundenzähler auf Number:Time umstellen

Beitrag von TomW80 »

Hey,

Danke für Eure Antworten.
Bin leider noch nicht dazu gekommen das zu testen.
Meld mich sobald ich es testen konnte.

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

Re: Betriebsstundenzähler auf Number:Time umstellen

Beitrag von udo1toni »

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...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

TomW80
Beiträge: 110
Registriert: 7. Mai 2021 19:11
Answers: 0

Re: Betriebsstundenzähler auf Number:Time umstellen

Beitrag von TomW80 »

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.

Antworten