Autor Thema: Abfallkalender auswerten  (Gelesen 102460 mal)

Offline raspklaus

  • Sr. Member
  • ****
  • Beiträge: 702
Abfallkalender auswerten
« am: 17 Juni 2014, 17:45:34 »
Hallo zusammen,

wie die meisten Landratsämter stellt auch unseres einen AbfallKalender im ICS Format zur Verfügung. Nun habe ich mit der Integration in FHEM zur Auswertung begonnen und stosse hier irdengwie an meine Grenzen als Anfänger

define Abfall Calendar ical file ./Daten/Glattbach-2014.ics
attr Abfall alias Abfallkalender
attr Abfall room Haus

define Abholung_Rest dummy
define AbfallRest notify Abfall { \ fhem "set Abholung_Rest " . (ReadingsVal("Abfall", "modeAlarmOrStart", "") =~ "Rest" ? 1: 0) }
attr Abholung_Rest alias Abholung Restmüll

define Abholung_Papier dummy
define AbfallPapier notify Abfall { \ fhem "set Abholung_Papier " . (ReadingsVal("Abfall", "modeAlarmOrStart", "") =~ "Papier" ? 1: 0) }
attr Abholung_Papier alias Abholung Papiertonne

define Abholung_Sack dummy
define AbfallSack notify Abfall { \ fhem "set Abholung_Sack " . (ReadingsVal("Abfall", "modeAlarmOrStart", "") =~ "Sack" ? 1: 0) }
attr Abholung_Sack alias Gelber Sack

define Abholung_Schadstoff dummy
define AbfallSchadstoff notify Abfall { \ fhem "set Abholung_Schadstoff " . (ReadingsVal("Abfall", "modeAlarmOrStart", "") =~ "Schadstoff" ? 1: 0) }
attr Abholung_Schadstoff alias Schadstoffsammlung

define Abholung_Abfall dummy
define Abfallabfall notify Abfall { \ fhem "set Abholung_Abfall " . (ReadingsVal("Abfall", "modeAlarmOrStart", "") =~ "abfall" ? 1: 0) }
attr Abholung_Abfall alias Grünabfall

define Abholung_Altholz dummy
define AbfallAltholz notify Abfall { \ fhem "set Abholung_Altholz " . (ReadingsVal("Abfall", "modeAlarmOrStar", "") =~ "Altholz" ? 1: 0) }
attr Abholung_Altholz alias Altholzsammlung

define Abholung_Bio dummy
define AbfallBio notify Abfall { \ fhem "set Abholung_Bio " . (ReadingsVal("Abfall", "modeAlarmOrStar", "") =~ "Bio" ? 1: 0) }
attr Abholung_Bio alias Biomüllsammlung

Morgen ist Biomüllsammlung. Da müsste ja dann Abholung_Bio auf 1 stehen. es steht aber immer noch auf 0

Wenn ich es richtig verstehe wird der Kalendereintrag überprüft ob darin der Ausdruck Bio vorkommt und wenn ja Abholung_Bio aus 1 gesetzt.

Was mache ich falsch ?

Ich weiss dass das Ganze sicherlich auch anders geht

« Letzte Änderung: 15 Juli 2014, 14:37:59 von raspklaus »

Offline DannyP

  • Jr. Member
  • **
  • Beiträge: 61
Antw:Abfallkalender auswerten
« Antwort #1 am: 17 Juni 2014, 17:54:46 »
Hallo, ich beschäftige mich aktuell auch damit. Hier bekomme ich den abfallkalender als csv Datei. Diese lese ich ein und stellte aktuell nur die Termine in fhem Dar. Geplant ist aber auch noch eine Erinnerung an die nächste Leerung und einlesen aus weiteren Quellen. Meine Eltern können die abfuhrtermine bspw. Bequem per Web Service bei ihrer Gemeinde abfragen.
Ical wäre auch noch eine Option für das Modul...

Schöne grüße
Daniel

Gesendet von meinem HTC One mit Tapatalk


Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4998
  • Are we just self-replicating DNA?
Antw:Abfallkalender auswerten
« Antwort #2 am: 17 Juni 2014, 19:21:27 »
wie die meisten Landratsämter stellt auch unseres einen AbfallKalender im ICS Format zur Verfügung. Nun habe ich mit der Integration in FHEM zur Auswertung begonnen und stosse hier irdengwie an meine Grenzen als Anfänger

Hast Du die Commandref dazu gelesen und die Beispiele verstanden?

Hast Du Dir angesehen, was in den Readings steht?

Haben die Ereignisse Alarme?

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline raspklaus

  • Sr. Member
  • ****
  • Beiträge: 702
Antw:Abfallkalender auswerten
« Antwort #3 am: 17 Juni 2014, 19:30:55 »
Hallo Boris,

ich hatte die Datei doch mit angefügt. Für heute steht drin:

2d576544244f2ef1c03c34571c36d384   known    alarm 17.06.2014 06:00:00 18.06.2014 06:00:00-18.06.2014 16:00:00 Abfuhrtermin Biomüllabfuhr am 18.06.2014 Glattbach

also müsste doch:

define Abholung_Bio dummy
define AbfallBio notify Abfall { \ fhem "set Abholung_Bio " . (ReadingsVal("Abfall", "modeAlarmOrStart", "") =~ "Bio" ? 1: 0) }
attr Abholung_Bio alias Biomüllsammlung

eine 1 in Abholung_Bio liefern ?

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4998
  • Are we just self-replicating DNA?
Antw:Abfallkalender auswerten
« Antwort #4 am: 17 Juni 2014, 19:34:01 »
Hallo,

Du hast die ICAL-Datei beigefügt.

Ich habe die Fragen gestellt, um Dich zum Nachdenken zu bewegen.

Bitte schaue Dir die Readings an. Im FHEMWEB oder auf der Console mit list Abfall.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline raspklaus

  • Sr. Member
  • ****
  • Beiträge: 702
Antw:Abfallkalender auswerten
« Antwort #5 am: 17 Juni 2014, 19:38:09 »
in den Readings steht:

Internals:
   DEF        ical file ./Daten/Glattbach-2014.ics
   NAME       Abfall
   NR         22
   STATE      Active
   TYPE       Calendar
   Readings:
     2014-06-17 18:40:51   all             02ab627bd3d88b7948b6192f47f4ab7d;05033601b715fc45763fae18f6fca203;0cbafe508acffe20b08c603c13062b39;0da1e3443caaa9a78b464ea2e8c83f64;117d750dde58d19e7a6a6853ae30cff2;11ef4ab0ab518fcff7b75628e8024c2c;1850ae174280c66a232d65b94eee8678;198fdac907fb304fdd6112faacd7fe19;1c4827f5812e260cd10e0509ee7a4bf6;25a113bfdfb6e25baf9e290bf03c756b;2a8ac206410cee8b26139e9ec2a69be6;2d576544244f2ef1c03c34571c36d384;2e42927c335a0732e24fd7743f86efd8;3069701ce3e4473ea48bf685ff338737;3433819e6c2a28debefc3d5a5b54d670;3ac79d780097c9415acb11070fdff563;3be2538bd2b919f761b5abb36add5ab4;40a099250ca7f1b73d2b6e396b3e34c8;42abfcdb500ad09638f3c8e224990c06;4413b623ccadda43e20fc713c81a296e;4a9d68905c69e4fc71830a9fcee9b6a3;4d8a0d7b8e0c4c203a37672dd8ebd1e8;5009851849ec0ea337e2106a846a28b8;5acc80bcc37e364f986c8a0e04579d3d;5ba4a947cc5b050df9402234e33a1d94;6b5e1ec69846c7a1d2afa5d5241c2c0b;6b835b4e30847d0f9585d312239b96d7;6d7340baa1ae1802b7dfe6e6e25c743a;6e18a8451ab4f1d880514196bee06199;708e36c4867e82fd008a901514957ece;75f3142d5eb2905c32ad4110f5d038db;79edb01c6e6867adfa189dea0e2f3724;80d34baa422a2738a3eae7234b97d929;8d16d644ad25d0e80dbf437f5f98773f;95971abe4de27f6925ea4c1cd5fe9157;98d93a0242a1d85d235219d4ef4abe94;9f78aefacf139708135d3fdb67dca569;aa61ca0a02818700bdc0dee654068c07;aaad0d35c984836b07b11f19c175b78c;af1b1ca8498ea62ddeb7618feeba76aa;b059b50bc0aab6ea1a9d92549687175f;b20808a507f32ffff00f7f93f91724b0;b642ed523c8e850a573417185f5fc947;b80a115c82c2e4dbe8a934a862f69d11;b879343dbbd36bdb92ad2aa9d9882e69;ba57cc31eeadf50f6c14f3050e7ef6b0;bbc0d2bfb1cd7038a112145310973fa1;ca8431969b48a889f03e4e80cf056899;d0cca96a01c050d7e684657b2cf7846b;d42eea9be5ac89b2dfea2d82de5be29f;efa2425644a42c8fbfc2c47aa272c34f;f04ddcca035446cab996804d8411a5eb;fc8c88f2a640e19a5af6eda7b9c736a2
     2014-06-17 18:40:53   lastCheck       2014-06-17 18:40:53
     2014-06-17 18:40:51   lastUpdate      2014-06-17 18:40:48
     2014-06-17 18:40:53   modeAlarm       2d576544244f2ef1c03c34571c36d384
     2014-06-17 18:40:53   modeAlarmOrStart 2d576544244f2ef1c03c34571c36d384
     2014-06-17 18:40:53   modeAlarmed
     2014-06-17 18:40:53   modeChanged
     2014-06-17 18:40:53   modeEnd
     2014-06-17 18:40:53   modeEnded
     2014-06-17 18:40:53   modeStart
     2014-06-17 18:40:53   modeStarted
     2014-06-17 18:40:53   modeUpcoming    02ab627bd3d88b7948b6192f47f4ab7d;05033601b715fc45763fae18f6fca203;0cbafe508acffe20b08c603c13062b39;0da1e3443caaa9a78b464ea2e8c83f64;117d750dde58d19e7a6a6853ae30cff2;11ef4ab0ab518fcff7b75628e8024c2c;1850ae174280c66a232d65b94eee8678;198fdac907fb304fdd6112faacd7fe19;1c4827f5812e260cd10e0509ee7a4bf6;25a113bfdfb6e25baf9e290bf03c756b;2a8ac206410cee8b26139e9ec2a69be6;2e42927c335a0732e24fd7743f86efd8;3069701ce3e4473ea48bf685ff338737;3433819e6c2a28debefc3d5a5b54d670;3ac79d780097c9415acb11070fdff563;3be2538bd2b919f761b5abb36add5ab4;40a099250ca7f1b73d2b6e396b3e34c8;42abfcdb500ad09638f3c8e224990c06;4413b623ccadda43e20fc713c81a296e;4a9d68905c69e4fc71830a9fcee9b6a3;4d8a0d7b8e0c4c203a37672dd8ebd1e8;5009851849ec0ea337e2106a846a28b8;5acc80bcc37e364f986c8a0e04579d3d;5ba4a947cc5b050df9402234e33a1d94;6b5e1ec69846c7a1d2afa5d5241c2c0b;6b835b4e30847d0f9585d312239b96d7;6d7340baa1ae1802b7dfe6e6e25c743a;6e18a8451ab4f1d880514196bee06199;708e36c4867e82fd008a901514957ece;75f3142d5eb2905c32ad4110f5d038db;79edb01c6e6867adfa189dea0e2f3724;80d34baa422a2738a3eae7234b97d929;8d16d644ad25d0e80dbf437f5f98773f;95971abe4de27f6925ea4c1cd5fe9157;98d93a0242a1d85d235219d4ef4abe94;9f78aefacf139708135d3fdb67dca569;aa61ca0a02818700bdc0dee654068c07;aaad0d35c984836b07b11f19c175b78c;af1b1ca8498ea62ddeb7618feeba76aa;b059b50bc0aab6ea1a9d92549687175f;b20808a507f32ffff00f7f93f91724b0;b642ed523c8e850a573417185f5fc947;b80a115c82c2e4dbe8a934a862f69d11;b879343dbbd36bdb92ad2aa9d9882e69;ba57cc31eeadf50f6c14f3050e7ef6b0;bbc0d2bfb1cd7038a112145310973fa1;ca8431969b48a889f03e4e80cf056899;d0cca96a01c050d7e684657b2cf7846b;d42eea9be5ac89b2dfea2d82de5be29f;efa2425644a42c8fbfc2c47aa272c34f;f04ddcca035446cab996804d8411a5eb;fc8c88f2a640e19a5af6eda7b9c736a2
     2014-06-17 18:40:51   stateChanged
     2014-06-17 18:40:51   stateDeleted
     2014-06-17 18:40:51   stateNew
     2014-06-17 18:40:51   stateUpdated
   Fhem:
     interval   3600
     lastCheck  2014-06-17 18:40:53
     lastChkTs  1403023253
     lastUpdate 2014-06-17 18:40:48
     lstUpdtTs  1403023248
     nextCheck  2014-06-17 19:40:48
     nextChkTs  1403026848
     nextUpdate 2014-06-17 19:40:48
     nxtUpdtTs  1403026848
     type       file
     url        ./Daten/Glattbach-2014.ics
Attributes:
   alias      Abfallkalender
   room       Haus

2d576544244f2ef1c03c34571c36d384 steht im modeAlarm und mode cAlarmor Start also den Zustand den ich abfrage


Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4998
  • Are we just self-replicating DNA?
Antw:Abfallkalender auswerten
« Antwort #6 am: 17 Juni 2014, 19:44:35 »
Prima, also "2d576544244f2ef1c03c34571c36d384" im Reading "modeAlarmOrStart" matcht NICHT "Bio". Daher funktioniert Dein notify auch nicht. In keinem der Fälle. Du willst nämlich nicht die UID sondern die Description auswerten.

Und nun zurück zur CommandRef. Hast Du Dir das Beispiel unter "Switch actors on and off" angesehen? Analog kannst Du das auch machen.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline raspklaus

  • Sr. Member
  • ****
  • Beiträge: 702
Antw:Abfallkalender auswerten
« Antwort #7 am: 17 Juni 2014, 19:54:22 »
Zitat
Ich verstehe das noch nicht ganz, denn mit den Schulferien geht die Abfrage:

Wo ist da der Unterschied ?

In dem Schulferienkalender stellt zufällig der String "schulferien" in der UID. Darum gibt es einen Match. Du willst aber nicht die UID auswerten sondern die DESCRIPTION.

Bitte lies die CommandRef und frage dann hier nochmal nach, womit genau Du bei den Beispielen in der CommandRef nicht klarkommst.

Viele Grüße
Boris


« Letzte Änderung: 17 Juni 2014, 20:06:35 von Dr. Boris Neubert »

Offline raspklaus

  • Sr. Member
  • ****
  • Beiträge: 702
Antw:Abfallkalender auswerten
« Antwort #8 am: 18 Juni 2014, 10:34:10 »
Ich habe mir die Referenz jetz schon zum xten Mal durchgelesen.
Anhand der Beispiele lomme ich zu folgendem Ergebnis:

define SwitchActorOn notify Abfall:modeAlarmOrStart* { my $reading="%EVTPART0";; my $uid= "%EVTPART1";; my $actor= fhem("get Abfall summary $uid");; if(defined $actor) { fhem("set Abholung_Bio on") } }

in $actor steht dann

get Abfall summary 2d576544244f2ef1c03c34571c36d384

also ist $actor definiert und nicht leer

also sollte set Abholung_Bio auf on gesetzt werden. Wird es aber nicht

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4998
  • Are we just self-replicating DNA?
Antw:Abfallkalender auswerten
« Antwort #9 am: 19 Juni 2014, 09:58:44 »
define SwitchActorOn notify Abfall:modeAlarmOrStart* { my $reading="%EVTPART0";; my $uid= "%EVTPART1";; my $actor= fhem("get Abfall summary $uid");; if(defined $actor) { fhem("set Abholung_Bio on") } }

in $actor steht dann

get Abfall summary 2d576544244f2ef1c03c34571c36d384


Nein, in $actor steht das Ergebnis des fhem-Befehls get Abfall summary 2d576544244f2ef1c03c34571c36d384

Schau Dir das bitte mal auf der Kommandozeile an.

Außerdem ist Dein regulärer Ausdruck nicht richtig. Du verwendest * wie ein Shell Glob. Wenn Du eine beliebige Zeichenkette matchen willst, ist der Ausdruck .*

Zitat
also ist $actor definiert und nicht leer

also sollte set Abholung_Bio auf on gesetzt werden. Wird es aber nicht

Fang doch mal an zu verstehen, was passiert. Das Beispiel mit dem Logging ist ein guter Ausgangspunkt. Z.B.

define LogActors notify Abfall:modeAlarmOrStart.* { my $reading= "%EVTPART0";; my $uid= "%EVTPART1";; my $actor= fhem("get Abfall summary $uid");; Log 3 %NAME, 1, "Actor: $actor, Reading $reading" }

Wenn Du dann im Log die entsprechenden Events siehst, ist der nächste Schritt, das Logging durch das Schalten zu ersetzen. Und dann prüfst Du nicht darauf, daß ein Kalenderereignis in den Modus AlarmOrStart gegangen ist, sondern daß die Beschreibung des Kalenderereignisses den Text "Bio" enthält. Das hast Du beim ersten Mal versucht:

fhem("set Abholung_Bio " . ($actor =~ 'Bio' : ? 1 : 0))

Das ist immer noch nicht ganz richtig, weil es mit dieser Logik nicht möglich ist, zwei Abholungen am gleichen Tag zu haben. Wenn nämlich ein zweites Kalenderereignis (z.B. Sackabholung) dasselbe Notify triggert, wird Abholung_Bio wieder auf 0 gesetzt.

Da ich nicht weiß, was Du mit den Dummys nachher anfangen willst, kann ich Dir keinen Rat dazu geben, wie es richtig gemacht wird.

Viele Grüße
Boris
 
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline raspklaus

  • Sr. Member
  • ****
  • Beiträge: 702
Antw:Abfallkalender auswerten
« Antwort #10 am: 19 Juni 2014, 16:45:04 »
Ich will derzeitig eigentlich nur den Dummy mit devStateIcon je nach Zustand ob 1 oder 0 ein entsprechendes Icon anzeigen lassen.

Offline RoBra81

  • Sr. Member
  • ****
  • Beiträge: 994
Antw:Abfallkalender auswerten
« Antwort #11 am: 19 Juni 2014, 21:35:54 »
Hallo,

ich habe mich auch schon vor einiger Zeit damit beschäftigt (CSV vom Entsorger in GoogleCalendar) und habe mir eine kleine Funktion in MyUtils geschrieben:

sub
Muelltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtBio = '';
  my $dtYellow = '';
  my $dtRest = '';
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get Muellkalender summary $uid");
    if ($Kalendertext =~ /Biomü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 ($dtBio eq '' || ($eventDate < $dtBio && $eventDate > $t))
        {
          $dtBio = $eventDate;
          Log(3, $dtBio);
        }
    };
    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 ($dtYellow eq '' || ($eventDate < $dtYellow && $eventDate > $t))
        {
          $dtYellow  = $eventDate;
        }
    };
    if ($Kalendertext =~ /Restmü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 ($dtRest eq '' || ($eventDate < $dtRest && $eventDate > $t))
        {
          $dtRest = $eventDate;
        }
    };
  };
  my $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set BiomuellIn $dayDiff");
  }
  my $dayDiff = floor(($dtYellow - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set GelbeTonneIn $dayDiff");
  }
  my $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set RestmuellIn $dayDiff");
  }
}

Diese wird per notify bei Update des Kalenders aufgerufen und speichert die verbleibenden Tage für Biomüll, Restmüll und Gelbe Tonne in drei entsprechende Dummys (BiomuellIn, RestmuellIn und GelbeTonneIn). Für diese habe ich dann Icons definiert, die mir einen Tag im voraus Bescheid geben, dass eine Tonne rausgestellt werden muss (siehe Anhang)...

Vielleicht hilft das ja jemandem...

EDIT: hier noch das notify:

define nf.Muellkalender.Update notify Muellkalender:mode.*abfallamtbautzende.* {Muelltermine("$EVENT");;}
Ronny
« Letzte Änderung: 19 Juni 2014, 21:38:39 von RoBra81 »

Offline raspklaus

  • Sr. Member
  • ****
  • Beiträge: 702
Antw:Abfallkalender auswerten
« Antwort #12 am: 23 Juni 2014, 14:29:13 »
Wenn ich das richtig verstehe, soll doch
define LogActors notify Abfall:modeAlarmOrStart.* { my $reading= "%EVTPART0";; my $uid= "%EVTPART1";; my $actor= fhem("get Abfall summary $uid");; Log 3 %NAME, 1, "Actor: $actor, Reading $reading" }
ein Logfile schreiben.

Da wird aber kein Logfile erzeugt

Es kommt die Fehlermeldung

2014.06.23 16:30:17 3: LogActors return value: Not enough arguments for main::Log at (eval 18) line 1, near "3 Abfall"
« Letzte Änderung: 23 Juni 2014, 16:56:42 von raspklaus »

Offline raspklaus

  • Sr. Member
  • ****
  • Beiträge: 702
Antw:Abfallkalender auswerten
« Antwort #13 am: 23 Juni 2014, 14:56:02 »
@ Ronny

Theoretisch sollte Deine Routine ja auch mit einer ical Datei funktionieren, tut sie aber nicht.  Ich habe sie entsprechend der hier benutzten Gegebenheiten angepasst, bleibt trotzdem ein Misserfolg

# Mülltermine auswerten
sub Muelltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtBio = '';
  my $dtYellow = '';
  my $dtRest = '';
  my $dtPapier = '';
  my $dtAltholz = '';
  my $dtSchadstoff = '';
  my $dtGruen = '';
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get Abfall summary $uid");
    if ($Kalendertext =~ /Biomü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 ($dtBio eq '' || ($eventDate < $dtBio && $eventDate > $t))
        {
          $dtBio = $eventDate;
          Log(3, $dtBio);
        }
    };
    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 ($dtYellow eq '' || ($eventDate < $dtYellow && $eventDate > $t))
        {
          $dtYellow  = $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 =~ /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;
        }
    };
if ($Kalendertext =~ /Altholz/) {
        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 ($dtAltholz eq '' || ($eventDate < $dtAltholz && $eventDate > $t))
        {
          $dtPapier = $eventDate;
        }
    };
if ($Kalendertext =~ /Schadstoffsammlung/) {
        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 ($dtSchadstoff eq '' || ($eventDate < $dtSchadstoff && $eventDate > $t))
        {
          $dtPapier = $eventDate;
        }
    };
if ($Kalendertext =~ /Grünabfall/) {
        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 ($dtGruen eq '' || ($eventDate < $dtGruen && $eventDate > $t))
        {
          $dtPapier = $eventDate;
        }
    };
  };
  my $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set BiomuellIn $dayDiff");
  }
  my $dayDiff = floor(($dtYellow - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set GelbeTonneIn $dayDiff");
  }
  my $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set RestmuellIn $dayDiff");
  }
  my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set PapierIn $dayDiff");
  }
  my $dayDiff = floor(($dtAltholz - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set AltholzIn $dayDiff");
  }
  my $dayDiff = floor(($dtSchadstoff - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set SchadstoffIn $dayDiff");
  }
  my $dayDiff = floor(($dtGruen - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set GruenIn $dayDiff");
  }
}


Vor allem ist mir mode.*abfallamtbautzende.* in dem Notify

define nf.Muellkalender.Update notify Muellkalender:mode.*abfallamtbautzende.* {Muelltermine("$EVENT");;}
nicht klar

Offline RoBra81

  • Sr. Member
  • ****
  • Beiträge: 994
Antw:Abfallkalender auswerten
« Antwort #14 am: 23 Juni 2014, 20:35:08 »

Vor allem ist mir mode.*abfallamtbautzende.* in dem Notify

define nf.Muellkalender.Update notify Muellkalender:mode.*abfallamtbautzende.* {Muelltermine("$EVENT");;}
nicht klar

Beim Update des Kalenders enthalten u.A. die Events

2014-06-23 20:32:06 Calendar Muellkalender modeUpcoming:
und

2014-06-23 20:32:06 Calendar Muellkalender modeUpcoming:
eine Liste von Kalendereinträgen mit Abfallterminen, auf welche ich reagieren möchte...