Wert zu einer bestimmten Zeit schreiben

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Wert zu einer bestimmten Zeit schreiben

Beitrag von Lactobacillus »

in der PaperUI sind nicht immer alle Bindings vorhanden weis aber nicht obs da um offiziell oder nicht geht man kann die Jar Datei einfügen im Addonordner und dann erscheint es auch ín der PaperUI .

Benutzeravatar
peter-pan
Beiträge: 2772
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Wert zu einer bestimmten Zeit schreiben

Beitrag von peter-pan »

Hallo Oliver, schau mal hier
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Wert zu einer bestimmten Zeit schreiben

Beitrag von Lactobacillus »

peter-pan hat geschrieben: 29. Okt 2020 13:03 Also das mit dem Home Connection Binding fasziniert mich schon ein bisschen. Was für eine Spülmaschine hast du denn ?

Und natürlich hat mir das auch keine Ruhe gelassen, deshalb hier eine kleine Regel:

Code: Alles auswählen

rule "Spuelmaschine Laufzeit"
 when
  Item Dummy_4 changed to ON  or // Testschalter
  Item remaining_program_time_state changed
 then
//  var remainSeconds = 360 // als Ersatz für remaining_program_time_state
  var remainSeconds = (remaining_program_time_state.state as Number).intValue
  var vEndTime = now.plusSeconds(remainSeconds).toString("HH:mm:ss")
  var vRemainingTime = new DateTime(now.withTimeAtStartOfDay.plusSeconds(remainSeconds)).toString("HH:mm:ss") 
  logInfo ("vRemainingTime", "vRemainingTime in Std:Min:Sek ist {} *** vEndTime {}", vRemainingTime, vEndTime)
  EndTime.postUpdate(vEndTime)
  RemainingTime.postUpdate(vRemainingTime)
 end
und zwei String-Items dazu:

Code: Alles auswählen

String EndTime        "EndZeit [%s Std/Min/Sek]"  <dishwasher>
String RemainingTime  "Restlaufzeit [%s Std/Min/Sek]" <dishwasher>

Das geht sicherlich auch kürzer und besser.

Und so sieht das dann in meiner BasicUI aus( hab's einfach mal so reingesetzt):
spueler.jpg

aber bitte frag mich nicht nach HabPanel, da muss ich passen. :(
Es ist mir schon fast peinlich. Ich bekomms nicht hin, was hab ich gemacht die obere rule in VS Code kopiert und das Item vom Geschirrspüler PowerState on oben beim Dummy eingefügt zeigt dann on an dann die Zeilen mit remaining_... da wurde mein Item mit der Remaining Time eingefügt. aber ich sehe da noch kein Unterschied! :roll:

Benutzeravatar
peter-pan
Beiträge: 2772
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Wert zu einer bestimmten Zeit schreiben

Beitrag von peter-pan »

Du musst da eigentlich nichts einfügen, höchstens die Zeile mit dem Dummy-Item auskommentieren, oder ein solches anzulegen, um die Rule manuell(zum Testen) zu triggern.
.items

Code: Alles auswählen

Switch Dummy_4   "Testschalter Dummy4 [%s]" 
Das Item "PowerState" brauchst du eigentlich nicht, da die Rule normalerweise triggert, wenn sich die "Sekunden" ändern. Da aber deine Spülmaschine wahrscheinlich nicht an ist, triggert die Rule auch nicht (deshalb auch der Test-Schalter).

Die zwei String-Items hast du angelegt ? Wenn nicht, kannst du diese (....postUpdate...) in der Regel mal auskommentieren. Lege dann noch das Dummy-Item an und mache es sichtbar, damit du es schalten kannst um die Regel zu triggern. Es sollte dann zumindest die LogInfo

Code: Alles auswählen

2020-10-29 12:19:41.910 [INFO ] [marthome.model.script.vRemainingTime] - vRemainingTime in Std:Min:Sek ist 00:03:54 *** vEndTime 12:23:35
so, oder so ähnlich im Logger erscheinen. Probier's mal und gib dann wieder Bescheid. Wir kriegen das schon hin. ;)

Edit:
Grad fällt mir ein, dass das PowerState-Item auch gehen sollte (zumindest einmal, wenn du Geschirrspülmaschine anschaltest). Poste mal deine Regel und Schaue im Logger nach der Info.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Wert zu einer bestimmten Zeit schreiben

Beitrag von Lactobacillus »

Aber ich muss doch die Items da einfügen die angesprochen werden sollen damit die rule weis wo sie greifen soll. Einfügen war etwas falsch ausgedrückt eher getauscht🤷‍♂️😔

Melde mich später mal wenn kind im Bett und Frau weg.

Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Wert zu einer bestimmten Zeit schreiben

Beitrag von Lactobacillus »

Code: Alles auswählen

rule "Spuelmaschine Laufzeit"
 when
  Item Geschirrspueler_PowerState changed to ON  
  Item Geschirrspueler_RemainingProgramTime changed
 then
//  var remainSeconds = 360 // als Ersatz für Geschirrspueler_RemainingProgramTime
  var remainSeconds = (Geschirrspueler_RemainingProgramTime.state as Number).intValue
  var vEndTime = now.plusSeconds(remainSeconds).toString("HH:mm:ss")
  var vRemainingTime = new DateTime(now.withTimeAtStartOfDay.plusSeconds(remainSeconds)).toString("HH:mm:ss") 
  logInfo ("vRemainingTime", "vRemainingTime in Std:Min:Sek ist {} *** vEndTime {}", vRemainingTime, vEndTime)
  EndTime.postUpdate(vEndTime)
  RemainingTime.postUpdate(vRemainingTime)
 end
Die Spülmaschine war eingeschaltet und zeigte das übliche Item in Sekunden.

Das String Item muss ja unter Items in VS Code eingefügt werden oder?

Benutzeravatar
peter-pan
Beiträge: 2772
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Wert zu einer bestimmten Zeit schreiben

Beitrag von peter-pan »

Die Regel sollte eigentlich so funktionieren, wie du sie eingefügt hast.

Die beiden String-Items musst du aber noch anlegen, entweder über PaperUI, oder in einem Text-File, z.B.: "openHAB-conf/items/spueler.items". Um zu testen, kannst du die Regel etwas verkürzen und die beiden Items erst mal weglassen:

Code: Alles auswählen

rule "Spuelmaschine Laufzeit"
 when
  Item Geschirrspueler_PowerState changed to ON or
  Item Geschirrspueler_RemainingProgramTime changed
 then
  var remainSeconds = (Geschirrspueler_RemainingProgramTime.state as Number).intValue
  var vEndTime = now.plusSeconds(remainSeconds).toString("HH:mm:ss")
  var vRemainingTime = new DateTime(now.withTimeAtStartOfDay.plusSeconds(remainSeconds)).toString("HH:mm:ss") 
  logInfo ("vRemainingTime", "vRemainingTime in Std:Min:Sek ist {} *** vEndTime {}", vRemainingTime, vEndTime)
end
dann erhältst du nur die Log-Infos, wenn sich die Restzeit ändert.

Edit: Hab grad noch was bemerkt, nämlich das "or" zwischen den beiden Triggern
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Wert zu einer bestimmten Zeit schreiben

Beitrag von Lactobacillus »

Bekomme nun immerhin den Text zwecks des rules im log allerdings wenn ich dann die Spülmaschine einschalte kommt

Code: Alles auswählen

2020-10-29 20:02:58.284 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Spuelmaschine Laufzeit': The name 'RemainingTime' cannot be resolved to an item or type; line 12, column 3, length 13

Benutzeravatar
peter-pan
Beiträge: 2772
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Wert zu einer bestimmten Zeit schreiben

Beitrag von peter-pan »

Ja, die Fehlermeldung besagt, dass du kein Item mit dem Namen RemainingTime angelegt hast.

Also jetzt verkürze mal schnell die Regel, indem du die zwei letzten Zeilen vor dem "end" herauslöschst oder auskommentierst. Dann sollte die Fehlermeldung nicht mehr kommen und die Berechnung im Logger angezeigt werden.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Wert zu einer bestimmten Zeit schreiben

Beitrag von Lactobacillus »

Jetzt gehts !!! Danke bin glücklich aber jetzt muss ich einige Tage pausieren bin irgendwie richtig zermürbt der ganze Urlaub ging fast drauf mit dem neu installieren von OH .

Antworten