Abfallkalender auswerten

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

Vorheriges Thema - Nächstes Thema

RoBra81

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

RoBra81

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

Cybers

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
FHEM 6.2 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

RoBra81

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

Tommy82

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

RoBra81

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

Tommy82

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

RoBra81

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)

Tommy82

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

Tommy82

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

stromer-12

du muss überall wo

fhem("get AbfallA XXXXXXX $uid");

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

fhem("get AbfallA XXXXXXX $uid",1);
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Tommy82

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

stromer-12

Ist dir in Zeile 236 eventuell ein Fehler unterlaufen?
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Tommy82

236 sieht so aus:
my $Kalendertext = fhem("get AbfallA summary $uid,1");
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

RoBra81

#149
Das ,1 muss nach dem " stehen.