Differenz zweier Zeiten
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Differenz zweier Zeiten
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
-
- Beiträge: 206
- Registriert: 5. Mär 2019 21:13
- Wohnort: Ingolstadt
Re: Differenz zweier Zeiten
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
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
--
Gruß
Jojo
Gruß
Jojo
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Differenz zweier Zeiten
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).
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
-
- Beiträge: 206
- Registriert: 5. Mär 2019 21:13
- Wohnort: Ingolstadt
Re: Differenz zweier Zeiten
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
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
Gruß
Jojo
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Differenz zweier Zeiten
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...
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
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
.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
-
- Beiträge: 206
- Registriert: 5. Mär 2019 21:13
- Wohnort: Ingolstadt
Re: Differenz zweier Zeiten
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!!!
( 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
Gruß
Jojo
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Differenz zweier Zeiten
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
-
- Beiträge: 206
- Registriert: 5. Mär 2019 21:13
- Wohnort: Ingolstadt
Re: Differenz zweier Zeiten
Das genau ist der Sinn von einem Forum: Schwarm-Intelligenz.
( und natürlich Udo-Intelligenz ( du bist schon wieder rot ))
( und natürlich Udo-Intelligenz ( du bist schon wieder rot ))
--
Gruß
Jojo
Gruß
Jojo
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Differenz zweier Zeiten
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet