Muellkalender Übergabe in FHEM

Begonnen von wuschelino22, 27 Februar 2016, 20:22:48

Vorheriges Thema - Nächstes Thema

wuschelino22

Hallo zusammen, ich bin immer noch im Kampf mit meinem Müllkalender und komme einfach nicht mehr weiter. Vielleicht kann mir jemand helfen:-)
Ich habe bei Google einen Onlinekalender angelegt aus welchem ich meine Mülltermine auslese diese klappt auch soweit. Nur leider stimmt etwas bei der Übergabe der Daten in Fhem nicht:-(

In meinem Logfile werden die Daten korregt angezeigt:
siehe Anhang:-)

In meinem Muellalertdummy ebenso.
siehe Anhang

Nur auf meiner eigentlichen Abfall seite auf der die Daten auch auf mein Tablet UI übetragen werden nicht

siehe ANhang

Hier noch ein Einblick in meine Gelbetonne darin sieht man das der Eintrag zuletzt gestern um 10:14 Uhr aktualisiert wurde, seitdem nicht mehr.
siehe Anhang

Anbei noch meine fhem.cfg


#MuellKalender
define Abfall Calendar ical url https://calendar.google.com/......................basic.ics 600
attr Abfall group Abfall
attr Abfall room Status

define Abfall_Update notify Abfall:(modeUpcoming|modeAlarmOrStart).* {Abfalltermine("$EVENT")}
attr Abfall_Update group Abfall
attr Abfall_Update room Status
define MuellterminDummy dummy

define Papiertonne dummy
attr Papiertonne event-on-change-reading state,STATE
attr Papiertonne group Abfall
attr Papiertonne room Status

define Restmuell dummy
attr Restmuell event-on-change-reading state,STATE
attr Restmuell group Abfall
attr Restmuell room Status

define Gelbetonne dummy
attr Gelbetonne event-on-change-reading state,STATE
attr Gelbetonne group Abfall
attr Gelbetonne room Status

define Muellalert dummy
attr Muellalert event-on-change-reading state
attr Muellalert group Abfall
attr Muellalert room Status

define at_Muellalert at *00:20:00 {if(Value("Papiertonne") eq "1" || Value("Restmuell") eq "1" || Value("Gelbetonne") eq "1") {fhem("set Muellalert on")} else { fhem("set Muellalert off")}}
attr at_Muellalert group Abfall
attr at_Muellalert room Status

define Abfall_at at *00:00:30 set Abfall update
attr Abfall_at group Abfall
attr Abfall_at room Status


Und meine 99_myUtils

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 $dtGelbe = '';
  my $dtRest = '';
 
   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 =~ /Gelbetonne/) {
        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 ($dtGelbe eq '' || ($eventDate < $dtGelbe && $eventDate > $t))
        {
          $dtGelbe  = $eventDate;
          Log(3, $dtGelbe);
        }
    };
    if ($Kalendertext =~ /Restmuell/) {
        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;
          Log(3, $dtRest);
        }
    };

   
   
  my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Papiertonne $dayDiff");
  }
  my $dayDiff = floor(($dtGelbe - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Gelbetonne $dayDiff");
  }
  my $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
  if ($dayDiff >= 0) {
    fhem("set Restmuell $dayDiff");
  }

  }
}


Vielen Dank schonmal, wenn ihr noch was braucht einfach melden. Danke!

Devender

Hi!

Kennst du schon das Modul von uniqueck?
hier:   http://forum.fhem.de/index.php/topic,48237.0.html

Ich benutze es selbst seit ein paar Wochen. Einrichtung war kinderleicht.
Da ich bei meiner Version aus myUtils immer mit falschen Terminen, keine Termine, keine Aktualisieren etc zu kämpfen hatte habe ich es nun auch deaktiviert und nutze das Modul von uniqueck.
Ich fülle damit meine Dummys wie vorher bei der eigenen Lösung auch und Überwache die Abholung mit einem DOIF. Sobald das Reading aus dem Modul auf 1 steht werde ich per Mail und Sonos Sprachausgabe daran erinnert meine Tonne raus zu stellen.

Grüße,
Dirk
FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul