gespeicherte Werte nach Neustart wieder herstellen

Allgemeine Fragen zum Thema "Smart Home" und Entscheidungshilfen

Moderator: seppy

Antworten
urlauber22
Beiträge: 11
Registriert: 4. Aug 2021 18:15

gespeicherte Werte nach Neustart wieder herstellen

Beitrag von urlauber22 »

Hallo,

Ich habe mir einen Zähler für meine Hebeanlage erstellt,um zu wissen wie oft sie läuft.
Der funktioniert auch so weit.
Problem ist, wenn der Raspi neu gebootet wird ist derWert wieder auf 0. Er soll aber den letzten Wert wieder haben.
Hat jemand eine Idee an was das liegen kann?

Code: Alles auswählen


var Number testCount = 0

rule "hebeanlage"

when   

	Item Ein changed to ON
then
       
           testCount = testCount + 1		//hochzählen um 1
           ZaehlerCount_Item.postUpdate(testCount)  // Sidemap  Item aktualisieren
           
end

Mclupo
Beiträge: 178
Registriert: 6. Jun 2020 20:55
Answers: 2
Wohnort: Kirchheim Teck

Re: gespeicherte Werte nach Neustart wieder herstellen

Beitrag von Mclupo »

Du darfst nicht eine globale Variable hochzählen, und diese dann dem Item zuweisen, sondern direkt den Wert des Items erhöhen. Die globale Variable wird auf 0 beim Booten gesetzt
OH 3.4.2 auf Raspi 4 mit Aeotec z-wave Stick gen 5+ und zigbee conbee II

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

Re: gespeicherte Werte nach Neustart wieder herstellen

Beitrag von udo1toni »

Määp, ein bisschen richtig, aber eben nicht vollständig.

Voraussetzung, um den Zählerstand über einen Reboot zu behalten, ist, dass der Wert irgendwo gespeichert wird und von dort auch wieder geladen wird.
Die einfachste Variante ist, den Wert in einem Number Item zu speichern (das Item brauchst Du eh für die Anzeige) und dieses Item zu persistieren. Da es hier ausschließlich darum geht, nach einem Neustart den letzten bekannten Wert wiederherzustellen, nimmst Du dafür am besten die MapDB Persistence.
Du musst also ersten die MapDB Persistence aus den Addons installieren. Anschließend musst Du openHAB sagen, dass Dein Zählitem persistiert werden soll, um es wiederherzustellen, dazu legst Du eine Datei im Konfigurationsverzeichnis an (weil das noch nicht über die UI geht).

Im Verzeichnis /etc/openhab/persistence/ eine datei mapdb.persist (die muss exakt so heißen). Inhalt:

Code: Alles auswählen

Strategies { // eigentlich unnötig, aber dann weißt Du, dass es diesen Block auch noch gibt
}
Items {
    ZaehlerCount_Item : strategy = everyChange,restoreOnStartup
}
Vielleicht überdenkst Du bei der Gelegenheit noch den Namen des Items. ZaehlerZähl_Item (übersetzt...) ist irgendwie... nun ja.
Sinnvoller wäre z.B. HebeanlageCounter BITTE nicht das Wort Item verwenden, Du weißt, dass es sich um ein Item handelt und openHAB weiß es erst recht. Things (als Dinge, die potenziell auch noch einen Namen bekommen könnten) haben als Namen immer eine UID, das heißt, es kommen Doppelpunkte im Namen vor, etwas, was bei Items nicht vorkommen kann. Variablen kannst Du nur innerhalb der Rules verwenden und Du musst sie auch dort definieren. Die Wertzuweisung funktioniert komplett anders, es gibt also auch da keine Verwechslungsgefahr.

Die zugehörige Rule verwendet dann einfach das Item, wie Mclupo schon erwähnt hat:

Code: Alles auswählen

rule "Zähler Hebeanlage"
when   
    Item Ein changed to ON
then
    ZaehlerCount_Item.postUpdate((ZaehlerCount_Item.state as Number) + 1)
end
Ein Item Ein zu nennen, ist auch mehr so semi, was denn ein? Nenne es besser Hebeanlage, oder meinetwegen HebeanlagePower.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Mclupo
Beiträge: 178
Registriert: 6. Jun 2020 20:55
Answers: 2
Wohnort: Kirchheim Teck

Re: gespeicherte Werte nach Neustart wieder herstellen

Beitrag von Mclupo »

Moin Udo,
ich bin davon ausgegangen, dass alle Items per Standardeinstellung persistiert werden und nach einem Reboot wieder wertmässig hergestellt werden. Ist dies nicht richtig?
OH 3.4.2 auf Raspi 4 mit Aeotec z-wave Stick gen 5+ und zigbee conbee II

urlauber22
Beiträge: 11
Registriert: 4. Aug 2021 18:15

Re: gespeicherte Werte nach Neustart wieder herstellen

Beitrag von urlauber22 »

Hi Udo,

Danke klappt wunder bar.

Wenn Ich jedoch das

Item

Code: Alles auswählen

Number    ZaehlerCount_Item    "Anzahl [%.0f]"
in

Item

Code: Alles auswählen

Number    HebeanlageCounter	 "Anzahl [%.0f]"
umbennenne geht es nicht mehr. Wird in der Rule immer rot unterstichen.
Hast du eine Idee an was das liegen kann?

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

Re: gespeicherte Werte nach Neustart wieder herstellen

Beitrag von udo1toni »

Mclupo hat geschrieben: 15. Okt 2022 07:38 Moin Udo,
ich bin davon ausgegangen, dass alle Items per Standardeinstellung persistiert werden und nach einem Reboot wieder wertmässig hergestellt werden. Ist dies nicht richtig?
Persistieren: ja. restoreOnStartup: sollte nicht so sein.
Das wäre ein gigantischer Breaking Change, weil es das Verhalten des gesamten Systems komplett verändern würde.
restoreOnStartup macht man am besten über MapDB, rrd4j ist da nur eingeschränkt nutzbar, es kann z.B. keine Strings wiederherstellen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten