Seite 4 von 5

Re: Wert zu einer bestimmten Zeit schreiben

Verfasst: 29. Okt 2020 16:06
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 .

Re: Wert zu einer bestimmten Zeit schreiben

Verfasst: 29. Okt 2020 16:08
von peter-pan
Hallo Oliver, schau mal hier

Re: Wert zu einer bestimmten Zeit schreiben

Verfasst: 29. Okt 2020 17:44
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:

Re: Wert zu einer bestimmten Zeit schreiben

Verfasst: 29. Okt 2020 18:18
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.

Re: Wert zu einer bestimmten Zeit schreiben

Verfasst: 29. Okt 2020 18:33
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.

Re: Wert zu einer bestimmten Zeit schreiben

Verfasst: 29. Okt 2020 19:26
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?

Re: Wert zu einer bestimmten Zeit schreiben

Verfasst: 29. Okt 2020 19:55
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

Re: Wert zu einer bestimmten Zeit schreiben

Verfasst: 29. Okt 2020 20:06
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

Re: Wert zu einer bestimmten Zeit schreiben

Verfasst: 29. Okt 2020 20:27
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.

Re: Wert zu einer bestimmten Zeit schreiben

Verfasst: 29. Okt 2020 20:34
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 .