[gelöst] Wie die Tage jetzt ohne Komma ?

Begonnen von TomLee, 24 August 2019, 15:31:52

Vorheriges Thema - Nächstes Thema

TomLee

ZitatMal ganz nebenbei: Der Calendar erzeugt selbst Events, also Du kannst einen Termin eintragen und mit dem entsprechenden notify wird exakt zu diesem Termin (oder einen daraus erzeugten Alarm) getriggert.

Nochmal darüber geschlafen ist mir heute klar das mein Vorgehen umständlich ist und ja auch ein zusätzliches (das AT) benötigt. Mit einem kurzen notify auf das Event (aber doch mit kurzer Verzögerung ? bis der Kalender aktualisiert ist) muss man scheinbar leben und gut ist.

Gruß

Thomas

Otto123

#31
Hallo Thomas,

in meinem Kopf war da noch so eine Idee, jetzt habe ich sie mal ausformuliert:
Zwei Zeilen für den AbfallKalender:

  • onCreateEvent erzeugt einen Alarm vorm eigentlichen Termin. Meine Abfalltermine sind Ganztages, im Beispiel erzeugt er einen Event zusätzlichen Alarmevent 12:00 Uhr am Vortag
  • zwei (oder mehr) userReadings die bei jedem trigger des Kalenders (also auch beim Alarm) aktualisiert werden
    - nextWasteDays: Anzahl Tage bis zur Leerung
    - Tonne: Type der nächsten Abholung
Edit: Formel korrigiert, siehe diesen Beitrag.
attr AbfallKalender onCreateEvent { $e->{alarm}= $e->{start}-43200 }
attr AbfallKalender userReadings nextWasteDays {int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1') + 86399 - time)/86400)}, \
     Tonne {fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1')}

Kein Dummy, kein at, kein notify zusätzlich :)

Hoffentlich habe ich nichts übersehen, hab es jetzt noch nicht über Tage getestet.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

ZitatHoffentlich habe ich nichts übersehen, hab es jetzt noch nicht über Tage getestet.

Völlig Schnurz ob das onCreateEvent wirklich funzt (muss ja, wenn du es schon schreibst, werde es testen),  du beantwortest mir mit dem zusätzlichen Alarm eine Frage die mir seit Tagen (unbewusst) durch den Kopf geht. DANKE.

Kein zusätzliches Device ist voll und ganz erfüllt, ein userReadings stört mich grundsätzlich auch nicht, die Aussage eines  :P Users hier aus dem Forum generell ohne userReadings auszukommen beschäftigt mich jetzt erst recht weiterhin  ???
Oder bleibt in dem Falle dann wirklich nur notify und die Funktion in eine MyUtils.pm auszulagern ?

Gruß

Thomas

Otto123

Zitat von: TomLee am 10 September 2019, 21:58:11
du beantwortest mir mit dem zusätzlichen Alarm eine Frage die mir seit Tagen (unbewusst) durch den Kopf geht. DANKE.
Hier meine Notiz und Beispiel dazu.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Otto123

#34
Ich muss meine Formel noch mal revidieren. Die Idee erst int() zu machen und dann einen ganzen Tag dazu zu zählen ist nicht richtig. Dabei passiert folgendes:
Termin Datum nochTage
13       11       2
13       12       1
13       13       1 <- falsch hier müsste 0 kommen!

das liegt daran, dass int(+0.irgendwas) und int(-0.irgendwas) jeweils null ergibt! Mann muss den Tag also vor int dazu zählen. Damit das Ganze bei Ganztages Terminen auch schon 00:00:00 und nicht erst 00:00:01 funktioniert würde ich 86399 (sec) dazu addieren.
Also Tage bis zum nächsten Termin:
{int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400)}

Wichtig! zwischen dem minus und time muss ein Leerzeichen, wenn man -time schreibt bekommt man diesen Fehler:
Zitat2019.09.12 13:37:09 1: PERL WARNING: Ambiguous use of -time resolved as -&time() at (eval 1919) line 1.
2019.09.12 13:37:09 3: eval: {int((fhem('get AbfallKalender events format:custom="$t1" limit:from=0,count=1')+86399-time)/86400)}
Um das Logging des get Befehls zu unterdrücken habe ich noch die ,1 eingefügt -> fhem('get Befehl',1)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

ZitatTermin Datum nochTage
13       11       1
13       12       1
13       13       1 <- falsch hier müsste 0 kommen!

Bei mir war heute Abholungstag und vor drei Tagen stand bei mir eine 1 keine 2. Hab mich aber, im Gegensatz zu dir,  nicht weiter mit beschäftigt.

TomLee

#36
ZitatMeine Abfalltermine sind Ganztages ...

Was heißt das genau, in $T1 steht bei dir 00:00 und in $T2 auch, $D also 24h ?
Hast dir dazu manuell den Kalender angepasst oder bekommst den so vom VerEntsorger ?

Otto123

Zitat von: TomLee am 11 September 2019, 23:10:30
Was heißt das genau, in $T1 steht bei dir 00:00 und in $T2 auch, $D also 24h ?
So ist es.
Der Kalender meines Versorgers ist schön zum anschauen, die Termine darin sind aus meiner Sicht unbrauchbar.
3 Tonnen sind 3 Serientermine und 3-5 Terminverschiebungen im Jahr. Das dauert wenige Minuten am Jahresende. Und kostet keine grauen Haare wenn beim Versorger die Applikation oder der Praktikant für Webdesign wechselt. Das man nicht einfach die Uhr stellt sondern auch die richtige Zeitzone braucht haben ja auch nicht wirklich alle verstanden.
;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Das mit der Tonne hab ich mit einer Funktion in einer myUtils.pm umgesetzt, mit einem anderen Kalender spiel ich aber mit deinem letzten userReadings-Beispiel und da fällt auf das es im Log genauso viele get-Abfragen wie Events beim update gibt, das ja normal bei einem userReadings.
Gabs deswegen den Vorschlag das Logging des get Befehls zu unterdrücken (das mans nicht sieht ;D) oder nimmst du mit event-on-change-reading oder sonstwie noch Einfluss darauf das der get Befehl nur einmal ausgeführt wird. Es gibt insgesamt 7 Events bei einem update.

Gruß

Thomas

Otto123

Hallo Thomas,

event-on-change-reading habe ich im Kalender nicht gesetzt. Wenn es einmal funktioniert, unterdrücke ich dann immer das logging der get Befehle. Das ist übrigens nicht Calendar Device spezifisch.

Du kannst beim userReadings ja auch noch einen trigger setzen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

#40
Hallo Otto,

mir ist jetzt aufgefallen das nach jedem shutdown restart der Kalender erstmal nicht gelesen werden kann:

2019.10.20 12:36:48 0: Featurelevel: 5.9
2019.10.20 12:36:48 0: Server started with 200 defined entities (fhem.pl:20318/2019-10-06 perl:5.024001 os:linux user:fhem pid:32456)
...
2019.10.20 12:37:07 1: Calendar Google_Foodkalender: retrieval failed with error message <hidden>: Can't connect(2) to https://calendar.google.com:443:  SSL connect attempt failed
2019.10.20 12:37:07 1: Calendar Google_Foodkalender: retrieved no or empty data
2019.10.20 12:37:07 1: Calendar Google_Abfallkalender: retrieval failed with error message <hidden>: Can't connect(2) to https://calendar.google.com:443:  SSL connect attempt failed


Daraus resultieren etliche Meldungen im Log:

2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 276) line 2.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 276) line 4.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 277) line 2.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 277) line 4.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $result in string at (eval 277) line 5.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:37:07 1: Calendar Google_Abfallkalender: retrieved no or empty data
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 278) line 2.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 278) line 4.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 279) line 2.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 279) line 4.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $result in string at (eval 279) line 5.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 280) line 2.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 280) line 4.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 281) line 2.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 281) line 4.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $result in string at (eval 281) line 5.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 282) line 2.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 282) line 4.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 283) line 2.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 283) line 4.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:37:07 1: PERL WARNING: Use of uninitialized value $result in string at (eval 283) line 5.
2019.10.20 12:37:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}


Nach einem manuellen set Google_Abfallkalender update nach etwa 4 Minuten wieder:

2019.10.20 12:41:06 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 1970) line 2.
2019.10.20 12:41:06 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:41:06 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 1970) line 4.
2019.10.20 12:41:06 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:41:06 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 1971) line 2.
2019.10.20 12:41:06 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:41:06 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 1971) line 4.
2019.10.20 12:41:06 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:41:06 1: PERL WARNING: Use of uninitialized value $result in string at (eval 1971) line 5.
2019.10.20 12:41:06 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:41:07 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 1974) line 2.
2019.10.20 12:41:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:41:07 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 1974) line 4.
2019.10.20 12:41:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
return $result}
2019.10.20 12:41:07 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 1975) line 2.
2019.10.20 12:41:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:41:07 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 1975) line 4.
2019.10.20 12:41:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}
2019.10.20 12:41:07 1: PERL WARNING: Use of uninitialized value $result in string at (eval 1975) line 5.
2019.10.20 12:41:07 3: eval: {my $var1 =fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $var2 =int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time) / 86400);
my $regex = qr/Abfuhrtermin|in|Buxtehude| am \d{1,2}\.\d{1,2}\.\d{4}/p;
my $result = $var1 =~ s/$regex//rg;
my $nwd = "$result"."_"."$var2";
return $nwd;}


Erst wenn ich ein set Google_Abfallkalender reload ausführe (oder scheinbar irgendwann von selbst, nach einem shutdown restart) verbindet sich das Modul mit Google und die Meldungen bleiben aus.

Hast du eventuell eine Erklärung dafür ?

Gruß

Thomas

Otto123

Hallo Thomas,

also solche Meldungen, dass der Googlekalender nicht geladen werden kann beim Start hatte ich noch nie. Und eigentlich habe ich in mehreren Instanzen zum Teil mehrere Kalender eingebunden, habe ich  gerade kontrolliert.
Die Meldung klingt ja so, als ob er nach dem Start Probleme hat ins Internet zu kommen/ den Namen aufzulösen?

Die Meldungen das die userReadings nach dem Start beim ersten mal nicht laufen, fallen mir jetzt auch auf. Das muss ich mal untersuchen, ist aber bei mir einmal und dann nicht mehr.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

#42
Hallo Otto,

nochmal zur obigen Warnung.

Den Code hab ich mal auf nextWaste beschränkt, es klappt auch ohne $result und nutze zum testen ein userreadings.

Könnte die .ics bearbeiten, zb. wie in dem Abfallmodul-Thread zuletzt mit Notepad beschrieben oder wie du schon erwähnt hast 3-4 Serientermine mit Anpassungen am Ende des Jahres erstellen, ich würde aber gerne sehen das es auch so geht.


Macht man zwar nie aber ich habs halt ausprobiert: jedes Mal wenn man in der DEF ist und mit modify Google_Abfallkalender abschliesst gibts die u.a. Warnungen im Log

Nach jedem Neustart (macht man auch so gut wie nie, ich weiß) gibts die Warnungen im Log, es stört mich aber.

Nach einem manuellem update oder dem automatischen auslesen nach intervall gibts keine Warnungen.


nextWaste {my $var1 =fhem ('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $regex = qr/Abfuhrtermin.|.in|.Buxtehude|.am.\d{1,2}\.\d{1,2}\.\d{4}/p;
$var1 =~ s/$regex//g;
return $var1}


2020.01.07 15:37:45 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 390777) line 3.
2020.01.07 15:37:45 3: eval: {my $var1 =fhem ('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $regex = qr/Abfuhrtermin.|.in|.Buxtehude|.am.\d{1,2}\.\d{1,2}\.\d{4}/p;
$var1 =~ s/$regex//g;
return $var1}
2020.01.07 15:37:45 1: stacktrace:
2020.01.07 15:37:45 1:     main::__ANON__                      called by (eval 390777) (3)
2020.01.07 15:37:45 1:     (eval)                              called by fhem.pl (4687)
2020.01.07 15:37:45 1:     main::readingsEndUpdate             called by fhem.pl (4928)
2020.01.07 15:37:45 1:     main::readingsSingleUpdate          called by ./FHEM/57_Calendar.pm (2656)
2020.01.07 15:37:45 1:     main::Calendar_ProcessUpdate        called by FHEM/HttpUtils.pm (634)
2020.01.07 15:37:45 1:     main::__ANON__                      called by fhem.pl (753)
2020.01.07 15:37:46 1: PERL WARNING: Use of uninitialized value $var1 in substitution (s///) at (eval 390778) line 3.
2020.01.07 15:37:46 3: eval: {my $var1 =fhem ('get '.$name.' events format:custom="$S" limit:from=0,count=1',1);
my $regex = qr/Abfuhrtermin.|.in|.Buxtehude|.am.\d{1,2}\.\d{1,2}\.\d{4}/p;
$var1 =~ s/$regex//g;
return $var1}
2020.01.07 15:37:46 1: stacktrace:
2020.01.07 15:37:46 1:     main::__ANON__                      called by (eval 390778) (3)
2020.01.07 15:37:46 1:     (eval)                              called by fhem.pl (4687)
2020.01.07 15:37:46 1:     main::readingsEndUpdate             called by fhem.pl (4928)
2020.01.07 15:37:46 1:     main::readingsSingleUpdate          called by ./FHEM/57_Calendar.pm (2840)
2020.01.07 15:37:46 1:     main::Calendar_UpdateCalendar       called by ./FHEM/57_Calendar.pm (2773)
2020.01.07 15:37:46 1:     main::Calendar_PollChild            called by fhem.pl (3306)
2020.01.07 15:37:46 1:     main::HandleTimeout                 called by fhem.pl (679)
2020.01.07 15:38:19 3: [Twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed


Fällt dir vielleicht noch was ein was man an dem ersetzen noch anders machen könnte das die Warnungen nicht mehr kommen ?

Gruß

Thomas

Otto123

Hallo Thomas,

es ist offenbar so, das im Moment der Initialisierung des Kalenders die userReadings angestoßen werden, aber der Kalender selbst keine Daten liefert.
Ich habe mal einfach verbose 5 gemacht:
2020.01.08 11:29:55 4: Calendar AbfallKalender: Wakeup
2020.01.08 11:29:55 4: Calendar AbfallKalender: Updating...
2020.01.08 11:29:55 4: Calendar AbfallKalender: Getting data from URL <hidden>
2020.01.08 11:29:55 5: Calendar AbfallKalender: HTTP response code 200
2020.01.08 11:29:55 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 1869) line 1.
2020.01.08 11:29:55 3: eval: {my $day = int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time)/86400);
                  $day?eval{$day>1?$day:"morgen"}:"heute"}
2020.01.08 11:29:55 4: Calendar AbfallKalender: parsing data asynchronously (PID= 30952)
2020.01.08 11:29:55 5: Calendar AbfallKalender: control passed back to main loop.
2020.01.08 11:29:56 4: Calendar AbfallKalender: got result from asynchronous parsing.
2020.01.08 11:29:56 4: Calendar AbfallKalender: asynchronous parsing finished.
2020.01.08 11:29:56 1: PERL WARNING: Use of uninitialized value in addition (+) at (eval 1876) line 1.
2020.01.08 11:29:56 3: eval: {my $day = int((fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1) + 86399 - time)/86400);
                  $day?eval{$day>1?$day:"morgen"}:"heute"}
2020.01.08 11:29:56 4: Calendar AbfallKalender: merging data
2020.01.08 11:29:56 4: Calendar AbfallKalender: 38 records processed, 38 new, 0 known, 0 modified, 0 changed.
2020.01.08 11:29:56 4: Calendar AbfallKalender: creating calendar events
2020.01.08 11:29:57 4: Calendar AbfallKalender: Checking times...
2020.01.08 11:29:57 4: Calendar AbfallKalender: process ended.

Offenbar werden die userReadings beim Start von Calendar dreimal angestossen, beim dritten mal klappt es dann. Das ist aber meine Mutmaßung.

Wenn ich meinen Code so abändere kommt kein Fehler:
nextWasteDays {my $zeit=fhem('get '.$name.' events format:custom="$t1" limit:from=0,count=1',1);
               if (!defined $zeit) {$zeit=0}
       my $day = int(($zeit + 86399 - time)/86400);
               $day?eval{$day>1?$day:"morgen"}:"heute"},
Tonne {fhem('get '.$name.' events format:custom="$S" limit:from=0,count=1',1)}


Geht vielleicht eleganter, ich brauche bei Perl immer etwas ;)
Ich werde Boris mal fragen, ob er dazu noch eine Idee hat. Weil warum werden die userReadings so oft angestossen beim define?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

#44
Hey Otto,

OT aber mein Thread  :P

Die Tonnenleerungen sind jetzt dran, dazu kann es bei meiner jetzigen Lösung (via DOIF -weil dann auch gleich die Zähler-Readings mit Alexa gesetzt werden können- und setreading) zu jeder Abfallart ein Reading ( also max. 4 Stück Restabfall/Wertstoffe, Bioabfall, Schadstoffmobil und Hecken und Baumschnitt) mit der Anzahl der Leerungen im Calendar-Device geben .
Am Ende des Jahres will man diese ja leeren und das am besten automatisiert nicht von Hand.
Mein erster Gedanke wäre zu schauen alle Abfallart-Readings (also die max. vier) in ein Array zu bekommen um mittels einer Schleife jedes Reading auf 0 zurücksetzen zu können. Die Schleife würd ich, denk ich, auch hinbekommen.

Ob und wie man die Abfallart-Readings jetzt in ein Array bekommt ist mir einfach aus mangelnden Perlkentnissen unklar, hast du vielleicht mal wieder einen Tip ?

Gruß

Thomas

edit:

Nach der Fragestellung ist man immer schlauer ;D
Jedem Abfallart-Reading was eindeutiges anhängen wäre ein Weg bspw. L_BIOABFALL, L_Restabfall/Wertstoffe