Autor Thema: 57_Calendar - Ausgabeverzerrt  (Gelesen 1112 mal)

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1996
  • und es werden immer mehr...
57_Calendar - Ausgabeverzerrt
« am: 08 September 2021, 10:34:42 »
Ein herzerfrischendesd Moin vom achtern Diek vorweg

Ich habe ein kleines Problem bei dem Ihr mir sicher helfen könnt.

Ich habe eine Schleife gebaut, die mir die Kalender-Einträge abfragt.

my $CalItem = fhem("get ". $CurrentCalendar . " events timeFormat:\"%H:%M\" format:text limit:from=" . sprintf("%+d", $i) . "d,to=" . sprintf("%+d", $i+1) . "d format:custom=\"\$T1 \$D \$S\"");
Wie man sehen kann wird mit "$i" jeweils von heute bis in i-Tagen alle Einträge abgefragt.
Dummerweise musste ich feststellen, das die Einträge für übermorgen auf morgen verschoben werden, sobald sich die Uhrzeit heute auf nach dem Ablauf des Termins in 2 Tagen verschiebt.
Also um 00:05Uhr Morgen istimmt noch alles aber ein paar Stunden spaeter verschieben sich die Termine auf den Vortag zum Zeitpunkt ihrer Anfangsuhrzeit.

Soll heißen, dass meine Abfrage oben nicht die nächsten i Tage abfragt sondern die nächsten i*24h.

Frage: Wie kann ich eine Kalender-Abfrage an einem bestimmten Datum (in i-Tagen) abfragen ohne, dass es zu diesem Zeitverschiebungen kommt?

Gruß
    Sailor
******************************
Man wird immer besser...

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4985
  • Are we just self-replicating DNA?
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #1 am: 08 September 2021, 11:42:11 »
Hallo Sailor,

from/to ist so spezifiziert und dokumentiert, wie Du es erlebt hast.

Es gibt den when-Filter, der aber nur entweder today oder tomorrow kennt.

Wenn Du Dir mal den Code in 57_Calendar.pm ab Zeile 2080 anschaust, siehst Du, wie daraus Zeitpunkte für from/to errechnet werden:


          } elsif($limit =~ /when=(today|tomorrow)/i) {
            my ($from,$to);
            if (lc($1) eq 'today') {
              $from  = Calendar_GetSecondsFromMidnight();
              $to    = DAYSECONDS - $from - 1;
              $from *= -1;
            } else {
              $from  = DAYSECONDS - Calendar_GetSecondsFromMidnight();
              $to    = $from + DAYSECONDS - 1;
            }

Es ist vermutlich auch gar nicht schwer, den when-Filter zu erweitern, dass er eine Syntax in der Form 2..3 oder -5..2 oder 0 (= today) oder 1 (= tomorrow) akzeptieren würde.

Ich bin offen für Patches, damit ich mich nicht da ransetzen muss  ;)

Viele Grüße
Boris

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

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1996
  • und es werden immer mehr...
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #2 am: 09 September 2021, 17:49:04 »
Hallo Boris

hast Recht gehabt. Ist gar nicht so schwer gewesen:

} elsif($limit =~ /when=(today|tomorrow|jump.*)/i) {
my ($from,$to);
if (lc($1) eq 'today') {
$from  = Calendar_GetSecondsFromMidnight();
$to    = DAYSECONDS - $from - 1;
$from *= -1;
}
elsif (lc($1) eq 'tomorrow') {
$from  = DAYSECONDS - Calendar_GetSecondsFromMidnight();
$to    = $from + DAYSECONDS - 1;
}
elsif ($1=~ m/jump/i) {
#Extract everything behind "jump "
my $DeltaDays = substr($limit,9);

#Check whether the DeltaDays are numerical
if ($DeltaDays == int($DeltaDays)){

# If the day to be jumped from today is 0 and therefore today
if ($DeltaDays == 0){
$from  = Calendar_GetSecondsFromMidnight();
$to    = DAYSECONDS - $from - 1;
$from *= -1;
}
# If the day to be jumped from today is not 0
else {
$from  = (DAYSECONDS * $DeltaDays) - Calendar_GetSecondsFromMidnight();
$to    = $from + DAYSECONDS - 1;
}
}
else{
# Do nothing or write a log entry at least
}
}
else {
# Do nothing or write a log entry at least
}
### For debugging purpose only
Log3 $name, 5, $name. " : Calendar_events - from                    : " . $from;
Log3 $name, 5, $name. " : Calendar_events - to                      : " . $to;

Sowie die entsprechend Pod Zeilen

EN (Alt Zeile 3593 / Neu 3624)  <tr><td><code>when=today|tomorrow|jump &lt;i&gt;</code></td><td>shows events for today, tomorrow or in &lt;i&gt; days</td></tr> 
DE (Alt Zeile 4325 / Neu 4356)  <tr><td><code>when=today|tomorrow|jump &lt;i&gt;</code></td><td>zeigt anstehende Termin f&uuml;r heute, morgen oder in &lt;i&gt; Tagen an</td></tr>   

Einziger Schoenheitsfehler: Wegen deiner Programmierung irgendwo weiter oben muss die Zahl direkt nach dem Befehl jump eingegeben werden, sonst gibt es eine Fehlermeldung.

Also:
get myCalendar events limit:when=jump7zeigt die Events in 7 Tagen an

Magst du das einchecken?

Gruß
    Sailor

PS: Nein, ich habe keine Ahnung wie man DIFF-Files erzeugt  :(
******************************
Man wird immer besser...

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1996
  • und es werden immer mehr...
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #3 am: 17 September 2021, 11:52:02 »
PS: Wie kann man eigentlich verhindern, dass trotz Verbose=1 die folgende Meldung im Log erscheint:

2021.09.17 11:50:25.627 3: get UI_Calendar_MD events timeFormat:"%H:%M" format:text limit:when=jump28 format:custom="$T1 $D $S" : 19:00 1h Termin
2021.09.17 11:50:25.633 3: get UI_Calendar_DD events timeFormat:"%H:%M" format:text limit:when=jump28 format:custom="$T1 $D $S" : 19:00 1h Termin
2021.09.17 11:50:25.636 3: get UI_Calendar_LD events timeFormat:"%H:%M" format:text limit:when=jump28 format:custom="$T1 $D $S" : 15:30 2:30 Termin
2021.09.17 11:50:25.638 3: get UI_Calendar_BD events timeFormat:"%H:%M" format:text limit:when=jump28 format:custom="$T1 $D $S" : 16:00 1h Termin

Das muss doch irgendwie zu verhindern sein.

Gruß
    Sailor
******************************
Man wird immer besser...

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4985
  • Are we just self-replicating DNA?
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #4 am: 17 September 2021, 12:17:15 »
PS: Wie kann man eigentlich verhindern, dass trotz Verbose=1 die folgende Meldung im Log erscheint:

Ich meine, dass das aus dem fhem.pl kommt und über global verbose abgeregelt werden muss.

Danke auch für Deine Anpassung. Ich wollte diese gerne noch etwas generalisieren, bin aber aus Zeitgründen noch nicht dazugekommen.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1996
  • und es werden immer mehr...
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #5 am: 19 September 2021, 11:51:42 »
Ich meine, dass das aus dem fhem.pl kommt und über global verbose abgeregelt werden muss.

Danke auch für Deine Anpassung. Ich wollte diese gerne noch etwas generalisieren, bin aber aus Zeitgründen noch nicht dazugekommen.

Hallo Boris

nach Eingabe der richtigen Suchparameter habe ich es im Forum gefunden.
Das Rätsels Lösung ist ein ",1"

fhem("get myDevice Parameter", 1);
Gruss
    Sailor
******************************
Man wird immer besser...

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4985
  • Are we just self-replicating DNA?
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #6 am: 20 September 2021, 21:47:22 »
Hier meine Version mit der Bitte um Test.

get C events limit:when=3
get C events limit:when=2..4
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4985
  • Are we just self-replicating DNA?
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #7 am: 23 September 2021, 18:23:31 »
positives Feedback auf Seitenkanal erhalten => eingecheckt, ab morgen früh wird die Ergänzung per Update verteilt
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1996
  • und es werden immer mehr...
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #8 am: 27 September 2021, 16:03:19 »
Moin Boris

Habe das Update eingespielt und folgendes nach dem "shutdown restart" im Log erhalten:

2021.09.27 15:53:25.534 1: PERL WARNING: Use of uninitialized value $4 in string ne at .//FHEM/57_Calendar.pm line 2091.
Das hatte ich während des Testlaufs nicht...

Gruß
    Sailor
******************************
Man wird immer besser...

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4985
  • Are we just self-replicating DNA?
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #9 am: 27 September 2021, 16:45:52 »
Hi,

2021.09.27 15:53:25.534 1: PERL WARNING: Use of uninitialized value $4 in string ne at .//FHEM/57_Calendar.pm line 2091.

das passiert, wenn statt when=2..4 nur when=2 u.ä. eingegeben wird. Kannst Du bitte mal die Zeile 2091 so ändern:

              if(defined($4) and ($4 ne '')) {

Dann sollte die Warnung weg sein.

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

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1996
  • und es werden immer mehr...
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #10 am: 28 September 2021, 13:21:28 »
Hallo Boris

Kannst Du bitte mal die Zeile 2091 so ändern:
Dann sollte die Warnung weg sein.

Habe ich gemacht und es taucht nicht mehr auf.
Funktion ist nach wie vor gegeben.

Danke

Gruß
    Sailor
******************************
Man wird immer besser...

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4985
  • Are we just self-replicating DNA?
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #11 am: 28 September 2021, 17:32:44 »
Habe ich gemacht und es taucht nicht mehr auf.
Funktion ist nach wie vor gegeben.

Danke für den Test. Eingecheckt ist's.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17472
  • s/fhem\.cfg/configDB/g
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #12 am: 28 September 2021, 21:47:21 »
#Check whether the DeltaDays are numerical
if ($DeltaDays == int($DeltaDays)){

Einziger Schoenheitsfehler: Wegen deiner Programmierung irgendwo weiter oben muss die Zahl direkt nach dem Befehl jump eingegeben werden, sonst gibt es eine Fehlermeldung.

PS: Nein, ich habe keine Ahnung wie man DIFF-Files erzeugt  :(

Komm doch mal wieder zum Kaffee rüber, dann gebe ich Dir ein paar Tipps :)
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1996
  • und es werden immer mehr...
Antw:57_Calendar - Ausgabeverzerrt
« Antwort #13 am: 30 September 2021, 11:12:36 »
Komm doch mal wieder zum Kaffee rüber, dann gebe ich Dir ein paar Tipps :)

 :D

Gruss
    Sailor
******************************
Man wird immer besser...

 

decade-submarginal