Betreff: Patch fuer 57_CALVIEW.pm: Calendar-Events nicht mehr per Pipe-getrenntem Text parsen
Hi chris1284,
ich bin bei CALVIEW auf ein Problem gestossen, wenn ein Calendar-Eintrag im Feld
LOCATION ein Pipe-Zeichen (
|) enthaelt.
Ein konkretes Beispiel ist der Ferienkalender fuer Hessen von calovo. Dort sieht
LOCATION aktuell etwa so aus:
calovo.de | zattoo kostenlos testen: bit.ly/calovo_zattoo | Hessen, Deutschland
CALVIEW liest die Termine derzeit ueber
get <Calendar> events mit einem
format:custom ein und nutzt ebenfalls
| als internes Trennzeichen. Dadurch verrutschen die Felder beim
split(/\|/):
location,
description,
categories und
duration landen in falschen Readings.
In meinem Fall fuehrte das zusaetzlich zu Perl-Warnungen, wenn beim Calendar-Device
defaultTimeFormat %H:%M gesetzt war, weil CALVIEW aus
$T1/
$T2 ein Datum erwartet.
Der beigefuegte Patch stellt
getsummery() in
57_CALVIEW.pm um:
- Calendar wird mit returnType:@events abgefragt.
- CALVIEW liest die Werte direkt aus den Calendar::Event Objekten.
- Es wird kein Pipe-getrennter Zwischentext mehr geparst.
- location und description duerfen dadurch selbst Pipe-Zeichen enthalten.
- Start- und Endzeit werden ueber startTime()/endTime() ermittelt und sind damit nicht mehr vom defaultTimeFormat des Calendar-Devices abhaengig.
- duration wird direkt aus end - start berechnet.
Getestet habe ich das in einem separaten FHEM-Testcontainer mit der Hessen-ICS und absichtlich gesetztem:
attr Hessen_Ferien defaultTimeFormat %H:%M
Ergebnis:
- keine CALVIEW-Warnungen mehr durch fehlendes Datum in $T1/$T2
- bdate, edate und daysleft sind plausibel
- location bleibt vollstaendig inklusive |
- description und duration landen wieder in den richtigen Readings
Ein sichtbarer Unterschied ist, dass
categories bei diesem Kalender danach leer ist. Das ist nach meiner Einschaetzung korrekt, weil das echte ICS-CATEGORIES-Feld leer ist. Vorher stand dort nur irrtuemlich ein aus
LOCATION abgeschnittener Rest wie
Hessen, Deutschland.
Der Patch ist als Datei angehaengt:
57_CALVIEW.pm.patch
Viele Gruesse