HAllo ,
ich denke noch mehr Leute verwenden den RASPI/FHEM um gewisse Dinge im HAus zu steuern.
Ich selbst fokusiere mich momentan auf :
1) Integration eine vorhandenen Alarmanlage + Cam -- Steuerung EIN/Ausschaltung und MAil alarme
2) Ladesteuerung von Elektrospeicherheizungen -- Zusammenspiel mit PV Batterie
3) Laden von 300l Wasserspeicher nach best. Kriterien
soweit steht 2) und 3 ), und ich habe auch alles so installiert, dass es einen vorhanden Fallback gibt, wenn man der RASPI aus welchem Grund auch
immer abraucht/abstürzt und FHEM nicht mehr starten würde und die Steuerung übernehmen kann.
Wasserspeicher wird dann als default über Netzbetreiber Signal geladen und die Öfen über alte noch vorhandene Theben Steuerung.
Für die Steuerung, wir einiges im meinem PERL modul gesteuert und auch während des laufs in globalen variablen gehalten. Falls FHEM jedoch aus welchem Grund auch immer unterbrochen wird, sind die Werte natürlich weg und müssen nach dem Start erst mal wieder ermittelt und berechnet werden.
Für FHEM devices sichere ich jede Minute das statefile ( WriteStatefile() ) --- Nach dem start von FHEM -- und dem erfolgreichen laden der Werte aus dem
Statefile -- sollte ich jetzt noch eigene Initialisierungen machen.
Dies geht jedoch nicht in der init routine myUtils_Initialize($$) -- sie wird gleich zu Beginn aufgerufen. Auch nicht in fhem.cfg , da erst nach Abschluss des ladens natu
ürlich die states aus dem statefile geladen werden ---
Super wäre hier sicher einen EVENT zu bekommen, wenn das Statefile geladen wurde um dann danach selbst seine Aktionen durchzuführen.
Oder gibt es andere Events, welch man verwenden kann -- keine Ahnung wann das Event "global Initialized " -- abgesetzt wird ?
Kann mir hier jemand weiterhelfen und eine Aussage machen, ohne dass ich dies selbst durch test ermitteln muß ?
Momentan habe ich als workaround einen at nach 10s -- ist aber nicht sehr schön
Kannst Du bitte konkret beschreiben welches Problem Du lösen möchtest ?
Bitte inklusive eines minimalen(!) Codebeispiels um Dein Problem zu illustrieren.
Dachte dies ist soweit klar. Aber oft schreibe ich viel und verliere den Fokus.
Code Beispiel ist nicht so einfach -- also nochmal grobe Erklärung.
Der Strom-Netzbetreiber schickt über ein Rundsteuergerät Signale - z.b. wann der 2-Tarifzähler auf den billigeren NT Nachttarif umschaltet. Dieser ist dazu gedacht um die Elekroöfen zu laden, welche viel Strom brauchen. Garantiert werden pro Tag/Nacht genau 8h ( 480 Min ) Nachttarif. --> Aber wann und in wievielen Blöcken, steht dem Netzbetreiber frei. Über ein Relais, erkennne ich, ob ich im NT Tarifmode bin oder nicht.
Das jeweilige AN/Abschalten des NT Tarifs schreibe ich in ein Logfile. Die LAdedauer erreichnet meine FHEM Lösung anhand der Außentemp und sonstigen Parametern. Sprich wenn ich 100min LAdedauer errechne, lade ich immer erst am Ende der NT Dauer - sprich ichlasse erst mal 380min
vertreichen und lade nur die letzen 100 min um am Morgen voll geladene Öfen zu haben.
Sollte also irgend etwas passieren oder ich auch manuell FHEM gestopped haben und in der NT Phase wieder starten, so muß ich das
Logfile lesen und errechnen, wie lande das NT Signal bereits an war --- dies dann in PERL zu Begin von FHEH
Vielleicht erklären mein Screen copies den Rest.
Es geht nur so, dass ich jede Minute eine Perl Funktion aufrufe, welche die Minuten Timer aktualisieren usw. Kann ja keine regel At ... erzeugen, da nicht klar ist,
wielange ein NT Signal da ist und wann es wieder kommt.
Deshalb -- nach Start von FHEM und einlesen von Statefile, sollte meine Routine, welche die Zeiten aus dem Logfile liest und berechnet aufgerufen werden ---
gibt es ein Event welches verlässlich nach laden von Statefile verwendet werden kann ? die NT Dauer welche angezeigt wird ist ja von dort nicht korrekt -- je nachdem wielange die Unerbrechung von FHEm war !
global initialized wird generiert nachdem die fhem.cfg und das statefile eingelesen ist.
Danke. Werde morgen tests durchführen.