FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Kalendermodule => Thema gestartet von: raspklaus am 17 Juni 2014, 17:45:34

Titel: Abfallkalender auswerten
Beitrag von: raspklaus 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

Titel: Antw:Abfallkalender auswerten
Beitrag von: DannyP 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

Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert am 17 Juni 2014, 19:21:27
Zitat von: raspklaus am 17 Juni 2014, 17:45:34
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
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus 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 ?
Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert 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
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus 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

Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert 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
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus 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


Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus 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
Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert am 19 Juni 2014, 09:58:44
Zitat von: raspklaus am 18 Juni 2014, 10:34:10
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
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus 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.
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 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
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus 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"
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus 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
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 23 Juni 2014, 20:35:08
Zitat von: raspklaus am 23 Juni 2014, 14:56:02

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...

Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 23 Juni 2014, 21:28:49
Mein Kalender heisst Abfall.

Hast Du Dir meine erweiterte Version der Utils mal angesehen ?

Sollte die laufen ?

Aber warum mode.*abfallamtbautzende.* muss es nicht heissen mode.*Upcomming.*  ?

So sieht des Ganze in der FHEM.cfg aus:

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

define BiomuellIn dummy
define GelbeTonneIn dummy
define RestmuellIn dummy
define PapierIn dummy
define AltholzIn dummy
define SchadstoffIn dummy
define GruenIn dummy

define nf.Muellkalender.Update notify Muellkalender:mode.*Upcoming.* {Muellkalender("$EVENT");;}


Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 25 Juni 2014, 10:40:19
Hallo,
ich verfolge gerade diese Thread um auf Kalenderereignisse am nächsten tag zu reagieren.

Wenn morgen ein Ferientag ist, dann fahre heute abend die Rolläden später herunter....

Einen Countdown bis zum Start eines Ferientages kann man mit der Routine "Muelltermine" realisieren, mir fehlt aber im Moment eine Idee, wie ich das für den Ferienzeitraum realisieren kann, da "Muelltermine nur auf den Starttermin des jeweiligen Ereignisses triggert.


Wenn die Sommerferien von 07.07.2014-15.08.2014 sind, dann sollte am 06.07.2014 dasein Dummydevice "Ferien morgen" auf 1 stehen und erst am 15.08.2014 wieder auf "0" gehen, da am 16.08.2014 keine Ferien mehr sind.

Hat jemand ne Idee, wie ich das modifizieren müsste?
Sparatcus.
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 25 Juni 2014, 11:53:45
Also ich habe so das Gefühl, dass die SUB Muelltermine bei mir überhaupt nicht aufgerufen wird. Durch was wird sie aktiviert ?

Kann da jemand weiterhelfen ?
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 25 Juni 2014, 15:10:14
Hallo,
bei mir klappt das!

define Abfall_Update notify Abfall:modeUpcoming.* {Abfalltermine("$EVENT")}

und wenn ich dann den Kalender "Abfall" updatet, dann wird das notify ausgeführt. Bitte genau prüfen, dass die SUB-Routine in der Utils den korrekten Namen hat. Da war bei mir ein Schreibfehler drin und dann funzte das auch nicht.

Sicherheitshalber auch in fhem das util-Modul noch mal neu laden.
reload  99_myFhemUtils

Spartacus

NACHTRAG:
Heisst die SUB bei Dir nun Muellkalender oder Muelltermine?
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 25 Juni 2014, 19:38:34
Die Sub heisst Mülltermine. Und Du hast das Gleiche in der FHEM Konfig stehen wie ich ? Siehe vorletzter Beitrag hier.

Für Dein Schulferienproblem könnte Dir meine Auswertung vielleicht weiterhelfen

# Schulferien
# define Bayern_Ferien Calendar ical url http://www.schulferien.org/iCal/Ferien/icals/Ferien_Bayern_" . $year . ".ics 21600
define Bayern_Ferien Calendar ical url http://www.schulferien.org/iCal/Ferien/icals/Ferien_Bayern_2014.ics 21600
attr Bayern_Ferien alias Schulferien
define Bayern_Ferientag dummy
attr Bayern_Ferientag devStateIcon 0:FS20.off 1:FS20.on
define Bayern_Ferien.notify notify Bayern_Ferien { \ fhem "set Bayern_Ferientag " . (ReadingsVal("Bayern_Ferien", "modeStart", "") =~ "schulferien" ? 1: 0) }

Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 25 Juni 2014, 19:53:49
Also hier nochmal wie es bei mir eingestellt ist:

Fhem.cfg

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

define BiomuellIn dummy
define GelbeTonneIn dummy
define RestmuellIn dummy
define PapierIn dummy
define AltholzIn dummy
define SchadstoffIn dummy
define GruenIn dummy
define Abfall_Update notify Abfall:modeUpcoming.* {Abfalltermine("$EVENT")}


Utilsroutine:

package main;
use strict;
use warnings;
use POSIX;

sub
myUtilsm_Initialize($$)
{
my ($hash) = @_;
}
# M�lltermine auswerten
sub Abfalltermine ($)

{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtBio = '';
  my $dtYellow = '';
  my $dtRest = '';
open(datei, ">text.txt");
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get Abfall summary $uid");
print "$Kalendertext \n";
    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;
        }
    };
  };
  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");
  }
}


# Zusammensetzung der Variablen f�r den Ferienkalender
sub defineFerien($) {
  my ($year) = @_;
  my $url = "http://www.schulferien.org/iCal/Ferien/icals/Ferien_Bayern_$year.ics";
  CommandDefine(undef, "Bayern_Ferien Calendar ical url $url 21600");
  return;
}
# Weitere Subroutinen

1;


Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 25 Juni 2014, 20:33:55
Hallo,
puuh! sorry, ich sehe den Fehler nicht! Aber hier der Code der definitiv funktioniert:

sub
Abfalltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtPapier = '';
  my $dtWertstoff = '';
  my $dtRest = '';
  my $dtPfadfinder = '';
  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 =~ /Wertstofftonne/) {
        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 ($dtWertstoff eq '' || ($eventDate < $dtWertstoff && $eventDate > $t))
        {
          $dtWertstoff  = $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 =~ /Pfadfinder/) {
        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 ($dtPfadfinder eq '' || ($eventDate < $dtPfadfinder && $eventDate > $t))
        {
          $dtPfadfinder  = $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;
        }
    };   

   
  my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Papiertonne $dayDiff");
  }
  my $dayDiff = floor(($dtWertstoff - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Wertstofftonne $dayDiff");
  }
  my $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Restmuell $dayDiff");
  }
    my $dayDiff = floor(($dtPfadfinder - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Pfadfinder $dayDiff");
  }
    my $dayDiff = floor(($dtBeda - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Pater_Beda $dayDiff");
  }
  }
}


fhem.cfg:
define Abfall Calendar ical url http://www.google.com/....basic.ics 600
attr Abfall room Kalender
define Papiertonne dummy
attr Papiertonne group Abfall Countdown
attr Papiertonne room Kalender
define Abfall_Update notify Abfall:modeUpcoming.* {Abfalltermine("$EVENT")}
attr Abfall_Update room Kalender
define Restmuell dummy
attr Restmuell group Abfall Countdown
attr Restmuell room Kalender
define Wertstofftonne dummy
attr Wertstofftonne group Abfall Countdown
attr Wertstofftonne room Kalender
define Pfadfinder dummy
attr Pfadfinder group Abfall Countdown
attr Pfadfinder room Kalender
define Pater_Beda dummy
attr Pater_Beda group Abfall Countdown
attr Pater_Beda room Kalender


zu dem Ferienkalender:
Du setzt das Kalenderjahr für die Schulferien auch mit der Routine in den Utils zusammen. Das Kalenderjahr wird aber nicht automatisch aktualisiert, oder? d.h. in 2015. musst Du doch wieder zu Fuß dran. Das mit der Routine würde funktionieren, wenn der Ferienkalender vorher gelöscht würde und dann über ein Ereignis zum Jahreswechsel neu angelegt wird. Wie hast Du das realisiert?

Die Routine zur Abfrage, ob Ferien sind funktioniert nur für den gleichen Tag. D.h. "Bayern_Ferientag" wird auf 1 gesetzt, wenn das Ereignis "schulferien" stattfindet. Ich brauche das aber einen tag zuvor. Also ähnlich dem Holiday Calendar wo man den Termin mit "yesterday" und "tomorrow" abfragen kann.

Das geht mit dem Abfallkalender auch nicht, da nur die Zeit bis zum Starttermin ausgewertet wird. es müsste dabei auch das Ende der Ferien berücksichtigt werden.

Spartacus.
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 25 Juni 2014, 21:22:44
Der Ferienkalender liegt nicht lokal wie der Müllkalender.

Hier der Code für die Aktualisierung:

define makeFerien notify global:INITIALIZED {defineFerien($year)}


Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 25 Juni 2014, 21:25:15
Die Routine dafür ist auch in den Utils am Ende
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 25 Juni 2014, 21:39:54
Hi,
Zitat von: raspklaus am 25 Juni 2014, 21:25:15
Die Routine dafür ist auch in den Utils am Ende
Schon klar! Habe ich bei mir ja genauso gemacht,
Aber:
Die Routine verändert das Kalenderjahr nicht automatisch!
gibt mal in den Eingabebereich von fhem Folgendes ein:
{defineFerien("2015")}
wenn Du dann in deinen Ferienkalender guckst steht da immer noch folgender Eintrag:
ical url http://www.schulferien.org/iCal/Ferien/icals/Ferien_Nordrhein_Westfalen_2014.ics 21600
Das heisst: die 2014 bleibt.
Erst wenn Du den Kalender löscht, wird er mit dem o.a. Befehl für 2015 angelegt. Sinn macht die Utils-Routine mit dem $year doch nur, wenn das jedes Jahr automatisch angepasst wird. Denkbar wäre ein notify am 01.01. um 00:00:02, welches den alten Kalender löscht und dann den neuen anlegt. Ist aber nicht so elegant...

Spartacus
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 25 Juni 2014, 22:21:31
Das Ganze greift doch erst am 1.1. denn dann ist auch das Systemdatum auf 2015
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 25 Juni 2014, 22:50:22
Hallo,

bei mir funktioniert die Routine auch nicht, Fehlermeldung:

root@raspbmc:/opt/fhem# Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 9.
"my" variable $dayDiff masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 87.
"my" variable $dayDiff masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 91.
"my" variable $dayDiff masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 95.
"my" variable $dayDiff masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 99.
Subroutine Abfalltermine redefined at ./FHEM/99_myUtils.pm line 17.
Subroutine kindledisplay redefined at ./FHEM/99_myUtils.pm line 111.
Subroutine Kalenderstart redefined at ./FHEM/99_myUtils.pm line 205.
Subroutine Kalenderende redefined at ./FHEM/99_myUtils.pm line 220.

Im Frontend kommen bei den einzelnen Mülltonnen nur drei Fragezeichen. Eine Abfrage mit get Abfall full all zeigt jedoch alle Termine an.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 25 Juni 2014, 22:54:59
Zitat von: raspklaus am 25 Juni 2014, 22:21:31
Das Ganze greift doch erst am 1.1. denn dann ist auch das Systemdatum auf 2015
Hi,
verstehe ich nicht! Wodurch soll das denn getriggert werden? Durch das
global:INITIALIZED {defineFerien($year)}
wird doch die SUB beim Start von fhem ausgeführt und der Kalender mit $year (momentan 2014) angelegt. Die 2014 steht doch danach fest verdrahtet in der URL, oder? Wodurch soll das denn am 1.1.2015 angestoßen werden?

Das aktuelle Jahr wird beim Aufruf an die Funkion übergeben und in der Funktion wird dann die url gebaut. Mehr passiert da m.E. nicht.
sub defineFerien($) {
  my ($year) = @_;
  my $url = "http://www.schulferien.org/iCal/Ferien/icals/Ferien_Nordrhein_Westfalen_$year.ics";
  {fhem "define NRW_Ferien Calendar ical url $url 21600"};
  # CommandDefine(undef, "NRW_Ferien Calendar ical url $url 21600");
  {fhem "attr NRW_Ferien room Kalender"};
  return;
}

Spartacus
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 25 Juni 2014, 23:04:05
Zitat von: fh168 am 25 Juni 2014, 22:50:22
Hallo,

bei mir funktioniert die Routine auch nicht, Fehlermeldung:

root@raspbmc:/opt/fhem# Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 9.
"my" variable $dayDiff masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 87.
"my" variable $dayDiff masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 91.
"my" variable $dayDiff masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 95.
"my" variable $dayDiff masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 99.
Subroutine Abfalltermine redefined at ./FHEM/99_myUtils.pm line 17.
Subroutine kindledisplay redefined at ./FHEM/99_myUtils.pm line 111.
Subroutine Kalenderstart redefined at ./FHEM/99_myUtils.pm line 205.
Subroutine Kalenderende redefined at ./FHEM/99_myUtils.pm line 220.

Im Frontend kommen bei den einzelnen Mülltonnen nur drei Fragezeichen. Eine Abfrage mit get Abfall full all zeigt jedoch alle Termine an.

Hier mal meine komplette utils:
package main;
use strict;
use warnings;
use POSIX;
sub
myFhemUtils_Initialize($$)
{
my ($hash) = @_;
}
# Laufschrift
#
#
sub rgMarquee($)
{           
  my ($txt) = @_;
  return "<marquee scrollamount=2 width=\"150\">$txt</marquee>";
}

sub
test($)
{
  my ($str) = @_;
  my @a = $str = ~ m{\[([^\]]+)\]}g;
  return (@a);
}
sub defineFerien($) {
  my ($year) = @_;
  my $url = "http://www.schulferien.org/iCal/Ferien/icals/Ferien_Nordrhein_Westfalen_$year.ics";
  {fhem "define NRW_Ferien Calendar ical url $url 21600"};
  # CommandDefine(undef, "NRW_Ferien Calendar ical url $url 21600");
  {fhem "attr NRW_Ferien room Kalender"};
  return;
}
sub
Abfalltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtPapier = '';
  my $dtWertstoff = '';
  my $dtRest = '';
  my $dtPfadfinder = '';
  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 =~ /Wertstofftonne/) {
        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 ($dtWertstoff eq '' || ($eventDate < $dtWertstoff && $eventDate > $t))
        {
          $dtWertstoff  = $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 =~ /Pfadfinder/) {
        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 ($dtPfadfinder eq '' || ($eventDate < $dtPfadfinder && $eventDate > $t))
        {
          $dtPfadfinder  = $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;
        }
    };   

   
  my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Papiertonne $dayDiff");
  }
  my $dayDiff = floor(($dtWertstoff - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Wertstofftonne $dayDiff");
  }
  my $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Restmuell $dayDiff");
  }
    my $dayDiff = floor(($dtPfadfinder - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Pfadfinder $dayDiff");
  }
    my $dayDiff = floor(($dtBeda - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Pater_Beda $dayDiff");
  }
  }
}
sub
Ferientermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtWeihnachten = '';
  my $dtOstern = '';
  my $dtPfingsten = '';
  my $dtSommer = '';
  my $dtHerbst = '';

   foreach my $uid (@uids) {
    my $Kalendertext = fhem("get NRW_Ferien summary $uid");
    if ($Kalendertext =~ /Weihnachtsferien/) {
        my $dt = fhem("get NRW_Ferien 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 ($dtWeihnachten eq '' || ($eventDate < $dtWeihnachten && $eventDate > $t))
        {
          $dtWeihnachten = $eventDate;
          Log(3, $dtWeihnachten);
        }
};
if ($Kalendertext =~ /Osterferien/) {
        my $dt = fhem("get NRW_Ferien 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 ($dtOstern eq '' || ($eventDate < $dtOstern && $eventDate > $t))
        {
          $dtOstern = $eventDate;
          Log(3, $dtOstern);
        }
    };
if ($Kalendertext =~ /Pfingstferien/) {
        my $dt = fhem("get NRW_Ferien 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 ($dtPfingsten eq '' || ($eventDate < $dtPfingsten && $eventDate > $t))
        {
          $dtPfingsten = $eventDate;
          Log(3, $dtPfingsten);
        }
    };
if ($Kalendertext =~ /Sommerferien/) {
        my $dt = fhem("get NRW_Ferien 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 ($dtSommer eq '' || ($eventDate < $dtSommer && $eventDate > $t))
        {
          $dtSommer = $eventDate;
          Log(3, $dtSommer);
        }
    };
if ($Kalendertext =~ /Herbstferien/) {
        my $dt = fhem("get NRW_Ferien 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 ($dtHerbst eq '' || ($eventDate < $dtHerbst && $eventDate > $t))
        {
          $dtHerbst = $eventDate;
          Log(3, $dtHerbst);
        }
    };
  my $dayDiff = floor(($dtWeihnachten - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Weihnachtsferien $dayDiff");
  }
  else {
    fhem("set Weihnachtsferien -1");
  }
  my $dayDiff = floor(($dtOstern - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Osterferien $dayDiff");
  }
  else {
    fhem("set Osterferien -1");
  }
  my $dayDiff = floor(($dtPfingsten - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Pfingstferien $dayDiff");
  }
  else {
    fhem("set Pfingstferien -1");
  }
  my $dayDiff = floor(($dtSommer - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Sommerferien $dayDiff");
  }
  else {
    fhem("set Sommerferien -1");
  }
  my $dayDiff = floor(($dtHerbst - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Herbstferien $dayDiff");
  }
  else {
    fhem("set Herbstferein -1");
  }
  }
}
1;


Das gleiche Prinzip funktioniert bei mir auch mit dem Ferienkalender. Den lasse ich als Countdown in fhem anzeigen...
Spartacus
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 25 Juni 2014, 23:17:38
Klappt!

Danke!

Robin
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 26 Juni 2014, 08:59:31
Da ich ein separates Testsystem habe hatte ich nun Deine Einträge in der FHEM.cfg uns utils komplett übernommen und meine gelöscht aberes funktioniert immer noch nicht. Ich bekomme die Fehlermeldung:

2014.06.26 08:40:15 3: get Abfall start 25a113bfdfb6e25baf9e290bf03c756b : 02.10.2014 06:00:00
2014.06.26 08:40:15 3: Abfall_Update return value: Undefined subroutine &main::timelocal called at ./FHEM/99_myUtilsm.pm line 53.


sch... dass ich mit Perl immer noch nicht so richtig uptodate bin
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 26 Juni 2014, 09:27:06
Moin raspklaus,
naja, ich bin alles andere als ein Perl Experte und ich komme selber kaum damit klar! Aber hier scheint irgendetwas mit Deiner Utils Datei nicht zu stimmen. Schau noch mal genau rein! in Zeile 53 stimmt was nicht! Name der SUB-Routine, Klammer vergessen oder irgendein Zeichen zu viel. Manchmal sieht man den Wald vor lauter Bäumen nicht....
Nimm doch mal meine Utils, lösche alles bis auf eine Abfalltonne und teste es noch mal. Das muss klappen! Das reload 99_myUtilsm.pm in fhem nicht vergessen!

Sparatcus
P.S. hast Du das mit den Schulferien und dem Berechnen des Kalenderjahrs mal verifiziert?
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 26 Juni 2014, 10:09:11
Zu den Ferien bin ich noch nicht gekommen.

Ich habe Deine Utils komplett übernommen, auch die Einträge in der FHEM.cfg
Damit tritt ja der Fehler auf
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 26 Juni 2014, 10:22:19
Ich habe den Fehler gefunden:

es fehlte im Header der Utils ein
use Time::Local;

Jetzt gehts.

Nun müssten eigentlich nur noch Icons einen Tag vor und am Tag der Leerung angezeigt werden
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 26 Juni 2014, 10:49:39
Hallo,
bei mir war das use Time nicht drin!.

Die Fehler kommen bei mir übrigens auch, wenn ich die Routine aufrufe:
Argument "" isn't numeric in subtraction (-) at ./FHEM/99_myFhemUtils.pm line 195.
liegt offenbar hier dran:
my $dayDiff = floor(($dtWeihnachten - $t) / 60 / 60 / 24 + 1);
und
"my" variable $dayDiff masks earlier declaration in same scope at ./FHEM/99_myFhemUtils.pm line 105.
und das liegt offenbar an der doppelten Variablendeklaration.
wie kann man das abstellen?
Spartacus.
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 26 Juni 2014, 13:51:09
Eine der beiden Variablen

$dtWeihnachten - $t

scheint kein nummerischer Ausdruck zu sein
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 27 Juni 2014, 07:40:30
Bei mir wird Abfall Countdown nicht aktualisiert. Wie kommt das?
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 03 Juli 2014, 12:33:52
Hallo,
Zitat von: raspklaus am 26 Juni 2014, 13:51:09
Eine der beiden Variablen

$dtWeihnachten - $t

scheint kein nummerischer Ausdruck zu sein
..zumindest ist dieser Fehler schon mal klar!
In der Variablendeklaration darf der Wert nicht auf ' ' , sondern muss auf "0" gesetzt werden.
falsch:
my $dtWeihnachten = '';
richtig
my $dtWeihnachten = 0;
Spartacus.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Priem am 05 Juli 2014, 23:56:29
Hallo allerseits,

Ich habe die Prüfung der Abfallkalender über einen at-Befehl gelöst. So wird jeden Tag um 14:00 Uhr geprüft, ob am nächsten Tag eine Abholung ansteht. Wenn das der Fall ist, wird das Mülltonnen-Icon durch ein Achtung-Icon ersetzt, eine Nachricht über Prowl auf das Smartphone geschickt und bei Anwesenheit auch noch eine Sprachausgabe über das Text2Speech-Modul vorgenommen. Ich bin mir bewusst, dass der Code nicht der schönste ist und der Code für die Prüfung der drei Abholkalender (Restmüll, Bio, Papier) redunant ist und deshalb in eine separate Perl-Funktion ausgelagert werden sollte, aber bisher habe ich noch nicht die Zeit und die Lust dazu gehabt.

define Restabfall Calendar ical file ./FHEM/include/Restabfall.ics
attr Restabfall icon message_garbage
attr Restabfall room Haustechnik

define Biotonne Calendar ical file ./FHEM/include/Biotonne.ics
attr Biotonne icon message_garbage
attr Biotonne room Haustechnik

define Papiertonne Calendar ical file ./FHEM/include/Papiertonne.ics
attr Papiertonne icon message_garbage
attr Papiertonne room Haustechnik

define CheckMuellabfuhr at *14:00:00 {\
  my $today = (sprintf("%02d.%02d.%d",$mday,$month,$year));;\
  Log 3, "Prüfung der Müllabfuhrtermine am $today";;\
  my $papiertonne = "";;\
  $papiertonne = fhem("get Papiertonne alarm modeAlarm");;\
  my $biotonne = "";;\
  $biotonne  = fhem("get Biotonne alarm modeAlarm");;\
  my $restmuell = "";;\
  $restmuell = fhem("get Restabfall alarm modeAlarm");;\
  my $abholdatumPapiertonne = "";;\
  my $abholdatumBiotonne = "";;\
  my $abholdatumRestmuell = "";;\
  my $abholungBio = "false";;\
  my $abholungPapier = "false";;\
  my $abholungRest = "false";;\
  fhem "deleteattr Papiertonne icon";;\
  fhem "deleteattr Biotonne icon";;\
  fhem "deleteattr Restabfall icon";;\
  fhem "attr Papiertonne icon message_garbage";;\
  fhem "attr Biotonne icon message_garbage";;\
  fhem "attr Restabfall icon message_garbage";;\
  if ($papiertonne ne "") {\
    $abholdatumPapiertonne = substr($papiertonne,0,10);;\
    if ($abholdatumPapiertonne eq $today) {\
      $abholungPapier = "true";;\
      Log 3, "Leerung der Altpapiertonne steht bevor.";;\
      fhem "deleteattr Papiertonne icon";;\
      fhem "attr Papiertonne icon message_attention";;\
      system "sh /var/InternerSpeicher/fhem/mail_altpapier.sh";;\
      if (ReadingsVal("myMobile","state","absent") eq "present" && Value("Sprachausgabe") eq "on") {\
        fhem "set ttsSpeaker tts Hallo Thorsten! Morgen wird die Altpapiertonne geleert.";;\
      }\
    }\
  }\
  if ($biotonne ne "") {\
    $abholdatumBiotonne = substr($biotonne,0,10);;\
    if ($abholdatumBiotonne eq $today) {\
      $abholungBio = "true";;\
      Log 3, "Leerung der Biotonne steht bevor.";;\
      fhem "deleteattr Biotonne icon";;\
      fhem "attr Biotonne icon message_attention";;\
      system "sh /var/InternerSpeicher/fhem/mail_biotonne.sh";;\
      if (ReadingsVal("myMobile","state","absent") eq "present" && Value("Sprachausgabe") eq "on") {\
        fhem "set ttsSpeaker tts Hallo Thorsten! Morgen wird die Biotonne geleert.";;\
      }\
    }\
  }\
  if ($restmuell ne "") {\
    $abholdatumRestmuell = substr($restmuell,0,10);;\
    if ($abholdatumRestmuell eq $today) {\
      $abholungRest = "true";;\
      Log 3, "Leerung der Restmülltonne steht bevor.";;\
      fhem "deleteattr Restabfall icon";;\
      fhem "attr Restabfall icon message_attention";;\
      system "sh /var/InternerSpeicher/fhem/mail_restmuell.sh";;\
      if (ReadingsVal("myMobile","state","absent") eq "present" && Value("Sprachausgabe") eq "on") {\
        fhem "set ttsSpeaker tts Hallo Thorsten! Morgen wird die Restmuelltonne geleert.";;\
      }\
    }\
  }\
}

Die folgenden Zeilen im oben genannten Code schicken die Prowl-Nachricht und triggern die Sprachausgabe und können gefahrlos gelöscht werden:

      system "sh /var/InternerSpeicher/fhem/mail_xxxxxxxx.sh";;\
      if (ReadingsVal("myMobile","state","absent") eq "present" && Value("Sprachausgabe") eq "on") {\
        fhem "set ttsSpeaker tts Hallo Thorsten! Morgen wird die xxx geleert.";;\
      }\
Titel: Antw:Abfallkalender auswerten
Beitrag von: salvadore am 07 Juli 2014, 21:02:01
@raspklaus
war bei mir auch so mit use Time, ergänzt und schon klappt es.

Gibt es schon eine Erweiterung um die Icons entsprechend dem Leerungstag anzuzeigen? Habe mir zwar jetzt eine Erweiterung für die Utils "gebastelt" aber hier muss sicher noch nachgebessert werden.
ein kurzer Auszug:
....
  my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Papiertonne $dayDiff");
    if ($dayDiff >= 28) {
      fhem("deleteattr Papiertonne icon");
      fhem("attr Papiertonne icon message_attention");
    }
    else {
      fhem("deleteattr Papiertonne icon");
      fhem("attr Papiertonne icon message_garbage");
    }
  }


....

Bei uns ist am 08.07. Leerung der Papiertonne; gestern wurden 2 Tage angezeigt, heute nach der Aktualisiesrung dann 29 Tage + deshalb z.Zt. die Abfrage >=28. Hier muss ich mir noch was überlegen oder hat jemand schon eine Lösung ?.

Salvadore
Titel: Antw:Abfallkalender auswerten
Beitrag von: scooty am 09 Juli 2014, 23:18:14
Zitat von: salvadore am 07 Juli 2014, 21:02:01
Gibt es schon eine Erweiterung um die Icons entsprechend dem Leerungstag anzuzeigen?

Habe es mit drei Icons und über das Attribut devStateIcon gelöst, z.B.
{my $w=ReadingsVal("$name","state",100);if($w==0){'.*:garbage_rest'}else{if($w==1){'.*:garbage_rest_morgen'}else{'.*:garbage_rest_no'}}}

Wenn state=0 Tage, normales Müllicon garbage _rest
Wenn state=1 Tage (also Leerung morgen), Müllicon mit Ausrufezeichen garbage _rest_morgen
Bei jedem anderen state (also Leerung irgenwann in der Zukunft > 1 Tag), durchgestrichenes Müllicon garbage_rest_no

Andreas
PS. Abgeschaut bei der Anzeige eines Jalousienstatus nach Prozent der Öffnung
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 15 Juli 2014, 11:23:28
Kannst Du mal alle betroffenen Einträge posten ?

Danke
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 15 Juli 2014, 15:07:07
Also dann so ?

attr GelberSack devStateIcon {my $w=ReadingsVal("$name","state",100);if($w==0){'.*:GelberSackIn.0'}else{if($w==1){'.*:GelberSackIn.1'}else{'.*:NoMuell'}}}

Titel: Antw:Abfallkalender auswerten
Beitrag von: scooty am 15 Juli 2014, 19:46:14
Ich gebe zu, mit dem attr Befehl habe ich es auch nicht geschafft.
;)

Aber wenn Du
{my $w=ReadingsVal("$name","state",100);if($w==0){'.*:GelberSackIn.0'}else{if($w==1){'.*:GelberSackIn.1'}else{'.*:NoMuell'}}}
in das "attr"-Eingabefeld des Devices schreibst, sollte es funktionieren.

(http://forum.fhem.de/index.php?action=dlattach;topic=24646.0;attach=17160)
Titel: Antw:Abfallkalender auswerten
Beitrag von: raspklaus am 16 Juli 2014, 10:46:21
ok, so funktioniert es. Allerdings muss

define Abfall_Update notify Abfall:modeUpcoming.* {Abfalltermine("$EVENT")}

in

define Abfall_Update notify Abfall:modeAlarmOrStart.* {Abfalltermine("$EVENT")}

geändert werden und dann auch noch

{my $w=ReadingsVal("$name","state",100);;if($w==1){'.*:BioMuellIn.0'}else{if($w==2){'.*:BioMuellIn.1'}else{'.*:NoMuell'}}}


für devstateicon angepasst werden.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tweak am 08 Oktober 2014, 06:21:03
Zitat von: salvadore am 07 Juli 2014, 21:02:01
@raspklaus
war bei mir auch so mit use Time, ergänzt und schon klappt es.

Gibt es schon eine Erweiterung um die Icons entsprechend dem Leerungstag anzuzeigen? Habe mir zwar jetzt eine Erweiterung für die Utils "gebastelt" aber hier muss sicher noch nachgebessert werden.
ein kurzer Auszug:
....
  my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Papiertonne $dayDiff");
    if ($dayDiff >= 28) {
      fhem("deleteattr Papiertonne icon");
      fhem("attr Papiertonne icon message_attention");
    }
    else {
      fhem("deleteattr Papiertonne icon");
      fhem("attr Papiertonne icon message_garbage");
    }
  }


....

Bei uns ist am 08.07. Leerung der Papiertonne; gestern wurden 2 Tage angezeigt, heute nach der Aktualisiesrung dann 29 Tage + deshalb z.Zt. die Abfrage >=28. Hier muss ich mir noch was überlegen oder hat jemand schon eine Lösung ?.

Salvadore

Hallo,
Bei mir leider exakt das selben Problem, 1 Tag vor dem eigentlichen Termin wird schon wieder die Restlaufzeit bis zum nächsten Termin addiert, am Termin Tag ist dann das selbe Problem.
Gibt es hierfür eine Lösung? Hab mir jetzt extra schon icons geschnitz  die auf die Zahlen matchen. Also, ,3,2,1,0 usw.

Danke!
MFG
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 20 Oktober 2014, 21:13:37
Hallo,
ich habe hier einen Auszug aus meiner Auswertung:
sub
Abfalltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtPapier = '';

   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;
        }
    };
  my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Papiertonne $dayDiff");
  }
  }
}


Das funktioniert auch ganz gut. Jetzt ist es aber so, dass ich nur jeweils ein Jahr des Abfallkalenders nach Google hochladen kann- Für 2015 gibt es noch keine Daten.

Wenn es für die Papiertonne keinen Termin mehr im Kalender gibt, so bleibt der Countdown auf 1 stehen. Wie kann man das abfangen? In dem Fall sollte ein "-" oder der Text "kein Termin" angezeigt werden. Ich kriege das irgendwie nicht hin...

Danke,
Christian

Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 02 Dezember 2014, 18:37:22
Zitat von: Tweak am 08 Oktober 2014, 06:21:03
Hallo,
Bei mir leider exakt das selben Problem, 1 Tag vor dem eigentlichen Termin wird schon wieder die Restlaufzeit bis zum nächsten Termin addiert, am Termin Tag ist dann das selbe Problem.
Gibt es hierfür eine Lösung? Hab mir jetzt extra schon icons geschnitz  die auf die Zahlen matchen. Also, ,3,2,1,0 usw.

Danke!
MFG

Hallo zusammen,
ich habe inzwischen auch das Problem, dass der AbfallCountdown niemals 0 wird. Es wird dann direkt schon der nächste Termin angezeigt. Hat jemand eine funktionierenden Lösung? Es liegt offenbar an der Auswertung der Ereignisse. Die Berechnung des Countdown funktioniert einwandfrei. Die angefügte TestRoutine kann mit {Test ('EreignisID')} auferufen werden. Dann wird der Dummy korrekt gesetzt.

sub Test ($)
{
my ($uid) = @_;
my $t  = time;
my $dtDummy = '';
my $dayDiff = '';
my $dt = fhem("get cal.01.AF 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 ($dtDummy eq '' || ($eventDate < $dtDummy && $eventDate > $t))
{
$dtDummy = $eventDate;
}
$dayDiff = floor(($dtDummy - $t) / 60 / 60 / 24 + 1);
if ($dayDiff >= 0)
{
  fhem("set NN.xx.AF.Dummy.dum $dayDiff");
}
}


Ich denke das Problem liegt in diesem Teil des Codes...

sub
Abfalltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtPapier = '';
  my $dtWertstoff = '';
  my $dtRest = '';
  my $dtPfadfinder = '';
  my $dtBeda = '';
  my $dtDummy = '';
   foreach my $uid (@uids) {
    my $Kalendertext = fhem("get cal.01.AF summary $uid");
    if ($Kalendertext =~ /Papiertonne/) {
......


Ein weiteres Problem mit dieser Abfallkalenderauswertung ist auch, wenn keine Termine mehr gefunden werden, dann bleibt der letzte Wert im Dummy stehen.

Beispiel:
letzte Leerung Papier im Kalenderjahr 2014, 01.12.14
Daten für 2015 sind vom Entsorger noch nicht bereitgestellt.


Wenn das jemand inzwischen gelöst hat, wäre ich für einen Tipp dankbar,
Spartacus.
Titel: Antw:Abfallkalender auswerten
Beitrag von: rufus999 am 26 Dezember 2014, 11:05:55
Hallo liebe fhem-Gemeinde,

ich wünsche allen ein frohes Fest.

Ich verfolge schon seit Tagen diesen Thread. Ich habe mich dran gesetzt und versucht eure Beispiele auf meinen Abfallkalender zu übertragen. Aber irgendwie klappt dies nicht. Im Anhang sind meine Defines, die 99_myFhemUtils.pm,ics Datei, und meine verwendete FHEM-Version.

Altglas, Gelber Sack und Restmuell werden bei mir "befüllt". Aber erst mit den Daten ab Februar 2015, der komplette Januar fehlt (und auch der Rest von Dezember 2014).

Bei einem get Abfallkalender full all erhalte ich dieses:

040000008200E00074C5B7101A82E00800000000F0948E98AF13D00100000000000000   known upcoming                     02.02.2015 15:00:00-02.02.2015 16:00:00 Altglas
040000008200E00074C5B7101A82E00800000000B0EFDF95AF13D00100000000000000   known upcoming                     03.02.2015 15:00:00-03.02.2015 16:00:00 Restabfall und Gelber Sack
AAAAAGZiIi2teNIRh3cACMceNHwHAFVRQY8vEH1Et4vVHgRF5RMAAAFTn0EAAFVRQY8vEH updated upcoming                     29.12.2015 15:00:00-29.12.2015 16:00:00 Bioabfall


Im Prinzip spiegelt dies die Daten wieder welche in meinen Dummys landen.

Ich verstehe nur nicht wieso der komplette Januar fehlt ??? Im Forum habe ich auch Beiträge gefunden in denen beschrieben wird dass das Calender-Modul probleme mit ganztägigen Terminen haben soll. Daraufhin habe ich die ics Datei in mein Thunderbird-Lightning importiert und alle Termine von Hand umgewandelt und wieder exportiert. Leider ohne Erfolg. Wieder fehlt Januar komplett (Januar ist aber in der ics vorhanden).

Es wäre super wenn jemand eine Tipp hätte.

Vielen Dank im Voraus,

rufus999
Titel: Antw:Abfallkalender auswerten
Beitrag von: Bennemannc am 26 Dezember 2014, 11:14:20
Hallo rufus999,

mach mal ein Update und teste dann noch einmal.

Gruß Christoph
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 28 Dezember 2014, 00:53:55
Hallo,

Abfall Countdown
Biomuell
9
gelber_Sack
11
Papiertonne
24
Restmuell
7
Calendar
Abfall
Active
notify
Abfall_Update
2014-12-28 00:00:00

wie oder wann wird hier heruntergezählt? Geht das automatisch? Nach Mitternacht stehen hier immer noch die gleiche Anzahl der Tage.

Ich wollte den Abfallkalender für mein neues Bilderrahmen-LED-Stripe-Projekt verwenden:
http://blog.moneybag.de/fhem-mit-led-statusanzeige-led-stripe-wd2812b-433-mhz-drahtlos-uebertragung/#more-11377

LG
/robin

// Update :  Jetzt wurde aktualisiert, automatisch hm... mal beobachten.
Titel: Antw:Abfallkalender auswerten
Beitrag von: rufus999 am 28 Dezember 2014, 12:57:05
Hallo Bennemannc,

danke für deinen Tipp! Ich bin nun erheblich weiter als vorher. Aber leider nicht am Ziel  :-[

Also volgendes, nach dem Update wurden alle dummys befüllt. Diesmal auch mit Daten aus dem Monat Januar  :D
Doch leider fehlt jetzt bei allen genau die aktuelle Woche, sprich der jetzt fällige Termin.
Ich habe versucht den notify wie folgt ab zu ändern:

define Abfall_Update notify Abfallkalender:modeAlarmOrStart.* {Abfalltermine("$EVENT")}

Doch das brachte keine Änderung. Wenn ich get Abfallkalender full all

mache, bekomme ich exakt die Daten welche in meinen Dummys landen. Ich denke nicht dass dies ein Fehler in der Funktion von 99_myFhemUtils.pm ist sondern schon in dem Calender_Modul. Sonst müsste doch der Wert mit dem get Abfallkalender full all den richtigen Wert liefern oder?

Hast du noch eine Idee?

Gruß rufus999
Titel: Antw:Abfallkalender auswerten
Beitrag von: Germanboy4u am 30 Dezember 2014, 10:08:07
Zitat von: Spartacus am 25 Juni 2014, 23:04:05
Hier mal meine komplette utils:

Code nicht mitkopiert.

Das gleiche Prinzip funktioniert bei mir auch mit dem Ferienkalender. Den lasse ich als Countdown in fhem anzeigen...
Spartacus
Hallo Spartacus,
ich hab die gleiche Fehlermeldung wie beschrieben.
Hab dann den Inhalt von deinem Code nochmals in 99_myUtils.pm kopiert und reloaded.

also get Kalender full all bringt alle termine. Nur stehen bei Papiermüll etc nur ???

Hast du sonst noch eine Idee?

Gb4u

edit 1: Aus aller Verzweifelung hab ich nun mal 99_myFhemUtils.pm von Rufus genommen und nur Papier. Aber irgendwie steht immer noch nur "? ? ?" da.

Ergebniss von get Abfallkalender full all
llk4ea52qdkhm7shlm0l5dgq54googlecom     new upcoming                     02.01.2015 00:00:00-03.01.2015 00:00:00 Gelber Sack
7s2iq749fj13nnljvd58i4s1pcgooglecom     new upcoming                     03.01.2015 00:00:00-04.01.2015 00:00:00 Papiertonne
uhb699via0venl4vk2tqk4h5vsgooglecom     new upcoming                     08.01.2015 00:00:00-09.01.2015 00:00:00 Restmüll


define Abfallkalender Calendar ical url https://www.google.com/calendar/ical/...group.calendar.google.com/private-Zahlen/basic.ics 600
attr Abfallkalender room Kalender
define Papiertonne dummy
attr Papiertonne group Abfall Countdown
attr Papiertonne room Kalender

define Abfall_Update notify Abfallkalender:modeAlarmOrStart.* {Abfalltermine("$EVENT")}
attr Abfall_Update room Kalender
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 30 Dezember 2014, 14:39:00
Hallo zusammen,
tja, so richtig läuft das bei mir auch nicht. Heute war Papier und Restmüll. Dann steht der Termin unter "modeStart".
Da ich aber "modeUpcoming" auswerte, zeigt mir mein Restmüll-und Papier-Dummy schon den nächsten Termin in 14 bzw. 28 Tagen an. Ich habe keine Ahnung, wie ich das abfangen soll. Denn eigentlich müsste das Restmüll-und Papier-Dummy auf "0" stehen und erst ab morgen den Countdown starten. Mann muss irgenwie zwischen "modeStart" und "modeUpcoming" bei der Berechnung unterscheiden.

@Germanboy4u
kannst Du die Rroutine in der myUtils zu Fuß aufrufen? Kontrolliere noch mal die Schreibweise der Dummy-Devices. Ggf. musst Du auch den Suchstring anpassen. Das hängt von Deinem Kalender ab. Bei mir steht Papiertonne, Restmuell,etc. direkt in der Kalenderbeschreibung

ein "get Kalender full all" sieht bei mir so aus:
gwa_364PTF_20141230   known    start                     30.12.2014 00:00:00-31.12.2014 00:00:00 Papiertonne
gwa_364RM22_20141230   known    start                     30.12.2014 00:00:00-31.12.2014 00:00:00 Restmüll
gwa_6SM2_20150106   known upcoming                     06.01.2015 00:00:00-07.01.2015 00:00:00 Wertstofftonne
gwa_8WB12_20150108   known upcoming                     08.01.2015 00:00:00-09.01.2015 00:00:00 Weihnachtsbaum
gwa_13RM22_20150113   known upcoming                     13.01.2015 00:00:00-14.01.2015 00:00:00 Restmüll
gwa_20SM2_20150120   known upcoming                     20.01.2015 00:00:00-21.01.2015 00:00:00 Wertstofftonne .

Spartacus.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Germanboy4u am 30 Dezember 2014, 15:04:25
Ich frage momentan nur Papiertonne ab. Und das ist genauso wie bei dir.

Wie führe ich die Routine per Hand aus?

Sollte erwähnen, dass bei mir irgendwie kein Script vernünftig läuft :( Kalender, TV Programm, Wetter...

Enigma2 und Onkyo AV laufen. Mehr hab ich noch nicht zum Steuern ;)
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 30 Dezember 2014, 15:28:21
Hi,
z.b. so:
{Abfalltermine("modeStart: gwa_364RM22_20141230")}
"gwa_364RM22_20141230" steht bei mir für Restmüll-Eintrag und steht heute unter modeStart.
"Abfalltermine" ist die Sub-Routine in der myUtils.
"gwa_364RM22_20141230" ist der Kalendereintrag

"modeStart" kannst Du natürlich auch durch "modeUpcoming" ersetzten und dann einen gültigen Eintrag aus dem Kalender nutzen. Guck mal in Deinen Kalender, welche Einträge da unter modeStart und modeUpcoming stehen...

Der o.a. Aufruf setzt mein Restmüll Dummy auf "0". So sollte es auch eigentlich sein! Ich denke man muss das Ganze so anpassen, dass man immer modeStart abfragt und nur wenn da nichts drin steht, die Werte aus modeUpcoming verarbeitet und in die Dummy-Devices schreibt. Aber so gut bin ich in Perl einfach nicht, dass ich das hinkriegen würde...
Spartacus
Titel: Antw:Abfallkalender auswerten
Beitrag von: Germanboy4u am 30 Dezember 2014, 19:05:37
Irgendwie mag er nicht :(

Wenn ich {Abfalltermine("modeStart: gwa_364RM22_20141230")} oben in das Feld eingebe passiert entweder gar nix oder der Bildschirm wird weiß.

Habe für Heute einen Restmüll Termin gemacht. Hat er auch im Kalender (laut get full all), aber dann passier nix :(

Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 30 Dezember 2014, 20:32:23
Hi,
poste mal Deine Sub-Routine. Und die/das Dummy-Devices. Und wichtig ist, dass der Anfang der myUtils so aussieht:
package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
sub myAbfallTermine_Initialize($$)
{
my ($hash) = @_;
}

Spartacus
Titel: Antw:Abfallkalender auswerten
Beitrag von: Franz Tenbrock am 01 Januar 2015, 17:39:15
Hallo
leider komme ich als Anfänger mit all dem was ich hier gelesen habe nicht weiter
alles hin und her probiert
Hab den ical Datei geladen und auf den cubie kopiert. dort wird er ja auch wohl gefunden

wenn ich nun
get Abfall full all
eingebe kommt das hier, damit sollte der Abfallkalender ja gefunden werden
AAAAAPfEYbUEorlLn3Vz8M6v5QwkACAA     new upcoming                     02.01.2015 06:00:00-02.01.2015 06:00:00 Abfuhr Restmüll u. Bioabfall - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QxEACAA     new upcoming                     08.01.2015 06:00:00-08.01.2015 06:00:00 Abfuhr Weihnachtsbäume - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QxkACAA     new upcoming                     09.01.2015 06:00:00-09.01.2015 06:00:00 Abfuhr LVP (Gelbe Tonne/gelber Sack) - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QyEACAA     new upcoming                     15.01.2015 06:00:00-15.01.2015 06:00:00 Abfuhr Restmüll u. Bioabfall - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QykACAA     new upcoming                     21.01.2015 06:00:00-21.01.2015 06:00:00 Abfuhr Altpapier - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QzEACAA     new upcoming                     23.01.2015 06:00:00-23.01.2015 06:00:00 Abfuhr LVP (Gelbe Tonne/gelber Sack) - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QzkACAA     new upcoming                     29.01.2015 06:00:00-29.01.2015 06:00:00 Abfuhr Restmüll u. Bioabfall - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QwEASAA     new upcoming                     06.02.2015 06:00:00-06.02.2015 06:00:00 Abfuhr LVP (Gelbe Tonne/gelber Sack) - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QwkASAA     new upcoming                     12.02.2015 06:00:00-12.02.2015 06:00:00 Abfuhr Restmüll u. Bioabfall - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QxEASAA     new upcoming                     18.02.2015 06:00:00-18.02.2015 06:00:00 Abfuhr Altpapier - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QxkASAA     new upcoming                     20.02.2015 06:00:00-20.02.2015 06:00:00 Abfuhr LVP (Gelbe Tonne/gelber Sack) - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QyEASAA     new upcoming                     26.02.2015 06:00:00-26.02.2015 06:00:00 Abfuhr Restmüll u. Bioabfall - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QykASAA     new upcoming                     06.03.2015 06:00:00-06.03.2015 06:00:00 Abfuhr LVP (Gelbe Tonne/gelber Sack) - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QzkASAA     new upcoming                     12.03.2015 06:00:00-12.03.2015 06:00:00 Abfuhr Restmüll u. Bioabfall - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QzEASAA     new upcoming                     12.03.2015 06:00:00-12.03.2015 06:00:00 Abfuhr Gartenabfälle Frühjahr - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QwEAiAA     new upcoming                     18.03.2015 06:00:00-18.03.2015 06:00:00 Abfuhr Altpapier - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QwkAiAA     new upcoming                     20.03.2015 06:00:00-20.03.2015 06:00:00 Abfuhr LVP (Gelbe Tonne/gelber Sack) - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QxEAiAA     new upcoming                     26.03.2015 06:00:00-26.03.2015 06:00:00 Abfuhr Restmüll u. Bioabfall - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QxkAiAA     new upcoming                     02.04.2015 06:00:00-02.04.2015 06:00:00 Abfuhr LVP (Gelbe Tonne/gelber Sack) - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QyEAiAA     new upcoming                     10.04.2015 06:00:00-10.04.2015 06:00:00 Abfuhr Restmüll u. Bioabfall - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QykAiAA     new upcoming                     15.04.2015 06:00:00-15.04.2015 06:00:00 Abfuhr Altpapier - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QzEAiAA     new upcoming                     17.04.2015 06:00:00-17.04.2015 06:00:00 Abfuhr LVP (Gelbe Tonne/gelber Sack) - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QzkAiAA     new upcoming                     23.04.2015 06:00:00-23.04.2015 06:00:00 Abfuhr Restmüll u. Bioabfall - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QwEAyAA     new upcoming                     02.05.2015 06:00:00-02.05.2015 06:00:00 Abfuhr LVP (Gelbe Tonne/gelber Sack) - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QwkAyAA     new upcoming                     07.05.2015 06:00:00-07.05.2015 06:00:00 Abfuhr Restmüll u. Bioabfall - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QxEAyAA     new upcoming                     13.05.2015 06:00:00-13.05.2015 06:00:00 Abfuhr Altpapier - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QxkAyAA     new upcoming                     16.05.2015 06:00:00-16.05.2015 06:00:00 Abfuhr LVP (Gelbe Tonne/gelber Sack) - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QyEAyAA     new upcoming                     21.05.2015 06:00:00-21.05.2015 06:00:00 Abfuhr Restmüll u. Bioabfall - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QykAyAA     new upcoming                     30.05.2015 06:00:00-30.05.2015 06:00:00 Abfuhr LVP (Gelbe Tonne/gelber Sack) - Bezirk 1
AAAAAPfEYbUEorlLn3Vz8M6v5QzEAyAA     new upcoming                     05.06.2015 06:00:00-05

und so weiter...

meine cfg hab ich mir hier zusammengeklaut
###############################################################################
###########                 Abfallkalender                           ##########
###############################################################################
#define Abfall Calendar ical file ./Daten/Glattbach-2015-1420048010.ics 600

define Abfall Calendar ical file ./Daten/Abfallkalender2015_iCal-Import_Bezirk1.ics
attr Abfall alias Abfallkalender
attr Abfall room Kalender


define BiomuellIn dummy
attr BiomuellIn room Kalender

define GelbeTonneIn dummy
attr GelbeTonneIn room Kalender

define RestmuellIn dummy
attr RestmuellIn room Kalender

define PapierIn dummy
attr PapierIn room Kalender

define AltholzIn dummy
attr AltholzIn room Kalender

define SchadstoffIn dummy
attr SchadstoffIn room Kalender

define GruenIn dummy
attr GruenIn room Kalender

#define Abfall_Update notify Abfall:modeAlarmOrStart.* {Abfalltermine("$EVENT")}
define Abfall_Update notify Abfall:modeUpcoming.* {Muelltermine("$EVENT")}
attr Abfall_Update room Kalender
#define Abfall_Update notify Abfall:modeUpcoming.* {Abfalltermine("$EVENT")}

wie man am Ende sieht alle möglichen Varianten probiert

meine 99_myUtils.pm  sieht im Moment so aus

package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
sub myAbfallTermine_Initialize($$)
{
my ($hash) = @_;
}

# 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 =~ /Bioabfall/) {
        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 =~ /Gelbe Tonne/) {
        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ülltonne/) {
        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 =~ /Metall/) {
        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))
        {
          $dtAltholz = $eventDate;
        }
    };
if ($Kalendertext =~ /Glas/) {
        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))
        {
          $dtSchadstoff = $eventDate;
        }
    };

  };
  my $dayDiffB = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffB >= 0) {
    fhem("set BioabfallIn $dayDiffB");
  }
  my $dayDiffG = floor(($dtYellow - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffG >= 0) {
    fhem("set GelbeTonneIn $dayDiffG");
  }
  my $dayDiffR = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffR >= 0) {
    fhem("set RestmuellIn $dayDiffR");
  }
  my $dayDiffP = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffP >= 0) {
    fhem("set PapiertonneIn $dayDiffP");
  }
  my $dayDiffH = floor(($dtAltholz - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffH >= 0) {
    fhem("set MetallIn $dayDiffH");
  }
  my $dayDiffS = floor(($dtSchadstoff - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffS >= 0) {
    fhem("set GlasIn $dayDiffS");
  }
  my $dayDiff = floor(($dtGruen - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set GruenIn $dayDiff");
  }
}


das kommt davon wenn man zu wenig Plan von der Programmiersprache hat
trotz allem fände ich es klasse wenn meine Frau sehen würde wann die Tonne raus muss
bin mittlerweile confused
Titel: Antw:Abfallkalender auswerten
Beitrag von: Franz Tenbrock am 01 Januar 2015, 19:06:04
so etwas weiter und scheinbar hab ich einiges von dem code auch verstanden

Restmüll, Altpapier und Gelbe Tonne wird durch Nachbearbeitung der 99_utils nun richtig angezeigt
und noch mehr !
Ich muss auch an meinem Arbeitspatz die Tonnen rausstellen
leider ein anderer bezirk
da ich das hier nun aber verstanden habe, habe ich etwas experimentiert und recht schnell auch den 2. Kalender integriert.
Es werden nun also 2 Bezirke gleichzeitig angezeit
das ist obercool

(http://abfallkalender.png)
was noch fehlt wäre eine farbige Darstellung, grün alles über 3 Tage
gelb noch 2 Tage. rot es wird Zeit
bei meiner Energieampel konnte ich das über valuestyle ganz einfach realisieren,
hat da jemand einen Tip ?


###############################################################################
###                      Abfallkalender                                    ####
###
###############################################################################

define AbfallA Calendar ical file ./Daten/Abfallkalender2015_iCal-Import_Bezirk1.ics
attr AbfallA alias Abfallkalender In der Baut
attr AbfallA room Kalender


define AbfallB Calendar ical file ./Daten/Abfallkalender2015_iCal-Import_Bezirk4.ics
attr AbfallB alias Abfallkalender Hochstrasse
attr AbfallB room Kalender

define GelbeTonneA dummy
attr GelbeTonneA alias In der Baut - Gelbe Säcke
attr GelbeTonneA group Info
attr GelbeTonneA room Kalender

define GelbeTonneB dummy
attr GelbeTonneB alias Hochstrasse - Gelbe Säcke
attr GelbeTonneB group Info
attr GelbeTonneB room Kalender

define RestmuellA dummy
attr RestmuellA alias In der Baut - Restmüll
attr RestmuellA group Info
attr RestmuellA room Kalender

define RestmuellB dummy
attr RestmuellB alias Hochstrasse - Restmüll
attr RestmuellB group Info
attr RestmuellB room Kalender

define AltpapierA dummy
attr AltpapierA alias In der Baut - Altpapier
attr AltpapierA group Info
attr AltpapierA room Kalender

define AltpapierB dummy
attr AltpapierB alias Hochstrasse - Altpapier
attr AltpapierB group Info
attr AltpapierB room Kalender

define AbfallA_Update notify AbfallA:modeUpcoming.* {MuelltermineA("$EVENT")}
attr AbfallA_Update room Kalender


define AbfallB_Update notify AbfallB:modeUpcoming.* {MuelltermineB("$EVENT")}
attr AbfallB_Update room Kalender


und hier die utils

package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
sub myAbfallTermine_Initialize($$)
{
my ($hash) = @_;
}

# Mülltermine auswerten
sub MuelltermineA ($)
{
  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 AbfallA summary $uid");
    if ($Kalendertext =~ /Bioabfall/) {
        my $dt = fhem("get AbfallA 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 AbfallA 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 AbfallA 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 =~ /Altpapier /) {
        my $dt = fhem("get AbfallA 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 =~ /Bioabfall/) {
        my $dt = fhem("get AbfallA 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))
        {
          $dtAltholz = $eventDate;
        }
    };
if ($Kalendertext =~ /Glas/) {
        my $dt = fhem("get AbfallA 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))
        {
          $dtSchadstoff = $eventDate;
        }
    };

  };
  my $dayDiffB = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffB >= 0) {
    fhem("set BioabfallA $dayDiffB");
  }
  my $dayDiffG = floor(($dtYellow - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffG >= 0) {
    fhem("set GelbeTonneA $dayDiffG");
  }
  my $dayDiffR = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffR >= 0) {
    fhem("set RestmuellA $dayDiffR");
  }
  my $dayDiffP = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffP >= 0) {
    fhem("set AltpapierA $dayDiffP");
  }
  my $dayDiffH = floor(($dtAltholz - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffH >= 0) {
    fhem("set MetallA $dayDiffH");
  }
  my $dayDiffS = floor(($dtSchadstoff - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffS >= 0) {
    fhem("set GlasA $dayDiffS");
  }
  my $dayDiff = floor(($dtGruen - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set GruenA $dayDiff");
  }
}
sub MuelltermineB ($)
{
  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 AbfallB summary $uid");
    if ($Kalendertext =~ /Bioabfall/) {
        my $dt = fhem("get AbfallB 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 AbfallB 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 AbfallB 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 =~ /Altpapier /) {
        my $dt = fhem("get AbfallB 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 =~ /Bioabfall/) {
        my $dt = fhem("get AbfallB 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))
        {
          $dtAltholz = $eventDate;
        }
    };
if ($Kalendertext =~ /Glas/) {
        my $dt = fhem("get AbfallB 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))
        {
          $dtSchadstoff = $eventDate;
        }
    };

  };
  my $dayDiffB = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffB >= 0) {
    fhem("set BioabfallB $dayDiffB");
  }
  my $dayDiffG = floor(($dtYellow - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffG >= 0) {
    fhem("set GelbeTonneB $dayDiffG");
  }
  my $dayDiffR = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffR >= 0) {
    fhem("set RestmuellB $dayDiffR");
  }
  my $dayDiffP = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffP >= 0) {
    fhem("set AltpapierB $dayDiffP");
  }
  my $dayDiffH = floor(($dtAltholz - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffH >= 0) {
    fhem("set MetallB $dayDiffH");
  }
  my $dayDiffS = floor(($dtSchadstoff - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffS >= 0) {
    fhem("set GlasB $dayDiffS");
  }
  my $dayDiff = floor(($dtGruen - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set GruenB $dayDiff");
  }
}


in der utils ist zwar noch überflüssiger code den hab ich aber mal dringelassen ev kann ihn ja jemand brauchen

8)    ;D

ich hoffe das hilft auch anderen
und danke für die Hilfe
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 01 Januar 2015, 23:01:28
Ich habe mal die subroutine etwas verkürzt und der Kalender wird beim Notiy mit übergeben

define Abfall_Update notify myCalendar:modeUpcoming.* {Abfalltermine($NAME,"$EVENT")}

#
#### Google Kalender auswerten
#
sub Abfalltermincheck($$$$$$$){
  my ($text,$art,$check,$uid,$t,$cal,$Kt) = @_;
  my ($dt,@SplitDt,@SplitDate,$eventDate,$daydiff);
#  Log 3, "Abfalltermincheck - $text,$art,$check,$uid,$t,$cal";
  if ($Kt =~ /$text/) {
    $dt = fhem("get $cal start $uid");
    @SplitDt = split(/ /,$dt);
    @SplitDate = split(/\./,$SplitDt[0]);
    $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
    if ($check eq '' || ($eventDate < $check && $eventDate > $t)){
          $check = $eventDate;
          $daydiff = floor(($eventDate - $t) / 60 / 60 / 24 + 1);
          fhem("set $art $daydiff");
        };
    };
    return ($check);
}

sub Abfalltermine($$){
  my ($cal,$Ereignis) = @_;
  my ($Kt);
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
# Prüfvariablen
  my $dtBio = '';
  my $dtYellow = '';
  my $dtRest = '';
  my $dtGlas = '';
  my $dtPapier = '';
  foreach my $uid (@uids) {
    $Kt = fhem("get $cal summary $uid");
#   Prüfvariable = Abfalltermincheck("Suchtext","Dummyname",Prüfvariable,UID,Zeit,Kalender,Kalendertext)
    $dtPapier = Abfalltermincheck("Blaue Tonne","Papiertonne",$dtPapier,$uid,$t,$cal,$Kt);
    $dtRest   = Abfalltermincheck("Schwarze Tonne","Restmuell",$dtRest,$uid,$t,$cal,$Kt);
  };
}


Angepasst an eigene Werte sollte mit ändern/einfügen von reichen:

  my $dtxxx = '';

bzw.

  $dtxxx   = Abfalltermincheck("Suchtext","Dummyname",$dtxxx,$uid,$t,$cal,$Kt);
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 02 Januar 2015, 12:21:47
Morgen kommt Restmüll.
Der Dummy Restmuell sollte eigentlich von 1 auf 0 morgen springen.

Heute morgen stand er noch auf 1. Jetzt kurz vor 11 uhr (warum auch immer) ist er auf  7 gesprungen.
Programmfehler? Falsche Konfiguration des Kalenders oder wo liegt der Fehler? Update / Reload wurden gemacht ... Angepasste Funktionen aus der stromer-12 - Source.

Biomuell
3
gelber_Sack
5
Papiertonne
18
Restmuell
7
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 02 Januar 2015, 14:08:40
Wie ist der Termin im Kalender konfiguriert?
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 02 Januar 2015, 18:33:17
Hallo stromer-12

wie meinst du das?
ich habe einen speziellen Google Kalender gemacht "fhem" und dort habe ich zu den jeweiligen Terminen  "grau", "blau" "gelb" im Betreff und als ganztägigen Termin hineingeschrieben.

sieht also so aus

xxqfi7v9ea1j4padcjetequec0googlecom     new    alarm 02.01.2015 09:00:00 03.01.2015 00:00:00-04.01.2015 00:00:00 grau
xxpf0fpcvmk2ngtd2csochnrmkgooglecom     new upcoming                     05.01.2015 00:00:00-06.01.2015 00:00:00 braun
xxueoh604r8fm0n5oache57cccgooglecom     new upcoming                     07.01.2015 00:00:00-08.01.2015 00:00:00 gelb

usw.
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 02 Januar 2015, 19:06:23
wie lautet den dein notify zum triggern?
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 02 Januar 2015, 19:22:21
DEF   
Abfall:modeUpcoming.* {Abfalltermine($NAME,"$EVENT")}
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 02 Januar 2015, 19:31:43
habe bei mir noch "modeAlarmOrStart" eingefügt, damit kommt bei mir jetzt die 0, wenn heute Termin ist

myCalendar:(modeUpcoming|modeAlarmOrStart).* {Abfalltermine($NAME,"$EVENT")}

Bei mir war der Termin für morgen mit der 12:00 Aktuallisierung rausgeflogen.
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 02 Januar 2015, 20:24:39
Probiere ich gleich mal, bin unterwegs
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 02 Januar 2015, 21:01:13
Hi,
ich wollte jetzt auch mal den Abfallkalender in Fhem einfügen, hab ihn dazu lokal auf meinen CT geladen und über ein

define Muellkalender Calendar ical file /home/thomas/limbach-hauptstrasse.ics 72000 eingebunden

wenn ich ein
Zitatget Muellkalender  full all
eingebe bekomme ich auch die Kalendertage angezeigt, also scheint das einbinden des Kalenders ja funktioniert zu haben.
Anschließend habe ich diese 4 Dummys definiert
define BiomuellIn dummy
define RestmuellIn dummy
define GelbeTonneIn dummy
define PapierIn dummy


Dann habe ich in die 99_myUtils.pm folgende Sub eingefügt:
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;
        }
    };
if ($Kalendertext =~ /PapierIn/) {
        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 < $dtPapier && $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");
  }
  my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set PapierIn $dayDiff");
  }
}


und dann noch dieses notify um beim Kalender update die Buttons zu aktualisieren
define nf.Muellkalender.Update notify Muellkalender:mode.*abfallamtbautzende.* {Muelltermine("$EVENT");;}

Allerdings ist der Status der Buttons immer "???"

Was hab ich noch falsch gemacht, such schon den ganzen Tag, aber find den Fehler nichtt? IM Log erscheint kein Fehler

Danke
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 02 Januar 2015, 21:15:34
Zitat von: Tommy82 am 02 Januar 2015, 21:01:13
und dann noch dieses notify um beim Kalender update die Buttons zu aktualisieren
define nf.Muellkalender.Update notify Muellkalender:mode.*abfallamtbautzende.* {Muelltermine("$EVENT");;}

Allerdings ist der Status der Buttons immer "???"
Bist du dir sicher, das das notify greift?
Titel: Antw:Abfallkalender auswerten
Beitrag von: Franz Tenbrock am 02 Januar 2015, 21:24:35
Hallo Thommy
hab ich dich heute beschäftigt ?
Warum hast du nicht meine def von oben komplett genommen und nur die Datei ausgetauscht.
Man kann das ja später etwas hübschen wenn es läuft.
du hast in der define Muellkalender genommen und nicht Abfall
in der utils steht auch was anderes.
Kann es dir zwar nicht genau erklären aber da ist was mir den Namen durcheinander.

Du musst dann natürlich in deiner ical Datei schauen wie eure Stadt die Bezeichnungen gewählt hat
muss mich jetzt leider abmelden, etwas smalltalk mit family
hab gerade ne Geburtstagsliste gebastelt :-)
n8
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 03 Januar 2015, 01:02:34
Die 0 beim Restmuell-Dummy funktioniert jetzt, er zieht sich die Daten vom Google-Kalender jetzt rein. Ich möchte diesen Wert jedoch weiterverarbeiten, indem eine LED geschaltet wird.
Für jeden Dummy (Restmuell, gelber_Sack usw) habe ich ein Notify gemacht.

ZitatRestmuell:state.* {
  if ((ReadingsVal("Restmuell", "state", "99")) == 1) {
    myLEDSend("10101",1,1);
  } elsif ((ReadingsVal("Restmuell", "state", "99")) == 0) {
    myLEDSend("10101",2,1);
  } else {
    myLEDSend("10101",3,1);
  }
}

Jedoch springt er diese Routine nicht an.
Wenn ich in der Commandozeile:
trigger Restmuell state 0  (wenn der dummy Restmuell auf 0 steht), Leuchtet die externe LED (myLED bla).

Wenn ich aber das System neu starte mit shutdown restart  sollte doch eigentlich dieses Notify doch irgendwann wieder angesprungen werden... klappt aber nicht.

http://blog.moneybag.de/fhem-mit-led-statusanzeige-led-stripe-wd2812b-433-mhz-drahtlos-uebertragung/#more-11377

Irgendwelche ideen?

Titel: Antw:Abfallkalender auswerten
Beitrag von: bobby1000 am 03 Januar 2015, 08:39:20
Hallo,
erst einmal ein gutes und gesundes neues Jahr.

Ich habe euren Tread bis hierhin aufmerksam verfolgt und auch das ein oder andere von dem hier vorgestellten Quellcode stibitzt.
Den stibitzten Code habe ich in die Datei 99_myUtilMüll geschrieben.

Grundsätzlich scheint auch alles zu funktionieren. Die Mülltermine werden angezeigt und runter gezählt. (Ob bis 1 oder 0 weiß ich noch nicht)
Nun habe ich aber im Logfile folgende Fehlermeldung gefunden:
2015.01.03 08:26:23 1: reload: Error:Modul 99_myUtilsMuell deactivated:

Kann mir jemand sagen woher der Fehler kommt?

Vielen Dank für diesen wirklich interessanten Tread
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 03 Januar 2015, 10:33:46
Hallo bobby1000,

mal über die Console Fhem gestartet und beobachtet, wo Fhem aussteigt?

Robin
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 03 Januar 2015, 10:44:15
Zitat von: fh168 am 03 Januar 2015, 01:02:34
Die 0 beim Restmuell-Dummy funktioniert jetzt, er zieht sich die Daten vom Google-Kalender jetzt rein. Ich möchte diesen Wert jedoch weiterverarbeiten, indem eine LED geschaltet wird.
Für jeden Dummy (Restmuell, gelber_Sack usw) habe ich ein Notify gemacht.

Restmuell:state.* {
  if ((ReadingsVal("Restmuell", "state", "99")) == 1) {
    myLEDSend("10101",1,1);
  } elsif ((ReadingsVal("Restmuell", "state", "99")) == 0) {
    myLEDSend("10101",2,1);
  } else {
    myLEDSend("10101",3,1);
  }
}


Irgendwelche ideen?

ja,

Restmuell:.* {

Es gibt kein Event Namens "state" sondern:

2015-01-03 10:38:55 dummy Restmuell 5
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 03 Januar 2015, 11:17:43
ok, habe ich geändert.

aber da sollte doch irgendwann dieses Notify durchlaufen werden und die LED leuchten.
Passiert aber nicht. ich habe fhem neu gestartet.
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 03 Januar 2015, 11:23:54
wenn du

set Restmuell <Wert>

eingibst, sollte das notify triggern
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 03 Januar 2015, 11:29:36
Funktioniert!

ich habe ein

Zitatset Abfall reload

gemacht. Mal abwarten!

Und vielen Dank!

(http://blog.moneybag.de/wp-content/uploads/2015/01/IMG_1924-800x600.jpg)
Titel: Antw:Abfallkalender auswerten
Beitrag von: Franz Tenbrock am 03 Januar 2015, 16:16:14
na das ist ja mal was :-)
obercool
und jetzt noch den ganzen code und Bauanleitung posten
dann wäre das der Oberkracher

einiges davon hab ich ja schon im Blog gesehen,
wäre auch was fürs wiki
man muss immer so suchen und Glück haben das man im richtigen Thread landet
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 03 Januar 2015, 16:37:51
Hi,
ich hab jetzt mal die Vorlage von Franz aus Post 59 genommen, und die bei mir stehenden Bezeichnungen abgeändert, jetzt wird alles angezeigt ausser Papier, da bekomme ich immer noch die ???
Sehr wichtig ist das in der 99_myUtils.pm
Zitatuse Time::Local;
drin ist, ansonsten kommen nur ???

Hier mal mein abgeänderter Code (hab auch die 2 Bereiche raus genommen, da ich es nur für mich zu hause brauche)

Der KAlender und die Buttons
define AbfallA Calendar ical file /home/thomas/limbach-hauptstrasse.ics
attr AbfallA alias Abfallkalender
attr AbfallA room Kalender

define GelbeTonneIn dummy
attr GelbeTonneIn alias Gelbe Säcke
attr GelbeTonneIn group Info
attr GelbeTonneIn room Kalender

define RestmuellIn dummy
attr RestmuellIn alias Restmüll
attr RestmuellIn group Info
attr RestmuellIn room Kalender

define PapierIn dummy
attr PapierIn alias Papier
attr PapierIn group Info
attr PapierIn room Kalender

define BiomuellIn dummy
attr BiomuellIn alias Bio
attr BiomuellIn group Info
attr BiomuellIn room Kalender


Das notify
define AbfallA_Update notify AbfallA:modeUpcoming.* {MuelltermineA("$EVENT")}
attr AbfallA_Update room Kalender


und der Eintrag in der 99_myUtils


package main;
use strict;
use warnings;
use POSIX;
use Time::Local;

sub myAbfallTermine_Initialize($$)
{
my ($hash) = @_;
}

# Mülltermine auswerten
sub MuelltermineA ($)
{
  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 = '';

  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get AbfallA summary $uid");
    if ($Kalendertext =~ /Bioabfall/) {
        my $dt = fhem("get AbfallA 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 AbfallA 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 =~ /Restabfall/) {
        my $dt = fhem("get AbfallA 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 =~ /Altpapier /) {
        my $dt = fhem("get AbfallA 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 $dayDiffB = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffB >= 0) {
    fhem("set BiomuellIn $dayDiffB");
  }
  my $dayDiffG = floor(($dtYellow - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffG >= 0) {
    fhem("set GelbeTonneIn $dayDiffG");
  }
  my $dayDiffR = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffR >= 0) {
    fhem("set RestmuellIn $dayDiffR");
  }
  my $dayDiffP = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffP >= 0) {
    fhem("set PapierIn $dayDiffP");
  }
}



Find in dem Papier noch nicht den Fehler wieso das noch falsch angezeigt wird, vieleicht sieht den einer auf anhieb?

Danke


EDIT

Fehler gefunden in der 99_myUtils war ein leerzeichen zuviel, jetzt wird es  richtig angezeigt
Titel: Antw:Abfallkalender auswerten
Beitrag von: Franz Tenbrock am 03 Januar 2015, 18:58:52
du musst dir mal die Readings der ical Datei genau anschauen
wie es deine Stadt genau nennt... die Bezeichnungen müssen übereinstimmen
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 03 Januar 2015, 22:38:33
Hi, wie im Edit oben erwähnt, hab ich es gelöst und es funktioniert jetzt alles, allerdings habe ich jetzt jede Menge einträge im LOG:
2015.01.03 19:32:26.835 3: get AbfallA summary 98fd06c7788f852a0010f4d93f1efb3e : Altpapier
2015.01.03 19:32:26.837 3: get AbfallA start 98fd06c7788f852a0010f4d93f1efb3e : 14.01.2015 00:00:00
2015.01.03 19:32:26.878 3: get AbfallA summary 99161b5afbcbb585be0f406d3836dd24 : Gelber Sack
2015.01.03 19:32:26.880 3: get AbfallA start 99161b5afbcbb585be0f406d3836dd24 : 11.11.2015 00:00:00
2015.01.03 19:32:26.917 3: get AbfallA summary 9c7bfcd4b5149f43c3b1ad05884c2385 : Bioabfall
2015.01.03 19:32:26.920 3: get AbfallA start 9c7bfcd4b5149f43c3b1ad05884c2385 : 14.10.2015 00:00:00
2015.01.03 19:32:26.958 3: get AbfallA summary 9dcf0dbef8d9450d2eb9f02370945e3f : Altpapier
2015.01.03 19:32:26.961 3: get AbfallA start 9dcf0dbef8d9450d2eb9f02370945e3f : 23.09.2015 00:00:00
2015.01.03 19:32:27.002 3: get AbfallA summary a1d062c70344bfb3213d04eb9016240d : Restabfall
2015.01.03 19:32:27.005 3: get AbfallA start a1d062c70344bfb3213d04eb9016240d : 28.01.2015 00:00:00
2015.01.03 19:32:27.046 3: get AbfallA summary a32d3ce013dce42af43e45b704748ea8 : Altpapier
2015.01.03 19:32:27.049 3: get AbfallA start a32d3ce013dce42af43e45b704748ea8 : 09.04.2015 00:00:00
2015.01.03 19:32:27.090 3: get AbfallA summary a9101fc9f495fbeaff0af9b4f185c41b : Problemabfall
2015.01.03 19:32:27.130 3: get AbfallA summary a988215a8fcc780b323cb88dda74c5dd : Restabfall
2015.01.03 19:32:27.132 3: get AbfallA start a988215a8fcc780b323cb88dda74c5dd : 02.12.2015 00:00:00
2015.01.03 19:32:27.173 3: get AbfallA summary aa8040a93a7f3d19de0093d7705deaed : Altpapier
2015.01.03 19:32:27.175 3: get AbfallA start aa8040a93a7f3d19de0093d7705deaed : 06.05.2015 00:00:00
2015.01.03 19:32:27.212 3: get AbfallA summary b15e5e0a1eaf1046a4a0e20d7b740714 : Problemabfall
2015.01.03 19:32:27.248 3: get AbfallA summary b373271e00477d65e42855115ec625d0 : Sperrmüll
2015.01.03 19:32:27.285 3: get AbfallA summary b3ae8cd0c8233fd270c0186bd02786ba : Bioabfall
2015.01.03 19:32:27.287 3: get AbfallA start b3ae8cd0c8233fd270c0186bd02786ba : 10.06.2015 00:00:00
2015.01.03 19:32:27.324 3: get AbfallA summary bc260cc11665e0ce641d632124a0173e : Bioabfall
2015.01.03 19:32:27.326 3: get AbfallA start bc260cc11665e0ce641d632124a0173e : 04.02.2015 00:00:00
2015.01.03 19:32:27.362 3: get AbfallA summary c82a6ccee8a3b7003d342b93cb866c0a : Restabfall
2015.01.03 19:32:27.365 3: get AbfallA start c82a6ccee8a3b7003d342b93cb866c0a : 12.08.2015 00:00:00
2015.01.03 19:32:27.401 3: get AbfallA summary c89d2727c0b9e747864088997f61af6b : Bioabfall
2015.01.03 19:32:27.403 3: get AbfallA start c89d2727c0b9e747864088997f61af6b : 15.04.2015 00:00:00
2015.01.03 19:32:27.444 3: get AbfallA summary cce63412e18b34997c97a7ee7476af94 : Gelber Sack
2015.01.03 19:32:27.446 3: get AbfallA start cce63412e18b34997c97a7ee7476af94 : 29.04.2015 00:00:00
2015.01.03 19:32:27.489 3: get AbfallA summary cf3b3b8dbb92bec4794dfabd0a80ba40 : Restabfall
2015.01.03 19:32:27.491 3: get AbfallA start cf3b3b8dbb92bec4794dfabd0a80ba40 : 04.11.2015 00:00:00
2015.01.03 19:32:27.527 3: get AbfallA summary cf46f2420972e8364c2a26270a49c9de : Restabfall
2015.01.03 19:32:27.530 3: get AbfallA start cf46f2420972e8364c2a26270a49c9de : 22.04.2015 00:00:00
2015.01.03 19:32:27.566 3: get AbfallA summary d09f5b4bbe9bf07b3b79f03a60db47c1 : Bioabfall
2015.01.03 19:32:27.568 3: get AbfallA start d09f5b4bbe9bf07b3b79f03a60db47c1 : 09.12.2015 00:00:00
2015.01.03 19:32:27.605 3: get AbfallA summary d580a099f0983019d2cccf294f3cef4a : Altpapier
2015.01.03 19:32:27.607 3: get AbfallA start d580a099f0983019d2cccf294f3cef4a : 21.10.2015 00:00:00
2015.01.03 19:32:27.643 3: get AbfallA summary d5c8aec3f3c597d3e3c944f1d8a11c7d : Altpapier
2015.01.03 19:32:27.646 3: get AbfallA start d5c8aec3f3c597d3e3c944f1d8a11c7d : 11.03.2015 00:00:00


und so weiter, ist das normal oder wieso kommt das?

Hab das ganze dann jetzt mal noch in meinem FP eingebunden
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 04 Januar 2015, 00:54:55
Hallo Franz,

wenn du mich mit "obercool" meintest, ich habe meinen Blog-Beitrag gerade noch angepasst.
Die Schaltung steht schon einige Zeit da, Fhem-Scripte habe ich gerade reingestellt und den Sketch aktualisiert.
Beides ist sehr weit von "gut programmiert" entfernt und sollte auch nur zum Einstieg gedacht sein.

http://blog.moneybag.de/fhem-mit-led-statusanzeige-led-stripe-wd2812b-433-mhz-drahtlos-uebertragung/

Danke nochmal an das Forum für die Hilfe, es funktioniert jetzt alles!

LG
/robin
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 06 Januar 2015, 20:10:11
Hi, bekomme immer noch im Log viele dieser Meldungen:
015.01.06 05:29:35.543 3: TV_Programme: Response didn't match Reading(s) ZDF
2015.01.06 07:44:10.511 3: get AbfallA summary 005463be460fc472d16433d931086705 : Gelber Sack
2015.01.06 07:44:10.513 3: get AbfallA start 005463be460fc472d16433d931086705 : 07.01.2015 00:00:00
2015.01.06 07:44:10.526 3: get AbfallA summary 007ce8e6f2ab0ab5a409f4b7333b634d : Problemabfall
2015.01.06 07:44:10.538 3: get AbfallA summary 06d8322db3bc2d314d1827aa2f72e7e2 : Weihnachtsbäume
2015.01.06 07:44:10.550 3: get AbfallA summary 0f14492d8971e7b7e1c51882ad52aafa : Bioabfall
2015.01.06 07:44:10.553 3: get AbfallA start 0f14492d8971e7b7e1c51882ad52aafa : 13.05.2015 00:00:00
2015.01.06 07:44:10.553 3: 1431468000
2015.01.06 07:44:10.575 3: get AbfallA summary 14723705b40b23e9f576127a6168d912 : Altpapier
2015.01.06 07:44:10.578 3: get AbfallA start 14723705b40b23e9f576127a6168d912 : 03.06.2015 00:00:00
2015.01.06 07:44:10.610 3: get AbfallA summary 17a646cb3e353fa16cacf52829c5f3d5 : Bioabfall
2015.01.06 07:44:10.612 3: get AbfallA start 17a646cb3e353fa16cacf52829c5f3d5 : 24.06.2015 00:00:00
2015.01.06 07:44:10.644 3: get AbfallA summary 1c9ca202d5df6f39e2c6d8099bf9455e : Bioabfall
2015.01.06 07:44:10.646 3: get AbfallA start 1c9ca202d5df6f39e2c6d8099bf9455e : 16.09.2015 00:00:00
2015.01.06 07:44:10.678 3: get AbfallA summary 1d6a3fc8e6144cb5e970783f2893ec3d : Bioabfall
2015.01.06 07:44:10.680 3: get AbfallA start 1d6a3fc8e6144cb5e970783f2893ec3d : 02.09.2015 00:00:00
2015.01.06 07:44:10.712 3: get AbfallA summary 24fee0fb46f6565f90f3ff7c35547ab4 : Bioabfall
2015.01.06 07:44:10.714 3: get AbfallA start 24fee0fb46f6565f90f3ff7c35547ab4 : 29.04.2015 00:00:00
2015.01.06 07:44:10.715 3: 1430258400
2015.01.06 07:44:10.746 3: get AbfallA summary 25b6ff2d1a3ac6f7b9c3d0f0e0343efa : Bioabfall
2015.01.06 07:44:10.749 3: get AbfallA start 25b6ff2d1a3ac6f7b9c3d0f0e0343efa : 04.03.2015 00:00:00
2015.01.06 07:44:10.749 3: 1425423600
2015.01.06 07:44:10.781 3: get AbfallA summary 2980cc66e6ccc6c7c2ddcb360f0a4569 : Bioabfall
2015.01.06 07:44:10.783 3: get AbfallA start 2980cc66e6ccc6c7c2ddcb360f0a4569 : 19.08.2015 00:00:00
2015.01.06 07:44:10.820 3: get AbfallA summary 2ba333b9df585295e6c730e95557ecd8 : Problemabfall
2015.01.06 07:44:10.852 3: get AbfallA summary 30c380a9893d50320eb831ff95a1ae20 : Altpapier
2015.01.06 07:44:10.854 3: get AbfallA start 30c380a9893d50320eb831ff95a1ae20 : 18.11.2015 00:00:00
2015.01.06 07:44:10.886 3: get AbfallA summary 323acfc40891e76af1d7e6e25569cbab : Bioabfall
2015.01.06 07:44:10.888 3: get AbfallA start 323acfc40891e76af1d7e6e25569cbab : 19.02.2015 00:00:00
2015.01.06 07:44:10.889 3: 1424300400


Was kann das sein?

Danke

EDit

Hallo,
es funktioniert doch noch was nicht, heute ist der Tag 0 (An dem wo der Müll abgeholt wird), Allerdings wird die 0 nicht angezeigt, sondern wieder die 14,weil das nächste mal der Müll in 14 Tagen geht.
Was ist da noch fallsch?

Im KAlender steht heute
005463be460fc472d16433d931086705   known    start                     07.01.2015 00:00:00-08.01.2015 00:00:00 Gelber Sack Limbach Hauptstraße
66874acd7d03c9ea18a98a88078066ea   known    start                     07.01.2015 00:00:00-08.01.2015 00:00:00 Bioabfall Limbach Hauptstraße


Wieso wird dann heute nicht Tag 0 angezeigt, gestern wurde richtigerweisse die 1 angezeigt.

Das notify sieht jetzt so aus AbfallA:(modeUpcoming|modeAlarmOrStart).* {MuelltermineA($NAME,"$EVENT")}

Danke
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 07 Januar 2015, 20:55:14
Zitat von: Tommy82 am 06 Januar 2015, 20:10:11
Hi, bekomme immer noch im Log viele dieser Meldungen:

Das sind die normalen Meldungen vom Calendar-Modul. Die kannst du mir verbose = 2 verstecken...
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 07 Januar 2015, 21:02:15
Hi, Super Danke für den Tip, dann mach ich das mal.

Mein Problem das heute Tag 0 sein sollte (heute wurde Müll geholt) und damit auch das entsprechende Icon angezeigt werden sollte, hat irgendwie nicht geklappt, heute wird mir Tag 14 angezeigt.
Was mache ich noch falsch?

Danke
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 07 Januar 2015, 21:04:03
Zitat von: Tommy82 am 06 Januar 2015, 20:10:11
es funktioniert doch noch was nicht, heute ist der Tag 0 (An dem wo der Müll abgeholt wird), Allerdings wird die 0 nicht angezeigt, sondern wieder die 14,weil das nächste mal der Müll in 14 Tagen geht.
Was ist da noch fallsch?

Tausch mal in deiner sub die Zeile

  my $t  = time;

durch die Zeile

  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);


und dann in den einzelnen Müllarten statt

&& $eventDate > $t

schreibst du

&& $eventDate >= $t

Dann könnte es gehen...

EDIT: Sorry, hatte eine Zeile oben vergessen -> ist korrigiert
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 07 Januar 2015, 21:23:14
Dann bekomme ich beim Speichern diese Meldung:

ERROR:

Global symbol "$mday" requires explicit package name at ./FHEM/99_myUtils.pm line 236. Global symbol "$mon" requires explicit package name at ./FHEM/99_myUtils.pm line 236. Global symbol "$year" requires explicit package name at ./FHEM/99_myUtils.pm line 236.


236 ist my $t  = timelocal(0,0,0,$mday,$mon,$year);
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 07 Januar 2015, 21:24:36
Sorry, siehe EDIT oben...
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 07 Januar 2015, 21:31:13
Hab ein reload der 99_myUtils gemacht und auch des Kalenders, allerdings bekomme ich trotzdem 14 Tage angezeigt, wobei das ja jetzt nicht ganz falsch ist, weil der Müll ja in 14 Tagen wieder geht, allerdings hätte ja eigentlich heute die 0 angezeigt werden müssen weil er ja auch heute ging oder!?

Danke für deine Hilfe
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 07 Januar 2015, 21:33:54
Hier nochmal mein Code, vielleicht findest du ja noch den entscheidenden Unterschied:

sub
Muelltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtBio = 0;
  my $dtYellow = 0;
  my $dtRest = 0;
  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 == 0 || ($eventDate < $dtBio && $eventDate >= $t))
        {
          $dtBio = $eventDate;
        }
    };
    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 == 0 || ($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 == 0 || ($eventDate < $dtRest && $eventDate >= $t))
        {
          $dtRest = $eventDate;
        }
    };
  };

  my $dayDiff = 0; 
 
  $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24);
  if ($dayDiff >= 0) {
    fhem("set BiomuellIn $dayDiff");
  }
  $dayDiff = floor(($dtYellow - $t) / 60 / 60 / 24);
  if ($dayDiff >= 0) {
    fhem("set GelbeTonneIn $dayDiff");
  }
  $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
  if ($dayDiff >= 0) {
    fhem("set RestmuellIn $dayDiff");
  }
}


Ansonsten sehe ich es mir morgen nochmal an...

Ronny
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 07 Januar 2015, 21:35:30
Ok, werd die mal vergleichen, vieleicht findest du ja auch noch was, bist ja echt fit in den Themen.

Danke für deine Hilfe
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 07 Januar 2015, 21:48:07
Der Unterschied ist vermutlich, dass ich mit 0 initialisiere

  my $dtBio = 0;
  my $dtYellow = 0;
  my $dtRest = 0;


und dann statt

$dtBio eq ''

das nehme:

$dtBio == 0

Dann musst du auch am Ende bei den einzelnen dayDiff das

+1

wegnehmen. (Kann es sein, dass dein Müll gestern schon abgeholt wurde - das +1 sieht komisch aus)
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 08 Januar 2015, 13:53:01
Hallo,
m.E. hat das etwas mit modeStarted und modeUpcomming zu tun. Der Wert "0" wird nie erreicht. Das Problem hatte ich weiter oben im Thread schon beschrieben! (ab hier...http://forum.fhem.de/index.php/topic,24646.msg237362.html#msg237362 (http://forum.fhem.de/index.php/topic,24646.msg237362.html#msg237362))
Wenn der Tag des Termins kommt, dann verschwindet der Eintrag aus modeUpcomming und wandert zu modeStart bzw. modeStared. Und dafür bräuchte man m.E. zwei Aufrufe um das Problem zu lösen. Vielleicht hat ja jemand eine Idee. Ich habe noch keine vernünftige Lösung  gefunden...
Spartacus.
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 08 Januar 2015, 14:06:09
Also mein obiges sub funktioniert zuverlässig mit folgendem notify:

define Muellkalender.not.Update notify Muellkalender:mode.*abfallamtbautzende.* {Muelltermine("$EVENT")}

-> Damit wird die Funktion auch für modeStart und modeStarted aufgerufen...

Ronny
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 08 Januar 2015, 14:18:22
Zitat von: RoBra81 am 08 Januar 2015, 14:06:09
Also mein obiges sub funktioniert zuverlässig mit folgendem notify:

define Muellkalender.not.Update notify Muellkalender:mode.*abfallamtbautzende.* {Muelltermine("$EVENT")}

-> Damit wird die Funktion auch für modeStart und modeStarted aufgerufen...

Ronny
Hi Ronny,
der Aufruf funktioniert bei mir auch! Aber die künftigen Termine (>1 Tag) stehen doch in modeUpcomming, oder? Nur der jeweils aktuelle Termin steht in modeStart/Started. Und wenn der aktelle Termin von modeUpcomming auf modeStarted rutscht, dann bleibt der Counter für den aktuellen Tag auf "1" stehen !

Zumindest bei meinem Kalender (siehe Posts weiter oben).
Christian
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 08 Januar 2015, 14:22:28
Aber es wird doch mit modeStart nochmal aufgerufen und da steht ja der Termin für heute drin. Entweder hat es was mit der +1 am Ende zu tun oder ich habe das Glück, dass bei mir die Reihenfolge der events (erst modeUpcoming und dann der Wert durch erneuten Aufruf mit modeStart überschrieben) immer passt...
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 08 Januar 2015, 14:38:09
Ronny,
Du hast Recht! Mein Code funktioniert jetzt. Mein Aufruf war falsch!
package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
sub myAbfallTermine_Initialize($$)
{
my ($hash) = @_;
}

sub
Abfalltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtPapier = '';
  my $dtWertstoff = '';
  my $dtRest = '';
  my $dtPfadfinder = '';
  my $dtBeda = '';
  my $dtDummy = '';
   foreach my $uid (@uids) {
    my $Kalendertext = fhem("get cal.01.AF summary $uid");
    if ($Kalendertext =~ /Papiertonne/) {
        my $dt = fhem("get cal.01.AF 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 =~ /Wertstofftonne/) {
        my $dt = fhem("get cal.01.AF 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 ($dtWertstoff eq '' || ($eventDate < $dtWertstoff && $eventDate > $t))
        {
          $dtWertstoff  = $eventDate;
        }
    };
    if ($Kalendertext =~ /Restmüll/) {
        my $dt = fhem("get cal.01.AF 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 =~ /Pfadfinder/) {
        my $dt = fhem("get cal.01.AF 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 ($dtPfadfinder eq '' || ($eventDate < $dtPfadfinder && $eventDate > $t))
        {
          $dtPfadfinder  = $eventDate;
        }
    };
    if ($Kalendertext =~ /Pater Beda/) {
        my $dt = fhem("get cal.01.AF 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;
        }
    };   
   if ($Kalendertext =~ /Dummy/) {
        my $dt = fhem("get cal.01.AF 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 ($dtDummy eq '' || ($eventDate < $dtDummy && $eventDate > $t))
        {
          $dtDummy = $eventDate;
        }
    };
   
  my $dayDiffP = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffP >= 0) {
    fhem("set SP.xx.AF.Papier.dum $dayDiffP");
  }
  my $dayDiffW = floor(($dtWertstoff - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffW >= 0) {
    fhem("set EI.xx.AF.Wertstoffe.dum $dayDiffW");
  }
  my $dayDiffR = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffR >= 0) {
    fhem("set NN.xx.AF.RestMuell.dum $dayDiffR");
  }
    my $dayDiffPf = floor(($dtPfadfinder - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffPf >= 0) {
    fhem("set NN.xx.AF.Pfadfinder.dum $dayDiffPf");
  }
    my $dayDiffB = floor(($dtBeda - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffB >= 0) {
    fhem("set NN.xx.AF.Beda.dum $dayDiffB");
  }
   my $dayDiffD = floor(($dtDummy - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffD >= 0) {
    fhem("set NN.xx.AF.Dummy.dum $dayDiffD");
  }
  }
}

Ich habe in meinen Abfallkalender für heute den Eintrag "Dummy" geschrieben und bekomme nun "0" Tage angezeigt.
Einen Haken hat die Sache dennoch! Wenn es keinen weiteren Eintrag im Kalender mehr gibt, bleibt der Countdown auf "0" stehen, d.h., wenn mein Dummy Eintrag morgen aus dem Kalender verschwunden ist, dann bleibt die "0" stehen. Das Problem tritt zum Jahresende auf, wenn die Abfalltermine für das kommende Jahr noch nicht fest stehen  Das ist blöd! Das müsste man noch irgendwie abfangen.
Christian.

Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 08 Januar 2015, 14:46:55
Ja, das hatte ich auch um Weihnachten bevor ich die neuen Termine eingepflegt hatte...
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 08 Januar 2015, 17:20:44
Hallo,
hat irgendjemand eine Idee, wie man das abfangen könnte? Anstelle der "0" sollte hier "kein Termin" angezeigt werden.

Gruß,
Christian.
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 08 Januar 2015, 17:25:48
Das Problem wird hier sein, dass er ja mehrere Listen (modeUpcoming, modeStarted, ...) durchsucht und erst wenn in der letzten nix steht die Entscheidung treffen kann...
Da es beim Abfallkalender nur einmal im Jahr passiert, könnte ich damit leben.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 08 Januar 2015, 17:32:32
Zitat von: RoBra81 am 08 Januar 2015, 17:25:48
Das Problem wird hier sein, dass er ja mehrere Listen (modeUpcoming, modeStarted, ...) durchsucht und erst wenn in der letzten nix steht die Entscheidung treffen kann...
Da es beim Abfallkalender nur einmal im Jahr passiert, könnte ich damit leben.
...nicht wirklich! Ich habe beispielsweise auch Altkleidersammlung mit drin und das trifft nur 3 x im Jahr zu. Da ist der Zeitraum schon größer! (ca. 100 Tage)

Ich habe keine gute Idee, wo man da anpacken könnte... Der Abfallkalender meiner Stadt ist immer ab Mitte Dezember verfügbar! Wäre halt schön, wenn man da einen Workaround schaffen könnte...
Christian
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 08 Januar 2015, 17:35:30
Vielleicht sehe ich es mir die Tage mal an - das muss ich ausprobieren, aus der Kalten kann ich noch nix sagen...
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 08 Januar 2015, 17:41:02
...wäre echt ne tolle Sache Ronny,
ich denke da schon länger drüber nach und finde keinen wirklichen Ansatz..Melde Dich mal, wenn Du ne Idee hast!
Gruß,
Christian
Titel: Antw:Abfallkalender auswerten
Beitrag von: vestaxb am 08 Januar 2015, 21:20:33
Mal eine kurze Frage;
Könnte es sein, dass die Abfragen mit Serienterminen nicht funktionieren? Ich habe nämlich für die Abholtermine Serientermine in Outlook erstellt und den Kalender dann exportiert.

Wenn ich in FHEM dann alle Einträge mittels

get Abfall full all

anzeigen möchte, sehe ich nur Einzel- aber keine Serientermine... ???

Titel: Antw:Abfallkalender auswerten
Beitrag von: scooty am 09 Januar 2015, 08:51:29
Zitat von: Spartacus am 08 Januar 2015, 17:32:32
...nicht wirklich! Ich habe beispielsweise auch Altkleidersammlung mit drin und das trifft nur 3 x im Jahr zu. Da ist der Zeitraum schon größer! (ca. 100 Tage)

Ich habe keine gute Idee, wo man da anpacken könnte... Der Abfallkalender meiner Stadt ist immer ab Mitte Dezember verfügbar! Wäre halt schön, wenn man da einen Workaround schaffen könnte...
Christian

Ich erstelle einfach manuell Pseudo-Termine für den 01.01. des Folgejahres.
Bei Verfügbarkeit und nach Einlesen des neuen Jahreskalenders (Mitte Dezember) schiebe ich dann diese Pseudo-Termine einfach wieder manuell in das Folgejahr.

Ja, ist auch manuell, aber Einlesen des neuen Jahreskalenders muss ich ja auch manuell, von daher kann ich damit leben...  ;)

Andreas
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 09 Januar 2015, 13:06:28
Da habe ichs ja einfach mit meinen Abfallterminen für Papier, Gelben Sack und Restmüll, die werden stur im 2 bzw 4 Wochenrythmus abgeholt.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Markus am 10 Januar 2015, 14:10:50
Bei uns kommen sie auch alle vier Wochen. Wie hast du das gelöst? Ich hab eine holiday daten die ich jedes Jahr umändern muss
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 10 Januar 2015, 21:27:42
Zitat von: RoBra81 am 07 Januar 2015, 21:48:07
Der Unterschied ist vermutlich, dass ich mit 0 initialisiere

  my $dtBio = 0;
  my $dtYellow = 0;
  my $dtRest = 0;


und dann statt

$dtBio eq ''

das nehme:

$dtBio == 0

Dann musst du auch am Ende bei den einzelnen dayDiff das

+1

wegnehmen. (Kann es sein, dass dein Müll gestern schon abgeholt wurde - das +1 sieht komisch aus)

Hi, habs jetzt mal so geändert wie du geschrieben hast:
sub myAbfallTermine_Initialize($$)
{
my ($hash) = @_;
}

# Mülltermine auswerten
sub MuelltermineA ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtBio = 0;
  my $dtYellow = 0;
  my $dtRest = 0;
  my $dtPapier = 0;

  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get AbfallA summary $uid");
    if ($Kalendertext =~ /Bioabfall/) {
        my $dt = fhem("get AbfallA 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 == 0 || ($eventDate < $dtBio && $eventDate >= $t))
        {
          $dtBio = $eventDate;
          Log(3, $dtBio);
        }
    };
    if ($Kalendertext =~ /Gelber Sack/) {
        my $dt = fhem("get AbfallA 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 == 0 || ($eventDate < $dtYellow && $eventDate >= $t))
        {
          $dtYellow  = $eventDate;
        }
    };
    if ($Kalendertext =~ /Restabfall/) {
        my $dt = fhem("get AbfallA 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 == 0 || ($eventDate < $dtRest && $eventDate >= $t))
        {
          $dtRest = $eventDate;
        }
    };
if ($Kalendertext =~ /Altpapier/) {
        my $dt = fhem("get AbfallA 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 == 0 || ($eventDate < $dtPapier && $eventDate >= $t))
        {
          $dtPapier = $eventDate;
        }
    };

    my $dayDiffB = floor(($dtBio - $t) / 60 / 60 / 24 );
  if ($dayDiffB >= 0) {
    fhem("set BiomuellIn $dayDiffB");
  }
  my $dayDiffG = floor(($dtYellow - $t) / 60 / 60 / 24 );
  if ($dayDiffG >= 0) {
    fhem("set GelbeTonneIn $dayDiffG");
  }
  my $dayDiffR = floor(($dtRest - $t) / 60 / 60 / 24 );
  if ($dayDiffR >= 0) {
    fhem("set RestmuellIn $dayDiffR");
  }
  my $dayDiffP = floor(($dtPapier - $t) / 60 / 60 / 24 );
  if ($dayDiffP >= 0) {
    fhem("set PapierIn $dayDiffP");
  }
}
}


Nein der Müll ist diese Woche am 07.01.15 gegangen....

Aber jetzt passt es irgendwie garnicht mehr, laut Kalender geht jetzt das nächste mal Müll
Zitat98fd06c7788f852a0010f4d93f1efb3e     new upcoming                     14.01.2015 00:00:00-15.01.2015 00:00:00 Altpapier Limbach Hauptstraße

Allerdings stehen jetzt die Werte im Müllkalender bei Papier 7 Tage, das passt ja garnicht......


Was hab ich jetzt verschlimmbessert?

Dazu kommt das ich heute dann plötzlich noch diese Meldungen im Log habe
2015.01.10 09:30:01.465 3: AbfallA_Update return value: Too many arguments for main::MuelltermineA at (eval 353119) line 1, near ""$EVENT")"

2015.01.10 09:30:01.470 3: AbfallA_Update return value: Too many arguments for main::MuelltermineA at (eval 353120) line 1, near ""$EVENT")"

2015.01.10 09:30:01.512 3: AbfallA_Update return value: Too many arguments for main::MuelltermineA at (eval 353121) line 1, near ""$EVENT")"

2015.01.10 09:30:01.517 3: AbfallA_Update return value: Too many arguments for main::MuelltermineA at (eval 353122) line 1, near ""$EVENT")"

2015.01.10 09:30:01.555 3: AbfallA_Update return value: Too many arguments for main::MuelltermineA at (eval 353123) line 1, near ""$EVENT")"

2015.01.10 09:30:01.561 3: AbfallA_Update return value: Too many arguments for main::MuelltermineA at (eval 353124) line 1, near ""$EVENT")"

2015.01.10 09:30:01.598 3: AbfallA_Update return value: Too many arguments for main::MuelltermineA at (eval 353125) line 1, near ""$EVENT")"

2015.01.10 09:30:01.604 3: AbfallA_Update return value: Too many arguments for main::MuelltermineA at (eval 353126) line 1, near ""$EVENT")"
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 10 Januar 2015, 23:19:36
Zitat von: Markus am 10 Januar 2015, 14:10:50
Bei uns kommen sie auch alle vier Wochen. Wie hast du das gelöst? Ich hab eine holiday daten die ich jedes Jahr umändern muss

Ich habe dafür im Google-Kalender eine Wiederholung alle 4 Wochen morgens um 6:00Uhr mit Errinnerung 12Stunden vorher eingestellt.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 11 Januar 2015, 16:16:25
Hab mir jetzt nochmal meine readings angesehen, die sind seit dem 07.01.15 nicht mehr aktualisiert worden, da scheint das Prolem zu liegen. Das notify macht ancheint nichts mehr!?
Was kann das plötzlich sein, hab am notify nichts geändert..

state
7
2015-01-07 03:44:13


Also das notify scheint zu arbeiten, aber die dummys werden nicht aktualisiert......
Titel: Antw:Abfallkalender auswerten
Beitrag von: bobby1000 am 13 Januar 2015, 09:42:56
Hallo zusammen,
ich habe mir den Müllkalender nach dem Einträgen im Forum hier zusammen geklaut. :-[
Soweit klappt auch alles. Die Anzeigen im Menüpunkt Kalender weisen mich am Tag vor der Abholung und am Tag der Abholung auf den Termin hin.
Nur hätte ich gerne noch eine Mitteilung per Pushover aufs Handy das morgen bzw. heute der Müll abgeholt wird.
Die generelle Meldung klappt auch aber sie kommt bei jedem aktualisieren des Kalenders sprich so 24 mal pro Tag.
Einmal würde mir eigentlich reichen. :(

Kann mir bitte jemand einen Tipp geben wie ich die Pushmeldung nur einmal hin bekomme?
Habe bisher versucht das ganze mit diesem Ausschnitt aus der 99_myUtils zu lösen. Aber sobald ich fhem( "attr BiotonneA event-on-change-reading state");eingebe bekomme ich gar keine Meldungen mehr und wenn ich es weg lasse bekomme ich jede Menge Meldungen.

  };
  my $dayDiffB = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffB >= 0) {
    fhem("set BiotonneA $dayDiffB");
    Log(3, Tage bis Biotonne $dayDiffB);
    if ($dayDiffB <= 1) {
      fhem( "attr BiotonneA event-on-change-reading state");
      fhem( "set HandyMeldungPushover msg 'Biotonne rausstellen' 'Morgen wird die Biotonne geleert.'");
    }   
}


Ach ja und noch eine Bitte, kann mir jemand die Zahlen 60 / 60/ 24 +1 einmal erklären?
Es ist ja schön wenn man den Quellcode "klauen" kann, aber ich würde auch gerne verstehen was hier abgeht. Ich tippe mal das eine 60 die Minuten sind nach denen aktualisiert wird.

Danke im voraus
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 13 Januar 2015, 20:33:04
Zitat von: Spartacus am 08 Januar 2015, 17:20:44
Hallo,
hat irgendjemand eine Idee, wie man das abfangen könnte? Anstelle der "0" sollte hier "kein Termin" angezeigt werden.

Gruß,
Christian.

So, ich habe mich wie versprochen mal rangesetzt und es folgendermaßen gelöst:

Meine neue sub:

sub
Muelltermine ($)
{
  my ($Ereignis) = @_;
  my @uids=split(/;/,$Ereignis);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  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]);
        Log(1, "eventDate: ".$eventDate);
        Log(1, "t: ".$t);
        if (($dtBio eq '' || $eventDate < $dtBio) && $eventDate >= $t)
        {
          $dtBio = $eventDate;
        }
    };
    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 = 0; 
 
  if ($dtBio eq '') {
    fhem("set BiomuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set BiomuellIn $dayDiff");
    }
  }
  if ($dtYellow eq '') {
    fhem("set GelbeTonneIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtYellow - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set GelbeTonneIn $dayDiff");
    }
  }
  if ($dtRest eq '') {
    fhem("set RestmuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set RestmuellIn $dayDiff");
    }
  }
}


Dieser wird nun von einem geänderten notify aufgerufen, da wir alle Termine auf einmal brauchen (man beachte 'all' statt 'mode'):

define Muellkalender.not.Update notify Muellkalender.all:.*abfallamtbautzende.* {Muelltermine("$EVTPART1")}

Ronny
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 13 Januar 2015, 21:18:55
Hallo Ronny,
vielen dank für Deine tolle Arbeit! Ich werde mir das einmal in Ruhe anschauen, so auf die Schnelle überblicke ich das noch nicht!

Schon mal ganz lieben Dank,
Christian
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 14 Januar 2015, 20:36:54
Hi, so es läuft wieder, aber trotzdem nicht richtig.
Heute ist Papier gegangen, steht auch so im Kalender.
98fd06c7788f852a0010f4d93f1efb3e   known    start                     14.01.2015 00:00:00-15.01.2015 00:00:00 Altpapier Limbach Hauptstraße
Also müsste der Dummy ja heute den Status 0 haben oder? Allerdings steht der Status heute auf 29, was auch grundsätzlich richtig ist, da in 29 Tagen das nächste Mal Papier geht, am 11.02.15, also zumindest ist 29 richtig wenn ich heute mitzähle, allerdings wenn heute wie ich eigentlich erwarten würde auf 0 stehen würde, dann wären es ja nur noch 28 Tage oder!?

Wie kann ich das noch lösen, komme nicht dahinter, das notify sieht aktuell so aus:
AbfallA_Update notify AbfallA:modeUpcoming.* {MuelltermineA("$EVENT")}\
und die Sub in der 99_myUtils:
sub myAbfallTermine_Initialize($$)
{
my ($hash) = @_;
}

# Mülltermine auswerten
sub MuelltermineA ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtBio = '';
  my $dtYellow = '';
  my $dtRest = '';
  my $dtPapier = '';

  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get AbfallA summary $uid");
    if ($Kalendertext =~ /Bioabfall/) {
        my $dt = fhem("get AbfallA 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 AbfallA 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 =~ /Restabfall/) {
        my $dt = fhem("get AbfallA 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 =~ /Altpapier/) {
        my $dt = fhem("get AbfallA 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 $dayDiffB = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffB >= 0) {
    fhem("set BiomuellIn $dayDiffB");
  }
  my $dayDiffG = floor(($dtYellow - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffG >= 0) {
    fhem("set GelbeTonneIn $dayDiffG");
  }
  my $dayDiffR = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffR >= 0) {
    fhem("set RestmuellIn $dayDiffR");
  }
  my $dayDiffP = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiffP >= 0) {
    fhem("set PapierIn $dayDiffP");
  }
}
}


Was könnte ich noch falsch machen?

Danke für eure Hilfe
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 15 Januar 2015, 21:13:35
Zitat von: RoBra81 am 13 Januar 2015, 20:33:04
So, ich habe mich wie versprochen mal rangesetzt und es folgendermaßen gelöst:

Meine neue sub:

sub
Muelltermine ($)
{
  my ($Ereignis) = @_;
  my @uids=split(/;/,$Ereignis);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  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]);
        Log(1, "eventDate: ".$eventDate);
        Log(1, "t: ".$t);
        if (($dtBio eq '' || $eventDate < $dtBio) && $eventDate >= $t)
        {
          $dtBio = $eventDate;
        }
    };
    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 = 0; 
 
  if ($dtBio eq '') {
    fhem("set BiomuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set BiomuellIn $dayDiff");
    }
  }
  if ($dtYellow eq '') {
    fhem("set GelbeTonneIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtYellow - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set GelbeTonneIn $dayDiff");
    }
  }
  if ($dtRest eq '') {
    fhem("set RestmuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set RestmuellIn $dayDiff");
    }
  }
}


Dieser wird nun von einem geänderten notify aufgerufen, da wir alle Termine auf einmal brauchen (man beachte 'all' statt 'mode'):

define Muellkalender.not.Update notify Muellkalender.all:.*abfallamtbautzende.* {Muelltermine("$EVTPART1")}

Ronny
Hallo Ronny,
ich habe mir Deine Lösung genauer angeschaut und ich glaube es verstanden zu haben. Der Trick ist hier, dass Du eben alle Termine auf einmal einlädst und bei der jeweiligen "Müllart" auf einen Leestring prüfst.
Wenn kein Eintrag gefunden wird, wird der Text ausgegeben...

Super gelöst und danke für die tolle Unterstützung!
Gruß,
Spartacus
Titel: Antw:Abfallkalender auswerten
Beitrag von: RPi_Fhem_Fan am 17 Januar 2015, 16:39:16
Zitat von: RoBra81 am 07 Januar 2015, 20:55:14
Das sind die normalen Meldungen vom Calendar-Modul. Die kannst du mir verbose = 2 verstecken...
Hallo Ronny,

seit ein paar Wochen läuft mein Abfallkalender auch, dank den vielen Infos hier aus dem Forum :D
Leider kämpfe ich aber noch mit dem "Datenmüll" im Logfile vom Calendar Modul.
Dein Tip mit verbose = 2 bezieht sich auf das globle Statement attr global verbose 2 statt dem urspünglich von mit benutztem Loglevel 3 ?
Das hätte dann aber zur Folge das ich alle anderen Module mit dem Attribute Loglevel 3 umstellen müßte ?

Das Calendar Modul versteht leider nicht das attr Abfall loglevel 2 !
Meinen Müllkalender habe ich mit define Abfall Calendar ical file ./Muelltermine.ics 43200
definiert, damit erhalte ich dann nur alle 12 Stunden das Logfile mit diesen Einträgen vollgeschrieben:

2015.01.17 09:38:44 3: get Abfall summary ff376730bbc0d9be5115d2ede5828f5f : Restmüll 14-tägig am 14.12.2015
2015.01.17 09:38:44 3: get Abfall start ff376730bbc0d9be5115d2ede5828f5f : 14.12.2015 06:00:00


Falls jemand noch weitere Ideen bezüglich den Calendar Logfile Einträgen hat, dann wäre ich für jede Info dankbar.

Gruß Martin


Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 17 Januar 2015, 18:08:23
Hi, du musst in deinem Kalender das verbose Attribute 2 setzen, standartmässig ist das nicht gesetzt, und es greift das globale verbose.

Seltsammwer weisse hab ich aktuell auch mit gesetztem verbose 2 recht viele Log einträge, das war aber ursprünglich nicht so
2015.01.17 08:14:22.600 3: get AbfallA start 30c380a9893d50320eb831ff95a1ae20 : 18.11.2015 00:00:00
2015.01.17 08:14:22.624 3: get AbfallA summary 323acfc40891e76af1d7e6e25569cbab : Bioabfall
2015.01.17 08:14:22.626 3: get AbfallA start 323acfc40891e76af1d7e6e25569cbab : 19.02.2015 00:00:00
2015.01.17 08:14:22.627 3: 1424300400
2015.01.17 08:14:22.651 3: get AbfallA summary 37fd3c926000dc158df86225e98a26a4 : Bioabfall
2015.01.17 08:14:22.653 3: get AbfallA start 37fd3c926000dc158df86225e98a26a4 : 22.07.2015 00:00:00
2015.01.17 08:14:22.677 3: get AbfallA summary 4018ecf2f803a1d15c04341e7636c7cd : Bioabfall
2015.01.17 08:14:22.679 3: get AbfallA start 4018ecf2f803a1d15c04341e7636c7cd : 30.09.2015 00:00:00
2015.01.17 08:14:22.702 3: get AbfallA summary 44793e4d1668322bb9196c17eb2c8210 : Gelber Sack
2015.01.17 08:14:22.705 3: get AbfallA start 44793e4d1668322bb9196c17eb2c8210 : 16.09.2015 00:00:00
2015.01.17 08:14:22.739 3: get AbfallA summary 4551e8f5ab8fe0cb8341e1ec70d823e5 : Altpapier
2015.01.17 08:14:22.741 3: get AbfallA start 4551e8f5ab8fe0cb8341e1ec70d823e5 : 16.12.2015 00:00:00


Zu meinem 0 Tage problem, kommenden Mittwoch geht das nächste mal Biomüll bei uns, der Bio dummy zeigt jetzt 4 Tage an
Internals:
   NAME       BiomuellIn
   NR         279
   STATE      4
   TYPE       dummy
   Readings:
     2015-01-17 08:14:25   state           4
Attributes:
   alias      Bio
   fp_Home    413,899,0,
   group      Info
   room       Kalender


Das sollte doch richtig sein oder? Dann wäre Dienstag die 1 und Mittwoch die 0!??
Titel: Antw:Abfallkalender auswerten
Beitrag von: Spartacus am 17 Januar 2015, 18:38:36
Hi,
Ich kann das mit dem verbose bestätigen. Sogar verbose 0 schreibt unverändert viele Daten ins log.
Spartacus
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 18 Januar 2015, 10:40:10
Also da stimmt irgendwas mit dem verbose im Kalender nicht, dürfte ja eigentlich nichts mehr kommen.
Ich frag den MT mal.

Hab im Log morgens aber noch 4 Perl Warnungen die mit dem Abfallkalender zusammenhängen, was kann das noch sein?

2015.01.18 03:50:41.599 3: get AbfallA summary 06d8322db3bc2d314d1827aa2f72e7e2 : Weihnachtsbäume
2015.01.18 03:50:41.603 1: PERL WARNING: Argument "" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 286.
2015.01.18 03:50:41.603 1: PERL WARNING: Argument "" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 290.
2015.01.18 03:50:41.604 1: PERL WARNING: Argument "" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 294.
2015.01.18 03:50:41.605 1: PERL WARNING: Argument "" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 298.
2015.01.18 03:50:41.607 3: get AbfallA summary 0f14492d8971e7b7e1c51882ad52aafa : Bioabfall
2015.01.18 03:50:41.609 3: get AbfallA start 0f14492d8971e7b7e1c51882ad52aafa : 13.05.2015 00:00:00


in 286 steht
Zitatmy $dayDiffB = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
In 290
Zitatmy $dayDiffG = floor(($dtYellow - $t) / 60 / 60 / 24 + 1);
294
Zitatmy $dayDiffR = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
und 298
Zitatmy $dayDiffP = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);

Danke
Titel: Antw:Abfallkalender auswerten
Beitrag von: RPi_Fhem_Fan am 18 Januar 2015, 11:56:02
Hallo,

ich erhalte keine Fehlermeldungen im Log, aber dafür leider eine große Anzahl an Statuseinträgen.
Hier mein Aufruf in der fhem.cfg (inklusive den Icons einen Tag vor dem Termin):
define Abfall Calendar ical file ./Muelltemine-2015-1420380451.ics 43200
attr Abfall room Kalender
attr Abfall verbose 2
define Abfall_Update notify Abfall:(modeUpcoming|modeAlarmOrStart).* {Abfalltermine("$EVENT")}
attr Abfall_Update room Kalender
define Papiertonne dummy
attr Papiertonne alias Blaue-Tonne
attr Papiertonne group Abfall Countdown
attr Papiertonne room Kalender
attr Papiertonne devStateIcon 1:message_garbage@blue
define Restmuell dummy
attr Restmuell alias Schwarze-Tonne
attr Restmuell group Abfall Countdown
attr Restmuell room Kalender
attr Restmuell devStateIcon 1:message_garbage@grey
define Gelbetonne dummy
attr Gelbetonne alias Gelbe-Tonne
attr Gelbetonne group Abfall Countdown
attr Gelbetonne room Kalender
attr Gelbetonne devStateIcon 1:message_garbage@yellow


Und hier mein 99_myUtils.pm Script:
package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
sub myUtils_Initialize($$)
{
my ($hash) = @_;
}

sub Abfalltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtPapier = 0;
  my $dtWertstoff = 0;
  my $dtRest = 0;

   foreach my $uid (@uids) {
    my $Kalendertext = fhem("get Abfall summary $uid");
    if ($Kalendertext =~ /Papier-Tonne/) {
        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 == 0 || ($eventDate < $dtPapier && $eventDate > $t))
        {
          $dtPapier = $eventDate;
        }
    };
if ($Kalendertext =~ /Gelbe Tonne/) {
        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 ($dtWertstoff == 0 || ($eventDate < $dtWertstoff && $eventDate > $t))
        {
          $dtWertstoff  = $eventDate;
        }
    };
    if ($Kalendertext =~ /Restmüll 14-tägig/) {
        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 == 0 || ($eventDate < $dtRest && $eventDate > $t))
        {
          $dtRest = $eventDate;
        }
    };

   
  my $dayDiffP = floor(($dtPapier - $t) / 60 / 60 / 24);
  if ($dayDiffP >= 0) {
    fhem("set Papiertonne $dayDiffP");
  }
  my $dayDiffG = floor(($dtWertstoff - $t) / 60 / 60 / 24);
  if ($dayDiffG >= 0) {
    fhem("set Gelbetonne $dayDiffG");
  }
  my $dayDiffR = floor(($dtRest - $t) / 60 / 60 / 24);
  if ($dayDiffR >= 0) {
    fhem("set Restmuell $dayDiffR");
  }
  }
}
1;


Gruß Martin
Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert am 18 Januar 2015, 12:36:31
Zitat von: Tommy82 am 17 Januar 2015, 18:08:23
Hi, du musst in deinem Kalender das verbose Attribute 2 setzen, standartmässig ist das nicht gesetzt, und es greift das globale verbose.

Seltsammwer weisse hab ich aktuell auch mit gesetztem verbose 2 recht viele Log einträge, das war aber ursprünglich nicht so

Die Logeinträge kommen nicht vom Calendar-Modul sondern aus der sub fhem() in Zeile 2970 von fhem.pl durch den Aufruf von fhem() in Euren Skripten. In besagter Routine ist noch das alte Logging drin. Ich schlage vor, dass Ihr Rudi darauf aufmerksam macht.

Viele Grüße
Boris
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 18 Januar 2015, 16:31:11
Kann einer Rudi informieren, ich kann ihm leider keine PM schicken

Titel: Antw:Abfallkalender auswerten
Beitrag von: betateilchen am 18 Januar 2015, 17:47:32
Rudi hat aber unter seinen Profildaten bei jedem Beitrag nicht nur die Sprechblase (PN) sondern auch den Briefumschlag für email.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert am 18 Januar 2015, 18:29:00
Guckt Ihr bitte hier: http://forum.fhem.de/index.php/topic,32384.0.html

Und dann bitte erst wieder melden, wenn Ihr sicher seid, dass trotz globalem verbose 2 immer noch Meldungen mit Level 3 aus dem fhem()-Aufruf im Log stehen.

Viele Grüße
Boris
Titel: Antw:Abfallkalender auswerten
Beitrag von: RPi_Fhem_Fan am 19 Januar 2015, 19:59:58
Hallo Boris,

vielen herzlichen Dank. Du hast uns/mir einmal mehr weitergeholfen  ;)
Ich habe nun alle Aufrufe in 99_myUtils.pm Script für den Müllkalender angepasst:
fhem("get Abfall summary $uid",1);

Zitat von Rudi:
Zitatfhem() protokolliert im Log den Rueckgabewert, falls gesetzt, es sei denn, man ruft fhem() mit einem weiteren Parameter ($silent) auf, der wahr ist.
http://forum.fhem.de/index.php?topic=13309.0

Damit werden nun vom Abfallkalender keine Log-Einträge erzeugt.
Das attr global verbose 3 kann somit wieder in der fhem.cfg gesetzt werden.

Gruß Martin
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 19 Januar 2015, 20:44:27
mit dem globalen attribute verbose 2 gibts keine Meldungen im log.

Hab es jetzt auch mal so abgeändert fhem("get AbfallA summary $uid",1); und den globalen verbose wieder auf 3 gesetzt, mal sehen was passiert
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 20 Januar 2015, 20:58:28
Hi,
also ich habe heute mit globalem verbose 3 und verbose 1 im Kalander wieder jede Menge einträge im Log
2015.01.20 06:59:35.114 1: PERL WARNING: Argument "" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 286.
2015.01.20 06:59:35.115 1: PERL WARNING: Argument "" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 290.
2015.01.20 06:59:35.116 1: PERL WARNING: Argument "" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 294.
2015.01.20 06:59:35.116 1: PERL WARNING: Argument "" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 298.
2015.01.20 06:59:35.120 3: get AbfallA start 0f14492d8971e7b7e1c51882ad52aafa : 13.05.2015 00:00:00
2015.01.20 06:59:35.121 3: 1431468000
2015.01.20 06:59:35.163 3: get AbfallA start 17a646cb3e353fa16cacf52829c5f3d5 : 24.06.2015 00:00:00
2015.01.20 06:59:35.187 3: get AbfallA start 1c9ca202d5df6f39e2c6d8099bf9455e : 16.09.2015 00:00:00
2015.01.20 06:59:35.212 3: get AbfallA start 1d6a3fc8e6144cb5e970783f2893ec3d : 02.09.2015 00:00:00
2015.01.20 06:59:35.236 3: get AbfallA start 24fee0fb46f6565f90f3ff7c35547ab4 : 29.04.2015 00:00:00


Die Perl warnungen kommen aus diesen Zeilen
  my $dayDiffB = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
my $dayDiffG = floor(($dtYellow - $t) / 60 / 60 / 24 + 1);
my $dayDiffR = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
my $dayDiffP = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);


Was ist da noch falsch?

Hab wie RPi_Fhem_Fan geschrieben hat die Einträeg so abgeändert:
fhem("get AbfallA summary $uid",1);

Wieso bekomme ich noch die Log einträge bei verbose 1 im Kalandermodul?

Danke
Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert am 20 Januar 2015, 21:17:15
Die 3er-Meldungen kommen aus fhem() in fhem.pl und nicht aus dem Kalender-Modul, so dass global verbose 3 greift. Hast Du 99_myUtils.pm nach der Änderung auch neu geladen. Bitte prüfe zunächst, ob sowohl die Verbose-Level wie von Dir beschrieben greifen als auch die Änderung aktiv ist.

Viele Grüße
Boris
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 20 Januar 2015, 21:26:22
Hi, ja ich hab ein reload der 99_myUtils durchgeführt und auch einen fhem neustart, damit sollte ja auf jedenfall alles neugeladen sein.
Wie gesagt mit dem globalen verbose 2 bekomme ich auch keine einträge mehr im Log, aber mit dem globalen verbose 3 sind sie wieder da. Ich warte aber jetzt morgen nochmal ab, vieleicht ist doch noch irgendwas beim neustart schief gelaufen.
Ich meld mich dann morgen wieder
Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert am 20 Januar 2015, 21:38:30
Hallo,

wenn Du alles richtig gemacht hast, sollte beispielsweise ein


{ fhem("list global",1) }


auf der FHEM-Kommandozeile nichts ins Log schreiben. Gerade getestet.

Grüße
Boris
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 20 Januar 2015, 21:41:14
Die Ausgabe ist dann:
ZitatInternals:
   DEF        <no definition>
   NAME       global
   NR         1
   STATE      <no definition>
   TYPE       Global
   currentlogfile ./log/fhem-2015-01-20.log
   logfile    ./log/fhem-%Y-%m-%d.log
Attributes:
   autoload_undefined_devices 1
   configfile fhem.cfg
   logfile    ./log/fhem-%Y-%m-%d.log
   modpath    .
   motd       SecurityCheck:

WEBphone,WEBtablet has no basicAuth attribute.
telnetPort has no password/globalpassword attribute.

Restart FHEM for a new check if the problem is fixed,
or set the global attribute motd to none to supress this message.

   mseclog    1
   nrarchive  14
   sendStatistics never
   stacktrace 0
   statefile  ./log/fhem.save
   uniqueID   ./FHEM/FhemUtils/uniqueID
   userattr   devStateIcon devStateStyle fm_type fp_Badezimmer fp_Buero fp_Einbruchalarm fp_Fenster fp_Feueralarm fp_Flur_Erdgeschoss fp_Flur_Keller fp_Flur_Obergeschoss fp_Fritz fp_Gaeste_WC1 fp_Heizung fp_Home fp_Kellerbar fp_Kinderzimmer1 fp_Kueche1 fp_Reciever fp_Schlafzimmer fp_Server fp_Wohnzimmer icon sortby webCmd widgetOverride
   verbose    3
   version    $Id: fhem.pl 7542 2015-01-13 09:43:33Z rudolfkoenig $

und im Log gibts keinen eintrag
Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert am 20 Januar 2015, 21:47:28
Sehr gut, so soll es sein.

Wenn Du ALLE Aufrufe von fhem() in Deinen Utils auch entsprechend mit dem optionalen zweiten Parameter 1 versehen hast, sollte auch (bis auf die PERL WARNINGs wegen Problemen im Skript) sonst kein Gespräch mehr im Log stehen.

Viele Grüße
Boris
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 20 Januar 2015, 21:49:32
Danke für deine Hilfe, dann guck ich morgen mal ob der Log keine Einträge mehr hat.
Ja die Perl Warnungen muss ich auch noch weg bekommen....
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 21 Januar 2015, 07:37:26
Leider ist auch heute Morgen der Log wieder voll mit
2015.01.21 00:00:00.034 3: get AbfallA start 0f14492d8971e7b7e1c51882ad52aafa : 13.05.2015 00:00:00
2015.01.21 00:00:00.038 3: 1431468000
2015.01.21 00:00:00.073 3: get AbfallA start 17a646cb3e353fa16cacf52829c5f3d5 : 24.06.2015 00:00:00
2015.01.21 00:00:00.096 3: get AbfallA start 1c9ca202d5df6f39e2c6d8099bf9455e : 16.09.2015 00:00:00
2015.01.21 00:00:00.118 3: get AbfallA start 1d6a3fc8e6144cb5e970783f2893ec3d : 02.09.2015 00:00:00
2015.01.21 00:00:00.141 3: get AbfallA start 24fee0fb46f6565f90f3ff7c35547ab4 : 29.04.2015 00:00:00
2015.01.21 00:00:00.142 3: 1430258400
2015.01.21 00:00:00.164 3: get AbfallA start 25b6ff2d1a3ac6f7b9c3d0f0e0343efa : 04.03.2015 00:00:00
2015.01.21 00:00:00.165 3: 1425423600
2015.01.21 00:00:00.187 3: get AbfallA start 2980cc66e6ccc6c7c2ddcb360f0a4569 : 19.08.2015 00:00:00
2015.01.21 00:00:00.252 3: get AbfallA start 323acfc40891e76af1d7e6e25569cbab : 19.02.2015 00:00:00


Also irgendwo gibts da leider doch noch ein Problem mit dem verbose,das globale verbose ist 3, und das des Calenders ist 1

Weiterhin steht heute MOrgen der Müllkalender für Bio wieder auf 14, obwohl er heute auf 0 stehen sollte, da er heute abgeholt wird, was könnte ich da noch falsch gemacht haben?
Die entsprechende Zeile im Kalender sieht so aus:
85799a7a8c7899a39b64fccf18b9e6a8   known    start                     21.01.2015 00:00:00-22.01.2015 00:00:00 Bioabfall Limbach Hauptstraße
und in der 99_myUtils so
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get AbfallA summary $uid",1);
    if ($Kalendertext =~ /Bioabfall/) {
        my $dt = fhem("get AbfallA 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);
        }


Danke
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 21 Januar 2015, 07:39:50
Zumindest die Sache mit dem Log liegt an dem fhem()-Aufruf, der noch ohne zweiten Parameter ist:

my $dt = fhem("get AbfallA start $uid");

Ronny
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 21 Januar 2015, 14:45:29
Zitat von: Tommy82 am 21 Januar 2015, 07:37:26
Weiterhin steht heute MOrgen der Müllkalender für Bio wieder auf 14, obwohl er heute auf 0 stehen sollte, da er heute abgeholt wird, was könnte ich da noch falsch gemacht haben?

Welche Version des Scriptes nutzt du denn? Ich habe vor kurzem eine neue Version (Sub und notify angepasst) gepostet, die unter anderem auch erkennt, wenn keine weiteren Termine im Kalender stehen...

Ronny
Titel: Antw:Abfallkalender auswerten
Beitrag von: Cybers am 21 Januar 2015, 16:57:09
ich habe seit ein paar Tagen das Logfile mit folgendem zugemüllt (das sind nur die Einträge einer Sekunde):
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1448838000
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1423436400
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1442786400
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1450047600
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1434319200
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1427065200
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1440367200
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1436738400
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1439157600
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1441576800
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1430690400
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1429480800
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1437948000
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1425855600
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1435528800
2015.01.21 16:51:39 1: t: 1421794800
2015.01.21 16:51:39 1: eventDate: 1447628400

Was kann das sein. Das habe ich erst seit dem Update von letztem Wochenende. Das andere Problem habe ich ebenfalls mit dem zusätzlich Setzen von ,1 lösen können
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 21 Januar 2015, 17:33:53
Hallo,

da hast du vermutlich die letzte Version meines Abfallkalenders eingesetzt - ich habe irgendwann nach dem Posting festgestellt, dass da beim Biomüll noch Logging von der Entwicklung drin ist. Einfach die Zeilen

        Log(1, "eventDate: ".$eventDate);
        Log(1, "t: ".$t);


beim Biomüll entfernen...

Ronny
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 21 Januar 2015, 20:58:28
Zitat von: RoBra81 am 21 Januar 2015, 14:45:29
Welche Version des Scriptes nutzt du denn? Ich habe vor kurzem eine neue Version (Sub und notify angepasst) gepostet, die unter anderem auch erkennt, wenn keine weiteren Termine im Kalender stehen...

Ronny

Hi,
ich hab jetzt mal auf deine neueste Version geändert, sieht bei mir jetzt so aus:
sub
MuelltermineA ($)
{
  my ($Ereignis) = @_;
  my @uids=split(/;/,$Ereignis);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtBio = '';
  my $dtYellow = '';
  my $dtRest = '';
  my $dtPapier = '';
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get AbfallA summary $uid");
    if ($Kalendertext =~ /Bioabfall/) {
        my $dt = fhem("get AbfallA start $uid");
        my @SplitDt = split(/ /,$dt);
        my @SplitDate = split(/\./,$SplitDt[0]);
        my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
        Log(1, "eventDate: ".$eventDate);
        Log(1, "t: ".$t);
        if (($dtBio eq '' || $eventDate < $dtBio) && $eventDate >= $t)
        {
          $dtBio = $eventDate;
        }
    };
    if ($Kalendertext =~ /Gelber Sack/) {
        my $dt = fhem("get AbfallA 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 =~ /Restabfall/) {
        my $dt = fhem("get AbfallA 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 =~ /Altpapier/) {
        my $dt = fhem("get AbfallA 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 < $dtPapier) && $eventDate >= $t)
        {
          $dtRest = $eventDate;
        }
    };
  };

  my $dayDiff = 0; 
 
  if ($dtBio eq '') {
    fhem("set BiomuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set BiomuellIn $dayDiff");
    }
  }
  if ($dtYellow eq '') {
    fhem("set GelbeTonneIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtYellow - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set GelbeTonneIn $dayDiff");
    }
  }
  if ($dtRest eq '') {
    fhem("set RestmuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set RestmuellIn $dayDiff");
    }
  }
  if ($dtPapier eq '') {
    fhem("set PapierIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set PapierIn $dayDiff");
    }
  }
}


und das notify so, wobei ich  mit
Zitatabfallamtbautzende
noch nicht genau weiss was du meinst und was bei mir dahin muss?
define AbfallA_Update.not.Update notify AbfallA.all:.*abfallamtbautzende.* {MuelltermineA("$EVTPART1")}

Mal sehen ob die Probleme damit dann gelöst sind....

Alerdings wird auch damit Bio heute mit 14 Tagen angezeigt, obwohl heute Tag 0 sein müsste
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 21 Januar 2015, 21:16:16
Hallo,

zunächst solltest du die beiden überflüssigen Log-Zeilen aus dem Code für den Biomüll entfernen:

        Log(1, "eventDate: ".$eventDate);
        Log(1, "t: ".$t);


Zum notify: das "abfallamtbautzende" nutze ich, weil meine Termine vom Abfallamt Bautzen kommen. Das ist ein Überbleibsel meiner anfänglichen Versuche und es sollte auch ohne gehen:

define AbfallA_Update.not.Update notify AbfallA.all:.* {MuelltermineA("$EVTPART1")}

Ronny
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 21 Januar 2015, 21:36:58
Du bist der beste:-)

Jetzt klappt alles ausser die Papier anzeige,
da bekomme ich die Anzeige "keine weiteren Termine" und nicht das "Kein Müll" Icon wie bei den anderen
Im Kalender steht z.b.
e5dd85cbf37b6dd8316bad8323923331     new upcoming                     11.02.2015 00:00:00-12.02.2015 00:00:00 Altpapier Limbach Hauptstraße

Was habt ich da noch falsch gemacht?
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 21 Januar 2015, 21:43:49
Du hast in dem if für Papier noch dtRest drin stehen - das musst du auch noch durch dtPapier ersetzen (auch ganz am Ende nochmal)
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 21 Januar 2015, 21:56:17
Ich sag ja, du bist der Beste, jetzt sieht alles perfekt aus, wenn es jetzt Morgen noch keine Fehler im Log gibt dann klappt alles.

Danke
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 23 Januar 2015, 20:00:29
Also der Kalender funktioniert jetzt einwandfrei,
aber trotzdem hab ich im Log weiterhin diese Meldungen
2015.01.23 03:56:05.280 3: get AbfallA summary 4d6741c9296454d476f6ed21bd6f0f40 : Restabfall
2015.01.23 03:56:05.282 3: get AbfallA start 4d6741c9296454d476f6ed21bd6f0f40 : 30.12.2015 00:00:00
2015.01.23 03:56:05.284 3: get AbfallA summary 4d9239cf349d25cf0d0944b5683339ed : Problemabfall
2015.01.23 03:56:05.286 3: get AbfallA summary 5284b6003b66cd8fded90b4a1f1ce809 : Bioabfall
2015.01.23 03:56:05.288 3: get AbfallA start 5284b6003b66cd8fded90b4a1f1ce809 : 05.08.2015 00:00:00
2015.01.23 03:56:05.291 3: get AbfallA summary 53a73da12bad577006c7fac4de433533 : Bioabfall
2015.01.23 03:56:05.293 3: get AbfallA start 53a73da12bad577006c7fac4de433533 : 28.10.2015 00:00:00
2015.01.23 03:56:05.295 3: get AbfallA summary 5aac56a87f35b1f98b6cba56e5e06e87 : Bioabfall
2015.01.23 03:56:05.297 3: get AbfallA start 5aac56a87f35b1f98b6cba56e5e06e87 : 28.05.2015 00:00:00
2015.01.23 03:56:05.299 3: get AbfallA summary 5ab52e2224b15af09310d0c6f1141fb9 : Altpapier
2015.01.23 03:56:05.302 3: get AbfallA start 5ab52e2224b15af09310d0c6f1141fb9 : 29.07.2015 00:00:00
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 23 Januar 2015, 20:40:56
du muss überall wo

fhem("get AbfallA XXXXXXX $uid");

in deiner Routine steht eine ",1" einfügen

fhem("get AbfallA XXXXXXX $uid",1);
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 24 Januar 2015, 19:54:11
Hast recht, genau das wars danke für den Tip.

Allerdings hab ich heute dann ein komisches Problem, normalerweisse zeigen meine Dummys ein Icon an, was den Tagen bis zur nächsten Leerung entspricht, heute steht dann plötzlich in allen Dummys
ZitatKeine weiteren Termine
, wieso? IM Kalender stehen weitere Termine

Weiterhin hab ich im Log noch immer diese Fehler:
2015.01.24 07:00:23.215 1: PERL WARNING: Use of uninitialized value $Kalendertext in pattern match (m//) at ./FHEM/99_myUtils.pm line 237.
2015.01.24 07:00:23.216 1: PERL WARNING: Use of uninitialized value $Kalendertext in pattern match (m//) at ./FHEM/99_myUtils.pm line 247.
2015.01.24 07:00:23.216 1: PERL WARNING: Use of uninitialized value $Kalendertext in pattern match (m//) at ./FHEM/99_myUtils.pm line 257.
2015.01.24 07:00:23.217 1: PERL WARNING: Use of uninitialized value $Kalendertext in pattern match (m//) at ./FHEM/99_myUtils.pm line 267.


In 237 steht
if ($Kalendertext =~ /Bioabfall/) {
in 247
if ($Kalendertext =~ /Gelber Sack/) {
in 257
if ($Kalendertext =~ /Restabfall/) {
und in 267
if ($Kalendertext =~ /Altpapier/) {

Was ist da noch falsch?
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 24 Januar 2015, 20:19:53
Ist dir in Zeile 236 eventuell ein Fehler unterlaufen?
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 24 Januar 2015, 21:02:32
236 sieht so aus:
my $Kalendertext = fhem("get AbfallA summary $uid,1");
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 24 Januar 2015, 21:03:55
Das ,1 muss nach dem " stehen.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 24 Januar 2015, 21:12:43
Hi, danke hab ich jetzt geändert, mal sehen was passiert
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 25 Januar 2015, 16:27:21
Hab jetzt leider neue Fehler im Log
2015.01.25 03:00:23.202 1: PERL WARNING: Use of uninitialized value $dt in split at ./FHEM/99_myUtils.pm line 239.
2015.01.25 03:00:23.203 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/99_myUtils.pm line 240.
2015.01.25 03:00:23.203 1: PERL WARNING: Use of uninitialized value $SplitDate[1] in subtraction (-) at ./FHEM/99_myUtils.pm line 241.
2015.01.25 03:00:23.205 3: AbfallA_Update.not.Update return value: Month '-1' out of range 0..11 at ./FHEM/99_myUtils.pm line 241


in 239
        my @SplitDt = split(/ /,$dt);
240
        my @SplitDate = split(/\./,$SplitDt[0]);
241
        my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);

Wo liegt da der Fehler?
Ist das auch der grund dafür das ich nur noch angezeigt bekomme Keine weiteren Termine?
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 25 Januar 2015, 17:24:08
Du hast da einen Fehler in Zeile 238.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 26 Januar 2015, 06:51:27
Genau das wars, da hatte ich noch was übersehen. Jetzt gibts endlich keine Fehler mehr im Log :-)

Allerdings kommt mir die heutige Anzeige Restabfall mit 3 Tagen seltsam vor, da der am MIttwoch geht
Zitata1d062c70344bfb3213d04eb9016240d   known upcoming                     28.01.2015 00:00:00-29.01.2015 00:00:00 Restabfall Limbach Hauptstraße
Aber mal sehen was passiet
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 03 März 2015, 11:44:08
Hallo,

weil's geht  ;)

Nein, im ernst, ich habe bei mir neben der Wohnungstür ein Tablet hängen, das zum Bedienen verwendet wird. Das Tablet wird beim Vorbeigehen aktiviert und zeigt auf der Übersichtsseite z.B. an, ob morgen (ich muss die Tonnen schon mal vorholen) oder heute (ich muss die Tonne auf dem Weg zum Auto mit auf die Straße stellen) die Müllabfuhr kommt. Da brauche ich keine zusätzliche App und sehe die Information in dem Moment, wo ich sie brauche - auf dem Weg aus dem Haus...

Ronny
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 03 März 2015, 20:08:50
Ronny hat recht, an meiner Wand wird auch angezeigt das Morgen der Müll geholt wird:-)
Mal davon abgesehen, das ich nicht glaube das es für jede kleine Ordschaft so eine App gibt...
Titel: Antw:Abfallkalender auswerten
Beitrag von: stelzi76 am 14 März 2015, 10:03:33
Hallo,
habe bei mir jetzt auch mal probiert euren Aballkalender zu integrieren. Kann bei dem Code zwar einiges nachvollziehen, aber kenn mich nicht wirklich aus.
Habe versucht den Kalender für mich anzupassen, aber irgendwie komm ich nicht weiter. Ich habe einen Google-Kalender in Fhem integriert und zwar nicht als Datei, sondern mit url. Der Kalender ist auch korrekt integriert.

Leider wird bei mir der State in den Dummies falsch gesetzt - mehr oder weniger willkürliche Werte.
Evtl. kann mir ja jemand weiterhelfen. Wär super.

Ich denke mein notify ist verkehrt.
Im Log wird mir immer folgendes angezeigt (damit kann ich aber nix anfangen)

Abfall return value: Global symbol "$EVTPART1" requires explicit package name at (eval 59) line 1.

Folgendes sind meine Einträge:

Google-Kalender:
define FhemCalendar Calendar ical url https://www.google.com/calendar/ical/<privat-adresse>.basic.ics

Dummies:

define BiomuellIn dummy
define GelbeTonneIn dummy
define RestmuellIn dummy


Notify:

define Abfall notify FhemCalendar.all:.* {Abfallkalender("$EVTPART1")}

Sub:

sub
Abfallkalender ($)
{
  my ($Ereignis) = @_;
  my @uids=split(/;/,$Ereignis);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtBio = '';
  my $dtYellow = '';
  my $dtRest = '';
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get FhemCalendar summary $uid",1);
    if ($Kalendertext =~ /Biotonne/) {
        my $dt = fhem("get FhemCalendar start $uid",1);
        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 =~ /Gelbe Tonne/) {
        my $dt = fhem("get FhemCalendar start $uid",1);
        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 =~ /Schwarze Tonne/) {
        my $dt = fhem("get FhemCalendar start $uid",1);
        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 = 0; 
 
  if ($dtBio eq '') {
    fhem("set BiomuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set BiomuellIn $dayDiff");
    }
  }
  if ($dtYellow eq '') {
    fhem("set GelbeTonneIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtYellow - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set GelbeTonneIn $dayDiff");
    }
  }
  if ($dtRest eq '') {
    fhem("set RestmuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set RestmuellIn $dayDiff");
    }
  }
}
Titel: Antw:Abfallkalender auswerten
Beitrag von: stelzi76 am 15 März 2015, 23:06:01
Hat sich erledigt.
Funktioniert jetzt.
Das Problem ist einfach, dass Serientermine nicht richtig verarbeitet werden, bzw. die Anzeige ist nicht richtig,
wenn man einen Termin der Serie verschiebt oder löscht.
Titel: Antw:Abfallkalender auswerten
Beitrag von: DrJJ am 27 März 2015, 11:41:17
Ich habe auch den Müllkalender wie hier beschrieben umgesetzt. Allerdings passte bei mir ab und zu die Anzeige der Tage nicht, dies konnte ich lösen in dem ich bei den Auswertungen die Zeile $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24); in $dayDiff = ceil(($dtRest - $t) / 60 / 60 / 24); umänderte. Vielleicht hilft es dem ein oder anderen auch weiter
Titel: Antw:Abfallkalender auswerten
Beitrag von: pointde am 19 April 2015, 12:43:46
Ich bekomme folgende Fehlermeldung im Log:
2015.04.19 11:35:44 3: AbfallA_Update.not.Update return value: Undefined subroutine &main::timelocal called at ./FHEM/99_myUtils.pm line 16.

Leider werden auch die Tage nicht geupdatet!

Hier meine Daten.
99 myUtils
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}
sub
MuelltermineA ($)
{
  my ($Ereignis) = @_;
  my @uids=split(/;/,$Ereignis);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtRest = '';
  my $dtPapier = '';
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get AbfallA summary $uid",1);
    if ($Kalendertext =~ /Restmuelltonne/) {
        my $dt = fhem("get AbfallA start $uid",1);
        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 AbfallA start $uid",1);
        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 < $dtPapier) && $eventDate >= $t)
        {
          $dtRest = $eventDate;
        }
    };
  };

  my $dayDiff = 0; 
 
    if ($dtRest eq '') {
    fhem("set RestmuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set RestmuellIn $dayDiff");
    }
  }
  if ($dtPapier eq '') {
    fhem("set PapierIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set PapierIn $dayDiff");
    }
  }
}


define AbfallA Calendar ical file /opt/fhem/Mike/Leerungstermine.ics
attr AbfallA alias Abfallkalender
attr AbfallA room Kalender

define RestmuellIn dummy
attr RestmuellIn alias Restmüll
attr RestmuellIn group Info
attr RestmuellIn room Kalender

define PapierIn dummy
attr PapierIn alias Papier
attr PapierIn group Info
attr PapierIn room Kalender

Das notify
define AbfallA_Update.not.Update notify AbfallA.all:.* {MuelltermineA("$EVTPART1")}
attr AbfallA_Update.not.Update room Kalender

Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 19 April 2015, 16:08:42
Hast du in deiner 99_MyUtils oben diesen Eintrag?

use Time::Local;

Sonst füg ihn mal ein und versuch es nochmal, sollte ca so aussehen
package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
Titel: Antw:Abfallkalender auswerten
Beitrag von: pointde am 19 April 2015, 16:57:22
Ich habe es jetzt mal nachgetragen. An den Dummys hat sich aber nichts geändert. Nachdem ich den Abfallkalender manuell geupadetet und reloaded habe, steht jetzt bei Rest 11 und bei Papier keine weiteren... was ja nicht stimmt. Also irgendwas passt immer noch nicht!

Im Log steht jetzt das:
2015.04.19 16:52:29 1: PERL WARNING: Argument "" isn't numeric in numeric lt (<) at ./FHEM/99_myUtils.pm line 37.
2015.04.19 16:58:15 1: PERL WARNING: Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 8.
2015.04.19 16:58:15 1: PERL WARNING: Subroutine MuelltermineA redefined at ./FHEM/99_myUtils.pm line 13.

Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 19 April 2015, 17:31:45
Puh, da steh ich mir grade auch auf dem Schlauch, wie sieht die 99_My jetzt aus?
Starte Fhem mal neu
Titel: Antw:Abfallkalender auswerten
Beitrag von: pointde am 20 April 2015, 11:32:45
Hab alles schon mehrfach gestartet. Beim Restmüll passt es jetzt! Da wird der Dummy mit Zahlen befüllt. Hat auch einen Tag runter gezählt seit gestern.

Hier der Inhalt der Datei:
package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}
sub
MuelltermineA ($)
{
  my ($Ereignis) = @_;
  my @uids=split(/;/,$Ereignis);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtRest = '';
  my $dtPapier = '';
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get AbfallA summary $uid",1);
    if ($Kalendertext =~ /Restmuelltonne/) {
        my $dt = fhem("get AbfallA start $uid",1);
        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 AbfallA start $uid",1);
        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 < $dtPapier) && $eventDate >= $t)
        {
          $dtRest = $eventDate;
        }
    };
  };

  my $dayDiff = 0; 
 
    if ($dtRest eq '') {
    fhem("set RestmuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set RestmuellIn $dayDiff");
    }
  }
  if ($dtPapier eq '') {
    fhem("set PapierIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set PapierIn $dayDiff");
    }
  }
}
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 20 April 2015, 11:51:28
Da hast du scheinbar fehlerhaften Code aus den Thread kopiert, den Fehler hatten wir nämlich schon mal: bei deiner Papierabfrage wird dtRest geprüft und auch beschrieben anstelle von dtPapier...
Titel: Antw:Abfallkalender auswerten
Beitrag von: pointde am 20 April 2015, 12:22:14
So müsste es jetzt gehen:
package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}
sub
MuelltermineA ($)
{
  my ($Ereignis) = @_;
  my @uids=split(/;/,$Ereignis);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtRest = '';
  my $dtPapier = '';
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get AbfallA summary $uid",1);
    if ($Kalendertext =~ /Restmuelltonne/) {
        my $dt = fhem("get AbfallA start $uid",1);
        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 AbfallA start $uid",1);
        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 = 0; 
 
    if ($dtRest eq '') {
    fhem("set RestmuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set RestmuellIn $dayDiff");
    }
  }
  if ($dtPapier eq '') {
    fhem("set PapierIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set PapierIn $dayDiff");
    }
  }
}
Titel: Antw:Abfallkalender auswerten
Beitrag von: Aim23 am 04 Mai 2015, 13:53:17
Moin alle zusammen,

ich habe mich nun durch diesen Thread gearbeitet und mir meinen Abfallkalender soweit zusammen gebaut. Da ich hier auf ein paar Besonderheiten gestoßen bin, würde ich das gerne mit der Community teilen, das es nicht unbedingt Trivial war.
Ich komme aus Hamburg und die Stadtreinigung Hamburg bietet ebenfalls einen Kalender im .ical Format an, sowie eine Erinnerungsemail ein oder zwei Tage vor Leerung der jeweiligen Tonnen sowie einmal wöchentlich. Im Anhang kann man sich ebenfalls eine .ical Datei schicken lassen. Weiterhin ist es möglich den Abfuhrkalender als PDF herunterzuladen und ganz klassisch an das heimische schwarze Brett hängen.

Ich würde gerne, soweit es möglich ist, auf Papier verzichten. Ich habe eine ganze Zeit lang die Möglichkeit genutzt mich per Email zu benachrichtigen, weil es keine 'quick and dirty' Lösung gab die Angebotene .ical Datei mal eben schnell herunterzuladen. Hamburg ist ja nun kein kleines Städtchen und daher kommt die Müllabfuhr an unterschiedlichen Tagen für unterschiedliche Stadtteile etc.
Die Stadtreinigung Hamburg hat eine Webseite geschaltet für den persönlichen Abfuhrkalender (http://www.stadtreinigung.hamburg/privatkunden/abfuhrkalender), in der ein Formular ausgefüllt werden muss. Hier ist es nötig die Straße inklusive Hausnummer einzugeben, sowie eine Bestätigung das man selbst entweder der Eigentümer bzw Mieter oder Beauftragter bezüglich der Abfrage ist.
Nach Eingabe der nötigen Daten, wird eine neue Seite geladen, in der ebenfalls wieder ein Formularfeld vorhanden ist, hinter dem sich der Download"link" versteckt zum herunterladen des .ical Kalenders. Da es nun nicht einfach möglich ist per 'rechter Maustaste, Speichern unter' den Kalender und damit auch den dazugehörigen Link herauszubekommen muss man sich ein mit der Developer Console von Firefox bzw. Chrome beschäftigen. Es ist ebenfalls möglich sich im Quelltext durchzugraben bis man das Formularfeld gefunden hat, ich finde persönlich die Developer Console einfacher, weil man es direkt auf einem Blick hat.

Nun zu Vorgehensweise. Ich erkläre es für Chrome.
URL der Stadtreinigung aufrufen in der man seine Straße + Hausnummer eingibt. Bevor auf den Button zur Abfuhrtermine suchen geklickt wird, wird die Taste F12 betätigt. Die Developer Console öffnet sich. Hier bitte den Reiter Network aktivieren. Nun auf Abfuhrtermine suchen klicken. Es wird die Seite geladen in der man die Kalenderdatei herunterladen kann.

In der Developer Console, unter Network, jetzt einmal die Method sortieren und den einzigen Eintrag mit POST öffnen. Es öffnet sich ein weiteres Fenster, indem der Reiter Headers bereits markiert ist. Hier bitte bis ganz nach unten scrollen und unter Form Data stehen jetzt die Daten die wir benötigen:
Diese beiden Werte bitte notieren. Der Wert unter Strasse ist nicht nötig, da dieser nur eine Variable ist die an den Kalender übertragen wird um diesen mit dem Benachrichtigungstext zu füllen. Das heißt, er kann ebenfalls "Morgen hat Oma Geburtstag" lauten und es würde immer noch die richtige Kalenderdatei heruntergeladen werden. Zur Vollständigkeit halber verwende ich ihn aber zur Übergabe dennoch.

Den Downloadlink den wir uns nun zurecht basteln hat folgendes Format:

http://www.stadtreinigung.hamburg/privatkunden/abfuhrkalender/Abfuhrtermin.ics?asId=5087&hnId=113084&adresse=Jungfernstieg%201-3


Der Wert adresse beinhaltet jetzt die Straße sowie die Hausnummer. Diese beiden Werte werden voneinander mit einem %20 getrennt, das heißt, es ist nicht die Hausnummer 201-3, sondern 1-3.
Es ist nun möglich auf dem RPi (den ich verwende) einen Crontab einzurichten und sich den Kalender 1x wöchentlich herunterzuladen per wget oder ihn direkt in fhem einzubinden á la

ical url http://www.stadtreinigung.hamburg/privatkunden/abfuhrkalender/Abfuhrtermin.ics?asId=5087&hnId=113084&adresse=Jungfernstieg%201-3 86400


Eine Besonderheit für die Termine ist, das es ein Erinnerungseintrag um 18 Uhr am Vortag ist. Das bedeutet, dass das Kalenderevent einen Tag zu früh statt findet. Bei uns wird Montags die Restmülltonne z.B. geleert, nun ist der Kalendereintrag auf Sonntag 18 Uhr gesetzt. Um dies zu umgehen habe ich den Code von Stormer minimal abgeändert, aber poste ihn hier dennoch in voller Länge:

Code (99_myUtils.pm) Auswählen

package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
sub myAbfallTermine_Initialize($$)
{
my ($hash) = @_;
}


#### Google Kalender auswerten
#
sub Abfalltermincheck($$$$$$$){
  my ($text,$art,$check,$uid,$t,$cal,$Kt) = @_;
  my ($dt,@SplitDt,@SplitDate,$eventDate,$daydiff);
#  Log 3, "Abfalltermincheck - $text,$art,$check,$uid,$t,$cal";
  if ($Kt =~ /$text/) {
    $dt = fhem("get $cal start $uid",1);
    @SplitDt = split(/ /,$dt);
    @SplitDate = split(/\./,$SplitDt[0]);
    $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
    if ($check eq '' || ($eventDate < $check && $eventDate > $t)){
          $check = $eventDate;
          $daydiff = floor(($eventDate - $t) / 60 / 60 / 24 +2);
          fhem("set $art $daydiff",1);
        };
    };
    return ($check);
}

sub Abfalltermine($$){
  my ($cal,$Ereignis) = @_;
  my ($Kt);
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
# Prüfvariablen
  my $dtBio = '';
  my $dtGelb = '';
  my $dtRest = '';
#  my $dtGlas = '';
  my $dtPapier = '';
  foreach my $uid (@uids) {
    $Kt = fhem("get $cal summary $uid",1);
#   Prüfvariable = Abfalltermincheck("Suchtext","Dummyname",Prüfvariable,UID,Zeit,Kalender,Kalendertext)
    $dtPapier = Abfalltermincheck("Papier","Papiertonne",$dtPapier,$uid,$t,$cal,$Kt);
    $dtRest   = Abfalltermincheck("Rest","Restmuell",$dtRest,$uid,$t,$cal,$Kt);
    $dtBio   = Abfalltermincheck("Bio","Biotonne",$dtBio,$uid,$t,$cal,$Kt);
    $dtGelb   = Abfalltermincheck("Wertstoff","Gelbetonne",$dtGelb,$uid,$t,$cal,$Kt);
  };
}


Code (fhem.cfg) Auswählen

define Abfall Calendar ical url http://www.stadtreinigung.hamburg/privatkunden/abfuhrkalender/Abfuhrtermin.ics?asId=5087&hnId=113084&adresse=Jungfernstieg%201-3 86400
attr Abfall alias Abfallkalender
attr Abfall icon recycling
attr Abfall room 7.01 Kalender
define Gelbetonne dummy
attr Gelbetonne group Info
attr Gelbetonne icon bag@yellow
attr Gelbetonne room 7.01 Kalender
define Restmuell dummy
attr Restmuell group Info
attr Restmuell icon bag@brown
attr Restmuell room 7.01 Kalender
define Papiertonne dummy
attr Papiertonne group Info
attr Papiertonne icon bag@blue
attr Papiertonne room 7.01 Kalender
define Biotonne dummy
attr Biotonne group Info
attr Biotonne icon bag@green
attr Biotonne room 7.01 Kalender
define Abfall_Update notify Abfall:modeUpcoming.* {Abfalltermine($NAME,"$EVENT")}
attr Abfall_Update room 7.01 Kalender



Die Änderung betrifft die 99_myUtils.pm in der Zeile: 25. Hier habe ich das +1 auf +2 gesetzt. Es wird der Tag "0" in den Dummys nicht angezeigt, sondern es wird zur nächsten Leerung gesprungen. Das ist mir allerdings egal, da ich die Tonnen 1 Tag vorher sowie so an die Straßen stellen muss.

Was ich jetzt noch damit vorhabe ist, mir eine Benachrichtigung schicken zu lassen, per GCM aufs Telefon da ich die andFHEM App verwende. Das ist nun aber kein Beinbruch mehr ;)
Hoffe ich konnte nicht nur den Hamburgern helfen, sondern auch denen die ein ähnliches Problem haben.

Beste Grüße
Aim


P.S. In Hamburg ist der .ical Kalender nur für die nächsten 6 Monate gültig. Außerdem fehlen noch die Einträge für die Weihnachtsbaumabholung am Jahresanfang sowie die Laubsäcke für den Herbst. Das wird aber noch eingepflegt.
Titel: Antw:Abfallkalender auswerten
Beitrag von: xsasx am 12 Mai 2015, 15:18:28
Ich klink mich jetzt auch mal ein ;)

Hab mir hier auch eine Abfrage zusammengestellt mit eurer hilfe.

fhem.cfg

#MuellKalender

define Abfall Calendar ical url https://www.google.com/calendar/ical/......6d36/basic.ics 600
attr Abfall room Kalender
define Papiertonne dummy
attr Papiertonne group Abfall Countdown
attr Papiertonne room Kalender
define Abfall_Update notify Abfall:(modeUpcoming|modeAlarmOrStart).* {Abfalltermine("$EVENT")}
attr Abfall_Update room Kalender
define Restmuell dummy
attr Restmuell group Abfall Countdown
attr Restmuell room Kalender
define Wertstofftonne dummy
attr Wertstofftonne group Abfall Countdown
attr Wertstofftonne room Kalender
define Biomuell dummy
attr Biomuell group Abfall Countdown
attr Biomuell room Kalender


99_myUtils.pm

##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;
use Time::Local;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

sub
Abfalltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtPapier = '';
  my $dtWertstofftonne = '';
  my $dtRest = '';
  my $dtBiomuell = '';
   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 =~ /Gelbe/) {
        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 ($dtWertstofftonne eq '' || ($eventDate < $dtWertstofftonne && $eventDate > $t))
        {
          $dtWertstofftonne  = $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 =~ /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 ($dtBiomuell eq '' || ($eventDate < $dtBiomuell && $eventDate > $t))
        {
          $dtBiomuell  = $eventDate;
        }
    };
   
   
  my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Papiertonne $dayDiff");
  }
  my $dayDiff = floor(($dtWertstofftonne - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Wertstofftonne $dayDiff");
  }
  my $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Restmuell $dayDiff");
  }
    my $dayDiff = floor(($dtBiomuell - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Biomuell $dayDiff");
  }
  }
}


Mir wird jetzt im Raum Kalender auch schön angezeigt wieviele Tage noch bis zur nächsten Leerung anstehen.

Was ich jetzt gerne hätte wäre eine Pushnachricht auf Handy einen Tag vor Leerung mit z.B Morgen Biotonnen Leerung

Wie könnte ich das realisieren?

Liebe Grüße


Titel: Antw:Abfallkalender auswerten
Beitrag von: Andy89 am 12 Mai 2015, 20:00:19
Servus xsasx,
um ne Pushnachricht zu bekommen muss du nen Service wie PushBullet oder ähnliches nutzen. Das packst du dann mit in deine 99_myUtils.pm

hier mal ein kleines Beispiel für den Gelben Sack. Bei mir wird nur einmal am Tag nach Mülländerungen gesucht und um 18:00 Uhr bekomme ich am Vortag eine Pushnachricht ;)

my $dayDiff = floor(($dtWertstofftonne - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Wertstofftonne $dayDiff");
    if ($dayDiff == 1) {
      fhem("define push_GelberSack at 18:00 set Pushbullet message Morgen wird der gelbe Sack abgeholt | Morgen Gelber Sack; attr push_GelberSack room z_Notifys")
    }
  }


Beste Grüße
Andy

edit: natürlich muss die Abfrage  mit zwei = lauten; also "if ($dayDiff == 1)" .... ist oben angepasst
Titel: Antw:Abfallkalender auswerten
Beitrag von: xsasx am 13 Mai 2015, 09:38:29
Hi Andi89,

danke für die Hilfe. Ich benutze Pushover (hab ich schon eingerichtet für zB Waschmaschine Fertig)

Das heißt jetzt an an meiner Konfig muss es so aussehen?:

  my $dayDiff = floor(($dtWertstofftonne - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Wertstofftonne $dayDiff");
if (dayDiff == 1) {
define push_Gelbersack at 18:00 system ("curl -s -F 'token=XXXXXXXX' -F 'user=XXXXXXXX' -F 'message=Kalender\nMorgen wird der gelbe Sack abgeholt' https://api.pushover.net/1/messages.json")}
}


Oder ist das falsch ? Bzw kann ich das Testen? Also triggern?
Titel: Abfallkalender auswerten
Beitrag von: Andy89 am 13 Mai 2015, 10:56:17
Ich würde es testen mit Erstellung eines Test Eintrags im Kalender am nächsten Tag. Und dann natürlich den Kalender noch updaten. Und prüfen, dass die Daten auch geladen werden.

Und entweder hast du dann ein neues "at" für 18 Uhr, oder mal im log schauen, was falsch ist.

Beste Grüße
Andy

Edit: ich kenn mich nicht mit Pushover aus, also keine Ahnung ob's falsch ist.

Gesendet von iPhone mit Tapatalk
Titel: Antw:Abfallkalender auswerten
Beitrag von: xsasx am 13 Mai 2015, 14:06:26
Hi Andi,

also hab jetzt schon X sachen versucht nun hab ich folgendes gemacht:

Laut
http://www.fhemwiki.de/wiki/Pushover

ein push_GelberSack angelegt

wenn ich

set push_GelberSack msg 'test' 'test'

kommt auch test test an also das funktioniert !

Nun hab ich in meine 99_myUtils.pm folgendes eingetragen:

  my $dayDiff = floor(($dtGelbersack - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Gelbersack $dayDiff");
if ($dayDiff == 1){
fhem("set push_GelberSack msg 'Müllkalender' 'Morgen wird der Gelbe Sack abgeholt'")}
  }


wenn ich dann Gelbersack von Hand auf 1 setze (mit set Gelbersack 1) springt der Tag von Gelbersack auf 1 aber es wird keine Push versendet.
Also scheint irgendwie was nicht zu passen mit dem dayDiff == 1 oder?



EDIT: HABS HINBEKOMMEN!

Ich mach es jetzt anders :

99_myUtils.pm bleibt unberührt z.B.:

my $dayDiff = floor(($dtGelbersack - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Gelbersack $dayDiff");
  }


fhem.cfg :

Gelbersack bekommt nun noch das:

attr Gelbersack event-on-change-reading state

und es kommt noch das rein:

#Push GelberSack
define PushDummy_GelberSack notify Gelbersack:1 {fhem ("set push_GelberSack msg 'Müllkalender' 'Morgen wird der Gelbe Sack abgeholt' '' 0 ''")}

wenn ich jetzt set Gelbersack 1 mach kommt die Nachricht !! YES !
Titel: Antw:Abfallkalender auswerten
Beitrag von: mc-hollin am 16 Mai 2015, 19:10:46
Zitat von: xsasx am 12 Mai 2015, 15:18:28

99_myUtils.pm

##############################################


sub
Abfalltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);


Hallo,

ich glaube hier ist ein kleiner Schreibfehler.
Müsste es nicht my $Ereignisteil1 = @Ereignisarray[1]; lauten?


Sorry mein Fehler!!!
Hab die ganze Zeit kein Ergebnis bekommen und nach der Änderung kam ein Ergebnis.
Der eigentliche Fehler lag aber woanders.  >:(
Titel: Antw:Abfallkalender auswerten
Beitrag von: xsasx am 22 Mai 2015, 11:09:08
entweder ich bin blind oder ich sehe deine Verbesserung nicht ;) Bei mir tut es was es soll :D
Titel: Antw:Abfallkalender auswerten
Beitrag von: Aim23 am 22 Mai 2015, 11:28:41
Zitat von: xsasx am 22 Mai 2015, 11:09:08
entweder ich bin blind oder ich sehe deine Verbesserung nicht ;) Bei mir tut es was es soll :D

Anstatt variable wird ein Array deklariert, das ist der Unterschied.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Ger-Gilias am 26 Mai 2015, 20:33:25
Hallo, ich habe mal xsasx (http://forum.fhem.de/index.php/topic,24646.msg293851.html#msg293851) config kopiert und natürlich die Zeile "define Abfall Calendar ical url https://www.google.com/calendar/ical/......6d36/basic.ics 600" mit meiner der Privaten ICAL Adresse meines Googlekalenders geändert.

Jetzt habe ich im Raum Kalender die 4 Arten der Müllabfuhr stehen aber dahinter immer nur 3 ?chen muss man irgend wie noch was aktivieren damit die Daten aus dem Kalender galden werden?
Titel: Antw:Abfallkalender auswerten
Beitrag von: punker am 27 Mai 2015, 10:40:31
Zitat von: Ger-Gilias am 26 Mai 2015, 20:33:25

Jetzt habe ich im Raum Kalender die 4 Arten der Müllabfuhr stehen aber dahinter immer nur 3 ?chen muss man irgend wie noch was aktivieren damit die Daten aus dem Kalender galden werden?

Bei mir isses leider genauso!
Und dazu noch jede Menge dieser Fehlermeldungen:

Use of uninitialized value in substitution (s///) at /opt/fhem/FHEM/57_Calendar.pm line 387.
Use of uninitialized value in hash element at /opt/fhem/FHEM/57_Calendar.pm line 720.



Nachtrag: Hab den Kalender jetzt wieder rausgeschmissen - Outlook-Kalender reicht auch!
Titel: Antw:Abfallkalender auswerten
Beitrag von: Ger-Gilias am 28 Mai 2015, 07:18:06
Ich hab es nun hinbekommen hatte die 600 hinter dem link vergessen der die auslesezeit angibt.


Gesendet von iPhone mit Tapatalk
Titel: Antw:Abfallkalender auswerten
Beitrag von: xsasx am 09 Juni 2015, 09:11:34
Also bei mir läuft das nun 1A nur eine kleinigkeit mit der Pushbenachrichtignung klappt noch nicht.

Und zwat wenn ich es ohne Zeitangaben also so:


mache dann kommt eine Push um 00:00 1Tag vorher bzw halt um 00:00 davor.

#Push Biomuell
define PushDummy_Biomuell notify Biomuell:1 {fhem ("set push_BioMuell msg 'Müllkalender' 'Morgen wird der Bioemuell abgeholt' '' 0 ''")}



Hätte es aber gerne das er mir es um 18:00 sendet einen Tag davor - leider wenn ich folgendes eintrage bekomm ich gar keine message :(

Zitat#Push Biomuell
define PushDummy_Biomuell at *18:00:00 notify Biomuell:1 {fhem ("set push_BioMuell msg 'Müllkalender' 'Morgen wird der Bioemuell abgeholt' '' 0 ''")}


Titel: Antw:Abfallkalender auswerten
Beitrag von: Aim23 am 09 Juni 2015, 09:24:35
Zitat von: xsasx am 09 Juni 2015, 09:11:34
Also bei mir läuft das nun 1A nur eine kleinigkeit mit der Pushbenachrichtignung klappt noch nicht.

Und zwat wenn ich es ohne Zeitangaben also so:


mache dann kommt eine Push um 00:00 1Tag vorher bzw halt um 00:00 davor.

#Push Biomuell
define PushDummy_Biomuell notify Biomuell:1 {fhem ("set push_BioMuell msg 'Müllkalender' 'Morgen wird der Bioemuell abgeholt' '' 0 ''")}



Hätte es aber gerne das er mir es um 18:00 sendet einen Tag davor - leider wenn ich folgendes eintrage bekomm ich gar keine message :(

Schau dir mal den Eintrag im Kalender selbst an. Wann ist der Termin angesetzt zu welcher Uhrzeit?
Bei mir ist glücklicherweise von Haus aus eingetragen 18:00 Uhr, ein Tag vor Abholung ist die Alarmmeldung. Darüber konnte ich dann letztlich auch was in der Funktion im Nachgang modifizieren.
Titel: Antw:Abfallkalender auswerten
Beitrag von: xsasx am 09 Juni 2015, 10:52:33
Der Müll im Kalender an sich (google Kalender) ist auf 7:00 datiert.
Titel: Antw:Abfallkalender auswerten
Beitrag von: xsasx am 11 Juni 2015, 09:12:22
Niemand ne Lösung für nen Notify zu ner bestimmten Uhrzeit ?
Titel: Antw:Abfallkalender auswerten
Beitrag von: xxsteffenxx am 20 Oktober 2015, 14:38:30
Hallo zusammen,
ich grab das Thema mal nochmals aus - sorry!

Hab nun meine fhem-cfg und die 99_Utils.pm gepflegt.
Bekomme mit dem Befehl

get Abfall full all

auch ne schöne Auflistung wann das nächste dran wäre, nur stehe ich total auf der Leitung wie ich das ganze grafisch in FHEM bzw. im FHEM Tablet UI anzeigen lassen kann.

Kann mir hier vielleicht jemand hilfestellung geben?
Steffen
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 20 Oktober 2015, 20:22:44
Zitat von: xxsteffenxx am 20 Oktober 2015, 14:38:30
Hallo zusammen,
ich grab das Thema mal nochmals aus - sorry!

Hab nun meine fhem-cfg und die 99_Utils.pm gepflegt.
Bekomme mit dem Befehl

get Abfall full all

auch ne schöne Auflistung wann das nächste dran wäre, nur stehe ich total auf der Leitung wie ich das ganze grafisch in FHEM bzw. im FHEM Tablet UI anzeigen lassen kann.

Kann mir hier vielleicht jemand hilfestellung geben?
Steffen

Also bei mir sieht es wie in Post 155 hier im Thread aus, und etwas weiter davor steht auch wie das angelegt wird
Titel: Antw:Abfallkalender auswerten
Beitrag von: xxsteffenxx am 21 Oktober 2015, 14:22:56
Hallo zusammen,
also ich komm damit echt nicht weiter,
ich habe den Code in der 99_Utlis.pm
sub
MuelltermineA ($)
{
  my ($Ereignis) = @_;
  my @uids=split(/;/,$Ereignis);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtBio = '';
  my $dtYellow = '';
  my $dtRest = '';
  my $dtPapier = '';
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get AbfallA summary $uid");
    if ($Kalendertext =~ /Bioabfall/) {
        my $dt = fhem("get AbfallA start $uid");
        my @SplitDt = split(/ /,$dt);
        my @SplitDate = split(/\./,$SplitDt[0]);
        my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
        Log(1, "eventDate: ".$eventDate);
        Log(1, "t: ".$t);
        if (($dtBio eq '' || $eventDate < $dtBio) && $eventDate >= $t)
        {
          $dtBio = $eventDate;
        }
    };
    if ($Kalendertext =~ /Gelber Sack/) {
        my $dt = fhem("get AbfallA 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 =~ /Restabfall/) {
        my $dt = fhem("get AbfallA 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 =~ /Altpapier/) {
        my $dt = fhem("get AbfallA 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 < $dtPapier) && $eventDate >= $t)
        {
          $dtRest = $eventDate;
        }
    };
  };

  my $dayDiff = 0; 
 
  if ($dtBio eq '') {
    fhem("set BiomuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set BiomuellIn $dayDiff");
    }
  }
  if ($dtYellow eq '') {
    fhem("set GelbeTonneIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtYellow - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set GelbeTonneIn $dayDiff");
    }
  }
  if ($dtRest eq '') {
    fhem("set RestmuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set RestmuellIn $dayDiff");
    }
  }
  if ($dtPapier eq '') {
    fhem("set PapierIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set PapierIn $dayDiff");
    }
  }
}
1;


Dann in der fhem.cfg
define Abfall Calendar ical file ./www/abfuhr.ics 43200
attr Abfall room Kalender
attr Abfall verbose 2
define Abfall_Update notify Abfall:(modeUpcoming|modeAlarmOrStart).* {Abfalltermine("$EVENT")}
attr Abfall_Update room Kalender
define Papiertonne dummy
attr Papiertonne alias Blaue-Tonne
attr Papiertonne group Abfall Countdown
attr Papiertonne room Kalender
define Restmuell dummy
attr Restmuell alias Schwarze-Tonne
attr Restmuell group Abfall Countdown
attr Restmuell room Kalender
define Gelbetonne dummy
attr Gelbetonne alias Gelbe-Tonne
attr Gelbetonne group Abfall Countdown
attr Gelbetonne room Kalender


leider bekomme ich nirgends eine brauchbar ausgabe.

Kann mir jemand das passende html-Code-schnipsel zur Verfügung stellen, damit ich mal testen kann ob es dann klappt?
Titel: Antw:Abfallkalender auswerten
Beitrag von: Doublefant am 31 Oktober 2015, 18:07:02
Hallo,
vielen Dank an Aim23 für die tolle Anleitung, Stormer für die Gundentwicklung und an die anderen natürlich auch.
Tolle Arbeit.
Habe es bei mir implementiert und es funktioniert nun so weit, mal abwarten was passiert wenn die Tage "0" erreichen.

Hat denn jemand schon eine Lösung für die Icon Anzeige bei mehreren Icons mit devStateIcon herausgefunden?
Aktuell wird bei mir die Anzahl Rest-Tage angezeigt bis geleert wird, dann 1 Tag vorher wird über devStateIcon die Zahl in ein Ausrufezeichen geändert.
So ganz will es nicht funktionieren, wenn ich den Ausdruck mit if else und mehreren Icons erweitere.
Titel: Antw:Abfallkalender auswerten
Beitrag von: kvo1 am 04 November 2015, 00:11:35
Hallo Aim,
danke für die gute Beschreibung auch meinerseits, mal sehen ob ich da
für mich noch was optimieren kann !
Titel: Antw:Abfallkalender auswerten
Beitrag von: ulli am 03 Januar 2016, 14:15:48
Hi zusammen,

ich habe inzwischen eine funktionierende "Abfallentleerwarnung" dank dieses Thread. Besten DANK!
Das Einzige was mich noch stört ist das alle gets im Log erscheinen.


2016.01.03 14:14:48 3: get MuellKalender summary xxx : Biotonne
2016.01.03 14:14:48 3: get MuellKalender start xxx : 24.06.2016 00:00:00
2016.01.03 14:14:48 3: get MuellKalender summary xxx : Restmüll wöchentlich
2016.01.03 14:14:48 3: get MuellKalender summary xxx : Biotonne


Wie habt Ihr das weg bekommen? Ich habe es mit verbose 0 auf das Kalender define schon vergeblich versucht...
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 03 Januar 2016, 14:25:33
Hallo,

einfach mal in der sub in myutils die Zeilen, die mit

        Log(1, ...


beginnen löschen oder auskommentieren...

Ronny
Titel: Antw:Abfallkalender auswerten
Beitrag von: ulli am 03 Januar 2016, 14:45:37
Leider nicht. Die Einträge werden z.B. von folgender Zeile ausgelöst:

my $Kalendertext = fhem("get AbfallKalender summary $uid");
Titel: Antw:Abfallkalender auswerten
Beitrag von: ulli am 03 Januar 2016, 17:38:39
Habe eine Lösung gefunden.

--> my $Kalendertext = fhem("get AbfallKalender summary $uid",1);
Titel: Antw:Abfallkalender auswerten
Beitrag von: Jack-Luck am 04 Januar 2016, 18:55:01
Hi,

hat schon jemand eine idee für xsasx Problem? Ich möchte nämlich auch gerne per TelegramBot um
20 uhr erinnert werden wenn am nächsten Tag eine Mülltonne abgeholt wird.

Zitat von: xsasx am 09 Juni 2015, 09:11:34
Also bei mir läuft das nun 1A nur eine kleinigkeit mit der Pushbenachrichtignung klappt noch nicht.

Und zwat wenn ich es ohne Zeitangaben also so:


mache dann kommt eine Push um 00:00 1Tag vorher bzw halt um 00:00 davor.

#Push Biomuell
define PushDummy_Biomuell notify Biomuell:1 {fhem ("set push_BioMuell msg 'Müllkalender' 'Morgen wird der Bioemuell abgeholt' '' 0 ''")}



Hätte es aber gerne das er mir es um 18:00 sendet einen Tag davor - leider wenn ich folgendes eintrage bekomm ich gar keine message :(

#Push Biomuell
define PushDummy_Biomuell at *18:00:00 notify Biomuell:1 {fhem ("set push_BioMuell msg 'Müllkalender' 'Morgen wird der Bioemuell abgeholt' '' 0 ''")}


leider geht das so ja nicht, wie bekommt man den at befehl korrekt in den Code?

Gruß
Jack
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 04 Januar 2016, 19:01:26
Guten Abend,

sieh dir mal DOIF an, damit muss es gehen...

Ronny
Titel: Antw:Abfallkalender auswerten
Beitrag von: Jack-Luck am 04 Januar 2016, 19:24:20
hey,

ich hab jetzt mal ein Code mit DOIF gemacht. Würde das so gehen?

define di_Wertstoff DOIF ([20:00] and [Wertstoff:state] < 2) (set telebot message Morgen Wertstoff)

Gruß
Jack
Titel: Antw:Abfallkalender auswerten
Beitrag von: RoBra81 am 04 Januar 2016, 20:06:54
Sieht eigentlich gut aus
Titel: Antw:Abfallkalender auswerten
Beitrag von: Jack-Luck am 04 Januar 2016, 20:12:50
danke dir, an DOIF hab ich noch garnicht gedacht. Scheint auch zu funktionieren. :)
Titel: Antw:Abfallkalender auswerten
Beitrag von: Nemo0815 am 05 Januar 2016, 09:21:25
Hallo,

ich habe folgendes Problem:

Ich habe den Kalender ganz normal über

define myCal Calendar ical url http://web.zaw-sr.de/sites/all/modules/custom/jobspooler_createical/************.ics 43200

angelegt.

Mit einem get full all bekomme ich aber nur den allerletzten Eintrag im ical file angezeigt, und folglich auch keine upcoming oder sonstige Termine, es wird immer der allerletzte angezeigt, ende 2016. Alle Readings im Calender sind leer

known upcoming 21.12.2016 17:00:00 22.12.2016 05:00:00-22.12.2016 20:00:00 Papiermuell ****,***********

Mache ich irgendwas falsch?



Internals:
   DEF        ical url http://web.zaw-sr.de/sites/all/modules/custom/jobspooler_createical/23234_************.ics 43200
   NAME       AbfallKalender
   NR         225
   STATE      Active
   TYPE       Calendar
   CHANGETIME:
   Readings:
     2016-01-05 09:13:07   all
     2016-01-05 09:13:07   lastCheck       2016-01-05 09:13:05
     2016-01-05 09:13:07   lastUpdate      2016-01-05 09:13:05
     2016-01-05 09:13:07   modeAlarm
     2016-01-05 09:13:07   modeAlarmOrStart
     2016-01-05 09:13:07   modeAlarmed
     2016-01-05 09:13:07   modeChanged
     2016-01-05 09:13:07   modeEnd
     2016-01-05 09:13:07   modeEnded
     2016-01-05 09:13:07   modeStart
     2016-01-05 09:13:07   modeStarted
     2016-01-05 09:13:07   modeUpcoming
     2016-01-05 09:13:07   stateChanged
     2016-01-05 09:13:07   stateDeleted
     2016-01-05 09:13:07   stateNew
     2016-01-05 09:13:07   stateUpdated
   Fhem:
     interval   43200
     lastCheck  2016-01-05 09:13:05
     lastChkTs  1451981585
     lastUpdate 2016-01-05 09:13:05
     lstUpdtTs  1451981585
     nextCheck  2016-01-05 21:13:05
     nextChkTs  1452024785
     nextUpdate 2016-01-05 21:13:05
     nxtUpdtTs  1452024785
     type       url
     url        http://web.zaw-sr.de/sites/all/modules/custom/jobspooler_createical/23234_**********.ics
Attributes:
   room       Abfall



Im Logfile bekomme ich folgende Warnings:

2016.01.05 08:55:22 1: PERL WARNING: Use of uninitialized value $uid in regexp compilation at ./FHEM/57_Calendar.pm line 1047.
2016.01.05 09:01:12 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/57_Calendar.pm line 498.
Titel: Antw:Abfallkalender auswerten
Beitrag von: aloz77 am 08 Januar 2016, 19:48:05
Ähnliches Problem hier. Nur ein einziger (nächster) Termin wird aus ical eingelesen.

define Abfallkalender Calendar ical url http://www.dormagen.mein-abfallkalender.de/ical.ics?sid=22668&cd=inline&ft=6&fp=next_1000&wids=575,573,574,577 21600

list Abfallkalender

Internals:
   CFGFN
   DEF        ical url http://www.dormagen.mein-abfallkalender.de/ical.ics?sid=22668&cd=inline&ft=6&fp=next_1000&wids=575,573,574,577 21600
   NAME       Abfallkalender
   NR         302
   STATE      Active
   TYPE       Calendar
   Readings:
     2016-01-08 18:00:02   all             181553wwwdormagenmeinabfallkalenderde
     2016-01-08 18:00:02   calname         Von-Witzleben-Straße\, Dormagen (Delhoven) [Mein-Abfallkalender.de]
     2016-01-08 18:00:02   lastCheck       2016-01-08 18:00:00
     2016-01-08 18:00:02   lastUpdate      2016-01-08 18:00:00
     2016-01-08 18:00:02   modeAlarm
     2016-01-08 18:00:02   modeAlarmOrStart
     2016-01-08 18:00:02   modeAlarmed
     2016-01-08 18:00:02   modeChanged     181553wwwdormagenmeinabfallkalenderde
     2016-01-08 18:00:02   modeEnd
     2016-01-08 18:00:02   modeEnded
     2016-01-08 18:00:02   modeStart
     2016-01-08 18:00:02   modeStarted
     2016-01-08 18:00:02   modeUpcoming    181553wwwdormagenmeinabfallkalenderde
     2016-01-08 18:00:02   stateChanged    181553wwwdormagenmeinabfallkalenderde
     2016-01-08 18:00:02   stateDeleted
     2016-01-08 18:00:02   stateNew        181553wwwdormagenmeinabfallkalenderde
     2016-01-08 18:00:02   stateUpdated
   Fhem:
     interval   21600
     lastCheck  2016-01-08 18:00:00
     lastChkTs  1452272400
     lastUpdate 2016-01-08 18:00:00
     lstUpdtTs  1452272400
     nextCheck  2016-01-09 00:00:00
     nextChkTs  1452294000
     nextUpdate 2016-01-09 00:00:00
     nxtUpdtTs  1452294000
     type       url
     url        http://www.dormagen.mein-abfallkalender.de/ical.ics?sid=22668&cd=inline&ft=6&fp=next_1000&wids=575,573,574,577
Attributes:
   room       CALENDAR


get Abfallkalender full all

181553wwwdormagenmeinabfallkalenderde     new upcoming 11.01.2016 18:00:00 12.01.2016 00:00:00-13.01.2016 00:00:00 Restmüll 14 tägig Von-Witzleben-Straße\, Dormagen


Keine Warnings im Log.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Hans Franz am 09 Januar 2016, 00:40:54
Hallo,
Manchmal hilft es die Datei herunterzuladen, mittels Editor ein Zeichen zu ändern und nach dem Speichern lokal (mit file statt url) in fhem einzubinden.

Gruß
Hans
Titel: Antw:Abfallkalender auswerten
Beitrag von: aloz77 am 09 Januar 2016, 10:32:53
Danke. In meinem Fall sind es die MAC-style Zeilenumbrüche (0x0D,0x0A), die den Kalender aus der URL nicht benutzbar machen. Wenn ich zu UNIX-style (0x0A) konvertiere, werden alle Termine ausgelesen.

Gibt's eine Möglichkeit, das dem Calender-Modul beizubringen?
Titel: Antw:Abfallkalender auswerten
Beitrag von: aloz77 am 09 Januar 2016, 10:55:16
Ich habe das provisorisch für mich in 57_Calendar.pm mit einer Regex-Zeile gefixt, ab Zeile 918:

    ($errmsg, $ics)= HttpUtils_BlockingGet( { url => $url, hideurl => 1, timeout => 10, } );
    $ics =~ s/\r[\n]*/\n/gm; # Neu


Jetzt werden alle Termine eingelesen. :-) Geht's irgendwie nachhaltiger?
Titel: Antw:Abfallkalender auswerten
Beitrag von: kvo1 am 09 Januar 2016, 13:29:41
Zitat von: aloz77 am 09 Januar 2016, 10:55:16
Ich habe das provisorisch für mich in 57_Calendar.pm mit einer Regex-Zeile gefixt, ab Zeile 918:

    ($errmsg, $ics)= HttpUtils_BlockingGet( { url => $url, hideurl => 1, timeout => 10, } );
    $ics =~ s/\r[\n]*/\n/gm; # Neu


Jetzt werden alle Termine eingelesen. :-) Geht's irgendwie nachhaltiger?
Schick doch mal Boris eine Info, Vlt. Kann er da was machen, über ein Attribute o.ä.

Kvo
Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert am 09 Januar 2016, 19:56:04
Danke für den Hinweis.

Ich berücksichtige jetzt so was vor dem Parsen der ical-Datei. Realisiert ist es in der neuen Version, die sich derzeit noch im Test befindet. Wenn Du testen möchtest, dann schau bitte hier:

http://forum.fhem.de/index.php/topic,46609.0.html (http://forum.fhem.de/index.php/topic,46609.0.html)

Viele Grüße
Boris
Titel: Antw:Abfallkalender auswerten
Beitrag von: Nemo0815 am 13 Januar 2016, 09:46:22
Zitat von: aloz77 am 09 Januar 2016, 10:55:16
Ich habe das provisorisch für mich in 57_Calendar.pm mit einer Regex-Zeile gefixt, ab Zeile 918:

    ($errmsg, $ics)= HttpUtils_BlockingGet( { url => $url, hideurl => 1, timeout => 10, } );
    $ics =~ s/\r[\n]*/\n/gm; # Neu


Jetzt werden alle Termine eingelesen. :-) Geht's irgendwie nachhaltiger?

Hat bei mir so nichts gebraucht, es wird immer noch nur der letzte Eintrag im ics File angezeigt...
Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert am 13 Januar 2016, 19:35:50
Hallo Nemo0815,

kannst Du mir bitte anhand eines angefügten Auszug aus der ical-Datei zeigen, wie die Zeilenenden bei Dir aussehen?

Viele Grüße
Boris
Titel: Antw:Abfallkalender auswerten
Beitrag von: Nemo0815 am 14 Januar 2016, 10:56:30
Zitat von: Dr. Boris Neubert am 13 Januar 2016, 19:35:50
Hallo Nemo0815,

kannst Du mir bitte anhand eines angefügten Auszug aus der ical-Datei zeigen, wie die Zeilenenden bei Dir aussehen?

Viele Grüße
Boris

Hallo, du kannst dir einfach unter http://www.zaw-sr.de/abfuhrplan/kalender irgendeinen Kalender runterladen, sollten alle das gleiche Format haben

Habe seit dem heutigen Update (oder auch schon vorher?) folgendes im Log:

2016.01.14 10:56:49 1: PERL WARNING: Use of uninitialized value $uid in regexp compilation at ./FHEM/57_Calendar.pm line 1047.
2016.01.14 10:57:01 1: PERL WARNING: Use of uninitialized value $uid in delete at ./FHEM/57_Calendar.pm line 724.
2016.01.14 10:57:01 1: PERL WARNING: Use of uninitialized value in substitution (s///) at ./FHEM/57_Calendar.pm line 387.
2016.01.14 10:57:01 1: PERL WARNING: Use of uninitialized value $uid in hash element at ./FHEM/57_Calendar.pm line 715.
2016.01.14 10:57:01 1: PERL WARNING: Use of uninitialized value in hash element at ./FHEM/57_Calendar.pm line 720.
2016.01.14 10:57:01 1: PERL WARNING: Use of uninitialized value in sort at ./FHEM/57_Calendar.pm line 986.
2016.01.14 10:57:01 1: PERL WARNING: Use of uninitialized value $all[0] in join or string at ./FHEM/57_Calendar.pm line 996.
2016.01.14 10:57:01 1: PERL WARNING: Use of uninitialized value in sort at ./FHEM/57_Calendar.pm line 867.
2016.01.14 10:57:01 1: PERL WARNING: Use of uninitialized value in sort at ./FHEM/57_Calendar.pm line 874.
2016.01.14 10:57:01 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/57_Calendar.pm line 878.
2016.01.14 10:57:01 1: PERL WARNING: Use of uninitialized value $upcoming[0] in join or string at ./FHEM/57_Calendar.pm line 880.
2016.01.14 10:57:01 1: PERL WARNING: Use of uninitialized value $changed[0] in join or string at ./FHEM/57_Calendar.pm line 884.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert am 16 Januar 2016, 19:14:04
Hallo Nemo0815

die Kalender von der genannten Quelle sind fehlerhaft: die UID steht zwischen den VEVENTs. Am besten sagst Du dem Anbieter Bescheid, dass die generierten Kalender fehlerhaft sind.

Ich habe eine Erweiterung eingebaut, die das Problem behebt, indem synthetische UIDs erzeugt werden. Hier die beta-Version:

http://forum.fhem.de/index.php?topic=46608.msg383378#msg383378 (http://forum.fhem.de/index.php?topic=46608.msg383378#msg383378)

Bitte beachten, dass a.a.O. das neue Kalendermodul liegt, dass sich im Verhalten vom noch aktuellen Modul unterscheidet.

Viele Grüße
Boris
Titel: Antw:Abfallkalender auswerten
Beitrag von: Nemo0815 am 16 Januar 2016, 23:54:58
Zitat von: Dr. Boris Neubert am 16 Januar 2016, 19:14:04
Hallo Nemo0815

die Kalender von der genannten Quelle sind fehlerhaft: die UID steht zwischen den VEVENTs. Am besten sagst Du dem Anbieter Bescheid, dass die generierten Kalender fehlerhaft sind.

Ich habe eine Erweiterung eingebaut, die das Problem behebt, indem synthetische UIDs erzeugt werden. Hier die beta-Version:

http://forum.fhem.de/index.php?topic=46608.msg383378#msg383378 (http://forum.fhem.de/index.php?topic=46608.msg383378#msg383378)

Bitte beachten, dass a.a.O. das neue Kalendermodul liegt, dass sich im Verhalten vom noch aktuellen Modul unterscheidet.

Viele Grüße
Boris

Danke, scheint zu funktionieren! :)
Titel: Antw:Abfallkalender auswerten
Beitrag von: roadghost am 29 Februar 2016, 08:14:37
Hallo Freunde des elektronischen Müllkalenders,

ich habe mir den Code aus dem Zitierten Beitrag geschnappt und bei mir integriert - läuft soweit auch.

Wenn ich die Abfrage mittels

get Countdown full all

starte erhalte ich alle Einträge aus meinem Kalender. Die 4 Dummys tragen die entsprechenden Zahlen an Tagen bis zur Leerung der jeweiligen Tonne - aber die Aktualisierung der Dummys ist nicht OK.

Bsp.

Wir haben jetzt 08:10 Uhr am Montag, am Donnerstag wäre die Leerung und ich seh noch immer eine "4" für Restmüll - wann wird der Dummy denn durch das notify aktualisiert ?

Kann man das notify manuell / automatisch zum update zwingen, und wenn ja, wie ??

Meine Kalendereinträge sind alle auf "Ganztägig" eingestellt - ist das evtl. das Problem ?

Gruß


Zitat von: xsasx am 12 Mai 2015, 15:18:28

fhem.cfg

#MuellKalender

define Abfall Calendar ical url https://www.google.com/calendar/ical/......6d36/basic.ics 600
attr Abfall room Kalender
define Papiertonne dummy
attr Papiertonne group Abfall Countdown
attr Papiertonne room Kalender
define Abfall_Update notify Abfall:(modeUpcoming|modeAlarmOrStart).* {Abfalltermine("$EVENT")}
attr Abfall_Update room Kalender
define Restmuell dummy
attr Restmuell group Abfall Countdown
attr Restmuell room Kalender
define Wertstofftonne dummy
attr Wertstofftonne group Abfall Countdown
attr Wertstofftonne room Kalender
define Biomuell dummy
attr Biomuell group Abfall Countdown
attr Biomuell room Kalender


99_myUtils.pm

##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;
use Time::Local;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

sub
Abfalltermine ($)
{
  my ($Ereignis) = @_;
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
  my $dtPapier = '';
  my $dtWertstofftonne = '';
  my $dtRest = '';
  my $dtBiomuell = '';
   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 =~ /Gelbe/) {
        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 ($dtWertstofftonne eq '' || ($eventDate < $dtWertstofftonne && $eventDate > $t))
        {
          $dtWertstofftonne  = $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 =~ /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 ($dtBiomuell eq '' || ($eventDate < $dtBiomuell && $eventDate > $t))
        {
          $dtBiomuell  = $eventDate;
        }
    };
   
   
  my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Papiertonne $dayDiff");
  }
  my $dayDiff = floor(($dtWertstofftonne - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Wertstofftonne $dayDiff");
  }
  my $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Restmuell $dayDiff");
  }
    my $dayDiff = floor(($dtBiomuell - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Biomuell $dayDiff");
  }
  }
}


Titel: Antw:Abfallkalender auswerten
Beitrag von: Aim23 am 29 Februar 2016, 11:00:58
Zitat von: roadghost am 29 Februar 2016, 08:14:37
Hallo Freunde des elektronischen Müllkalenders,

ich habe mir den Code aus dem Zitierten Beitrag geschnappt und bei mir integriert - läuft soweit auch.

Wenn ich die Abfrage mittels

get Countdown full all

starte erhalte ich alle Einträge aus meinem Kalender. Die 4 Dummys tragen die entsprechenden Zahlen an Tagen bis zur Leerung der jeweiligen Tonne - aber die Aktualisierung der Dummys ist nicht OK.

Bsp.

Wir haben jetzt 08:10 Uhr am Montag, am Donnerstag wäre die Leerung und ich seh noch immer eine "4" für Restmüll - wann wird der Dummy denn durch das notify aktualisiert ?

Kann man das notify manuell / automatisch zum update zwingen, und wenn ja, wie ??

Meine Kalendereinträge sind alle auf "Ganztägig" eingestellt - ist das evtl. das Problem ?

Gruß

Welche Uhrzeit steht im Kalender für den Abholtag?
Titel: Antw:Abfallkalender auswerten
Beitrag von: roadghost am 29 Februar 2016, 11:24:56
Hallo,

für alle Tage für alle 4 Müllsorten steht 00:00:00 als Beginn und 24:00:00 als Ende im Kalender, "Ganztägig" habe ich den Haken gesetzt.

Gruß
Titel: Antw:Abfallkalender auswerten
Beitrag von: roadghost am 01 März 2016, 12:33:59
Keiner eine Idee hierzu ?? Kann das evtl. mit dem neuen Calendar zusammenhängen ??

Mein Kalender zeigt mir auch nur bei "upcoming" events an.

Gruß
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 01 März 2016, 21:00:30
Hi,
leider funktioniert mein Müllkalender auch nicht mehr, einer eine idee was ich tun kann, ausser auf das neue Abfall-Modul umzusteigen?

Mein Kalender sieht so aus:
Internals:
   DEF        ical file /home/thomas/daach-hauptstrasse.ics 36000
   NAME       AbfallA
   NR         228
   NTFY_ORDER 50-AbfallA
   STATE      triggered
   TYPE       Calendar
   Helper:
     Dblog:
       Changed:
         Mydblog:
           TIME       1456268402.74847
           VALUE      113bf8eb63827ea37aeb2dfe730c86d6 start
       Lastupdate:
         Mydblog:
           TIME       1456324631.2144
           VALUE      2016-02-24 15:37:10
       Modealarmorstart:
         Mydblog:
           TIME       1456268402.74847
           VALUE      113bf8eb63827ea37aeb2dfe730c86d6
       Modechanged:
         Mydblog:
           TIME       1456268402.74847
           VALUE      113bf8eb63827ea37aeb2dfe730c86d6
       Modeend:
         Mydblog:
           TIME       1456324631.94966
           VALUE      f6c325fa3e124e58e861b575faead277;737aa85adec1f3140fb47dfecac34f0f;c6dbdbba338350a0cd06d7cd5ab35d04;6f012e49cdd5939ec941dccf571741ca;147c3a1c0453f61e543dd7ae8ee35a74;65fb077386e02b97d4f0e5c58d5bacc5;728ff15869395f3a332f653d2412f251;349ba66903103b54abe630bda82b7728;5fd600c3eaff02a39ca04cff9b4ce9cf;f582797dc008eb43ce28b2d6abcf5edc;eb6d48f4eeed65f8503a8a7933e06512
       Modestart:
         Mydblog:
           TIME       1456268402.74847
           VALUE      113bf8eb63827ea37aeb2dfe730c86d6
       Modestarted:
         Mydblog:
           TIME       1456268402.74847
           VALUE      113bf8eb63827ea37aeb2dfe730c86d6
       Modeupcoming:
         Mydblog:
           TIME       1456324631.94966
           VALUE      9af33f2b76d19c0973b5214b3a2de1bb;df6be729b05acb2449520fd869b6c2aa;274c5933a79fc3a19bcb61b9da27d05a;5163fdf9cfebb6c8b60892e11cb76e03;3b8d284fc7015b21a4dd4f831491ca3c;255ea065be39f2884d7f7bf188eafe2d;c06506ff2fbbd612b534c887380aa545;7155833479f7c4c3f9b5552236da558d;bf8095dc4d20e049fee94fd6f222d2ce;26eb942f8240b41009af85fdcb56daa9;6f457b16d2d45a8a5c4a40c1591c8142;ed19ca166f67097367fb0e709c129fb6;96cab15f4444209fcfa544640960aaf3;65f73efcbf65c4a0978b7bbb7a713a93;065a5ed2216b5a00b3d1f5a1826b262e;9439159d1249d40fd1ef8f4ad83d6d34;144b3b7153a0af1d76aaf8712a2f5bb0;42f1f1bbbbd32a6d476fc8611d835ed6;c47761fb38ee5f82f83fb7f5eb47cb57;41f810d050b8054083cc0a15d719cc10;50790711c80da14c0c5efd1a2ef43f6a;64b783c994fa2ec6a8f4cb042f9702b3;3509578f59a4f639d0c8bf44af6ef602;926bbf0694896f6482925df487c29356;f1d3e4378fcc05dedf0903f78c58992f;fae05746436c12420248e378fd9e3dc9;1f5821c3d9ed657dc312c6ee35902be8;160a6a9729f1279edb78548266866315;69ab05b5b02624a8b6119b69d95af5ff;3d940aa2c61832055ae5924a0751fcc0;c3a1ef0ee46ca27332168ca2f8bf54ee;f7809e25997d3fb21749610beed1f02b;f108b63a08ac799f338fad1deb5b58bf;6c17257084f4916559c4ab0cc7a8ee0b;149ec80be04c127df2397307b40db327;3217d71a23c41f00cc33726d57ed3f27;61530ee479ed8aa7358f118f261b4d83;3fa31acdf573e0ce51740a70d32608e8;2a17d3731262fbc7aee1d37395fb1204;9a2fabf8103a76d511fe34ed723ca1c0;ad57f1981fbc0ab8ad72008813d9c6eb;319676af7fc7c0fa74539a95ba5f6092;e65f3ab32d14da5d0ca7201638b33b81;5d9dde6fd7aead5b176e3ae2913040a3;e8972e51293d65e9dd3dab8893b88e68;76d4aa2294a1c9024708e729db92be00;8263484420f35709fe9a3e5a110c858b;9a5bfa027a0b8228e6099ca34454b7dd;01feade28d3c9763074773e89b90dc81;118501024d0227ba7707ee1441b29420;d252f7a1aab4cb87e205f0e19fecf625;6d78ff859b38b2fec640618b161e439b;2298f34522ab9098a6e5a4ee379217e1;e2b724454650d8bca40eb8455d40e3bc;0f19d4d0cacac5a3da090e36de58c6f1;5524f5c01ffc4e069398e7d7f56ec0e0;846e9518932e1fa3a94751055e31841d;259cb74a3d045a8e7b828e7e8e8f71ce;643cd426546781501d5bdf4bd052d42b;27aa34c843978665ef02c0fc52c90960;a81ddef6bf0f56aa800b50cd0e66749d;c7b6b21e8b998f70a2ddef8008c7a813;81d92a13bfee2a46563eabc208e28093
       Nextupdate:
         Mydblog:
           TIME       1456324631.2144
           VALUE      2016-02-25 01:37:10
       Nextwakeup:
         Mydblog:
           TIME       1456324631.98558
           VALUE      2016-02-25 00:00:00
       Start:
         Mydblog:
           TIME       1456268402.74847
           VALUE      113bf8eb63827ea37aeb2dfe730c86d6
       State:
         Mydblog:
           TIME       1456324631.94966
           VALUE      triggered
   Readings:
     2016-02-10 17:19:41   all             01feade28d3c9763074773e89b90dc81;065a5ed2216b5a00b3d1f5a1826b262e;0f19d4d0cacac5a3da090e36de58c6f1;113bf8eb63827ea37aeb2dfe730c86d6;118501024d0227ba7707ee1441b29420;144b3b7153a0af1d76aaf8712a2f5bb0;149ec80be04c127df2397307b40db327;160a6a9729f1279edb78548266866315;1f5821c3d9ed657dc312c6ee35902be8;2298f34522ab9098a6e5a4ee379217e1;255ea065be39f2884d7f7bf188eafe2d;259cb74a3d045a8e7b828e7e8e8f71ce;26eb942f8240b41009af85fdcb56daa9;274c5933a79fc3a19bcb61b9da27d05a;27aa34c843978665ef02c0fc52c90960;2a17d3731262fbc7aee1d37395fb1204;319676af7fc7c0fa74539a95ba5f6092;3217d71a23c41f00cc33726d57ed3f27;3509578f59a4f639d0c8bf44af6ef602;3b8d284fc7015b21a4dd4f831491ca3c;3d940aa2c61832055ae5924a0751fcc0;3fa31acdf573e0ce51740a70d32608e8;41f810d050b8054083cc0a15d719cc10;42f1f1bbbbd32a6d476fc8611d835ed6;50790711c80da14c0c5efd1a2ef43f6a;5163fdf9cfebb6c8b60892e11cb76e03;5524f5c01ffc4e069398e7d7f56ec0e0;5d9dde6fd7aead5b176e3ae2913040a3;61530ee479ed8aa7358f118f261b4d83;643cd426546781501d5bdf4bd052d42b;64b783c994fa2ec6a8f4cb042f9702b3;65f73efcbf65c4a0978b7bbb7a713a93;65fb077386e02b97d4f0e5c58d5bacc5;69ab05b5b02624a8b6119b69d95af5ff;6c17257084f4916559c4ab0cc7a8ee0b;6d78ff859b38b2fec640618b161e439b;6f457b16d2d45a8a5c4a40c1591c8142;7155833479f7c4c3f9b5552236da558d;76d4aa2294a1c9024708e729db92be00;81d92a13bfee2a46563eabc208e28093;8263484420f35709fe9a3e5a110c858b;846e9518932e1fa3a94751055e31841d;926bbf0694896f6482925df487c29356;9439159d1249d40fd1ef8f4ad83d6d34;96cab15f4444209fcfa544640960aaf3;9a2fabf8103a76d511fe34ed723ca1c0;9a5bfa027a0b8228e6099ca34454b7dd;9af33f2b76d19c0973b5214b3a2de1bb;a81ddef6bf0f56aa800b50cd0e66749d;ad57f1981fbc0ab8ad72008813d9c6eb;bf8095dc4d20e049fee94fd6f222d2ce;c06506ff2fbbd612b534c887380aa545;c3a1ef0ee46ca27332168ca2f8bf54ee;c47761fb38ee5f82f83fb7f5eb47cb57;c7b6b21e8b998f70a2ddef8008c7a813;d252f7a1aab4cb87e205f0e19fecf625;df6be729b05acb2449520fd869b6c2aa;e2b724454650d8bca40eb8455d40e3bc;e65f3ab32d14da5d0ca7201638b33b81;e8972e51293d65e9dd3dab8893b88e68;ed19ca166f67097367fb0e709c129fb6;f108b63a08ac799f338fad1deb5b58bf;f1d3e4378fcc05dedf0903f78c58992f;f582797dc008eb43ce28b2d6abcf5edc;f7809e25997d3fb21749610beed1f02b;fae05746436c12420248e378fd9e3dc9
     2016-02-10 17:19:42   lastCheck       2016-02-10 17:19:40
     2016-02-24 15:37:11   lastUpdate      2016-02-24 15:37:10
     2016-02-10 17:19:42   modeAlarm
     2016-02-24 00:00:01   modeAlarmOrStart 113bf8eb63827ea37aeb2dfe730c86d6
     2016-02-10 17:19:42   modeAlarmed
     2016-02-24 05:37:11   modeChanged
     2016-02-24 15:37:11   modeEnd         f6c325fa3e124e58e861b575faead277;737aa85adec1f3140fb47dfecac34f0f;c6dbdbba338350a0cd06d7cd5ab35d04;6f012e49cdd5939ec941dccf571741ca;147c3a1c0453f61e543dd7ae8ee35a74;65fb077386e02b97d4f0e5c58d5bacc5;728ff15869395f3a332f653d2412f251;349ba66903103b54abe630bda82b7728;5fd600c3eaff02a39ca04cff9b4ce9cf;f582797dc008eb43ce28b2d6abcf5edc;eb6d48f4eeed65f8503a8a7933e06512
     2016-02-18 02:36:27   modeEnded
     2016-02-24 00:00:01   modeStart       113bf8eb63827ea37aeb2dfe730c86d6
     2016-02-24 05:37:11   modeStarted
     2016-02-24 15:37:11   modeUpcoming    9af33f2b76d19c0973b5214b3a2de1bb;df6be729b05acb2449520fd869b6c2aa;274c5933a79fc3a19bcb61b9da27d05a;5163fdf9cfebb6c8b60892e11cb76e03;3b8d284fc7015b21a4dd4f831491ca3c;255ea065be39f2884d7f7bf188eafe2d;c06506ff2fbbd612b534c887380aa545;7155833479f7c4c3f9b5552236da558d;bf8095dc4d20e049fee94fd6f222d2ce;26eb942f8240b41009af85fdcb56daa9;6f457b16d2d45a8a5c4a40c1591c8142;ed19ca166f67097367fb0e709c129fb6;96cab15f4444209fcfa544640960aaf3;65f73efcbf65c4a0978b7bbb7a713a93;065a5ed2216b5a00b3d1f5a1826b262e;9439159d1249d40fd1ef8f4ad83d6d34;144b3b7153a0af1d76aaf8712a2f5bb0;42f1f1bbbbd32a6d476fc8611d835ed6;c47761fb38ee5f82f83fb7f5eb47cb57;41f810d050b8054083cc0a15d719cc10;50790711c80da14c0c5efd1a2ef43f6a;64b783c994fa2ec6a8f4cb042f9702b3;3509578f59a4f639d0c8bf44af6ef602;926bbf0694896f6482925df487c29356;f1d3e4378fcc05dedf0903f78c58992f;fae05746436c12420248e378fd9e3dc9;1f5821c3d9ed657dc312c6ee35902be8;160a6a9729f1279edb78548266866315;69ab05b5b02624a8b6119b69d95af5ff;3d940aa2c61832055ae5924a0751fcc0;c3a1ef0ee46ca27332168ca2f8bf54ee;f7809e25997d3fb21749610beed1f02b;f108b63a08ac799f338fad1deb5b58bf;6c17257084f4916559c4ab0cc7a8ee0b;149ec80be04c127df2397307b40db327;3217d71a23c41f00cc33726d57ed3f27;61530ee479ed8aa7358f118f261b4d83;3fa31acdf573e0ce51740a70d32608e8;2a17d3731262fbc7aee1d37395fb1204;9a2fabf8103a76d511fe34ed723ca1c0;ad57f1981fbc0ab8ad72008813d9c6eb;319676af7fc7c0fa74539a95ba5f6092;e65f3ab32d14da5d0ca7201638b33b81;5d9dde6fd7aead5b176e3ae2913040a3;e8972e51293d65e9dd3dab8893b88e68;76d4aa2294a1c9024708e729db92be00;8263484420f35709fe9a3e5a110c858b;9a5bfa027a0b8228e6099ca34454b7dd;01feade28d3c9763074773e89b90dc81;118501024d0227ba7707ee1441b29420;d252f7a1aab4cb87e205f0e19fecf625;6d78ff859b38b2fec640618b161e439b;2298f34522ab9098a6e5a4ee379217e1;e2b724454650d8bca40eb8455d40e3bc;0f19d4d0cacac5a3da090e36de58c6f1;5524f5c01ffc4e069398e7d7f56ec0e0;846e9518932e1fa3a94751055e31841d;259cb74a3d045a8e7b828e7e8e8f71ce;643cd426546781501d5bdf4bd052d42b;27aa34c843978665ef02c0fc52c90960;a81ddef6bf0f56aa800b50cd0e66749d;c7b6b21e8b998f70a2ddef8008c7a813;81d92a13bfee2a46563eabc208e28093
     2016-02-24 15:37:11   nextUpdate      2016-02-25 01:37:10
     2016-02-24 15:37:11   nextWakeup      2016-02-25 00:00:00
     2016-02-24 15:37:11   state           triggered
     2016-02-10 17:19:41   stateChanged
     2016-02-10 17:19:41   stateDeleted
     2016-02-10 17:19:41   stateNew
     2016-02-10 17:19:41   stateUpdated
Attributes:
   alias      Abfallkalender
   room       Kalender
 


das notify so:
Internals:
   DEF        AbfallA.all:.* {MuelltermineA("$EVTPART1")}
   NAME       AbfallA_Update.not.Update
   NR         233
   NTFY_ORDER 50-AbfallA_Update.not.Update
   REGEXP     AbfallA.all:.*
   STATE      active
   TYPE       notify
   Readings:
     2016-02-21 17:25:54   state           active
Attributes:
   room       Kalender


die sub in der 99myUtils sieht so aus:
sub
MuelltermineA ($)
{
  my ($Ereignis) = @_;
  my @uids=split(/;/,$Ereignis);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtBio = '';
  my $dtYellow = '';
  my $dtRest = '';
  my $dtPapier = '';
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get AbfallA summary $uid",1);
    if ($Kalendertext =~ /Bioabfall/) {
        my $dt = fhem("get AbfallA start $uid",1);
        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 =~ /Gelber Sack/) {
        my $dt = fhem("get AbfallA start $uid",1);
        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 =~ /Restabfall/) {
        my $dt = fhem("get AbfallA start $uid",1);
        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 =~ /Altpapier/) {
        my $dt = fhem("get AbfallA start $uid",1);
        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 = 0; 
 
  if ($dtBio eq '') {
    fhem("set BiomuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set BiomuellIn $dayDiff");
    }
  }
  if ($dtYellow eq '') {
    fhem("set GelbeTonneIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtYellow - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set GelbeTonneIn $dayDiff");
    }
  }
  if ($dtRest eq '') {
    fhem("set RestmuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set RestmuellIn $dayDiff");
    }
  }
  if ($dtPapier eq '') {
    fhem("set PapierIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set PapierIn $dayDiff");
    }
  }
}


Was läuft da jetzt falsch?

Danke
Titel: Antw:Abfallkalender auswerten
Beitrag von: fh168 am 01 März 2016, 21:37:31
Meiner funktioniert auch nicht mehr.. ich glaube seit dem 2016-02-20 02:05:05.
Ich habe am Code gefühlt 2 Jahre nichts gemacht, lief immer wie eine Uhr.
Jetzt wird der Kalender (Abfuhrtage der Mülltonnen) nicht mehr geupdatet. erst mit einem Shutdown restart werden die Tage entsprechend runter gesetzt. Ich hatte erst gedacht, ich hätte mal wieder zuviel gebastelt. Aber wie ich sehe, haben andere User die gleichen Probleme.

LG
/robin

#
#### Google Kalender auswerten
#
sub Abfalltermincheck($$$$$$$){
  my ($text,$art,$check,$uid,$t,$cal,$Kt) = @_;
  my ($dt,@SplitDt,@SplitDate,$eventDate,$daydiff);
#  Log 3, "Abfalltermincheck - $text,$art,$check,$uid,$t,$cal";
  if ($Kt =~ /$text/) {
    $dt = fhem("get $cal start $uid");
    @SplitDt = split(/ /,$dt);
    @SplitDate = split(/\./,$SplitDt[0]);
    $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
    if ($check eq '' || ($eventDate < $check && $eventDate > $t)){
          $check = $eventDate;
          $daydiff = floor(($eventDate - $t) / 60 / 60 / 24 + 1);
          fhem("set $art $daydiff");
        };
    };
    return ($check);
}

sub Abfalltermine($$){
  my ($cal,$Ereignis) = @_;
  my ($Kt);
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my $t  = time;
# Prüfvariablen
  my $dtBio = '';
  my $dtYellow = '';
  my $dtRest = '';
  my $dtGlas = '';
  my $dtPapier = '';
  foreach my $uid (@uids) {
    $Kt = fhem("get $cal summary $uid");
#   Prüfvariable = Abfalltermincheck("Suchtext","Dummyname",Prüfvariable,UID,Zeit,Kalender,Kalendertext)
    $dtPapier = Abfalltermincheck("blau","Papiertonne",$dtPapier,$uid,$t,$cal,$Kt);
    $dtRest   = Abfalltermincheck("grau","Restmuell",$dtRest,$uid,$t,$cal,$Kt);
    $dtYellow   = Abfalltermincheck("gelb","gelberSack",$dtYellow,$uid,$t,$cal,$Kt);
    $dtBio   = Abfalltermincheck("braun","Biomuell",$dtBio,$uid,$t,$cal,$Kt);
  };
}

In Abfall-Update steht das: Abfall:(modeUpcoming|modeAlarmOrStart).* {Abfalltermine($NAME,"$EVENT")}
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 01 März 2016, 21:43:36
Hab auch nichts geändert, aber es scheint änderungen am Kalendermodul gegeben zu haben, die dafür verantwortlich sind.

Hoffe einer kann uns hier weiterhelfen
Titel: Antw:Abfallkalender auswerten
Beitrag von: roadghost am 01 März 2016, 23:09:59
Ich habe eine Lösung "gefunden":

http://forum.fhem.de/index.php/topic,48237.0.html (http://forum.fhem.de/index.php/topic,48237.0.html)

Euer Kalendermodul muss hierzu up-to-Date sein - scheint ja bei euch wie bei mir eh der fall zu sein.

Dieses Modul kann mit in die Updates einbezogen werden:

update add https://raw.githubusercontent.com/uniqueck/fhem-abfall/master/controls_fhemabfall.txt

Die 57xxx.Datei findet Ihr in dem Thread.

Bei mir kommen jetzt wieder aktuelle Readings, zumindest heute, mal sehen ob morgen die heutige "2" für Restmüll auf eine "1" wechselt.

Gruß
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 02 März 2016, 08:46:00
Ich habe hier keine Probleme mit dem normalen Calender-Modul.

stromer on tour
Edit: ich triggere das notify nur auf:

^myCalendar:(modeUpcoming|modeAlarmOrStart).* {Abfalltermine($NAME,"$EVENT")}
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 02 März 2016, 17:37:15
Zitat von: stromer-12 am 02 März 2016, 08:46:00
Ich habe hier keine Probleme mit dem normalen Calender-Modul.

stromer on tour
Edit: ich triggere das notify nur auf:

^myCalendar:(modeUpcoming|modeAlarmOrStart).* {Abfalltermine($NAME,"$EVENT")}

Verstehe ich dich richtig, das der einzige unterschied bei dir im notify besteht und ich mein was so aussieht:
Internals:
   DEF        AbfallA.all:.* {MuelltermineA("$EVTPART1")}
   NAME       AbfallA_Update.not.Update
   NR         233
   NTFY_ORDER 50-AbfallA_Update.not.Update
   REGEXP     AbfallA.all:.*
   STATE      active
   TYPE       notify
   Readings:
     2016-02-21 17:25:54   state           active
Attributes:
   room       Kalender


So abändern müsste?
AbfallA.all:(modeUpcoming|modeAlarmOrStart).* {MuelltermineA("$EVTPART1")}

EDIT
Hab es gerade so versucht, der Kalender bleibt trotzdem triggered, also da passt noch was anderes nicht
Titel: Antw:Abfallkalender auswerten
Beitrag von: roadghost am 03 März 2016, 12:48:39
Hey,

also auch bei meinem Kalender ist der Status immer "triggered" - aber das in dem Thread, welchen ich verlinkt habe, besprochene Modul wertet alle Termine korrekt aus.

Ich, als absoluter FHEM-Anfänger mit 0,1% html-Kenntnissen, glaube, dass der triggered-status nicht das problem darstellt, sondern eher die nicht vorhandene Auswertung der einzelnen Kalendereinträge für:

- modeStart
- mode Started

Meine bisherige Config brachte zwar immer die ganzen modeUpcoming-UID´s hervor, diese wurden aber nicht korrekt ausgewertet. Eine Abfrage mit get Abfall full all brachte Alle Termine korrekt hervor, aber die readings veränderten sich nicht.

Die aktuelle config, mit dem zu 100% gleichen Kalender und N U R dem neuen Modul aus dem Thread funktioniert wunderbar.

Heute war der Tag der Restmüllleerung und der Restmüll zeigt heute früh um 05:55 Uhr 0 an, der Termin lag auf 10:00 - 11:00 Uhr, jetzt zeigt mir FHEM für den Restmüll brav 14 Tage an - genau der nächste Termin für diese Mülltonne.

Gruß
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 03 März 2016, 21:39:22
Hi,
ich hab mir das Abfall Modul mal angesehen und tatsächlich wird das direkt wieder richtig ausgewertet, allerdings müsste ich jetzt meine sub noch irgendwie anpassen, damit meine Dummys für denn Müll Status noch aktualisert werden................

sub
MuelltermineA ($)
{
  my ($Ereignis) = @_;
  my @uids=split(/;/,$Ereignis);
  my (undef,undef,undef,$mday,$mon,$year) = localtime;
  my $t  = timelocal(0,0,0,$mday,$mon,$year);
  my $dtBio = '';
  my $dtYellow = '';
  my $dtRest = '';
  my $dtPapier = '';
  foreach my $uid (@uids) {
    my $Kalendertext = fhem("get AbfallA summary $uid",1);
    if ($Kalendertext =~ /Bioabfall/) {
        my $dt = fhem("get AbfallA start $uid",1);
        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 =~ /Gelber Sack/) {
        my $dt = fhem("get AbfallA start $uid",1);
        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 =~ /Restabfall/) {
        my $dt = fhem("get AbfallA start $uid",1);
        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 =~ /Altpapier/) {
        my $dt = fhem("get AbfallA start $uid",1);
        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 = 0; 
 
  if ($dtBio eq '') {
    fhem("set BiomuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set BiomuellIn $dayDiff");
    }
  }
  if ($dtYellow eq '') {
    fhem("set GelbeTonneIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtYellow - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set GelbeTonneIn $dayDiff");
    }
  }
  if ($dtRest eq '') {
    fhem("set RestmuellIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set RestmuellIn $dayDiff");
    }
  }
  if ($dtPapier eq '') {
    fhem("set PapierIn Keine weiteren Termine");
  }
  else {
    $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24);
    if ($dayDiff >= 0) {
      fhem("set PapierIn $dayDiff");
    }
  }
}
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 03 März 2016, 21:56:24
Das ist meine Abfallauswertung welche immer noch funktioniert bei mir:

version Calendar:
57_Calendar.pm 10885 2016-02-20 10:39:44Z borisneubert

define myCalendar Calendar ical url https://www.google.com/calendar/ical/<xxx>/basic.ics 10800
attr myCalendar hideLaterThan 65d
attr myCalendar hideOlderThan 1d


myutils:
#
#### Google Kalender auswerten
#
sub
Abfalltermincheck($$$$$$$){
  my ($text,$art,$check,$uid,$t,$cal,$Kt) = @_;
  my ($dt,@SplitDt,@SplitDate,$eventDate,$daydiff);
  Log 4, "Abfalltermincheck - $text,$art,$check,$uid,$t,$cal";
#  $Kt = fhem("get $cal summary $uid");
  if ($Kt =~ /$text/) {
    Log 4, "Abfalltermincheck - $text,$Kt";
    $dt = fhem("get $cal start $uid",1);
    @SplitDt = split(/ /,$dt);
    @SplitDate = split(/\./,$SplitDt[0]);
    $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
    if ($check eq '' || ($eventDate < $check && $eventDate > $t)){
          $check = $eventDate;
          $daydiff = floor(($eventDate - $t) / 60 / 60 / 24 + 1);
          fhem("set $art $daydiff");
        };
    };
    return ($check);
}

sub
Abfalltermine($$){
  my ($cal,$Ereignis) = @_;
  Log 4, "Abfalltermine - $cal: $Ereignis";
  my @Ereignisarray = split(/.*:\s/,$Ereignis);
  my $Ereignisteil1 = $Ereignisarray[1];
  my @uids=split(/;/,$Ereignisteil1);
  my ($Kt);
  my $t = time;
# Prüfvariablen
  my $dtBio    = '';
  my $dtYellow = '';
  my $dtRest   = '';
  my $dtGlas   = '';
  my $dtPapier = '';
  foreach my $uid (@uids) {
    $Kt = fhem("get $cal summary $uid",1);
#   Prüfvariable = Abfalltermincheck("Suchtext","Dummyname",Prüfvariable,UID,Zeit,Kalender,Kalendertext)
    $dtPapier = Abfalltermincheck("Blaue Tonne","Papiertonne",$dtPapier,$uid,$t,$cal,$Kt);
    $dtRest   = Abfalltermincheck("Schwarze Tonne","Restmuell",$dtRest,$uid,$t,$cal,$Kt);
    $dtYellow = Abfalltermincheck("Gelber Sack","GelberSack",$dtYellow,$uid,$t,$cal,$Kt);
  };
}


notify:
define Abfall_Update notify ^myCalendar:(modeUpcoming|modeAlarmOrStart).* {Abfalltermine($NAME,"$EVENT")}
Titel: Antw:Abfallkalender auswerten
Beitrag von: Tommy82 am 03 März 2016, 22:10:46
Ist dein state auch triggert?

Hab mein notify mal so abgeändert wie deins aussieht, aber es ändert sich nichts.
Internals:
   DEF        ical file /home/thomas/limbach-hauptstrasse.ics 36000
   NAME       AbfallA
   NR         228
   NTFY_ORDER 50-AbfallA
   STATE      triggered
   TYPE       Calendar
   Helper:
     Dblog:
       Lastupdate:
         Mydblog:
           TIME       1457039275.11344
           VALUE      2016-03-03 22:07:54
       Modeend:
         Mydblog:
           TIME       1457039276.01191
           VALUE      eb6d48f4eeed65f8503a8a7933e06512;147c3a1c0453f61e543dd7ae8ee35a74;5fd600c3eaff02a39ca04cff9b4ce9cf;6f012e49cdd5939ec941dccf571741ca;1f5821c3d9ed657dc312c6ee35902be8;65fb077386e02b97d4f0e5c58d5bacc5;ed19ca166f67097367fb0e709c129fb6;728ff15869395f3a332f653d2412f251;737aa85adec1f3140fb47dfecac34f0f;349ba66903103b54abe630bda82b7728;f582797dc008eb43ce28b2d6abcf5edc;113bf8eb63827ea37aeb2dfe730c86d6;c6dbdbba338350a0cd06d7cd5ab35d04;f6c325fa3e124e58e861b575faead277
       Modeupcoming:
         Mydblog:
           TIME       1457039276.01191
           VALUE      144b3b7153a0af1d76aaf8712a2f5bb0;26eb942f8240b41009af85fdcb56daa9;3fa31acdf573e0ce51740a70d32608e8;274c5933a79fc3a19bcb61b9da27d05a;643cd426546781501d5bdf4bd052d42b;065a5ed2216b5a00b3d1f5a1826b262e;5163fdf9cfebb6c8b60892e11cb76e03;7155833479f7c4c3f9b5552236da558d;f108b63a08ac799f338fad1deb5b58bf;6d78ff859b38b2fec640618b161e439b;5524f5c01ffc4e069398e7d7f56ec0e0;8263484420f35709fe9a3e5a110c858b;9af33f2b76d19c0973b5214b3a2de1bb;ad57f1981fbc0ab8ad72008813d9c6eb;319676af7fc7c0fa74539a95ba5f6092;2a17d3731262fbc7aee1d37395fb1204;64b783c994fa2ec6a8f4cb042f9702b3;118501024d0227ba7707ee1441b29420;61530ee479ed8aa7358f118f261b4d83;fae05746436c12420248e378fd9e3dc9;5d9dde6fd7aead5b176e3ae2913040a3;e65f3ab32d14da5d0ca7201638b33b81;69ab05b5b02624a8b6119b69d95af5ff;a81ddef6bf0f56aa800b50cd0e66749d;c7b6b21e8b998f70a2ddef8008c7a813;3217d71a23c41f00cc33726d57ed3f27;149ec80be04c127df2397307b40db327;0f19d4d0cacac5a3da090e36de58c6f1;259cb74a3d045a8e7b828e7e8e8f71ce;9439159d1249d40fd1ef8f4ad83d6d34;160a6a9729f1279edb78548266866315;c3a1ef0ee46ca27332168ca2f8bf54ee;c47761fb38ee5f82f83fb7f5eb47cb57;2298f34522ab9098a6e5a4ee379217e1;9a5bfa027a0b8228e6099ca34454b7dd;6f457b16d2d45a8a5c4a40c1591c8142;f1d3e4378fcc05dedf0903f78c58992f;3509578f59a4f639d0c8bf44af6ef602;42f1f1bbbbd32a6d476fc8611d835ed6;3d940aa2c61832055ae5924a0751fcc0;df6be729b05acb2449520fd869b6c2aa;96cab15f4444209fcfa544640960aaf3;41f810d050b8054083cc0a15d719cc10;81d92a13bfee2a46563eabc208e28093;27aa34c843978665ef02c0fc52c90960;6c17257084f4916559c4ab0cc7a8ee0b;50790711c80da14c0c5efd1a2ef43f6a;65f73efcbf65c4a0978b7bbb7a713a93;846e9518932e1fa3a94751055e31841d;bf8095dc4d20e049fee94fd6f222d2ce;926bbf0694896f6482925df487c29356;01feade28d3c9763074773e89b90dc81;d252f7a1aab4cb87e205f0e19fecf625;e8972e51293d65e9dd3dab8893b88e68;f7809e25997d3fb21749610beed1f02b;255ea065be39f2884d7f7bf188eafe2d;c06506ff2fbbd612b534c887380aa545;e2b724454650d8bca40eb8455d40e3bc;3b8d284fc7015b21a4dd4f831491ca3c;9a2fabf8103a76d511fe34ed723ca1c0;76d4aa2294a1c9024708e729db92be00
       Nextupdate:
         Mydblog:
           TIME       1457039275.11344
           VALUE      2016-03-04 08:07:54
       Nextwakeup:
         Mydblog:
           TIME       1457039276.04946
           VALUE      2016-03-04 08:07:54
       State:
         Mydblog:
           TIME       1457039276.01191
           VALUE      triggered
   Readings:
     2016-02-10 17:19:41   all             01feade28d3c9763074773e89b90dc81;065a5ed2216b5a00b3d1f5a1826b262e;0f19d4d0cacac5a3da090e36de58c6f1;113bf8eb63827ea37aeb2dfe730c86d6;118501024d0227ba7707ee1441b29420;144b3b7153a0af1d76aaf8712a2f5bb0;149ec80be04c127df2397307b40db327;160a6a9729f1279edb78548266866315;1f5821c3d9ed657dc312c6ee35902be8;2298f34522ab9098a6e5a4ee379217e1;255ea065be39f2884d7f7bf188eafe2d;259cb74a3d045a8e7b828e7e8e8f71ce;26eb942f8240b41009af85fdcb56daa9;274c5933a79fc3a19bcb61b9da27d05a;27aa34c843978665ef02c0fc52c90960;2a17d3731262fbc7aee1d37395fb1204;319676af7fc7c0fa74539a95ba5f6092;3217d71a23c41f00cc33726d57ed3f27;3509578f59a4f639d0c8bf44af6ef602;3b8d284fc7015b21a4dd4f831491ca3c;3d940aa2c61832055ae5924a0751fcc0;3fa31acdf573e0ce51740a70d32608e8;41f810d050b8054083cc0a15d719cc10;42f1f1bbbbd32a6d476fc8611d835ed6;50790711c80da14c0c5efd1a2ef43f6a;5163fdf9cfebb6c8b60892e11cb76e03;5524f5c01ffc4e069398e7d7f56ec0e0;5d9dde6fd7aead5b176e3ae2913040a3;61530ee479ed8aa7358f118f261b4d83;643cd426546781501d5bdf4bd052d42b;64b783c994fa2ec6a8f4cb042f9702b3;65f73efcbf65c4a0978b7bbb7a713a93;65fb077386e02b97d4f0e5c58d5bacc5;69ab05b5b02624a8b6119b69d95af5ff;6c17257084f4916559c4ab0cc7a8ee0b;6d78ff859b38b2fec640618b161e439b;6f457b16d2d45a8a5c4a40c1591c8142;7155833479f7c4c3f9b5552236da558d;76d4aa2294a1c9024708e729db92be00;81d92a13bfee2a46563eabc208e28093;8263484420f35709fe9a3e5a110c858b;846e9518932e1fa3a94751055e31841d;926bbf0694896f6482925df487c29356;9439159d1249d40fd1ef8f4ad83d6d34;96cab15f4444209fcfa544640960aaf3;9a2fabf8103a76d511fe34ed723ca1c0;9a5bfa027a0b8228e6099ca34454b7dd;9af33f2b76d19c0973b5214b3a2de1bb;a81ddef6bf0f56aa800b50cd0e66749d;ad57f1981fbc0ab8ad72008813d9c6eb;bf8095dc4d20e049fee94fd6f222d2ce;c06506ff2fbbd612b534c887380aa545;c3a1ef0ee46ca27332168ca2f8bf54ee;c47761fb38ee5f82f83fb7f5eb47cb57;c7b6b21e8b998f70a2ddef8008c7a813;d252f7a1aab4cb87e205f0e19fecf625;df6be729b05acb2449520fd869b6c2aa;e2b724454650d8bca40eb8455d40e3bc;e65f3ab32d14da5d0ca7201638b33b81;e8972e51293d65e9dd3dab8893b88e68;ed19ca166f67097367fb0e709c129fb6;f108b63a08ac799f338fad1deb5b58bf;f1d3e4378fcc05dedf0903f78c58992f;f582797dc008eb43ce28b2d6abcf5edc;f7809e25997d3fb21749610beed1f02b;fae05746436c12420248e378fd9e3dc9
     2016-02-10 17:19:42   lastCheck       2016-02-10 17:19:40
     2016-03-03 22:07:55   lastUpdate      2016-03-03 22:07:54
     2016-02-10 17:19:42   modeAlarm
     2016-03-03 00:00:00   modeAlarmOrStart
     2016-02-10 17:19:42   modeAlarmed
     2016-03-03 03:37:54   modeChanged
     2016-03-03 22:07:55   modeEnd         eb6d48f4eeed65f8503a8a7933e06512;147c3a1c0453f61e543dd7ae8ee35a74;5fd600c3eaff02a39ca04cff9b4ce9cf;6f012e49cdd5939ec941dccf571741ca;1f5821c3d9ed657dc312c6ee35902be8;65fb077386e02b97d4f0e5c58d5bacc5;ed19ca166f67097367fb0e709c129fb6;728ff15869395f3a332f653d2412f251;737aa85adec1f3140fb47dfecac34f0f;349ba66903103b54abe630bda82b7728;f582797dc008eb43ce28b2d6abcf5edc;113bf8eb63827ea37aeb2dfe730c86d6;c6dbdbba338350a0cd06d7cd5ab35d04;f6c325fa3e124e58e861b575faead277
     2016-03-03 03:37:54   modeEnded
     2016-03-03 00:00:00   modeStart
     2016-03-02 07:26:47   modeStarted
     2016-03-03 22:07:55   modeUpcoming    144b3b7153a0af1d76aaf8712a2f5bb0;26eb942f8240b41009af85fdcb56daa9;3fa31acdf573e0ce51740a70d32608e8;274c5933a79fc3a19bcb61b9da27d05a;643cd426546781501d5bdf4bd052d42b;065a5ed2216b5a00b3d1f5a1826b262e;5163fdf9cfebb6c8b60892e11cb76e03;7155833479f7c4c3f9b5552236da558d;f108b63a08ac799f338fad1deb5b58bf;6d78ff859b38b2fec640618b161e439b;5524f5c01ffc4e069398e7d7f56ec0e0;8263484420f35709fe9a3e5a110c858b;9af33f2b76d19c0973b5214b3a2de1bb;ad57f1981fbc0ab8ad72008813d9c6eb;319676af7fc7c0fa74539a95ba5f6092;2a17d3731262fbc7aee1d37395fb1204;64b783c994fa2ec6a8f4cb042f9702b3;118501024d0227ba7707ee1441b29420;61530ee479ed8aa7358f118f261b4d83;fae05746436c12420248e378fd9e3dc9;5d9dde6fd7aead5b176e3ae2913040a3;e65f3ab32d14da5d0ca7201638b33b81;69ab05b5b02624a8b6119b69d95af5ff;a81ddef6bf0f56aa800b50cd0e66749d;c7b6b21e8b998f70a2ddef8008c7a813;3217d71a23c41f00cc33726d57ed3f27;149ec80be04c127df2397307b40db327;0f19d4d0cacac5a3da090e36de58c6f1;259cb74a3d045a8e7b828e7e8e8f71ce;9439159d1249d40fd1ef8f4ad83d6d34;160a6a9729f1279edb78548266866315;c3a1ef0ee46ca27332168ca2f8bf54ee;c47761fb38ee5f82f83fb7f5eb47cb57;2298f34522ab9098a6e5a4ee379217e1;9a5bfa027a0b8228e6099ca34454b7dd;6f457b16d2d45a8a5c4a40c1591c8142;f1d3e4378fcc05dedf0903f78c58992f;3509578f59a4f639d0c8bf44af6ef602;42f1f1bbbbd32a6d476fc8611d835ed6;3d940aa2c61832055ae5924a0751fcc0;df6be729b05acb2449520fd869b6c2aa;96cab15f4444209fcfa544640960aaf3;41f810d050b8054083cc0a15d719cc10;81d92a13bfee2a46563eabc208e28093;27aa34c843978665ef02c0fc52c90960;6c17257084f4916559c4ab0cc7a8ee0b;50790711c80da14c0c5efd1a2ef43f6a;65f73efcbf65c4a0978b7bbb7a713a93;846e9518932e1fa3a94751055e31841d;bf8095dc4d20e049fee94fd6f222d2ce;926bbf0694896f6482925df487c29356;01feade28d3c9763074773e89b90dc81;d252f7a1aab4cb87e205f0e19fecf625;e8972e51293d65e9dd3dab8893b88e68;f7809e25997d3fb21749610beed1f02b;255ea065be39f2884d7f7bf188eafe2d;c06506ff2fbbd612b534c887380aa545;e2b724454650d8bca40eb8455d40e3bc;3b8d284fc7015b21a4dd4f831491ca3c;9a2fabf8103a76d511fe34ed723ca1c0;76d4aa2294a1c9024708e729db92be00
     2016-03-03 22:07:55   nextUpdate      2016-03-04 08:07:54
     2016-03-03 22:07:56   nextWakeup      2016-03-04 08:07:54
     2016-03-03 22:07:55   state           triggered
     2016-02-10 17:19:41   stateChanged
     2016-02-10 17:19:41   stateDeleted
     2016-02-10 17:19:41   stateNew
     2016-02-10 17:19:41   stateUpdated
Attributes:
   alias      Abfallkalender
   hideLaterThan 65d
   hideOlderThan 1d
   room       Kalender


Internals:
   DEF        AbfallA.all:(modeUpcoming|modeAlarmOrStart).* {MuelltermineA($NAME,"$EVENT")}

   NAME       AbfallA_Update.not.Update
   NR         233
   NTFY_ORDER 50-AbfallA_Update.not.Update
   REGEXP     AbfallA.all:(modeUpcoming|modeAlarmOrStart).*
   STATE      active
   TYPE       notify
   Helper:
     Dblog:
       State:
         Mydblog:
           TIME       1457039258.62571
           VALUE      active
   Readings:
     2016-03-03 22:07:38   state           active
Attributes:
   room       Kalender


Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 03 März 2016, 22:56:48
Mein state steht auch auf triggered.
Titel: Antw:Abfallkalender auswerten
Beitrag von: kvo1 am 03 März 2016, 23:56:49
Hallo,

auch bei mir sind alle Kalender "triggered" ! , das ist wohl auch richtig so!
Habe die gleiche Version wie stromer ... 57_Calendar.pm         10885 2016-02-20 10:39:44Z borisneubert

@stromer
was genau machen den die beiden Funktionen in der myutils bei Dir ?

Im fhem selbst nutze ich                          57_CALVIEW.pm          10929 2016-02-24 17:51:42Z chris1284
und darauf eine readingsgroup, welche ich per at aktualisiere (braucht man aber wohl nicht mehr) !

Für den Müllkalender (im FTUI) habe ich das Module    57_ABFALL.pm           11019 2016-02-16 01:55:00Z uniqueck

klaus
Titel: Antw:Abfallkalender auswerten
Beitrag von: stromer-12 am 04 März 2016, 05:57:31


Zitat von: kvo1 am 03 März 2016, 23:56:49
@stromer
was genau machen den die beiden Funktionen in der myutils bei Dir ?

Sie schreiben die verbleibenden Resttage in dummys.

stromer on tour

Titel: Antw:Abfallkalender auswerten
Beitrag von: en-trust am 30 März 2016, 16:31:37
In meinen Readings ist für meine ics Datei nur das modEnd und modUpcoming gefüllt.
Da steht dann sowas wie...
HMBD20167oberhausende;BIO201623oberhausende;PAPIER20164oberhausende;PAPIER20166oberhausende;PAPIER201612oberhausende;BIO201614oberhausende;BIO201617oberhausende;BIO201624oberhausende

drin. Kann mir jemand einen Tipp geben wie ist das für die Anzahl der tage auslesen soll bzw im Web dann gezeigt bekomme ? Bin noch recht neu hier auf dem Gebiet unterwegs.

danke.
Titel: Antw:Abfallkalender auswerten
Beitrag von: Devender am 31 März 2016, 09:21:38
Löst vielleicht dein Problem:

https://forum.fhem.de/index.php/topic,48237.0.html

Das Modul von uniqcheck läuft wirklich super  :D
Probier doch mal, ob deine ics Datei damit funktioniert. So kannst du vielleicht Probleme an deinem Code ausschließen
Titel: Antw:Abfallkalender auswerten
Beitrag von: ToniASA am 02 September 2016, 01:29:05
Hallo liebe Gemeinde,

ich habe dieses Thema hier seit Tagen am Testen und ziehe mir jedes Textschnippsel raus zum testen und bei mur tut sich da einfach nix.
Ist jemand so freundlich, bei dem es funktioniert, es so zu beschreiben, damit es auch Anfänger übernehmen können?

Es wäre echt super klasse...

bedanke mich im voraus und wünsche eine tolle erholsame Nacht.

herzlichen Gruß
Toni
Titel: Antw:Abfallkalender auswerten
Beitrag von: Dr. Boris Neubert am 02 September 2016, 18:29:45
Hallo ToniASA,

Zitat von: ToniASA am 02 September 2016, 01:29:05
ich habe dieses Thema hier seit Tagen am Testen und ziehe mir jedes Textschnippsel raus zum testen und bei mur tut sich da einfach nix.
Ist jemand so freundlich, bei dem es funktioniert, es so zu beschreiben, damit es auch Anfänger übernehmen können?

Es wäre echt super klasse...


bitte fange für ein neues Problem ein neues Thema an. Und dann gib uns bitte soviele Informationen wie nötig sind, damit wir nicht raten müssen, ob Du die Textschnippsel auf Deinem Toaster installieren wolltest...  ;)

Viele Grüße
Boris