Abfallkalender auswerten

Begonnen von raspklaus, 17 Juni 2014, 17:45:34

Vorheriges Thema - Nächstes Thema

xsasx

Der Müll im Kalender an sich (google Kalender) ist auf 7:00 datiert.

xsasx

Niemand ne Lösung für nen Notify zu ner bestimmten Uhrzeit ?

xxsteffenxx

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
Raspberry Pi3 mit Jessie lite, 4x Max Thermostat 1x, Fensterkontakt an Cube, Philips Hue für Hue Iris, 433 mhz Sender für Funksteckdosen, AMAD mit S4-Active und Galaxy Tab2 10.1,nanoCUL 868, Homematic Wandtaster. TelegramBot

Tommy82

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
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

xxsteffenxx

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?
Raspberry Pi3 mit Jessie lite, 4x Max Thermostat 1x, Fensterkontakt an Cube, Philips Hue für Hue Iris, 433 mhz Sender für Funksteckdosen, AMAD mit S4-Active und Galaxy Tab2 10.1,nanoCUL 868, Homematic Wandtaster. TelegramBot

Doublefant

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.

kvo1

Hallo Aim,
danke für die gute Beschreibung auch meinerseits, mal sehen ob ich da
für mich noch was optimieren kann !
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

ulli

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

RoBra81

Hallo,

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

        Log(1, ...


beginnen löschen oder auskommentieren...

Ronny

ulli

Leider nicht. Die Einträge werden z.B. von folgender Zeile ausgelöst:

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

ulli

Habe eine Lösung gefunden.

--> my $Kalendertext = fhem("get AbfallKalender summary $uid",1);

Jack-Luck

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

RoBra81

Guten Abend,

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

Ronny

Jack-Luck

#193
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

RoBra81