Patch 57_CALVIEW.pm: Calendar-Events nicht mehr per Pipe-getrenntem Text parsen

Begonnen von Sidey, 10 Mai 2026, 20:13:07

Vorheriges Thema - Nächstes Thema

Sidey

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
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth