Weekdaytimer und Feiertage

Begonnen von kaiviertel, 14 Dezember 2013, 02:05:03

Vorheriges Thema - Nächstes Thema

kaiviertel

Hi

hier noch einmal mein Problem...

eines vornweg ich bin ein absoluter Neuling auf diesem Gebiet...

Ich habe über FHEM ((Fritzbox 7390 + CUL 868) (die CUL 433 ist noch auf dem Postweg)) meine "Schaltung" der Weihnachtsbeleuchtung realisiert.

So weit so gut. An Wochentagen andere Schaltzeiten als am Wochenende --> das funktioniert ja schon einmal.
Nun soll an den Feiertagen die Beleuchtung den ganzen Tag leuchten. Ich probiere jetzt schon keine Ahnung 5 Tage und bekomme das einfach nicht hin.  :(
Würde das gern mit dem WeekDaytimer realisieren.

Hier noch ein Auszug aus meiner fhem.cfg

##########################################################################################
##### Sektion ELRO #####


#### Weihnachstbeleuchtung ####

### Fensterbeleuchtung ###

define ELRO_01010_A IT F0F0F0FFFF FF F0
attr ELRO_01010_A IODev CUL_1
attr ELRO_01010_A alias Fensterbeleuchtung
attr ELRO_01010_A group WeihnachtenZSU
attr ELRO_01010_A model itswitch
attr ELRO_01010_A room Weihnachten
define FB_WE at *07:30 { if ($we) { fhem("set ELRO_01010_A on-till 09:00") } }
define FB_WT at *06:00 { if (!$we) { fhem("set ELRO_01010_A on-till 08:30") } }
define FB_WE_ABEND at *15:00 { if ($we) { fhem("set ELRO_01010_A on-till 22:00") } }
define FB_WT_ABEND at *15:30 { if (!$we) { fhem("set ELRO_01010_A on-till 22:00") } }


### Bergmann_Engel ###

define ELRO_01010_AB IT F0F0F00FFF FF F0
attr ELRO_01010_AB IODev CUL_1
attr ELRO_01010_AB alias Bergmann_Engel
attr ELRO_01010_AB group WeihnachtenZSU
attr ELRO_01010_AB model itswitch
attr ELRO_01010_AB room Weihnachten
define BE_WE at *07:30 { if ($we) { fhem("set ELRO_01010_AB on-till 09:00") } }
define BE_WT at *06:00 { if (!$we) { fhem("set ELRO_01010_AB on-till 08:30") } }
define BE_WE_ABEND at *15:00 { if ($we) { fhem("set ELRO_01010_AB on-till 23:00") } }
define BE_WT_ABEND at *15:30 { if (!$we) { fhem("set ELRO_01010_AB on-till 22:00") } }


### Weihnachtsbaum_Balkon ###

define ELRO_01010_B IT F0F0FF0FFF FF F0
attr ELRO_01010_B IODev CUL_1
attr ELRO_01010_B alias Weihnachtsbaum_Balkon
attr ELRO_01010_B group WeihnachtenZSU
attr ELRO_01010_B model itswitch
attr ELRO_01010_B room Weihnachten
define WB_WE at *07:30 { if ($we) { fhem("set ELRO_01010_B on-till 09:00") } }
define WB_WT at *06:00 { if (!$we) { fhem("set ELRO_01010_B on-till 08:30") } }
define WB_WE_ABEND at *15:00 { if ($we) { fhem("set ELRO_01010_B on-till 22:00") } }
define WB_WT_ABEND at *15:30 { if (!$we) { fhem("set ELRO_01010_B on-till 23:00") } }

#### Weihnachstbeleuchtung ENDE ####


und die Sachsen.holiday

# Format für einzelne Tage: 1 MM-DD <Text>
1 01-01 Neujahr
1 01-06 Heilige Drei Koenige
1 05-01 Tag der Arbeit
1 08-15 Mariae Himmelfahrt
1 10-03 Tag der deutschen Einheit
1 11-01 Allerheiligen
1 12-24 Weihnachten
1 12-25 1. Weihnachtstag
1 12-26 2. Weihnachtstag
1 12-31 Silvester
1 12-14 Testfeiertag


# Osterbezogene Feiertage # Format: 2 <relative Tage von Ostern> <Text>
2 -2 Karfreitag
2 1 Ostermontag
2 39 Christi Himmelfahrt
2 50 Pfingsten
2 60 Fronleichnam
5 -1 Wed 11 23 Buss und Bettag


### Urlaube ###

# Format: 4 MM-DD MM-DD <Text>

4


Kann mir da jemand weiterhelfen?

Puschel74

#1
Hallo,

ZitatWürde das gern mit dem WeekDaytimer realisieren.

Lt. diesem Link http://forum.fhem.de/index.php/topic,10011.msg108874.html#msg108874]http://forum.fhem.de/index.php/topic,10011.msg108874.html#msg108874]http://forum.fhem.de/index.php/topic,10011.msg108874.html#msg108874
ist eine Abfrage auf $we in Arbeit aber wohl noch nicht eingebaut.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

mele

Hallo,

ich löse das separat über eine Feiertage-Datei über die holiday Funktion:

NRW_Feiertag.holiday
# festes Datum
1 01-01 Neujahr
1 05-01 Tag der Arbeit
1 10-03 Tag der Deutschen Einheit
1 11-01 Allerheiligen
1 12-24 Heiligabend
1 12-25 1. Weihnachtstag
1 12-26 2. Weihnachtstag
1 12-31 Silvester

# abhängig von Ostersonntag
2 -48 Rosenmontag
2 -2 Karfreitag
2 1 Ostermontag
2 39 Christi Himmelfahrt
2 50 Pfingstmontag
2 60 Fronleichnam


Zur Anzeige wird noch etwas ähnlich einem dummy definiert:
define NRW_Feiertag holiday


Die Abfrage läuft dann ähnlich der Weekend-Nutzung:
if (!($we) && $value{NRW_Feiertag} eq "none".......

So realisiere ich auch die Steuerung während Urlaub über die Urlaub.holiday.

VG
Manuel
FHEM auf NUC/Proxmox (Rpi 2 / Rpi Zero W mit FHEM2FHEM, RFHEM)
Homematic/LaCrosse/PCA301/Shelly, Rollladen, Batterieaktor + Relais zur Schaltung Garagentor (Promatic 2), Xiaomi FlowerSens, Bewässerungssteuerung Garten und Gewächshaus, Weatherman und Landroid

Puschel74

#3
Hallo,

die "Sachsen.holiday" hat der TE ja bereits.

$we wird bei Wochenenden und Einträgen in dieser *.holiday ja auch auf 1 gesetzt.

Nur eine direkte Abfrage auf $we im WeekdayTimer ist lt. angegebenem Link noch nicht implementiert.

Mit einem Dummy liese sich dies zwischenzeitlich lösen - gute Idee.
Ein at definieren das täglich auf $we prüft und bei 1 einen dummy auf on (oder off je nachdem) schaltet und im WeekdayTimer noch auf diesen dummy prüfen.

So in die Richtung:
define Wochenende dummy
define Wochenende_pruef at *00:05:00 {
if ($we) {
fhem("set Wochenende on");
}
else {
fhem("set Wochenende off");
}
}

und im Weekdaytimer dann für Wochenende bzw. Feiertage ein
define FB_WE WeekdayTimer FB_WE Mo-So|09:00|on Mo-So|22:00|off {fhem("set ELRO_01010_A %") if(Value("Wochenende") eq "on");}
und für alle anderen Tage
define FB_WE WeekdayTimer FB_WE Mo-So|08:30|on Mo-So|22:00|off {fhem("set ELRO_01010_A %") if(Value("Wochenende") eq "off");}

Grüße

Edith: Sollte auch ohne dummy klappen (ich brauch nen Kaffee  8) )
define FB_WE WeekdayTimer FB_WE Mo-So|09:00|on Mo-So|22:00|off {fhem("set ELRO_01010_A %") if($we)}
und für alle anderen Tage
define FB_WE WeekdayTimer FB_WE Mo-So|08:30|on Mo-So|22:00|off {fhem("set ELRO_01010_A %") if(!$we)}
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Dietmar63

#4
so ist es richtig:
define FB_WE WeekdayTimer FB_WE Mo-So|09:00|on Mo-So|22:00|off ($we)
($we) wir in echten Perlcode verwandelt.

Es gibt noch die Idee $we in Mo-So,$we|09:00|on aufzunehmen, aber das ist nicht so einfach wie es aussieht.
http://forum.fhem.de/index.php/topic,16399.msg111333.html#msg111333
Deshalb bitte zunächst diese Variante einsetzen. Ich hoffe du schaffst es noch bis Weihnachten.

Du kannst in der Bedingnung ($we)  alles Mögliche Abfragen:
($wday==1)
(ReadingsVal(xx,yy,zz) eq "irgendwas")
(Value("gerät"))


Wenn es nicht läuft bitte für das zu prüfenden Gerät das Attribut verbose auf 5 setzen, dann bekommst du detaillierte Information, was gesendet wird.

Tipp: Die Zeiten in den Weekdaytimern kann man in der Detailübersicht im def während dass sie laufen ändern, um beispielsweise zeitnahe Schaltungen auszuprobieren(siehe Anhang). Um $we zu prüfen einfach den aktuellen Tag in der holiday zu einem Feiertag machen.   
http://forum.fhem.de/index.php/topic,17170.msg112549.html#msg112549
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Puschel74

Hallo,

da der TE aber seine Elro schalten will sollte es nicht so lauten?

define FB_WE WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off (!$we)

Darüber bin nämlich gestolpert als ich den WeekdayTimer für mein Fensterlicht ausprobiert habe.

Mit dem Code
define FB_WE WeekdayTimer FB_WE Mo-So|09:00|on Mo-So|22:00|off ($we)
wird das Device FB_WE geschaltet und nicht die Steckdose - oder lieg ich da falsch?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Dietmar63

Ist richtig. Ich habe mir die Details nicht so genau angesehen. Der zwei Parameter ist natürlich das Gerät, das geschaltet werden soll.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

kaiviertel

Danke für die schnelle Hilfe

ich habe jetzt einen Dummy erstellt und ein define welches den Dummy schalten soll klappt aber leider noch nicht so richtig naja besser gesagt gar nicht.

define Feiertag dummy
define Feiertag_pruef at *15:01:00  {\
if (Value("Sachsen") eq "none") {fhem("set Feiertag off")} else {fhem("set Feiertag on")}}

das ist der Auszug aus meiner fhem.cfg

Puschel74

Hallo,

die Lösung mit dem Dummy was ein Schnellschuss von mir - das kannst du vergessen.

Nimm das und es sollte klappen:

define FB_W WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off (!$we)
define FB_WE WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off ($we)
Einfach copy&paste in die FHEM-Befehlszeile und gut ist.

Die Werte kannst du ja später noch bearbeiten.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

kaiviertel

Hallo Puschel74

in Deinem letzten Post definierst du unterschiedliche Schaltzeiten Woche und Wochenende nur möchte ich gern das die Beleuchtung an den Feiertagen den ganzen Tag leuchtet somit war der ansatz mit dem dummy ganz gut.
Sollte doch dann so funktionieren oder?

define FB_W WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off if (!$we) && (Value("Feiertag") eq "off")
define FB_WE WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off if ($we) && (Value("Feiertag") eq "off")
define FB_WFT WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off if (Value("Feiertag") eq "on")

Puschel74

Hallo,

wenn in der Sachsen.holiday entsprechende Einträge vorhanden sind wird $we automatisch auf 1 gesetzt wenn ein Feiertag ist.

Also trifft dieser Timer
define FB_WE WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off ($we)
am Wochenende als auch bei einem Feiertag zu.

Die Zeiten kannst du ja anpassen wie du das möchtest - und auch noch mehr eintragen.
Ganz so wie es dir gefällt.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

kaiviertel

Hi,

ja stimmt schon aber  :) somit werden doch Wochenende und Feiertag gleich behandelt. Ich möchte aber den Feiertag als eigenständigen "Wert" haben
da am Feiertag die Beleuchtung den ganzen Tag leuchten soll egal ob Wochenende ist oder nicht. Am Wochenende gelten andere Schaltzeiten als in der Woche außer es ist eine Feiertag.

Gruß Kai

rudolfkoenig

Dann zusaetzlich zu $we auch noch $wday abfragen.
Oder fhem("get holidayInstance today") auf "none" pruefen.

Puschel74

Hallo,

ZitatIch möchte aber den Feiertag als eigenständigen "Wert" haben
Ach so.
Sorry das hatte ich überlesen.

Zitat Rudi:
ZitatOder fhem("get holidayInstance today") auf "none" pruefen.
Zitat Ende

Also guckst du.
define Feiertag_pruef at *15:01:00  {
  if (("get Sachsen today") eq "none") {
    fhem("set Feiertag off");
  }
  else {
    fhem("set Feiertag on");
  }
}

sollte so klappen.

Kleiner Tipp am Rande:
Vergiss das es eine fhem.cfg gibt.
Als Anfänger kannst du darin nur mehr kaputt machen als du meinst.

Verwende die FHEM-Befehlszeile und lass FHEM den Rest machen - das macht das schon richtig  ;)

Neues notify, at , Device was auch immer immer! über die Befehlszeile anlegen:
z.B.: notify
define <Name_den_du_wählen_kannst> notify <Auf_welches_Gerät_soll_ich_reagieren>:<Und_worauf_bei_dem_Gerät_genau> {}
Ein at sieht ähnlich aus:
define <Name_den_du_wählen_kannst_1> at <und_nun_die_Uhrzeit> {}
Einfache notify und at findest du ja im Einsteiger.pdf und in der commandref

Die beiden Namen sind nur deswegen unterschiedlich (einmal ohne und einmal mit "_1") weil ein Name in FHEM nur einmal vergeben werden darf - sonst gibts ne Fehlermeldung.

Du gehst als nun erstmal her und gibst oben in die Befehlszeile ein:
delete Feiertag_pruef(damit löschen wir erstmal dein at sauber aus der fhem.cfg raus).
Nun gibst du wiedr in die Befehlszeile ein
define Feiertag_pruef at *16:55:00  {}(oder einen anderen Zeitpunkt - kann ja sein das du den Beitrag erst später liest  ;) ).

Nun sollte dich FHEM bereits in die Detailansicht gebracht haben.
Dort hast du nun eine Zeile die mit DEF beginnt und so aussehen sollte:
Zitat*16:55:00 {}
Nun erstmal beherzt auf DEF (die 3 Buchstaben) klicken und du kansnt das at (sowie auch ein notify oder Device oder was auch immer) bearbeiten.
Nun machst du das draus:
*16:55:00  {
  if (("get Sachsen today") eq "none") {
    fhem("set Feiertag off");
  }
  else {
    fhem("set Feiertag on");
  }
}

Anschliessend unten auf <modify Feiertag_pruef> klicken und das FHEM-LogFile im Auge behalten - dort werden die Fehlermeldungen ausgespuckt die meine Codes produzieren  ;D
Wenn der Dummy Feiertag existiert sollte dieser auf on stehen wenn der Zeitpunkt rum ist (es sei den in Sachsen ist heute ein Feiertag - ich wohne in BW und bin gebürtiger Össi  ::) hab also ein Alibi das ich Eure Feiertage nicht auswendig kenne).
Wenn nicht steht im LogFile eine Fehlermeldung.

Grüße

P.S.: Kann die Texte mal jemand rauskopieren und irgendwie in ein "Anfänger Band 1" schreiben?
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

kaiviertel

Hi Puschel74

habe das jetzt so gemacht wie Du es mir geschrieben hast. Jedoch setzt es den Dummy Feiertag immer auf "on" egal ob Holiday "none" ist oder nicht. Ich komm hier einfach nicht weiter...

Feiertag_pruef
*00:01:00  {
  if (("get Sachsen today") eq "none") {
    fhem("set Feiertag off");
  }
  else {
    fhem("set Feiertag on");
  }
}


und ein WeekDayTimer Wochentag und keine Feiertag
ELRO_01010_AB Mo-So|06:00|on Mo-So|08:30:00|off Mo-So|15:30|on Mo-So|22:00:00|off  (!$we) && (Value("Feiertag") eq "0ff")


und aus Auszug aus dem LOG

2013.12.15 23:15:00 5: exec at command Feiertag_pruef
2013.12.15 23:15:00 5: Cmd: >{
  if (("get Sachsen today") eq "none") {
    fhem("set Feiertag off");
  }
  else {
    fhem("set Feiertag on");
  }
}<
2013.12.15 23:15:00 5: Cmd: >set Feiertag on<
2013.12.15 23:15:00 4: dummy set Feiertag on
2013.12.15 23:15:00 5: Triggering Feiertag (1 changes)
2013.12.15 23:15:00 5: Notify loop for Feiertag on
2013.12.15 23:15:00 5: redefine at command Feiertag_pruef as *23:15:00  {
  if (("get Sachsen today") eq "none") {
    fhem("set Feiertag off");
  }
  else {
    fhem("set Feiertag on");
  }
}