FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: raspklaus am 11 Februar 2016, 11:05:39

Titel: Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: raspklaus am 11 Februar 2016, 11:05:39
Die folgende Routine zum Auswerten des Abfallkalenders ist bis zum Update des Calendarmoduls immer problemlos gelaufen:

sub
Abfalltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtPapier = '';
  my $dtGelberSack = '';
  my $dtRest = '';
  my $dtBio = '';
  my $dayDiff = 0;
  my $dtBeda = '';
   foreach my $uid (@uids) {
    my $Kalendertext = fhem("get Abfall summary $uid");
    if ($Kalendertext =~ /Papiertonne/) {
        my $dt = fhem("get Abfall 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;
          Log(3, $dtPapier);
        }
    };
if ($Kalendertext =~ /Gelber Sack/) {
        my $dt = fhem("get Abfall 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;
        }
    };
    if ($Kalendertext =~ /Restmüll/) {
        my $dt = fhem("get Abfall 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 ($dtRest eq '' || ($eventDate < $dtRest && $eventDate > $t))
        {
          $dtRest = $eventDate;
        }
    };
    if ($Kalendertext =~ /Bio/) {
        my $dt = fhem("get Abfall 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 ($dtBio eq '' || ($eventDate < $dtBio && $eventDate > $t))
        {
          $dtBio  = $eventDate;
        }
    };
    if ($Kalendertext =~ /Pater Beda/) {
        my $dt = fhem("get Abfall 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 ($dtBeda eq '' || ($eventDate < $dtBeda && $eventDate > $t))
        {
          $dtBeda = $eventDate;
        }
    };   

   
  $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Papiertonne $dayDiff");
  }
  $dayDiff = floor(($dtGelberSack - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set GelberSack $dayDiff");
  }
  $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Restmuell $dayDiff");
  }
  $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Bio $dayDiff");
  }
  $dayDiff = floor(($dtBeda - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Pater_Beda $dayDiff");
  }
  }
}



# Müllkalender
define Papiertonne dummy
attr Papiertonne devStateIcon {my $w=ReadingsVal("$name","state",100);;if($w==1){'.*:PapierIn.0'}else{if($w==2){'.*:PapierIn.1'}else{'.*:NoMuell'}}}
attr Papiertonne group Abfall Kalender
attr Papiertonne room Abfall,Kalender
attr Papiertonne verbose 1
define Restmuell dummy
attr Restmuell devStateIcon {my $w=ReadingsVal("$name","state",100);;if($w==1){'.*:RestmuellIn.0'}else{if($w==2){'.*:RestmuellIn.1'}else{'.*:NoMuell'}}}
attr Restmuell group Abfall Kalender
attr Restmuell room Abfall,Kalender
define GelberSack dummy
attr GelberSack alias Gelber Sack
attr GelberSack devStateIcon {my $w=ReadingsVal("$name","state",100);;if($w==1){'.*:GelberSackIn.0'}else{if($w==2){'.*:GelberSackIn.1'}else{'.*:NoMuell'}}}
attr GelberSack group Abfall Kalender
attr GelberSack room Abfall,Kalender
attr GelberSack verbose 1
define Bio dummy
attr Bio alias Biotonne
attr Bio devStateIcon {my $w=ReadingsVal("$name","state",100);;if($w==1){'.*:BiomuellIn.0'}else{if($w==2){'.*:BiomuellIn.1'}else{'.*:NoMuell'}}}
attr Bio group Abfall Kalender
attr Bio room Abfall,Kalender
attr Bio verbose 1
define Abfall_Update notify Abfall:modeAlarmOrStart.* {Abfalltermine("$EVENT")}
attr Abfall_Update room Abfall


Die Dummys bei einer Abholung werden auch richtig auf 1 gesetzt, nur wenn der Termin vorbei ist werden sie nicht auf 0 zurückgesetzt.

Irgendwie ist da ein Wurm drin und ich kann ihn nicht finden.
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: Dr. Boris Neubert am 11 Februar 2016, 11:46:35
define Abfall_Update notify Abfall:(alarm|start|end).* {Abfalltermine("$EVENT")}
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: raspklaus am 11 Februar 2016, 12:00:11
Das mit

alarm|start

hatte ich schon geändert, allerdings ohne Klammern. Habe es jetzt wie vorgeschlagen eingetragen, aber der Gelbe Sack der gestern abgeholt wurde hat immer noch den Status 1. Auch nach einem shutdown restart

in einem list next wird der Termin nicht mehr angezeigt
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: raspklaus am 11 Februar 2016, 14:21:34
Sonst keiner eine Idee ?
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: octek0815 am 11 Februar 2016, 15:01:41
Zitat von: raspklaus am 11 Februar 2016, 14:21:34
Sonst keiner eine Idee ?

Hallo,

stell doch auf folgendes um: http://forum.fhem.de/index.php/topic,48237.0.html
Hatte das selbe Problem. Damit läuft es aber nun prima und du kannst dir den 99_myutils Teil sparen...

Grüße
Olli
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: raspklaus am 11 Februar 2016, 15:43:13
Das ist aber mehr auf Tablets ausgelegt für FTUI aber nicht für das normale Webinterface. Ich finde nichts wie ich das im Webinterface integrieren kann
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: octek0815 am 11 Februar 2016, 17:32:42
Zitat von: raspklaus am 11 Februar 2016, 15:43:13
Das ist aber mehr auf Tablets ausgelegt für FTUI aber nicht für das normale Webinterface. Ich finde nichts wie ich das im Webinterface integrieren kann

geht für alles...
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: kvo1 am 11 Februar 2016, 17:42:19
Zitat von: octek0815 am 11 Februar 2016, 17:32:42
geht für alles...
Hi Olli,
Dann poste doch bitte mal den Code für fhem und FTUI

Danke
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: octek0815 am 11 Februar 2016, 17:45:19
Zitat von: kvo1 am 11 Februar 2016, 17:42:19
Hi Olli,
Dann poste doch bitte mal den Code für fhem und FTUI

Danke

hier...


<!-- Ab hier Abfall -->
<li data-row="4" data-col="1" data-sizex="4" data-sizey="17">
<header><div data-type="label">Abfall</div></header>
<div style="padding-top: 5px"></div>
    <div data-type="symbol"
        data-device="abfallBioabfall"
        data-get="next_tage"
        data-icons='["oa-message_garbage fa-spin","oa-message_garbage warn blink","oa-message_garbage warn"]'
        data-on-colors='["SaddleBrown","SaddleBrown","SaddleBrown"]'
        data-get-on='["0","1","2"]'
data-background-icon="fa-circle-thin"
data-off-background-color="#7A7A7A"
data-on-background-color="#7A7A7A"
style="font-size:240%">
    </div>
    <div data-type="symbol"
        data-device="abfallVerpackungen"
        data-get="next_tage"
        data-icons='["oa-message_garbage fa-spin","oa-message_garbage warn blink","oa-message_garbage warn"]'
        data-on-colors='["yellow","yellow","yellow"]'
        data-get-on='["0","1","2"]'
        data-background-icon="fa-circle-thin"
data-off-background-color="#7A7A7A"
data-on-background-color="#7A7A7A"
style="font-size:250%">
    </div>
    <div     data-type="symbol"
        data-device="abfallPapier"
        data-get="next_tage"
        data-icons='["oa-message_garbage fa-spin","oa-message_garbage warn blink","oa-message_garbage warn"]'
        data-on-colors='["#0040FF","#0040FF","#0040FF"]'
        data-get-on='["0","1","2"]'
        data-background-icon="fa-circle-thin"
data-off-background-color="#7A7A7A"
data-on-background-color="#7A7A7A"
style="font-size:240%">
    </div>
    <div     data-type="symbol"
        data-device="abfallRestmuell"
        data-get="next_tage"
        data-icons='["oa-message_garbage fa-spin","oa-message_garbage warn blink","oa-message_garbage warn"]'
        data-on-colors='["black","black","black"]'
        data-get-on='["0","1","2"]'
        data-background-icon="fa-circle-thin"
data-off-background-color="#7A7A7A"
data-on-background-color="#7A7A7A"
style="font-size:240%">
    </div>
</li>
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: raspklaus am 11 Februar 2016, 17:48:31
Kannst Du bitte mal Deinen Code für das normale Webinterface posten ?

Danke
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: octek0815 am 11 Februar 2016, 18:01:23
Zitat von: raspklaus am 11 Februar 2016, 17:48:31
Kannst Du bitte mal Deinen Code für das normale Webinterface posten ?

Danke

Mein Abfallentsorger hat nicht alles in einem Kalender deshalb vier Kalender.
Im Code sind sicherlich einiger Attribute enthalten du nicht brauchst, da ich das im Floorplan darstelle (bin noch nicht vollständig auf FTUI umgestiegen).

Die Kalender:


define calendarBioabfall Calendar ical url xxxKALENDER_URLxxx 86400
attr calendarBioabfall room System
define calendarPapier Calendar ical url xxxKALENDER_URLxxx 86400
attr calendarPapier room System
define calendarRestmuell Calendar ical url xxxKALENDER_URLxxx 86400
attr calendarRestmuell room System
define calendarVerpackungen Calendar ical url xxxKALENDER_URLxxx 86400
attr calendarRestmuell room System


Der Abfall:


define abfallBioabfall ABFALL calendarBioabfall 3600
attr abfallBioabfall room System
attr abfallBioabfall stateFormat Tage bis zur nächsten Leerung: next_tage
attr abfallBioabfall verbose 0
define abfallPapier ABFALL calendarPapier 3600
attr abfallPapier room System
attr abfallPapier stateFormat Tage bis zur nächsten Leerung: next_tage
attr abfallPapier verbose 0
define abfallRestmuell ABFALL calendarRestmuell 3600
attr abfallRestmuell room System
attr abfallRestmuell stateFormat Tage bis zur nächsten Leerung: next_tage
attr abfallRestmuell verbose 0
define abfallVerpackungen ABFALL calendarVerpackungen 3600
attr abfallVerpackungen room System
attr abfallVerpackungen stateFormat Tage bis zur nächsten Leerung: next_tage
attr abfallVerpackungen verbose 0


und schön anzeigen:


define rgAbfallkalender readingsGroup abfallRestmuell:<%dustbin_grau>,next_tage,<%dustbin_braun>,next_tage@abfallBioabfall\
abfallPapier:<%dustbin_blau>,next_tage,<%dustbin_gelb>,next_tage@abfallVerpackungen\
attr rgAbfallkalender alias Müllabfuhr
attr rgAbfallkalender fp_fpTablet1 650,447,1,Müllabfuhr
attr rgAbfallkalender noheading 1
attr rgAbfallkalender nonames 1
attr rgAbfallkalender room _FloorplanParts
attr rgAbfallkalender style style="height:115px;; width:243px;; text-align:center;; font-size: 16px;;"
attr rgAbfallkalender valueFormat {if($VALUE eq 1){$VALUE="Morgen"}elsif($VALUE eq 0){$VALUE="Heute"}else{$VALUE="in $VALUE Tagen"}}


Die Icons (sind eigentlich PNGs) habe ich selber gebaut. Musst Du also ersetzen.
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: raspklaus am 11 Februar 2016, 18:10:16
Mein Problem ist, dass ich einen Kalender habe und das wird durch die MyUtils ausgewertet
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: octek0815 am 11 Februar 2016, 18:34:40
Zitat von: raspklaus am 11 Februar 2016, 18:10:16
Mein Problem ist, dass ich einen Kalender habe und das wird durch die MyUtils ausgewertet

Das sollte trotzdem funktionieren. Auch mit einer lokalen Kalenderdatei.
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: raspklaus am 11 Februar 2016, 19:48:26
Ich sehe in der Group aber nur den nächsten Termin und nicht die weiteren
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: kvo1 am 11 Februar 2016, 22:21:21
Hi Olli, Danke !
Titel: Antw:Nochmals Abfallkalender auswerten mit neuem Calendarmodul
Beitrag von: coolcat am 12 Februar 2016, 12:39:04
Vielen Dank für das Modul.
Super Arbeit.
Das erste Mal, das bisher der Abfall Kalender einwandfrei und so schmerzfrei funktioniert!

Gruss
Ralf