Autor Thema: Abfallkalender auswerten  (Gelesen 100466 mal)

Offline Jack-Luck

  • Jr. Member
  • **
  • Beiträge: 51
Antw:Abfallkalender auswerten
« Antwort #195 am: 04 Januar 2016, 20:12:50 »
danke dir, an DOIF hab ich noch garnicht gedacht. Scheint auch zu funktionieren. :)

Offline Nemo0815

  • Full Member
  • ***
  • Beiträge: 133
Antw:Abfallkalender auswerten
« Antwort #196 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.

Offline aloz77

  • Sr. Member
  • ****
  • Beiträge: 515
Antw:Abfallkalender auswerten
« Antwort #197 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.

Offline Hans Franz

  • Sr. Member
  • ****
  • Beiträge: 547
Antw:Abfallkalender auswerten
« Antwort #198 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
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Offline aloz77

  • Sr. Member
  • ****
  • Beiträge: 515
Antw:Abfallkalender auswerten
« Antwort #199 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?

Offline aloz77

  • Sr. Member
  • ****
  • Beiträge: 515
Antw:Abfallkalender auswerten
« Antwort #200 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?

Offline kvo1

  • Hero Member
  • *****
  • Beiträge: 1475
  • FHEMonaut
Antw:Abfallkalender auswerten
« Antwort #201 am: 09 Januar 2016, 13:29:41 »
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
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

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4985
  • Are we just self-replicating DNA?
Antw:Abfallkalender auswerten
« Antwort #202 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

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

Offline Nemo0815

  • Full Member
  • ***
  • Beiträge: 133
Antw:Abfallkalender auswerten
« Antwort #203 am: 13 Januar 2016, 09:46:22 »
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...

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4985
  • Are we just self-replicating DNA?
Antw:Abfallkalender auswerten
« Antwort #204 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
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline Nemo0815

  • Full Member
  • ***
  • Beiträge: 133
Antw:Abfallkalender auswerten
« Antwort #205 am: 14 Januar 2016, 10:56:30 »
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.
« Letzte Änderung: 14 Januar 2016, 17:44:02 von Nemo0815 »

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4985
  • Are we just self-replicating DNA?
Antw:Abfallkalender auswerten
« Antwort #206 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

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

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

Offline Nemo0815

  • Full Member
  • ***
  • Beiträge: 133
Antw:Abfallkalender auswerten
« Antwort #207 am: 16 Januar 2016, 23:54:58 »
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

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! :)

Offline roadghost

  • Full Member
  • ***
  • Beiträge: 161
Antw:Abfallkalender auswerten
« Antwort #208 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ß



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");
  }
  }
}

NUC / Ubuntu 18.04 / FHEM div. Tasmota-Steckdosen,HMCFGUSBII für 9x HM-CC-RT-DN 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, Z-Wave smartPlugs über UZB1
Danalock V3 BTZE 2xIP-CAM, Sonnenbatterie + PV + Wallbox Unifi-AP´s + Controller auf weiterem NUC

Offline Aim23

  • New Member
  • *
  • Beiträge: 24
Antw:Abfallkalender auswerten
« Antwort #209 am: 29 Februar 2016, 11:00:58 »
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?

 

decade-submarginal