Save File - scheint nicht korrekt zu laden

Begonnen von remo, 30 Oktober 2018, 15:15:23

Vorheriges Thema - Nächstes Thema

remo

Hallo zusammen,

ich habe ein Problem mit der Save File von FHEM.
Bis zu einem bestimmten Update vor ca. 4 Monaten lief alles reibungslos.

Hintergrund:
Wenn ich Zustände ändere (z.B. "Laterne bei Sonnenuntergang einschalten"), setze ich diese mit active und inactive.
Im Save File steht auch alles korrekt drin.
1x wöchentlich lasse ich meinen RasPi rebooten.
Danach sollte das Save File doch wieder korrekt geladen werden?
Wenn z.B. "Laterne bei Sonnenuntergang einschalten" vor dem Reboot deaktiviert war,
zeigt FHEM mir nach dem Reboot den Schalter weiterhin als deaktiviert an.
In den ats unter "Unsorted" steht dann aber statt inactive die Uhrzeit wann dieses at ausgeführt wird (heute z.B. Next: 17:15:16) ...

Ich habe vermutet, dass es vielleicht an den Berechtigungen auf diese Datei liegen könnte und habe diese angepasst.
Eine Neuinstallation von FHEM hat aber auch nicht geholfen. Außerdem habe ich das Save File auch noch neu anlegen lassen - alles ergebnislos.

Was mich wundert, ist, dass es ja schon mal funktioniert hat...
Ich habe zwischenzeitlich nicht daran herumgebastelt.

Vielleicht habt ihr ja noch einen Tipp?
Mit diffLateAbs usw. möchte ich bloß erreichen, dass sich die Laterne nur einschaltet wenn eine gewisse Zeitdifferenz zu anderen Ergeinissen liegt - das funktioniert aber tadellos.

Liebe Grüße
remo


Hier ist meine komplette Laterne:


############### LATERNE

define Laterne CUL_HM xxxxxxxx
attr Laterne userattr room_map structexclude
attr Laterne expert 2_raw
attr Laterne model HM-LC-SW4-SM
attr Laterne peerIDs 00000000,
attr Laterne subType switch

attr Laterne webCmd ein:aus
attr Laterne eventMap on:ein off:aus
attr Laterne devStateIcon ein:light_light_dim_100@5ECD3C aus:light_light_dim_00@808080 .*:light_light_dim_00@F19A38

attr Laterne room LICHT
attr Laterne group 03_Laterne
attr Laterne alias vorne



############### AUTO EIN OPTION

define Laterne_EinTimer dummy

attr Laterne_EinTimer webCmd ein:aus
attr Laterne_EinTimer eventMap ein:on aus:off
attr Laterne_EinTimer devStateIcon on:ios-on-green off:ios-off .*:ios-NACK

define Laterne_EinTimer_EIN notify Laterne_EinTimer.on { fhem ("set Laterne_EIN active") }
define Laterne_EinTimer_AUS notify Laterne_EinTimer.off { fhem ("set Laterne_EIN inactive") }

attr Laterne_EinTimer room LICHT
attr Laterne_EinTimer group 01_Zeitprogramme
attr Laterne_EinTimer alias Laterne autom. einschalten



############### AUTO AUS OPTION

define Laterne_AusTimer dummy

attr Laterne_AusTimer webCmd ein:aus
attr Laterne_AusTimer eventMap ein:on aus:off
attr Laterne_AusTimer devStateIcon on:ios-on-green off:ios-off .*:ios-NACK

define Laterne_AusTimer_EIN notify Laterne_AusTimer.on { fhem ("set Laterne_AUS.* active") }
define Laterne_AusTimer_AUS notify Laterne_AusTimer.off { fhem ("set Laterne_AUS.* inactive") }

attr Laterne_AusTimer room LICHT
attr Laterne_AusTimer group 01_Zeitprogramme
attr Laterne_AusTimer alias Laterne autom. ausschalten



############### ZEITPLAENE

define Laterne_EIN at *{sunset()} { \
  if ( (((($wday==0) || ($wday==1) || ($wday==2) || ($wday==3) || ($wday==4)) && (Value("diffEarlyAbs") >= 15)) || ((Value("feiertag_morgen")) && (Value("diffLateAbs") >= 15))) || \
        ((($wday==5) || ($wday==6)) && (Value("diffLateAbs") >= 15)) )\
          { fhem ("set Laterne on");; } }
 
define Laterne_AUS_WO at *21:30 { \
  if ( (($wday==0) || ($wday==1) || ($wday==2) || ($wday==3) || ($wday==4)) && !(Value("feiertag_morgen")) ) \
    { fhem ("set Laterne off");; } }

define Laterne_AUS_WE at *22:30 { \
  if ( (($wday==5) || ($wday==6)) || (Value("feiertag_morgen")) ) \
    { fhem ("set Laterne off");; } }

define Laterne_FORCE_AUS at *{sunrise()} set Laterne off

rudolfkoenig

Habs versucht zu reproduzieren, ohne Erfolg:
- "Code" Stueck in eine leere config kopiert, und CUL_HM nach dummy gewandelt
- automatisch schalten 2x mit "ein" aktiviert => Die ats zeigen ein Next: an
- automatisch schalten 2x mit "aus" deaktiviert => Die ats zeigen ein inactive an
- fhem mit shutdown restart neu gestartet => Di ats zeigen immer noch inactive an.

Ich brauche vmtl. eine aehnliche Schritt-Fuer-Schritt Anleitung, damit ich das Problem reproduzieren kann.

remo

Hallo Rudolf,
Danke für deine Antwort. Auch noch vom ,,Chef" selbst ;)

Also. Angenommen es ist
Sonntag Nachnittag, ich möchte nicht, dass meine Laterne die nächsten Tage zum Sonnenuntergang einschaltet, also bediene ich den Schalter ,,Laterne_EINTimer" und schalte ihn inaktive. An diesem Sonntag Schalter sich die Laterne dann auch wie gewünscht nicht ein.
Montag Früh um 01:00 rebootet mein Raspi. Dann schaue ich im Laufe des Montagvormittags in mein FHEM und sehe nach wie vor den deaktivierten (grauen) Schalter (im Room). Schaue ich dann in die ats steht dort ,,Next: <Uhrzeit>" und demnach schaltet sich die Laterne am Montag zum Sonnenuntergang ein.

Mehr ist das nicht. Das betrifft ebenfalls meine Dachkastenbeleuchtung und meinen Brunnenpumpe. Also nicht nur die Laterne. Beide Aktoren sind analog zur Laterne konfiguriert.

Vielen Dank!

remo

#3
Außerdem führe ich eine Stunde vor dem Raspi Reboot ein Update all und anschließendem shutdown mittels at durch.

rudolfkoenig

Habe jetzt eine Weile auf dem Code gestarrt: das Problem tritt auf, wenn die at Definition gar kein Attribut hat.
Habs gefixt und eingecheckt.

remo

Cool. Dankeschön.
Nur, dass ich es verstehe: was meinst du damit wenn die at-Definition kein Attribut hat?

betateilchen

#6
Zitat von: remo am 31 Oktober 2018, 17:08:18
was meinst du damit wenn die at-Definition kein Attribut hat?

Was verstehst Du daran nicht? Wenn Du ein at-device neu anlegst, besitzt es von Haus aus keine Attribute (room, group, verbose o.ä.)
Und da die Definition eines device an einer anderen Stelle gespeichert wird als seine Attribute und Readings, kann es zu merkwürdigem Verhalten kommen. Wir hatten die gleiche Diskussion neulich schon einmal hier im Forum.

Das ist übrigens der Grund, warum hier im Forum schon mehrfach empfohlen wurde, zum Ein-/Ausschalten solcher devices besser das Attribut "disable" zu verwenden, anstatt den "set ... inactive" Befehl: ein gespeichertes Attribut ist eindeutig persistent bei einem FHEM Neustart.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

remo


Vielen Dank für deine Erklärung. Jetzt verstehe ich es!
Man lernt immer dazu - und von daher hättest du dir deine erste Frage sparen können...

,,[...] set disable 1;save;" (oder ähnlich) hatte ich zuvor. Damit hat es überhaupt nicht funktioniert!

Nach Recherchen bin ich auf folgenden Post gestoßen:
https://forum.fhem.de/index.php?topic=82496.0

Mit ,,inactive" hat es dann eine (gewisse) Zeit lang funktioniert.
Was nun?
disable oder inactive?

Wenn ich gänzlich daneben gelegen hätte, hätte Rudolf mich sicherlich bereits darauf hingewiesen. 

Ich bedanke mich für eure Hilfestellubg.

remo

So.

Ich habe testweise (wieder) auf "disable" umgestellt.
Die ATs zeigen dann auch "disabled" an - warum auch nicht?!

Nach "shutdown restart" vergisst FHEM aber die Einstellungen, trotz angehängtem "save".
Auch ein manuell eingegebenes "save" in die obere Kommandozeile lässt das ? nicht verschwinden.
Eigenartig.

Bin nun wieder bei "active" und "inactive" gelandet.
Nach dem Reboot bleibt dieses jetzt auch bei den ATs stehen - ob es tatsächlich funktioniert werde ich heute Abend sehen.
Denn Rudolf hat den Fix ja bereits eingecheckt.



remo

Kurzes Update:

nun funktioniert alles wie gehabt und wie gewünscht.

Vielen Dank!