Moin,
ich hab da mal ein kleines kosmetisches Problem. Ich frage alle 10 Sekunden über einen Timer den Status meiner 1-Wire iButtons am Schlüsselkasten ab und reagiere dementsprechend. Jetzt habe ich aber das Problem, dass nach einem FHEM Neustart erst mal alles aus geht. Ich "vermute" der Timer wird schon ausgeführt obwohl der 1-Wire Bus den Status der 1-Wire Buttons noch nicht aktualisiert hat.
Gibt es irgend eine Möglichkeit, einen Timer nach einem FHEM Neustart eine gewisse Totzeit vorzugeben in welcher er nicht auslöst? Also bis sich FHEM beruhigt hat.
/Daniel
Ohne weitere Details zu kennen, könnest Du die FHEM Uptime berücksichtigen:
my $uptime = time - $fhem_started;
Mhh stimmt, klar, genau so mach ich das, Daniel.
/Daniel
alternativ:
Event global:INITIALIZED auswerten (ein Notify) und das erste AT deines 1wire überspringen. "attr <AT-NAME> skip_next 1"
Alternative2: Abwandlung
Event INITIALIZED aber dann "set <AT-NAME> inactive" + ein AT mit deiner "Totzeit" um es dann nach z. B. 20 Sec. wieder auf active zu setzen (set <AT-NAME> active)
Zitat von: ext23 am 24 Januar 2018, 07:29:49
Also bis sich FHEM beruhigt hat.
ja das ist auch immer so aufgeregt nach dem neustarten ;D ;D ;D
könntest du nicht auch mittels ReadingsAge() (link (https://fhem.de/commandref_DE.html#perl)) prüfen ob schon was eingelesen wurde?
Na da habe ich ja jetzt genug Varianten, danke.
Bei dem trigger auf global:INITIALIZED bin ich mir nicht sicher, ob es nicht doch passieren kann, dass der Timer ausgelöst wird bevor der trigger ausgelöst hat.
/Daniel
Zitat von: ext23 am 24 Januar 2018, 20:15:12
Na da habe ich ja jetzt genug Varianten, danke.
Aber noch lange nicht alle... Du könntest nämlich auch auf $init_done prüfen :)
Zitat von: betateilchen am 24 Januar 2018, 21:37:52
Aber noch lange nicht alle... Du könntest nämlich auch auf $init_done prüfen :)
hat sich fhem denn bis dahin auch ausreichend beruhigt? :o 8)
Tja das ist die Frage ja.
Ich werd mal ein bissel rumprobieren. Sonst nehme ich das init, packt noch ne Schippe an Sekunden drauf und dann gehts los.
/Daniel
Zitat von: ext23 am 24 Januar 2018, 07:29:49
Moin,
ich hab da mal ein kleines kosmetisches Problem. Ich frage alle 10 Sekunden über einen Timer den Status meiner 1-Wire iButtons am Schlüsselkasten ab und reagiere dementsprechend. Jetzt habe ich aber das Problem, dass nach einem FHEM Neustart erst mal alles aus geht. Ich "vermute" der Timer wird schon ausgeführt obwohl der 1-Wire Bus den Status der 1-Wire Buttons noch nicht aktualisiert hat.
Gibt es irgend eine Möglichkeit, einen Timer nach einem FHEM Neustart eine gewisse Totzeit vorzugeben in welcher er nicht auslöst? Also bis sich FHEM beruhigt hat.
/Daniel
Warum pollst du über Timer, statt auf Events zu reagieren. Das Abfrageintervall lässt sich doch für das jeweilige 1-Wire-Device einstellen. Wenn 1-Wire-Device nicht hochgefahren ist, kann es auch keine Events geben ;)
Das hatte ich vorher, aber das gabs es mit irgend etwas Probleme. Ka was das jezt im Detail war. Ein Notify habe ich drauf, aber das Pollen war nötig wegen etwas Anderem. Aber ehrlich gesagt ist das mittlerweile so viel und so verzweigt das ich da selber nicht mehr ganz durch blicke und froh bin das es aktuell stabil läuft. Da ist ne Ausgangsverzögerung und all der misst drin. Irgend etwas hatte sich da glaube immer überschnitten so das ich zusätzlich zu den normalen getriggerten events alle 10 Sekunden zur Sicherheit abfrage ob der status noch so stimmt wie er ist. Aber wie gesagt trigger auf den presence event habe ich, da ist quasi der Haupteil drin. Das pollen ist nur ein NotNagel.
/Daniel
dann start doch dein workaround-polling erst wenn du einen event (den ersten1) bekommen hast.
Zitat von: ext23 am 25 Januar 2018, 10:13:48
Aber ehrlich gesagt ist das mittlerweile so viel und so verzweigt das ich da selber nicht mehr ganz durch blicke und froh bin das es aktuell stabil läuft.
ui ui ui :o
hoffentlich läuft es dann auch weiterhin stabil.