automatisiertes Definieren und Einbinden von Feiertagen/Schulferien als ical

Begonnen von Ralli, 13 April 2015, 15:32:55

Vorheriges Thema - Nächstes Thema

Ralli

Hallo zusammen,

um zukünftige iCals von Feiertagen oder/und Ferien einzubinden (vorausgesetzt, sie sind an der entsprechenden URL zu finden), habe ich mir folgende at-Definitionen gebastelt:


define Neuer_Ferien_Kalender_Check at *10:00 {if ((strftime "%d-%m",localtime) eq "30-12"){fhem ("define Ferien".((strftime "%Y",localtime)+1)." Calendar ical url http://www.schulferien.org/iCal/Ferien/icals/Ferien_Rheinland_Pfalz_".((strftime "%Y",localtime)+1).".ics");; fhem("save")}}



define Neuer_Feiertags_Kalender_Check at *10:00 {if ((strftime "%d-%m",localtime) eq "30-12"){fhem ("define Feiertage".((strftime "%Y",localtime)+1)." Calendar ical url http://www.schulferien.org/iCal/Feiertage/icals/Feiertage_Rheinland_Pfalz_".((strftime "%Y",localtime)+1).".ics");; fhem("save")}}


Damit wird erreicht, dass jeden Tag um 10 Uhr geprüft wird, ob wir den 30.12. haben (at oder DOIF unterstützen bis jetzt keine Datums-Definitionen). Ist dies der Fall, wird ein neues Calendar-Device mit Namen Ferien20xy bzw. Feiertage20xy angelegt - allerdings ohne entsprechende Prüfung, wir gehen einfach aus, dass der Link bzw. das iCal-File existiert!

Die Auswertung bezüglich eines tatsächlichen Ferien- oder Feiertages läuft dann angelehnt an Wiki wie folgt:


define Feiertag dummy
define Feiertag_Check notify Feiertage[0-9]*:modeStart.* {ReadingsVal("Feiertage".(strftime "%Y",localtime), "modeStart", "") =~ "schulferien"? fhem("set Feiertag 1"): fhem("set Feiertag 0")}



define Ferientag dummy
define Ferientag_Check notify Ferien[0-9]*:modeStart.* {ReadingsVal("Ferien".(strftime "%Y",localtime), "modeStart", "") =~ "schulferien"? fhem("set Ferientag 1"): fhem("set Ferientag 0")}
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

FHEMAN

Hi Ralli,

danke, dass du den Code hier veröffentlichst!
Für die Faulen: das aktuelle Jahr wird erstellt mit
{fhem ("define Feiertage".((strftime "%Y",localtime))." Calendar ical url http://www.schulferien.org/iCal/Feiertage/icals/Feiertage_Sachsen_Anhalt_".((strftime "%Y",localtime)).".ics")}

in der Kommandozeile oben + SAVE nicht vergessen.
Übrigens sind schon jetzt die Feiertag ics Dateien für die nächsten hundert Jahre verfügbar :)
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Prof. Dr. Peter Henning

#2
Hm, dieses Codebeispiel hat den Nachteil, dass in jedem Jahr ein neues Calendar-Device aufgemacht wird. Das bedeutet, dass alle weiteren Routinen umgeschrieben werden müssen.

Also besser: Am 30.12. das alte löschen. Dann neu anlegen mit den Daten vom kommenden Jahr.

Auch erschließt sich mir nicht der Sinn eines getrennten Dummy für Feiertage und Ferientage, die jeweils nur einen booleschen Wert haben. M.E: besser, eine Funktion "getDayStatus()" einzuführen, die Werte "Feiertag", "Ferientag" etc. liefern kann und ggf. auch als Argument ein beliebiges Datum bekommt.

Zweite Schwäche: so wird jede Stunde der gesamte Kram geholt...

LG

pah

Ralli

Nein, es muss keine Routine umgeschrieben werden, da der von mir verwendete Notify auf Events in den Readings modeStart aller dem Suchmuster entsprechenden Kalender reagiert, dabei das aktuelle Jahr allerdings für die Readingsabfrage verwendet, um dann entweder Ferientag oder Feiertag zu setzen.

Der zweite "Nachteil" ist auch nicht vorhanden, da Du im jeweiligen Calendar-Device das Poll-Intervall variieren kannst.
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

Prof. Dr. Peter Henning

Ich habe mich doch eigentlich klar ausgedrückt: Erstens geht es nicht um den kleinen notify oben - sondern in einer komplexen FHEM-Installation greifen sicher mehr Routinen auf den Kalender zu.

Zweitens ist es unprofessionell, Mengen von alten Daten (etwa die Feiertage des abgelaufenen Jahres...) vorzuhalten (sogar in der Konfigurationsdatei steht davon noch etwas). _Wenn_ man das schon unbedingt in einem FHEM-Skript statt in einer ordentlichen und viel besser wartbaren Perl-Subroutine abhandeln will, sollte deshalb das andere Device mindestens deaktiviert, besser komplett gelöscht werden.

Drittens habe ich keinerlei Verständnis für das automatische Anlegen von Devices, wenn diese hinterher noch manuell bearbeitet werden müssen, um ihre Abfragefrequenz zu reduzieren.

Damit ich nicht nur kritisiere, sondern auch hier etwas Positives beitrage:

1. Zu Jahresbeginn wird (einmal, aber durchaus wiederholbar) der aktuelle Ferien- und Feiertagskalender geholt.
2. Diese beiden Dateien werden im FHEM-Verzeichnis abgelegt, können von dort aus einmal pro Tag überprüft und ggf. neu geladen werden.

Einen entsprechende Code werde ich in den nächsten Tagen mal hier posten.

LG

pah



Ralli

Ich habe mich genau so klar ausgedrückt. Du musst den Code nicht nehmen und nicht professionell finden - das ist aber egal. Denn jeder kann ihn für sich selbst entweder so nehmen oder umschreiben.
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

kvo1

Hallo Zusammen,
@Ralli , danke !

mir hat das für meine Thematik schon etwas geholfen. Habe die Feier- und Ferientage in meine eigene
owncloud importiert und trage dann bei Bedarf z.b. schulfreien Tage per Hand dazu (okay nicht soooo elegant).

Den Kalender lese ich (zylisch) ein und prüfe ob da ein String "ferien" vorkommt , fülle ein dummy (0 ider 1)
und benutze das dann für weitere Aufgaben (z.B. Jalousiesteuerung) ....leider tut´s noch nicht wirklich  ::)

@pah
ZitatEinen entsprechende Code werde ich in den nächsten Tagen mal hier posten.
würde mich interessieren !

klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Prof. Dr. Peter Henning

#7
Mach ich doch glatt.

In myUtils.pm:


sub getCalendar(){
   my $ret;
   my $year=strftime("%Y",localtime);
   $ret = system("wget -O feiertage.ics http://www.schulferien.org/iCal/Feiertage/icals/Feiertage_Baden_Wuerttemberg_".$year.".ics");
   $ret = system("wget -O ferien.ics http://www.schulferien.org/iCal/Ferien/icals/Ferien_Baden_Wuerttemberg_".$year.".ics");
 
};   

sub getDayStatus(){
   my $ret;
   my $msg;
   my @lines;
   my $date;
   my $desc;
   #strftime "%d-%m",localtime
   
   $ret = fhem("get Feiertage text modeAlarmOrStart");
   if( $ret ne ""){
     @lines = split('\n',$ret);
     $date  = substr($lines[0],0,8);
     $desc  = substr($lines[0],15);
     $msg = "$desc $date";
     fhem("set Tagesstatus $desc");
     fhem("set Tagesmode Feiertag");
   }else{
     $ret = fhem("get Ferien text modeAlarmOrStart");
     if( $ret ne ""){
       @lines = split('\n',$ret);
       $date  = substr($lines[0],0,8);
       $desc  = substr($lines[0],15);
       $msg = "$desc $date";
       fhem("set Tagesstatus $desc");
       fhem("set Tagesmode Ferien");
     }else{
       if( strftime("%u",localtime) > 5 ){
         $msg = "Wochenende";
         fhem("set Tagesstatus $msg");
         fhem("set Tagesmode $msg");
       }else{
         $msg = "Arbeitstag";
         fhem("set Tagesstatus $msg");
         fhem("set Tagesmode $msg");
       }
     }
   }
   return $msg;
}

sub checkCalendars($){

  my ($period) = @_;
 
  #-- Start oder Alarm stündlich
  if( ($period eq 'hour') || ($period eq '') ){
    my $text;
    my $hash = $defs{'Termin'};
    $text = fhem("get Muell text modeAlarmOrStart");
    $text = "--" if (!$text);
    $text = "--" if ($text eq "");
    #fhem("set Termin ".$text);
    return $text;
   
  #-- Vorschau täglich oder wenn neu gestartet
  }elsif( ($period eq 'day') || (ReadingsVal("Termin","today",0) eq "today") ){
    my $stoday    = strftime('%2d.%2m.%2y', localtime(time));
    my $stomorrow = strftime('%2d.%2m.%2y', localtime(time+86400));
    my $stwodays  = strftime('%2d.%2m.%2y', localtime(time+2*86400));
    my @today     = ();
    my @tomorrow  = ();
    my @twodays   = ();
    my (@lines,$line,@linarr);
 
    @lines = split('\n',fhem("get Muell text modeAlarmOrStart"));
    foreach $line (@lines){
      #-- line looks as
      #   18.05.15 07:00 Restmüllabfuhr
      chomp($line);
      @linarr = split(' ',$line);
      if( $linarr[0] eq $stoday ){
        push(@today,$linarr[1]." ".$linarr[2]);
      }elsif( $linarr[0] eq $stomorrow ){
        push(@tomorrow,$linarr[1]." ".$linarr[2]);
      }elsif( $linarr[0] eq $stwodays ){
        push(@twodays,$linarr[1]." ".$linarr[2]);
      }     
    }
   
    @lines = split('\n',fhem("get Muell text modeUpcoming"));
    foreach $line (@lines){
      #-- line looks as
      #   18.05.15 07:00 Restmüllabfuhr
      chomp($line);
      @linarr = split(' ',$line);
      if( $linarr[0] eq $stoday ){
        push(@today,$linarr[1]." ".$linarr[2]);
      }elsif( $linarr[0] eq $stomorrow ){
        push(@tomorrow,$linarr[1]." ".$linarr[2]);
      }elsif( $linarr[0] eq $stwodays ){
        push(@twodays,$linarr[1]." ".$linarr[2]);
      }     
    }
    $defs{'Termin'}{READINGS}{'today'}{VAL}    = join(" ",@today);
    $defs{'Termin'}{READINGS}{'tomorrow'}{VAL} = join(" ",@tomorrow);
    $defs{'Termin'}{READINGS}{'twodays'}{VAL}  = join(" ",@twodays);
   
    return "today: ".join(" ",@today)."\ntomorrow: ".join(" ",@tomorrow)."\ntwodays: ".join(" ",@twodays);
  }
}


Die erste Routine wird einmal zu Jahresbeginn gerufen, holt die Ferienkalender. Eine Datei muell.ics wird manuall erzeugt oder sonstwie generiert.

Dann gibt es in den Konfigurationsdateien noch folgende Einträge:


define I.L.morning at *05:00:00 set OWLCD backlight on;;set RixowTab screenBrightness 255;;set Archos7Tab screenBrightness 255;;{getDayStatus()};;
attr I.L.morning group timer
attr I.L.morning room Kontrollraum

define I.L.daybreak at *00:00:10 {checkCalendars('day')}
attr I.L.daybreak group timer
attr I.L.daybreak room Kontrollraum

define I.L.hour at +*01:00:00 set Termin %EVENT
attr I.L.hour alignTime 00:00
attr I.L.hour group timer
attr I.L.hour room Kontrollraum

define Tagesstatus dummy
attr Tagesstatus group Calendar
attr Tagesstatus room Kontrollraum

define Feiertage Calendar ical file feiertage.ics 86400
attr Feiertage room Kontrollraum

define Ferien Calendar ical file ferien.ics 86400
attr Ferien room Kontrollraum

define Tagesmode dummy
attr Tagesmode group Calendar
attr Tagesmode room Kontrollraum

define Muell Calendar ical file muell.ics
attr Muell group Calendar
attr Muell room Kontrollraum

define Termin dummy
attr Termin group Calendar
attr Termin room Kontrollraum
attr Termin stateFormat active
attr Termin userReadings active {checkCalendars('hour')},today:none {'today'},tomorrow:none {'tomorrow'},twodays:none {'twodays'}
attr Termin verbose 1

define Ticker notify Termin:.* {fhem("set RixowTab tickerMessage ".Value('Termin'));;;;fhem("set Archos7Tab tickerMessage ".Value('Termin'))}
attr Ticker group Calendar
attr Ticker room Kontrollraum


Bewirkt, dass einmal zu Tagesbeginn der Tagesstatus gesetzt wird (10 Sekunden nach Mitternacht) sowie einmal zu jeder vollen Stunde auf einen anstehenden Termin überprüft wird.

Die Anzeig ein FHEM ist nicht sehr komfortabel, das läuft bei mir auf einem Tablet an der Wand, das auf einen separaten Apache Web Server zugreift. Dieser hängt (per imagemagick) an ein generiertes Bild ein nettes kleines Icon an - je nachdem entweder eine kleine farbige Mülltonne (je nach Art der Müllabholung), oder so wie hier eine kleine grüne Kiste mit Altpapier ...
(http://oberfl.png)

LG

pah

kvo1

@pah , vielen Dank, werd ich mir mal sehen ...

Wer kann mir kurz auf die Sprünge helfen...

im meinem Kalender "BLN_Ferien" steht im reading "modeStart" für  heute der Text "ferien"  (bzw fe659ee8cf)

über

define BLN_Ferientag dummy
define BLN_Ferien_notify notify BLN_Ferien { fhem "set BLN_Ferientag " . (ReadingsVal("BLN_Ferien", "modeStart", "") =~ "ferien" ? 1: 0) }


soll nun bei der Erkennung des strings "ferien" das dummy auf 0  oder 1 gesetzt werden ! Tut´s aber nicht  :'(

auch das ....

define FBLN_Ferien_notify notify BLN_Ferien:modeStart.* {ReadingsVal("BLN_Ferien", "modeStart", "") =~ "ferien"? fhem("set Ferientag 1"): fhem("set Ferientag 0")}

geht leider nicht ! Wer kann mir kurz helfen ?

Danke vorab !


RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Ralli

Was ist die Ausgabe, wenn Du


{ fhem "set BLN_Ferientag " . (ReadingsVal("BLN_Ferien", "modeStart", "") =~ "ferien" ? 1: 0) }


bzw. nur mal


{ReadingsVal("BLN_Ferien", "modeStart", "") =~ "ferien" ? 1: 0}


einfach mal in die Eingabe vom Web-Frontend eingibst? Steht nichts im Log?
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

kvo1

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

kvo1

weiterer Test, wenn ich im Web-Frontend  ...

{ReadingsVal("BLN_Ferien", "modeStart", "")}  eingebe , erhalte ich 1ccee3dd23

Über das Calendar-Device ... ergibt das mittels

get BLN_Ferien text 1ccee3dd23  dann folgendes ... 31.05.15 00:00 ferien

hier geht dann (vermutlich) der Vergleich (=~ "ferien") nicht, weil das ReadingsVal  nicht des String (31.05.15 00:00) liefert , sondern 1ccee3dd23 ... oder ?

Was kann ich tun !?
klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Ralli

Da ja nur Ferientage in dem Kalender sein dürften, kannst Du die Abfrage einfach umdrehen. Wenn nichts im Reading modeStart drin steht, ist auch kein Ferientag.


{ fhem "set BLN_Ferientag " . (ReadingsVal("BLN_Ferien", "modeStart", "") ne "" ? 1: 0) }
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

kvo1

wenn ich das so angeben
define BLN_Ferien_notify notify BLN_Ferien:modeStart:.* { fhem "set BLN_Ferientag " . (ReadingsVal("BLN_Ferien", "modeStart", "") =~ "1ccee3dd23" ? 1: 0) }

wird das dummy "BLN_Ferientag"   auf 1  gesetzt !

Problem ist nur das sich dies ja immer ändert ... , auch bei gleichen Einträgen ..
also im Kalender gelöscht , gleichen Eintrag wiederholt ..... jetzt steht da  40af736c3c

klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

kvo1

Hallo Ralli,

Zitat von: Ralli am 31 Mai 2015, 20:54:18
Da ja nur Ferientage in dem Kalender sein dürften, kannst Du die Abfrage einfach umdrehen. Wenn nichts im Reading modeStart drin steht, ist auch kein Ferientag.


{ fhem "set BLN_Ferientag " . (ReadingsVal("BLN_Ferien", "modeStart", "") ne "" ? 1: 0) }


super das geht und man kann sogar "irgendwas" reinschreiben ohne auf den korrekten Text ("ferien") zu achten. Ein Plus für WAF  ;)

Danke nochmal für die Hilfe ...!

Gruss
Klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

cubiefhem

Ich habe letztes Jahr einen Ferienkalender unter Anleitung durch das Wiki erstellt, der auch eine ganze Zeit lang funktioniert hat. Heute bei einer Überprüfung liefert er nur noch Schrott zurück. Irgendetwas muss sich da wohl verändert haben

Die Definition sieht so aus:

# Schulferien
define Bayern_Ferien Calendar ical file ./Daten/Ferien_Bayern.ics
attr Bayern_Ferien room Kalender
define Bayern_Ferientag dummy
attr Bayern_Ferientag alias Schulferien
attr Bayern_Ferientag devStateIcon 0:FS20.off 1:FS20.on
attr Bayern_Ferientag room Kalender
define Bayern_Ferien.notify notify Bayern_Ferien { fhem "set Bayern_Ferientag " . (ReadingsVal("Bayern_Ferien", "modeStart", "") =~ "schulferien" ? 1: 0) }


Ich kann den Fehler einfach nicht finden

Das Reading:

Internals:
   DEF        ical file ./Daten/Ferien_Bayern.ics
   NAME       Bayern_Ferien
   NR         589
   STATE      Active
   TYPE       Calendar
   Readings:
     2015-12-23 13:17:43   all             F_2015_6170schulferienorg
     2015-12-23 13:17:43   lastCheck       2015-12-23 13:17:43
     2015-12-23 13:17:43   lastUpdate      2015-12-23 13:17:43
     2015-12-23 13:17:43   modeAlarm
     2015-12-23 13:17:43   modeAlarmOrStart
     2015-12-23 13:17:43   modeAlarmed
     2015-12-23 13:17:43   modeChanged
     2015-12-23 13:17:43   modeEnd
     2015-12-23 13:17:43   modeEnded
     2015-12-23 13:17:43   modeStart
     2015-12-23 13:17:43   modeStarted
     2015-12-23 13:17:43   modeUpcoming    F_2015_6170schulferienorg
     2015-12-23 13:17:43   stateChanged
     2015-12-23 13:17:43   stateDeleted
     2015-12-23 13:17:43   stateNew
     2015-12-23 13:17:43   stateUpdated
   Fhem:
     interval   3600
     lastCheck  2015-12-23 13:17:43
     lastChkTs  1450873063.85793
     lastUpdate 2015-12-23 13:17:43
     lstUpdtTs  1450873063.85802
     nextCheck  2015-12-23 14:17:43
     nextChkTs  1450876663.85802
     nextUpdate 2015-12-23 14:17:43
     nxtUpdtTs  1450876663.85802
     type       file
     url        ./Daten/Ferien_Bayern.ics
Attributes:
   room       Kalender



kvo1

Auf den Werten Blick ist da nix falsch...
Ich habe allerdings irgendwann mal die regexp umgedreht....

BLN_Ferien:modeStart:.* { fhem "set BLN_Ferientag " . (ReadingsVal("BLN_Ferien", "modeStart", "") ne "" ? 1: 0) }

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

andies

Diese Definition geht nicht mehr, oder? schulferien.org scheint die Links nicht mehr freizugeben, man muss da Captcha eintragen.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

kvo1

Zitat von: andies am 10 April 2017, 22:19:48
Diese Definition geht nicht mehr, oder? schulferien.org scheint die Links nicht mehr freizugeben, man muss da Captcha eintragen.
Ups, ist mir noch garnicht aufgefallen, muss ich mal testen

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Ralli

Leider sind die ics bei schulferien.org nur noch mit temporären Links zu bekommen. Darum klappen die Automatismen in der Tat so nicht mehr.
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

andies

Was ist von der Idee zu halten, dass wir ein eigenes Modul entwickeln und einer von uns (wir sind so viele, da findet sich einer) einmal pro Jahr die neuen Daten per Hand in das Modul einspielt und fertig ist die Laube?
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Ralli

Für das "einmal pro Jahr" verstehe ich den Benefit nicht. Da kannst Du doch auch bei schulferien.org die ical-Datei herunterladen und manuell in fhem einbinden.
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

andies

Zitat von: Ralli am 17 April 2017, 12:28:31
Für das "einmal pro Jahr" verstehe ich den Benefit nicht. Da kannst Du doch auch bei schulferien.org die ical-Datei herunterladen und manuell in fhem einbinden.
Ja, das ist schon klar. Ich dachte daran, dass sonst "einer von uns" einmal die Datei herunterlädt und die anderen free rider sind. Nach Deinem Vorschlag müssen wir alle die Datei einmal herunterladen.

PS Wie binde ich die ical ein? Mit welchem Modul (ich bin neu hier).
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Ralli

Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

Prof. Dr. Peter Henning

@andies: "Ich bin neu hier" ===> Anfängerdoku lesen, Commandref lesen. Und bitte keine Vorschläge für neue Module...

LG

pah

kvo1

Zitat von: Ralli am 17 April 2017, 12:28:31
Für das "einmal pro Jahr" verstehe ich den Benefit nicht. Da kannst Du doch auch bei schulferien.org die ical-Datei herunterladen und manuell in fhem einbinden.

genau so mache ich das mittlerweile auch, bzw. importieren mir die ical-Datei  in meine owncloud !

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

andies

Und wie aktualisierst Du dann die Daten? In der http-Version wird ja täglich heruntergeladen und dadurch das notify ausgelöst. Wenn die in der cloud liegen, lädst Du doch nicht die Datei täglich neu herunter, oder doch?

<EDIT> define my_trigger at 17:00:00 usw. Oder? 
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Ralli

Nein, da hast Du das bzw. die Notify(s) nicht verstanden.

Es wurde jeden Tag geprüft, ob es der 30.12. ist. Und wenn ja, dann wurde die neue ical-Datei heruntergeladen. Für eine Aktualisierung der Kalenderdaten sorgte das Modul Calendar selbst im eingestellten Abstand.
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

andies

Ich meinte etwas anderes: Wie prüfst Du (täglich), ob ein Ferientag vorliegt?
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

CoolTux

In dem Du Dein Kalendermodul abfragst. Du findest Lösungen dafür im Wiki.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

andies

Ich habe ja eine Lösung (siehe mein edit oben). Aber nur mal als Hinweis, weil ich das an anderer Stelle moniert hatte: gerade der Wiki-Eintrag bei Calendar ist diesbezüglich außerordentlich dürftig. Wer nicht weiß, wie es geht, findet da nicht mal einen Link...


Gesendet von iPhone mit Tapatalk Pro
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

CoolTux

Aber jetzt weißst Du wie es geht? Dann wäre es schön wenn Du den Wikieintrag aktualisierst/ergänzt.

Danke Dir
Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

andies

Ja, das habe ich bei Signalduino auch gemacht. Bei Calendar übersteigt es leider meine Fähigkeiten (meine Lösung war am Ende ein Dirty copy-paste). Aber sobald ich es kapiert habe, mache ich das. Das ist nur eine größere Baustelle.


Gesendet von iPhone mit Tapatalk Pro
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

CoolTux

Ich habe die ical Datei im übrigen einfach in einen Googlekalender importiert. Da hat man dann Ruhe für 1-2 Jahre. Den Googlekalender dann in FHEM einbinden mit dem Kalendermodul und schick ist. Da kann man dann auch gleich noch Feiertage und/oder Schichtplan abfragen wenn man das auch in einem Googlekalender hat.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

andies

Bei mir hat die Einbindung des Google-Kalenders in FHEM über 10 Minuten gedauert (ich habe Termine seit 2006) und daher habe ich das abgebrochen. Ist so eine Einlese-Zeit normal?


Gesendet von iPhone mit Tapatalk Pro
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

kvo1

Zitat von: CoolTux am 19 April 2017, 08:06:35
Ich habe die ical Datei im übrigen einfach in einen Googlekalender importiert. Da hat man dann Ruhe für 1-2 Jahre. Den Googlekalender dann in FHEM einbinden mit dem Kalendermodul und schick ist. Da kann man dann auch gleich noch Feiertage und/oder Schichtplan abfragen wenn man das auch in einem Googlekalender hat.
genau so, nur owncloud, läuft es bei mir !

und dann damit

https://forum.fhem.de/index.php/topic,36244.msg299701.html#msg299701

Wenn als nix im Kalender steht ist Kein FT oder keine Ferien oder nix besonderes


RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

CoolTux

Zitat von: andies am 19 April 2017, 08:08:34
Bei mir hat die Einbindung des Google-Kalenders in FHEM über 10 Minuten gedauert (ich habe Termine seit 2006) und daher habe ich das abgebrochen. Ist so eine Einlese-Zeit normal?


Gesendet von iPhone mit Tapatalk Pro

Keine Ahnung. Aber ich würde da einen extra Kalender nehmen. Also einen für Feiertage, einen für Ferien und einen für Schichtarbeit.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Yil

Zitat von: Prof. Dr. Peter Henning am 31 Mai 2015, 17:56:05


sub getCalendar(){
   my $ret;
   my $year=strftime("%Y",localtime);
   $ret = system("wget -O feiertage.ics http://www.schulferien.org/iCal/Feiertage/icals/Feiertage_Baden_Wuerttemberg_".$year.".ics");
   $ret = system("wget -O ferien.ics http://www.schulferien.org/iCal/Ferien/icals/Ferien_Baden_Wuerttemberg_".$year.".ics");
 
};   





Kannst Du den Codeschnipsel für den einmaligen Aufruf pro Jahr hierfür auch noch posten?


Außerdem bekomme ich bei der Ausführung folgende Fehler, die lokalen ICS-Dateien werden nicht befüllt:

--2017-05-01 14:13:59--  http://www.schulferien.org/iCal/Feiertage/icals/Feiertage_Baden_Wuerttemberg_2017.ics
Resolving www.schulferien.org (www.schulferien.org)... 193.149.38.41
Connecting to www.schulferien.org (www.schulferien.org)|193.149.38.41|:80... connected.
HTTP request sent, awaiting response... 410 Gone
2017-05-01 14:13:59 ERROR 410: Gone.

--2017-05-01 14:13:59--  http://www.schulferien.org/iCal/Ferien/icals/Ferien_Baden_Wuerttemberg_2017.ics
Resolving www.schulferien.org (www.schulferien.org)... 193.149.38.41
Connecting to www.schulferien.org (www.schulferien.org)|193.149.38.41|:80... connected.
HTTP request sent, awaiting response... 410 Gone
2017-05-01 14:13:59 ERROR 410: Gone.


Liegt das an dem Captcha-Verfahren auf schulferien.org?

VG Yil
HM CCU2 mit ca. 35 HM-Komponenten inkl. Bausätzen
fhem auf RPi mit Sonos, EnOcean-CUL, ZWAVE-CUL und Bluetooth
Osram Lightify

andies

Zitat von: Yil am 01 Mai 2017, 13:48:35
Außerdem bekomme ich bei der Ausführung folgende Fehler, die lokalen ICS-Dateien werden nicht befüllt:
Man muss beim Anruf ein Captcha händisch ausfüllen, deshalb geht das mW nicht. Oder übersehe ich da was?
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

KernSani

Zitat von: andies am 01 Mai 2017, 14:20:43
Man muss beim Anruf ein Captcha händisch ausfüllen, deshalb geht das mW nicht. Oder übersehe ich da was?
Nach dem Ausfüllen des Captchas bekommt man einen Link. Der funktioniert bei mir seit Anfsng des (Schul-) Jahres einwandfrei...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Yil

Mein Download-Link sieht so aus:

http://www.schulferien.org/media/ical/deutschland/ferien_baden-wuerttemberg_2017.ics?k=Vna5OrNUOsZAn8yByQlS-2kEVrG7-LdAPbW0Urc3yQdfeUmStMJ2F_mf9roqlJhM1W4eLSyro7BEMmQalRznWO04MYi2uwzYdAy6HsiN1YE

Aber gerade das wollte ich ja nicht, sondern einen Zugang so, dass automatisch 1x im Jahr der Kalender aktualisiert wurden, so wie pah das oben beschrieben hat. Was nutzt ein Automatismus, wenn ich den Link jedes Jahr händisch anpassen muss  ::)
HM CCU2 mit ca. 35 HM-Komponenten inkl. Bausätzen
fhem auf RPi mit Sonos, EnOcean-CUL, ZWAVE-CUL und Bluetooth
Osram Lightify

Ralli

Leute. Das klappt so nicht mehr. Die Links, die man bei schulferien.org bekommt, sind temporäre Links. Die Gültigkeit dieser bei jedem Aufruf sich ändernden Links ist also begrenzt. Und um einen solchen temporären Link zu bekommen, bedarf es eines Captcha.

Also ist jeglicher Automatismus, um 1) neue ics-Dateien zu bekommen und 2) bei bereits eingebundenen ics-Dateien diese bei Aktualisierung auch im eigenen System automatisch aktualisiert zu bekommen, so nicht mehr möglich. Egal ob per Script in der myUtils oder als Codeschnipsel in einem Notify, at, DOIF oder ...
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

andies

Ich habe das so gelöst, dass ich mir eine E-Mail am 1. Januar schicke und dann die neue Datei mit dem Schulferien herunterlade und unter einem festen Namen in FHEM speichere. Sooo aufwendig ist das nun nicht.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Christian72D

Ich habe aktuell ein Problem mit dem Wiki Eintrag: https://wiki.fhem.de/wiki/Wochenende,_Feiertage_und_Schulferien

Unabhängig davon daß da zwei Bundesländer verwurschtelt wurden taugt dieser Kalender leider nicht für Feiertage.
Denn laut dieser Seite sind heute keine Schulferien obwohl heute ja ein Feiertag ist.

Ich kann mir ja von Google direkt und automatisch und für alle Ewigkeit gültig den Feiertags Kalender für "mein" Bundesland einpflegen.

Aber auf welches "Zauberwort" soll der Dummy dann schalten?

Laut Wiki sieht es ja so aus:

define NRW_Ferien.notify notify NRW_Ferien { \
        fhem "set BW_Ferientag " . (ReadingsVal("BW_Ferien", "modeStart", "") =~ "schulferien" ? 1: 0) }


Kann man nicht einfach auf "irgend einen Text" triggern? Wenn ja, wie?

andies

Ist $we nicht der Feiertag plus Wochenende? Sonst
defmod berlin holiday
(damit noch ein drittes Bundesland ins Spiel kommt) und dann steht da
Readings
state Tag der Arbeit 2017-05-01 15:33:17
tomorrow none 2017-05-01 15:33:17
yesterday none 2017-05-01 15:33:17

Den Wikieintrag ändere ich gleich mal.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

derHeimwerker

#45
Hallo Zusammen,

ich muss dieses alte Thema einmal hervor holen.
Ich habe die Routine getDayStatus zu übernommen und es funktioniert auch alles problemlos. Nun habe ich ein komplettes System Update gemacht. Der Ferienkalender wird anscheinend immer noch richtig verarbeitet.

Nur wird mir jetzt angezeigt, dass heute ein Feiertag ist, weil heute Neujahr 01-01-1017 ist ?!

Was haut da nicht hin ?


sub getCalendar(){
   my $ret;
   my $year=strftime("%Y",localtime);
   $ret = system("wget -O ferien.ics https://www.ferienwiki.de/exports/ferien/".$year."/de/niedersachsen");
   $ret = system("wget -O feiertage.ics https://www.ferienwiki.de/exports/feiertage/".$year."/de/niedersachsen");
}

# Der Tagesstatus (Text des Ereignisses) und der Tagesmode (Ferien, Feiertag, Wochenende, Wochentag)
# wird aus den Kalendern ermittelt. Aufruf aus FHEM um 03:15 -->  TagesstatusCheck_at

sub getDayStatus(){
   my $ret;
   my $msg;
   my @lines;
   my $date;
   my $desc;
   #strftime "%d-%m",localtime
   
   $ret = fhem("get Ferien_cal text modeAlarmOrStart");
   if( $ret ne ""){
     @lines = split('\n',$ret);
     $date  = substr($lines[0],0,8);
     $desc  = substr($lines[0],15);
     $msg = "$desc $date";
     fhem("set Tagesstatus_du $desc");
     fhem("set Tagesmode_du Ferien");

   }else{
     $ret = fhem("get Feiertage_cal text modeAlarmOrStart");
     if( $ret ne ""){
       @lines = split('\n',$ret);
       $date  = substr($lines[0],0,8);
       $desc  = substr($lines[0],15);
       $msg = "$desc $date";
       fhem("set Tagesstatus_du $desc");
       fhem("set Tagesmode_du Feiertag");
     }else{
       if( strftime("%u",localtime) > 5 ){
         $msg = "Wochenende";
         fhem("set Tagesstatus_du $msg");
         fhem("set Tagesmode_du $msg");
       }else{
         $msg = "Wochentag";
         fhem("set Tagesstatus_du $msg");
         fhem("set Tagesmode_du $msg");
       }
     }
   }
   return $msg;
}


Der Auszug aus der fhem.cfg


define Ferien_cal Calendar ical file ferien.ics 86400
attr Ferien_cal event-on-change-reading modeStarted,modeEnded,modeChanged,modeUpcoming
attr Ferien_cal group Kalender
attr Ferien_cal hideOlderThan 1
attr Ferien_cal room 9.4_Kalendar
attr Ferien_cal verbose 5

define Feiertage_cal Calendar ical file feiertage.ics 86400
attr Feiertage_cal event-on-change-reading modeStarted,modeEnded,modeChanged,modeUpcoming
attr Feiertage_cal group Kalender
attr Feiertage_cal hideOlderThan 1
attr Feiertage_cal room 9.4_Kalendar
attr Feiertage_cal verbose 5

define TagesstatusCheck_at at *03:15:00 {getDayStatus()};;
attr TagesstatusCheck_at group Kalender
attr TagesstatusCheck_at room 9.4_Kalendar

define Tagesstatus_du dummy
attr Tagesstatus_du group Kalender
attr Tagesstatus_du room 9.4_Kalendar

define Tagesmode_du dummy
attr Tagesmode_du group Kalender
attr Tagesmode_du room 9.4_Kalendar

derHeimwerker

Hat sich erledigt. Der Fehler lag in der ical Datei. Die Feiertage hatten dort keinen End-Termin eingetragen. Also war der 01.01. immer noch ein gestarteter aktueller Termin.

my-engel

Hallo Zusammen,

ich muss dieses Thema auch noch einmal hervor holen.
Habe das gleiche Problem, die Feiertage haben keinen End-Termin und der 01.01. steht noch als aktueller Termin.
Nur der Feiertagskalender macht Probleme, der Ferienkalender funktioniert...
Ein herumspielen mit den attr hideOlderThan usw. brachte nichts.
Habt ihr eine andere Kalenderquelle eingesetzt ? bzw.
Welche Lösung setzt ihr ein???

MfG Uwe

Prof. Dr. Peter Henning

Selbst mit XSLT generierte ical-Dateien. Garantiert fehlerfrei.

LG

pah

my-engel

Hallo pah,

Danke für Deine Antwort, ich werde mich mal damit beschäftigen...

Mit dem "Garantiert fehlerfrei" ist so eine Sache,
da der Fehler40 immer 40cm vor dem Ding sitzt ;-)

Habe vorerst eine andere Quelle für den Feiertagskalender eingesetzt:
"wget -O feiertage.ics http://www.ifeiertage.de/sn-.ics"
dann in der Datei mal von Hand den 1.5. auf 8.4. geändert, und siehe da
... Hurra heute ist "Feiertag" ....
und ich geh jetzt in den Garten.

MfG
Uwe

Prof. Dr. Peter Henning

ZitatMit dem "Garantiert fehlerfrei" ist so eine Sache,
da der Fehler40 immer 40cm vor dem Ding sitzt ;-)
Sicher nicht.

pah

nils_

Zitat von: my-engel am 07 April 2018, 13:37:21
Habe das gleiche Problem, die Feiertage haben keinen End-Termin und der 01.01. steht noch als aktueller Termin.
Nur der Feiertagskalender macht Probleme, der Ferienkalender funktioniert...

beim letzten calendar update sollte das eigentlich kein problem mehr sein (also fehlende end-zeiten bei den terminen)


dieses forum hier ist eigentlich nur für code-schnipsel gedacht :)
guck einfach mal dort:
https://forum.fhem.de/index.php/board,85.0.html
viele Wege in FHEM es gibt!

pnewman

Zitat von: Prof. Dr. Peter Henning am 31 Mai 2015, 17:56:05

Die erste Routine wird einmal zu Jahresbeginn gerufen, holt die Ferienkalender. Eine Datei muell.ics wird manuall erzeugt oder sonstwie generiert.


LG

pah

Vielen Dank für den Code und die Idee den Kalender nur einmal im Jahr zu holen.
Das finde ich aus mehreren Gründen als beste Idee.

Nun habe ich kleine Wissenslücken:
Wohin werden die Kalender denn gespeichert?
Wohin muss ich den Kalender Müll.ics speichern?

Ich habe schon auf dem Raps gesucht, aber nichts gefunden.

Gruß

Ralf

Edit:
Ich habe die .ics Dateien in den Ordner /opt/fhem kopiert.
Dort werden sie dann gefunden wenn man  set Feiertage reload eingibt.
Raspberry Pi3B+ / Nano-Cul 868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

my-engel

Hallo,

Seit dem letzten Update von 57_Calendar.pm funktionieren die Abfragen wie
get Ferienkalender text modeAlarmOrStart
standardmässig nicht mehr.

Lösung vorerst:
Im zugehörigen Kalender dann das Attribut
hasModeReadings
auf 1 setzen

So wie ich es verstanden habe sollte man aber auf Abfragen wie
get Ferienkalender events limit:when=today
get Ferienkalender events limit:when=0

umbauen.
Hat dieses evtl. schon jemand getan und könnte dies kurz mitteilen?

VG
Uwe