Seite 1 von 1

Plötzlich Rule ohne Funktion

Verfasst: 26. Nov 2020 18:27
von leupy
Hallo,
ich habe seit kurzem das Problem bei System Neustart das meine Temperaturen nicht neu gesetzt werden.

Code: Alles auswählen

//----------------------------------------------------
//Init Heizung
//----------------------------------------------------
rule "Init Heizung"
when
    System started or                                   // Wenn System startet oder
    Time cron "0 00 21 * * ?" or                          // um 21:OO Uhr Standartwerte Temperatur laden
    Time cron "0 00 05 * * ?" 
then
    Heizung_E_Soll.postUpdate(21.5)
    Heizung_E_Soll_N.postUpdate(19)
    Heizung_W_Soll.postUpdate(21.5)
    Heizung_W_Soll_N.postUpdate(19)
   
end
Diese Regel hat immer funktionier, jetzt steht nach dem Neustart keine Werte mehr in den Sollwerten.
Kann das mit zu vielen Regeln zusammenhängen die beim Neustart initialisiert werden ?
Im voraus schon mal Danke für die Antwort.
Gruß leupy

Re: Plötzlich Rule ohne Funktion

Verfasst: 26. Nov 2020 22:43
von udo1toni
Hast Du noch andere Rules, welche mit System started getriggert werden?

Re: Plötzlich Rule ohne Funktion

Verfasst: 27. Nov 2020 00:20
von harteknut
Ich habe gelesen (weis aber nicht mehr wo), dass man das Setzen der ersten Initialwerte nach Systemstart ein bisschen rauszögern soll, weil die Rule-Engine sonst schon losläuft und der Rest noch nicht oben ist. Daher lasse ich erst einen 45 Sekunden Timer ablaufen, bevor die Werte gesetzt werden:

Code: Alles auswählen

rule "Systeminit"
when
	System started
then
	logInfo("zentral.rules", "Systeminitialisierung...")
	createTimer(now.plusSeconds(45)) [|	
	if (zentral_AUS.state == NULL) zentral_AUS.postUpdate(OFF)
	if (EG_Gard_Heiz.state == NULL) EG_Gard_Heiz.postUpdate(OFF)
	if (DR_Klingel_Bewegung.state == NULL) DR_Klingel_Bewegung.postUpdate(OFF)
	[...]
	]
end
Kannst Du ja mal versuchen.

Re: Plötzlich Rule ohne Funktion

Verfasst: 27. Nov 2020 11:33
von udo1toni
Also, eigentlich sollte man Werte überhaupt nicht auf diese Weise initialisieren, wenn es nicht einen guten Grund dafür gibt.

Best practice:
  • Alle Status, die man über ein Addon abrufen kann, sollten vom System automatisch ausgelesen werden.
  • Bei den Status, die sich nicht so auslesen lassen, nutzt man den Persistence Service mapdb mit der Strategy everyChange,restoreOnStartup.
  • Nur die Items, welche zum Systemstart immer einen bestimmten Default Wert haben sollen (unabhängig vom tatsächlichen oder dem letzten bekannten Zustand) werden per Rule gesetzt, mit etwas zeitlichem Versatz, wie von harteknut beschrieben.

Re: Plötzlich Rule ohne Funktion

Verfasst: 27. Nov 2020 20:13
von leupy
Hallo, auf die Erste Frage ob noch mehr Regeln beim Starten laufen. Ja es laufen noch mehr und die Funktionieren ?. Ich werde das ganze überdenken und dann wie von euch vorgeschlagen ändern. 👍