Und schon wieder Müllabfuhr-Visualisierung

Begonnen von Vize, 27 Juli 2015, 18:24:33

Vorheriges Thema - Nächstes Thema

Vize

Hallo BlackStone,

zu meinem komischen Termin aus post Nr. 37 habe ich zumindest den Zusammenhang herausgefunden.
Das Entsorgungsdatum wäre übrigens im Jahr 2061  ;)

Um meine Kalenderdatei schmal zu halten habe ich die Termine, da sie ja im 2- bzw. 4-wöchentlichen Rhythmus - wenn keine Feiertage dazwischen kommen - über das ganze Jahr stattfinden, so angelegt:
DTSTART;VALUE=DATE:20150826
DTEND;VALUE=DATE:20150826
RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=WE
UID:1
SUMMARY:Biotonne
END:VEVENT


Somit brauche ich das für jede weitere Abfallart nur einmalig wiederholen.

Sobald ich das RRULE rausnehme, reicht ein DTSTART, aber dann müsste ich jedes Datum für jeden Termin einzeln anlegen. Mit RRULE - was die Datei sehr übersichtlich macht - brauche ich auch ein DTEND.

Warum, kann vielleicht jemand anderes erklären...ich hab es noch nicht erforscht...

Gruß
Andreas

BlackStone

Nun das mit DTEND und RRULE ist schon logisch. ^^
Die Rule muss ja einen StartPunkt haben um den Nächsten Termin festzulegen. das geht nur wenn bekannt ist wann der Letzte Termin zu ende war/ist.

Jedoch 2061, hm da wird die Tonne doch nur noch Gebeamt. ;D


kvo1

Zitat von: kvo1 am 19 August 2015, 00:52:52
Hallo Zusammen,
wollte nur kurz Erfolg vermelden, meine Restmülltonne (Mi 19.8) ist weg, nur die gelbe Tonne ist noch da.
Nächste Abholung wäre in 14 Tagen, will nicht so lange Warten, werde mal paar Termin reinbasteln... :)

kvo1

PS:
Irgendwie wäre es doch nett , am Vorabend nochmal einen speziellen hinweiston o.ä. zu erhalten, aber
da gibt es ja genug Beispiel zum lernen  ;)
Hallo Zusammen,
da habe ich wohl zu früh gefreut  :'(
Leider ist mein per Hand eingetragener Termin (22.08) immer noch da !

BEGIN:VEVENT
UID:20150714T000011CEST-0802UvVabc@www.bsr.de
DTSTAMP:20150713T220010Z
CATEGORIES:BSR Abholung
DESCRIPTION:Gelbe Tonne
DTSTART;VALUE=DATE:20150822
LOCATION:Hauptstr. 110\,
SUMMARY:Gelbe Tonne
END:VEVENT

Vielleicht liegt das doch am fehlenden DTEND ???
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

Vize

Moin,

hmm, bei BlackStone klappt es ja, so wie er schreibt...

Wie gesagt, ich benutzte in meiner Kalenderdatei DTSTART und DTEND mit Uhrzeit und damit funktioniert es.

Häng doch mal die DEF deines dummies, die DEF der readingsGroup und deren Atrribute und die 99_myUtils hier an.

Gruß
Andreas

BlackStone

#49
Ja bei mir klappt es, wie es soll.
ich warte nur noch für den letzten Test, ob es demnächst angezeigt wird. nächste Woche ist wieder eine Abholung, wenn alles so läuft wie bisher müsste Mittwoch die PapierTonne zur Abholung auftauchen.

edit:/ wie gut das man lesen kann. *gg* vorher kommt die biotonne nochmal. die müsste also morgen drin sein.

kvo1

Zitat von: Vize am 24 August 2015, 08:40:43
Moin,

hmm, bei BlackStone klappt es ja, so wie er schreibt...

Wie gesagt, ich benutzte in meiner Kalenderdatei DTSTART und DTEND mit Uhrzeit und damit funktioniert es.

Häng doch mal die DEF deines dummies, die DEF der readingsGroup und deren Atrribute und die 99_myUtils hier an.

Gruß
Andreas
Hallo Andreas,
hier bitte die gesamte DEF...

define muellkalender Calendar ical file /opt/fhem/BSR_Abfuhrkalender.ics 21600
attr muellkalender group Müll
attr muellkalender icon message_garbage@blue
attr muellkalender room Kalender
define no_muelltermine notify muellkalender:modeUpcoming.* { muelltermine("$EVENT") }
attr no_muelltermine group Müll
attr no_muelltermine room Kalender
define du_muelltermine dummy
attr du_muelltermine group Müll
attr du_muelltermine room Kalender
define muellabfuhr readingsGroup du_muelltermine:Restmuell,Biotonne,Papiertonne,GelberSack \ du_muelltermine:Restmuell_dTag,Biotonne_dTag,Papiertonne_dTag,GelberSack_dTag
attr muellabfuhr group Müll
attr muellabfuhr noheading 1
attr muellabfuhr nonames 1
attr muellabfuhr room Kalender
attr muellabfuhr style style='text-align:center'
attr muellabfuhr valueFormat { return $VALUE if ( $VALUE ne '88');; return undef;; }
attr muellabfuhr valueIcon { Biotonne => 'dustbin@green', GelberSack => 'dustbin@yellow', Papiertonne => 'dustbin@blue', Restmuell => 'message_garbage@orange'}


und die SUB aus der 99_myUtils
sub
muelltermine ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
my $t = time;
my $dtPapier = '';
my $dtGelberSack = '';
my $dtRestmuell = '';
my $dtBiomuell = '';
my @days = qw/So Mo Di Mi Do Fr Sa/;


foreach my $uid (@uids) {




   my $Kalendertext = fhem("get muellkalender summary $uid");

   
   
   if ($Kalendertext =~ /Blaue Tonne/) {
      my $dt = fhem("get muellkalender start $uid");
      my @SplitDt = split(/ /,$dt);
      my @SplitDate = split(/\./,$SplitDt[0]);
      my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);;
      if ($dtPapier eq '' || ($eventDate < $dtPapier && $eventDate > $t))
      {
         $dtPapier = $eventDate;
         my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
         my $date = $SplitDt[0];
         my @date = split /\./,$date;
         my $wday = $days[(localtime(timelocal(0,0,0,$date[0],$date[1]-1,$date[2]-1900)))[6]];
         my @date1 = split /\./,$SplitDt[0];
         my $wday1 = "$wday" . " : "  . "$date1[0]"."."."$date1[1]";
         if ($dayDiff >= 0 && $dayDiff <= 7) {
         fhem("setreading du_muelltermine Papiertonne $dayDiff");
         fhem("setreading du_muelltermine Papiertonne_dTag $wday1");
         }else{
         fhem("setreading du_muelltermine Papiertonne 88");
         fhem("setreading du_muelltermine Papiertonne_dTag 88");
         }
       }
   };
   if ($Kalendertext =~ /Gelbe Tonne/) {
      my $dt = fhem("get muellkalender start $uid");
      my @SplitDt = split(/ /,$dt);
      my @SplitDate = split(/\./,$SplitDt[0]);
      my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);;
      if ($dtGelberSack eq '' || ($eventDate < $dtGelberSack && $eventDate > $t))
      {
         $dtGelberSack = $eventDate;
         my $dayDiff = floor(($dtGelberSack - $t) / 60 / 60 / 24 + 1);
         my $date = $SplitDt[0];
         my @date = split /\./,$date;
         my $wday = $days[(localtime(timelocal(0,0,0,$date[0],$date[1]-1,$date[2]-1900)))[6]];
         my @date1 = split /\./,$SplitDt[0];
         my $wday1 = "$wday" . " : "  . "$date1[0]"."."."$date1[1]";
        if ($dayDiff >= 0 && $dayDiff <= 7) {
         fhem("setreading du_muelltermine GelberSack $dayDiff");
         fhem("setreading du_muelltermine GelberSack_dTag $wday1");
         }else{
         fhem("setreading du_muelltermine GelberSack 88");
         fhem("setreading du_muelltermine GelberSack_dTag 88");
         }
       }
   };
   if ($Kalendertext =~ /Abholung Hausmüll/) {
      my $dt = fhem("get muellkalender start $uid");
      my @SplitDt = split(/ /,$dt);
      my @SplitDate = split(/\./,$SplitDt[0]);
      my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);;
      if ($dtRestmuell eq '' || ($eventDate < $dtRestmuell && $eventDate > $t))
      {
          $dtRestmuell = $eventDate;
          my $dayDiff = floor(($dtRestmuell - $t) / 60 / 60 / 24 + 1);
          my $date = $SplitDt[0];
          my @date = split /\./,$date;
          my $wday = $days[(localtime(timelocal(0,0,0,$date[0],$date[1]-1,$date[2]-1900)))[6]];
          my @date1 = split /\./,$SplitDt[0];
          my $wday1 = "$wday" . " : "  . "$date1[0]"."."."$date1[1]";
          if ($dayDiff >= 0 && $dayDiff <= 7) {
          fhem("setreading du_muelltermine Restmuell $dayDiff");
          fhem("setreading du_muelltermine Restmuell_dTag $wday1");
          }else{
          fhem("setreading du_muelltermine Restmuell 88");
          fhem("setreading du_muelltermine Restmuell_dTag 88");
          }
        }
   };
   if ($Kalendertext =~ /Biotonne/) {
      my $dt = fhem("get muellkalender start $uid");
      my @SplitDt = split(/ /,$dt);
      my @SplitDate = split(/\./,$SplitDt[0]);
      my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);;
      if ($dtBiomuell eq '' || ($eventDate < $dtBiomuell && $eventDate > $t))
      {
         $dtBiomuell = $eventDate;
         my $dayDiff = floor(($dtBiomuell - $t) / 60 / 60 / 24 + 1);
         my $date = $SplitDt[0];
         my @date = split /\./,$date;
         my $wday = $days[(localtime(timelocal(0,0,0,$date[0],$date[1]-1,$date[2]-1900)))[6]];
         my @date1 = split /\./,$SplitDt[0];
         my $wday1 = "$wday" . " : "  . "$date1[0]"."."."$date1[1]";
         if ($dayDiff >= 0 && $dayDiff <= 7) {
         fhem("setreading du_muelltermine Biotonne $dayDiff");
         fhem("setreading du_muelltermine Biotonne_dTag $wday1");
         }else{
         fhem("setreading du_muelltermine Biotonne 88");
         fhem("setreading du_muelltermine Biotonne_dTag 88");
         }       
        };
   };
}
}


danke
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

Vize

Moin,

auf den ersten Blick seh ich beim Überfliegen keine Fehler in deinen Angaben.

Vielleicht schleppst du noch ein "altes" reading aus dem dummy mit? Welche readings stehen denn noch in deinem dummy?
Könntest ja mal den dummy komplett löschen und nochmal neu anlegen und befüllen. Dann mal schauen, ob der verstrichene Termin immer noch da ist...

Ansonsten hat BlackStone vielleicht noch n Tipp...du verwendest ja seine Version...

Gruß
Andreas

BlackStone

soweit sehe ich da jetzt auch kein fehler.

was ich mir jedoch forstellen könnte, wäre die ics datei. da ja ein termin per hand eingetragen wurde.
was ist wenn da jetzt die alte linux/windows freundschaft zu schlägt. meine den berühmtem zeilenumbruch in der datei auf windows cr/lf und mei linux nur lf.
was ja auch dafür sorgt das Textdateien von linux unter windows nur einzeilig angezeigt werden ohne zeilenumbrüche.

kvo1

so, habe es nochmal mit Lunix geändert ! (vi) und einen "gelben Termin" auf morgen gesetzt !
Mal sehen wir es dann morgen früh ausschaut !
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

BlackStone

auf morgen nützt dir nix, wenn die abholung morgen ist müsste der termin ja heute schon auftauchen.  nach einem fhem neustart sollte er da sein.

kvo1

Zitat von: BlackStone am 25 August 2015, 16:04:17
auf morgen nützt dir nix, wenn die abholung morgen ist müsste der termin ja heute schon auftauchen.  nach einem fhem neustart sollte er da sein.
Ja der Termin ist ja auch da.
Im Kalender eingetragen 26.08.2015 , fhem neustart, Termin ist heute da und sollte morgen dann weg sein !
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

Zitat von: kvo1 am 25 August 2015, 17:17:01
Ja der Termin ist ja auch da.
Im Kalender eingetragen 26.08.2015 , fhem neustart, Termin ist heute da und sollte morgen dann weg sein !
Hallo BlackStone/ Vize,
nachdem ich hier nochmal per Hand 2 Termine (GelberSack und Papiertonne) in die ics-Datei eingetragen hatte mußte ich leider feststellen,das diese Reading im Dummy du_muelltermine nicht löscht bzw. auf 88 gesetzt werden. Parallel gab es einen echten Eintrag für Restmüll (Termin 2.9.15) und diese war dann heute morgen auch verschwunden (Readings auf 88).
Vermutlich liegt das wohl an den handischen Einträgen ? obwohl ich da keinen Unterschied feststelle ! :'(

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