fhem if bei Durchlauf der fhem.cfg

Begonnen von Phlox, 01 November 2022, 11:20:25

Vorheriges Thema - Nächstes Thema

Phlox

Hallo,
ich suche schon lange nach einer Möglichkeit folgendes Problem zu lösen.

Mein floorplan sollte jedes Monat anders aussehen (im Dezember z.B. soll die Weihnachtsbeleuchtung zu sehen sein im Juli natürlich nicht, sondern eher der Mähroboter)

Bis jetzt habe ich das immer manuell gelöst, indem ich in der fhem.cfg     #include juli.cfg   oder    #include dezember.cfg  auskommentiert habe.

Kann ich das automatisieren, indem ich einen Dummy "aktueller_Monat" abfrage und beim Start der fhem.cfg dieser Dummy abgefragt wird....kommt dabei 07 raus, soll include Juli.cfg durchgeführt werden.


Also bei jedem Start der fhem.cfg sollte je nach Monat eine include Monat.cfg durchgeführt werden.
Ich bräuchte also ein IF in der fhem.cfg ohne "at"  und ohne "notify" , geht das?

Oder habt ihr eine bessere Idee, damit ich diese manuelle Implementierung durch auskommentieren der include Monat.cfg automatisieren kann?

Vielen Dank für eure Hilfe, bin für jeden Hinweis dankbar.

Phlox


betateilchen

Zitat von: Phlox am 01 November 2022, 11:20:25
Ich bräuchte also ein IF in der fhem.cfg ohne "at"  und ohne "notify" , geht das?

Nein.

Zitat von: Phlox am 01 November 2022, 11:20:25
Oder habt ihr eine bessere Idee, damit ich diese manuelle Implementierung durch auskommentieren der include Monat.cfg automatisieren kann?

Per crontab auf Betriebsystemebene die jeweilige Monatsdatei am Monatsanfang nach "monat.cfg" kopieren (oder per symbolischem Link verfügbar machen) und in der FHEM Konfiguration diesen fixen Namen verwenden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoWiemann

Du könntest ja allgemein ein include monat.cfg definieren. Mit einem at kopierst Du über ein qx(cp monatsdatei.cfg monat.cfg -f) den aktuellen Monat auf die zu includierende cfg. Dann noch einen Fhem Neustart.

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

Phlox

#3
@betateilchen
danke, super Idee, guter Ausgangspunkt...

@JoWiemann
danke, das ist die Idee weiterverbessert...und man bleibt in fhem...


Vielen lieben Dank euch beiden, ich probiers gleich aus....ich habe mich so auf eine IF Abfrage innerhalb fhem.cfg versteift, dass ich gar nicht auf diesen Schleichweg gekommen bin...danke danke danke

Grüße

Phlox

Nachtrag:
es funktioniert bestens

Sailor

Moin Phlox

Zitat von: Phlox am 01 November 2022, 11:20:25
Hallo,
ich suche schon lange nach einer Möglichkeit folgendes Problem zu lösen.
Mein floorplan sollte jedes Monat anders aussehen (im Dezember z.B. soll die Weihnachtsbeleuchtung zu sehen sein im Juli natürlich nicht, sondern eher der Mähroboter)
Bis jetzt habe ich das immer manuell gelöst, indem ich in der fhem.cfg     #include juli.cfg   oder    #include dezember.cfg  auskommentiert habe.

Also ich habe nicht wirklich den Sinn verstanden, warum man beim Wechsel des FloorPlan - Hintergrundbilds gleich die fhem.cfg swappen muss.
Warum kein "at" um Mitternacht definieren

Der Code sinngemäß:

my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
$Jahrestag+=1;

if ($Jahrestag < 79) {
File::Copy::rmscopy("/opt/fhem/www/images/default/fp_Winter.png", /opt/fhem/www/images/default/fp_Floorplan.png) or die $!;
fhem("set WEB rereadicons");
}
if ($Jahrestag >= 79 && $Jahrestag < 172) {
File::Copy::rmscopy("/opt/fhem/www/images/default/fp_Fruehling.png", /opt/fhem/www/images/default/fp_Floorplan.png) or die $!;
fhem("set WEB rereadicons");
}
if ($Jahrestag >= 172 && $Jahrestag < 266) {
File::Copy::rmscopy("/opt/fhem/www/images/default/fp_Sommer.png", /opt/fhem/www/images/default/fp_Floorplan.png) or die $!;
fhem("set WEB rereadicons");
}
if ($Jahrestag >= 266 && $Jahrestag < 355) {
File::Copy::rmscopy("/opt/fhem/www/images/default/fp_Herbst.png", /opt/fhem/www/images/default/fp_Floorplan.png) or die $!;
fhem("set WEB rereadicons");
}
if ($Jahrestag >= 355) {
File::Copy::rmscopy("/opt/fhem/www/images/default/fp_Winter.png", /opt/fhem/www/images/default/fp_Floorplan.png) or die $!;
fhem("set WEB rereadicons");
}


Gruß
    Sailor
******************************
Man wird immer besser...

Wernieman

Habe nur ein paar Fragen:
1. Warum Jahrestag und nicht mMonat als Entscheidungsgrundlage?
2. Ist "die" wirklich richtig hier? Dann schmiert FHEM bei Problemen gleich richtig ab ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

betateilchen

Zitat von: Wernieman am 01 November 2022, 15:26:47
1. Warum Jahrestag und nicht mMonat als Entscheidungsgrundlage?

Vielleicht, weil man jahreszeitenbezogen umstellen möchte und nicht monatsweise?

Tag #79 = 20.März
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Wernieman

Stimmt ... aber das "die" ist trotzdem "böse" ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

betateilchen

das macht man halt so an der Elbe...  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Phlox

Danke für eure Antworten, wie bereits geschrieben funktioniert das Ganze mit qx und mit shutdown restart hervorragend....Hintergrundbild bleibt natürlich immer gleich, ist ja mein Haus und Hof Grundriss....es wird da einiges an Aktoren geändert...im Sommer ist das ganze Gardenazeugs sichtbar, dann kommen poolpumpen und im Winter das ganze Heizungszeugs und die Weihnachtsbeleuchtung....da ist kein Platz für alles auf einmal....

Wegen meiner darf der Thread als gelöst geschlossen werden....oder muss ich das irgendwo schließen?

Danke nochmals an alle, ihr habt mir schnell und präzise geholfen.

betateilchen

Du brauchst den Thread nicht zu schließen, aber Du könntest im ersten Beitrag den Titel ändern und "gelöst" davorschreiben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Wernieman

Zitat von: betateilchen am 01 November 2022, 19:10:58
das macht man halt so an der Elbe...  8)
So weit von der Elbe weg wohne ich jetzt auch nicht ..... nur etwas die Fußkillometer rauf ;o)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Sailor

Moinsen

Zitat von: betateilchen am 01 November 2022, 19:10:58
das macht man halt so an der Elbe...  8)

Jaja, das war ja auch nur ein Beispiel aus der Huefte geschossen.
Mann sollte selbstverständlich eval {}; anstelle von die verwenden!
:P

Gruss
    Sailor
******************************
Man wird immer besser...

JoWiemann

Zitat von: Sailor am 02 November 2022, 07:28:30

Mann sollte selbstverständlich eval {}; anstelle von die verwenden!


Habe ich gerade dem Universum mitgeteilt. Also, dass es den Programm Code für mein Leben entsprechend anpasst.  ;)

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