[GELÖST] Kommando in fhem ausführen nach reboot?

Begonnen von Kornelius777, 27 November 2025, 08:32:46

Vorheriges Thema - Nächstes Thema

Kornelius777

Hallo zusammen,

täglich um 13:00 Uhr läuft bei mir ein at, das tagesaktuell die Rolladensteuerung berechnet (abhängig vom Sonnenstand und mit ein paar Random-Zeiten verändert).
Der at-Befehl generiert dann weitere at-Befehle, die nur an diesem Tag Gültigkeit haben.

Wenn (warum auch immer) nach 13:00 Uhr der fhem-Server neu startet, sind die generierten Rolladen-Runter-Befehle verschwunden.
Welche Möglichkeiten habe ich?
Gibt es eine Möglichkeit, beim Reboot ein Kommando laufen zu lassen? (analog zum "@reboot" in der crontab?)
Kann ich die generierten at-Befehle irgendwie persistieren?
Wie kann ich dafür sorgen, dass die Rolladensteuerung auch nach einem Reboot noch funktioniert?

Danke für eure Hilfe!


Beta-User

Schau dir das einzige in der Basis-cfg enthaltene notify an und die "set"Befehle für at.
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

betateilchen

Zitat von: Kornelius777 am 27 November 2025, 08:32:46Kann ich die generierten at-Befehle irgendwie persistieren?
Wie kann ich dafür sorgen, dass die Rolladensteuerung auch nach einem Reboot noch funktioniert?

Die errechneten zusätzlichen at-devices müssen in der Konfiguration gespeichert werden, damit sie auch nach einem Reboot wieder zur Verfügung stehen. Du musst also am Ende der Berechnung ein "save config" ausführen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Kornelius777

Zitat von: betateilchen am 27 November 2025, 08:53:30Die errechneten zusätzlichen at-devices müssen in der Konfiguration gespeichert werden, damit sie auch nach einem Reboot wieder zur Verfügung stehen. Du musst also am Ende der Berechnung ein "save config" ausführen.

Also innerhalb des Perl-Teils:
fhem("save config");
Richtig?

JoWiemann

Hallo,

Du könntest auch ein notify auf global:INITIALIZED definieren.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Beta-User

Zitat von: Kornelius777 am 27 November 2025, 10:40:06
Zitat von: betateilchen am 27 November 2025, 08:53:30Die errechneten zusätzlichen at-devices müssen in der Konfiguration gespeichert werden, damit sie auch nach einem Reboot wieder zur Verfügung stehen. Du musst also am Ende der Berechnung ein "save config" ausführen.

Also innerhalb des Perl-Teils:
fhem("save config");
Richtig?
Das kommt drauf an...
Siehe commandref zu at.

Vielleicht zeigst du das at, dann ist es eventuell einfacher zu helfen.

Das wäre aber nicht die Lösung zu der von dir gestellten Fragen im Thread -Titel😜.

Siehe Antwort von JoWiemann eben und mein Hinweis von vorhin.
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

betateilchen

#6
Zitat von: Beta-User am 27 November 2025, 10:51:54Das wäre aber nicht die Lösung zu der von dir gestellten Fragen im Thread -Titel😜.

Siehe Antwort von JoWiemann eben und mein Hinweis von vorhin.

Aber Eure Antworten gehen halt komplett am eigentlichen Problem und an den klar gestellten Fragen vorbei, die im Eingangsbeitrag sehr genau gestellt sind. Man sollte vor dem Antworten nicht nur den Titel gelesen haben, nur um "als Erster" eine Antwort zu schreiben, egal, ob sie passt oder nicht.

Zitat von: Kornelius777 am 27 November 2025, 10:40:06Also innerhalb des Perl-Teils:
fhem("save config");
Richtig?

Ja, so kannst Du das machen.

(Für die hier zu erwartenden, üblichen 2-3 Klugscheißer:
ja, es würde bei einmalig auszuführenden at-devices auch ausreichen, das statefile zu sichern. Aber für Anfänger bevorzuge ich Standardverfahren.)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Beta-User

Hmm, mal abgesehen von den im Detail unbekannten Wirkungen des initialen at sollte der Weg über das global-notify und damit ausgeführte at-execNow auch zum Ziel führen.
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Kornelius777

Zitat von: Beta-User am 27 November 2025, 11:26:02Hmm, mal abgesehen von den im Detail unbekannten Wirkungen des initialen at sollte der Weg über das global-notify und damit ausgeführte at-execNow auch zum Ziel führen.

Ja - das käme meiner ursprünglichen Frage nach einem "Autostart" tatsächlich am Nächsten.
Aber auch der Hinweis mit dem "save config" war hilfreich.

Danke euch allen für die schnelle und kompetente Beantwortung!

betateilchen

#9
ZitatWenn (warum auch immer) nach 13:00 Uhr der fhem-Server neu startet, sind die generierten Rolladen-Runter-Befehle verschwunden.

Die Befehle (aka at-devices) verschwinden, wenn/weil sie vor dem Neustart nicht in der Konfiguration gespeichert wurden.

Und WENN sie gesichert sind, braucht es weder ein notify noch ein execNow.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Beta-User

...dieses at:
Zitattäglich um 13:00 Uhr läuft bei mir ein at,
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Kornelius777

Ich habe jetzt ganz einfach Gürtel UND Hosenträger genommen:
Das at, das die täglichen Rolladen-Bewegungen definiert (also all die anderen at herstellt), hat jetzt ein "save config" am Ende, und zusätzlich habe ich das notify auf global:INITIALIZED eingerichtet.
Da im "übergeordneten" at pro Rolladen folgendes drinsteht:
if(exists($defs{'at_Jalousie_Kueche_Runter'})) {
 fhem("delete at_Jalousie_Kueche_Runter");
 }
ist das Ganze auch unschädlich.

Nochmal: Danke für eure Hilfe!

Beta-User

Zitat von: Kornelius777 am 27 November 2025, 11:51:09 if(exists($defs{'at_Jalousie_Kueche_Runter'})) {
 fhem("delete at_Jalousie_Kueche_Runter");
 }
ist das Ganze auch unschädlich.

Nochmal: Danke für eure Hilfe!
"defmod at_Jalousie_Kueche_Runter at ..."
als besser lesbare Alternative ist bekannt?
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Kornelius777

Zitat von: Beta-User am 27 November 2025, 11:54:40"defmod at_Jalousie_Kueche_Runter at ..."
als besser lesbare Alternative ist bekannt?

Huch? Jetzt komme ich nicht ganz mit.

Meine Zeile LÖSCHT ein "at", falls es bereits definiert ist.
Dein Vorschlag DEFINIERT das at.

...oder habe ich jetzt irgendwas komplett falsch verstanden?

Kornelius777

Ah - habe verstanden.
define vs defmod.

Nee - hatte ich noch nicht auf dem Schirm.
Danke!