Differenz zweier Zeiten

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Differenz zweier Zeiten

Beitrag von udo1toni »

Na, initial muss das Relais natürlich auf rot stehen. Die Rule triggert auf ein Update (das heißt, der Status des Items wurde gesetzt) und schaltet das Relais auf grün. Gleichzeitig startet es den Timer. Kommt nun kein Update mehr, so schaltet der Timer beim Ablaufen auf rot. Kommt das Update rechtzeitig, so triggert das Update die Rule, der Timer wird zurückgesetzt und das Spiel beginnt von vorn. Das funktioniert absolut sicher. Einen Vergleich Deiner Zeitstempel kannst Du natürlich auch machen, aber da wünsche ich Dir viel Spaß ;) denn mit Zeiten zu rechnen ist in openHAB3 auch nicht komfortabler als in openHAB2 oder openHAB1, und da war es immer eine PITA...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Jojo
Beiträge: 206
Registriert: 5. Mär 2019 21:13
Answers: 2
Wohnort: Ingolstadt

Re: Differenz zweier Zeiten

Beitrag von Jojo »

OK.
Initial steht es auf grün. Ich bin positiv eingestellt ;-)
Ich gehe davon aus, dass immer alles passt. Nur wenn nicht, dann rot.

Ich habe die Rule aktiviert ( vor 2h ) und die LED ist immer noch grün
Ich prüfe mal mein Syntax

Ich hätte nicht gedacht, dass es ein Programm gibt in dem man noch schlechter mit Zeiten rechen kann als in Excel :mrgreen:
--

Gruß

Jojo

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

Re: Differenz zweier Zeiten

Beitrag von udo1toni »

In Excel kann man super mit Zeiten rechnen :) man muss nur einmal verstanden haben, dass Excel eine Zeit als Bruchteil eines Tages betrachtet, dann funktioniert das ganz wunderbar (ich habe als Schichtdienstler mit unregelmäßigen Dienstzeiten früher meine Abrechnungen mit Excel gemacht und meine Berechnungen haben im Gegensatz zur Abrechnungsstelle immer gestimmt...)

Das Problem in openHAB ist vor allem, dass es verschiedene Datentypen an verschiedenen Stellen gibt. Wenn man mit Zeiten hantieren will, muss man höllisch darauf aufpassen, immer in den korrekten Datentyp zu konvertieren, und das sind meist ziemlich lange Konvertierungsanweisungen.

Wie ist denn der Stand (nutzt Du den normalen Weg über Items oder nutzt Du .publishMQTT)?
Zeig mal Deine Rules (Du brauchst für jede Anzeige eine rule oder alternativ eine generalisierte, welches dann allerdings wegen des Timers etwas komplexer ausfallen wird - man wird dann eine Hashmap für die Timer verwenden müssen).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Jojo
Beiträge: 206
Registriert: 5. Mär 2019 21:13
Answers: 2
Wohnort: Ingolstadt

Re: Differenz zweier Zeiten

Beitrag von Jojo »

udo1toni hat geschrieben: 18. Apr 2021 23:19 meine Abrechnungen mit Excel gemacht und meine Berechnungen haben im Gegensatz zur Abrechnungsstelle immer gestimmt...)
Da hätte ich einiges drauf gewettet ;-)

Aktuell habe ich eine Rule, wenn das dann geht mache ich für jeden Sensor eine:

Code: Alles auswählen

rule "update temp2"
when
    Item HumBuero received update
then
    rpower2.sendCommand(ON)
    tSensor?.cancel
    tSensor = createTimer(now.plusMinutes(5),[|
        rpower2.sendCommand(OFF)
    ])
end
Das ist der DHT22 im Büro den habe ich abgesteckt.
Muss für das Funktionieren der Rule der Sensor zu allererst ein Update erhalten haben ? Sonst läuft ja der Timer nicht los oder ?

Ich bin, da ich ja ein braver Mensch bin, deinen Weg über Items gegangen wie du siehst.
--

Gruß

Jojo

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

Re: Differenz zweier Zeiten

Beitrag von udo1toni »

:)
Jojo hat geschrieben: 19. Apr 2021 08:31
udo1toni hat geschrieben: 18. Apr 2021 23:19 meine Abrechnungen mit Excel gemacht und meine Berechnungen haben im Gegensatz zur Abrechnungsstelle immer gestimmt...)
Da hätte ich einiges drauf gewettet ;-)
Du möchtest mich nur erröten sehen... Tatsächlich haben bis zur Umstellung auf eine digitale Dienstplanung (die seitdem die Überstunden automatisch berechnet) etliche Kollegen "meine" Excel-Arbeitsmappe verwendet...
Jojo hat geschrieben: 19. Apr 2021 08:31 Muss für das Funktionieren der Rule der Sensor zu allererst ein Update erhalten haben ? Sonst läuft ja der Timer nicht los oder ?
Genau. Die Rule muss einmal triggern, damit der Timer auch läuft. Sonst kann der Timer ja nicht auf OFF schalten.

Um dieses Problem zu umgehen, wäre tatsächlich die expire Funktion sinnvoller als ein Timer. Ich bin mir jetzt gerade nicht mehr sicher... openHAB2 oder openHAB3? Deshalbbeide Versionen:

in openHAB2 musst Du das expire Binding installieren. Anschließend richtest Du zwingend die Items zur Steuerung der LEDs über eine *.items Datei ein, denn das expire Binding ist ein v1 Binding, das heißt, es muss zwingend über die *.items Datei konfiguriert werden. Du richtest einen Link zusätzlich zum Link auf den Channel ein, mit dem Parameter expire="5m,command=OFF".

In openHAB3 ist expire kein eigenes Binding mehr, stattdessen ist es in den Metadaten zu finden. Du legst also in den Metadaten der Items die Parameter für expire an, analog zur Konfiguration in openHAB2 (also als Zeit 5 Minuten und als auszuführende Funktion send command OFF).

Ab hier ist es für beide Welten gleich...
Die Rule reduziert sich nun auf eine Zeile:

Code: Alles auswählen

rule "update temp2"
when
    Item HumBuero received update
then
    rpower2.sendCommand(ON)
end
denn das Item wird immer, wenn der Status des Items nicht OFF ist, nach 5 Minuten zu diesem Status wechseln, und zwar mittels sendCommand, ein evtl. verlinkter Channel wird also aktiv gesteuert (und so wollen wir das ja haben).

Wenn Du jetzt noch die Namensgebung Deiner Items überdenkst :), kommst Du gar mit einer Rule für alle Sensoren aus, und das funktioniert so:

Du benennst das LED-Item genau wie das Item des Sensors, hängst aber noch ein LED hinten dran, also im Beispiel HumBueroLED.
Nun legst Du zwei Gruppen an, z.B. gHum und gHumLED. In die erste Gruppe kommen alle Fühler, in die zweite Gruppe kommen alle zugehörigen LED-Items. Nun reicht eine Rule:

Code: Alles auswählen

rule "update sensors"
when
    Member of gHum received update
then
    gHumLED.members.filter[ i | i.name == triggeringItem.name+"LED" ].head.sendCommand(ON)
end
gHumLED -> das Gruppenitem
.members -> eine Liste der Member
.filter[] ->gefiltert nach den angegeben Kriterien
i | -> nimm nacheinander jedes Listenelement und setzte es in i ein.
i.name == triggeringItem.name+"LED" -> Der Name des Items entspricht dem NAmen des Items, welches die Rule getriggert hat, ergänzt um die Zeichenfolge LED.
Das Ergebnis ist wieder eine Liste, in der nur die Elemente der ersten Liste enthalten sind, für die die Bedingung erfüllt ist.
.head -> nimm das erste Element der Liste (welche nur ein Element enthält, aber wir brauchen ein Item, keine Liste mit einem Item...)
Das .sendCommand kennst Du schon ;)

Es ist egal, wieviele Sensoren Du so abdeckst, Du brauchst nur diese eine Rule. Es müssen lediglich die Namen der Items zueinander passen und die Items müssen den richtigen Gruppen zugeordnet sein.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Jojo
Beiträge: 206
Registriert: 5. Mär 2019 21:13
Answers: 2
Wohnort: Ingolstadt

Re: Differenz zweier Zeiten

Beitrag von Jojo »

Ich bin wieder mal ( wie immer ) völlig begeistert von dir !!!!
( ich sehe dich erröten ;-) )

Expire klingt gut, ich schau mal. Ich habe zwar OH3 arbeite aber immer noch in meinen OH2 Textfiles über VSCode .
Und eine tolle Lösung für alle Sensoren, MMMEEEGGGAAAA Dank!!!
--

Gruß

Jojo

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

Re: Differenz zweier Zeiten

Beitrag von udo1toni »

Interessant in dem Zusammenhang (auch für mich...) wie man von einer recht konkreten Frage nach einer Funktion zu einer komplett anderen Lösung kommt, die aber um Größenordnungen einfacher und äußerst schlank ist...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Jojo
Beiträge: 206
Registriert: 5. Mär 2019 21:13
Answers: 2
Wohnort: Ingolstadt

Re: Differenz zweier Zeiten

Beitrag von Jojo »

Das genau ist der Sinn von einem Forum: Schwarm-Intelligenz.
( und natürlich Udo-Intelligenz ( du bist schon wieder rot ;) ))

:mrgreen: :ugeek:
--

Gruß

Jojo

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

Re: Differenz zweier Zeiten

Beitrag von udo1toni »

:P
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten