Seite 2 von 3
Re: Mähroboter pausieren und restore
Verfasst: 1. Mai 2020 20:59
von PeterA
Fast:
Ich habe das ITEM DenonCommand als String das mit dem {channel="denonmarantz:avr:0005cd3a0e8e:general#command"} verbunden ist.
Und in der Sitemap ein SWITCH Widget welches einen Butten hat der als "ENTER" zu sehen ist und dahinter ist der Befehl "MNENT" gemapped.
Wenn ich nun den "ENTER" Button in der Sitemap betätige wird der Befehl "MNENT" OpenHab intern an das String Item DenonCommand übergeben und an den Channel geschickt.
Re: Mähroboter pausieren und restore
Verfasst: 1. Mai 2020 22:36
von int5749
Ja, genau so habe ich das auch verstanden.
Aber ich möchte um bei Deinem Beispiel zu bleiben
MNENT ist selber ein Item und enthält den Wert -30
Wenn also nun ENTER drückt, soll -30 übergeben werden
Re: Mähroboter pausieren und restore
Verfasst: 1. Mai 2020 23:06
von PeterA
Na dann Mappe doch -30 auf einen Button
Re: Mähroboter pausieren und restore
Verfasst: 1. Mai 2020 23:11
von int5749
PeterA hat geschrieben: ↑1. Mai 2020 23:06
Na dann Mappe doch -30 auf einen Button
Na genau das geht nicht :-/ da dieser Wert variieren kann.
Es handelt sich dabei quasi um den vorherigen Wert von LandroidScheduleTimeExtension, welchen ich in LandroidRestoreTime zwischenspeichere.
Eine andere Möglichkeit - da LandroidScheduleTimeExtension persistiert ist - wäre es den vorherigen Wert aus der MapDB zu lesen, aber sicher auch nicht direkt aus der Sitemap möglich?
Re: Mähroboter pausieren und restore
Verfasst: 1. Mai 2020 23:14
von PeterA
Ah ok, dann geht das wohl so nicht.
Re: Mähroboter pausieren und restore
Verfasst: 1. Mai 2020 23:25
von int5749
PeterA hat geschrieben: ↑1. Mai 2020 23:14
Ah ok, dann geht das wohl so nicht.
Bisher mache ich dies über eine Rule, dachte bzw. hoffte, dies vereinfachen zu können :-/
Dennoch besten Dank für Geduld und Tipp

Re: Mähroboter pausieren und restore
Verfasst: 2. Mai 2020 13:42
von int5749
Ein weitere Ansatz dazu, um ein Dummy Item zu sparen.
Eigentlich sollte ja genau dafür auch Persistance nutzbar sein? Ich persistiere die Werte in der MapDB
Code: Alles auswählen
Strategies {
everyHour : "0 0 * * * ?"
everyDay : "0 0 0 * * ?"
default = everyChange
}
Items {
LandroidRestoreTime : strategy = everyChange,restoreOnStartup
LandroidRainDelay : strategy = everyChange,restoreOnStartup
LandroidStandBy : strategy = everyChange,restoreOnStartup
LandroidScheduleTimeExtension : strategy = everyChange,restoreOnStartup
gLandroidScheduleDay* : strategy = everyChange,restoreOnStartup
gLandroidScheduleDuration* : strategy = everyChange,restoreOnStartup
}
Derzeit versuche ich mir die beiden Stati (Aktuell und Vorher) erst einmal anzeigen zu lassen
Code: Alles auswählen
pushNotification("Shaun Landroid aktuell", LandroidScheduleTimeExtension.state.toString)
pushNotification("Shaun Landroid vorher", LandroidScheduleTimeExtension.previousState(false, "mapdb").state.toString)
pushNotification("Shaun Landroid vorher", LandroidScheduleTimeExtension.previousState(false, "mapdb").toString)
Der aktuelle Status entspricht natürlich dem aktuellen Wert => alles gut
Bei der vorherigen Wert gibt es "nur" eine DB Meldung => org.openhab.core.persistence.internal.QueryablePersistenceServiceDelegate$1@15d2612
Da sich das hinter dem @ Zeichen verändert könnte dies die Datensatzbezeichnug sein? Aber wie komme ich an den Wert??
Viele Grüße,
Jörg
Re: Mähroboter pausieren und restore
Verfasst: 2. Mai 2020 16:08
von udo1toni
Du nutzt mapDB, welche entgegen der landläufigen Meinung keinen previousState liefern kann. mapBD liefert exakt den letzten Wert, das ist aber nicht der vorherige, sondern der aktuelle Wert. Du musst also auf eine andere Persistence umsteigen, z.B. rrd4j.
.previousState liefert ein historicState zurück, mitsamt des Zeitstempels, wann der Status gesetzt wurde. Entsprechend musst Du .previousState().state abfragen.
Re: Mähroboter pausieren und restore
Verfasst: 2. Mai 2020 17:33
von int5749
udo1toni hat geschrieben: ↑2. Mai 2020 16:08
Du nutzt mapDB, welche entgegen der landläufigen Meinung keinen previousState liefern kann. mapBD liefert exakt den
letzten Wert, das ist aber nicht der
vorherige, sondern der
aktuelle Wert. Du musst also auf eine andere Persistence umsteigen, z.B. rrd4j.
OK, geändert. rrd4j ist auch als default persistence eingetragen
udo1toni hat geschrieben: ↑2. Mai 2020 16:08
.previousState liefert ein historicState zurück, mitsamt des Zeitstempels, wann der Status gesetzt wurde. Entsprechend musst Du .previousState().state abfragen.
Code: Alles auswählen
pushNotification("Shaun Landroid aktuell", LandroidScheduleTimeExtension.state.toString)
pushNotification("Shaun Landroid vorher", LandroidScheduleTimeExtension.previousState().state.toString)
Liefert jedoch noch den gleichen Wert zurück :-/ wenn auch mit unterschiedlicher Nachkommastelle
aktuell: 50
vorher: 50.0
Re: Mähroboter pausieren und restore
Verfasst: 2. Mai 2020 18:29
von int5749
Anbei noch kurz die Konfig
Strategies {
// for rrd, we need a cron strategy
everyMinute : "0 * * * * ?"
default = everyChange
}
Items {
LandroidRestoreTime : strategy = everyChange
LandroidRainDelay : strategy = everyChange
LandroidScheduleTimeExtension : strategy = everyChange
gLandroidScheduleDuration* : strategy = everyChange
}
Mit der RestAPI sehe ich derzeit, trotz mehrmailiger Änderung des Werte, bisher 0 datapoint
