[Gelöst] subject/title im event eines importierten Kalenders umbennen

Begonnen von cornelius fillmore, 31 Oktober 2023, 07:00:47

Vorheriges Thema - Nächstes Thema

cornelius fillmore

Guten Morgen Forum,
ich habe folgende Herausforderung:
Aktuell steuere ich über einen Google Kalender, die Ressource (Heizung) mit Start und Endtermin.
Die Daten gebe ich manuell in den Kalender ein.
Der Name (subject/title) des Kalendereintrages steuert das an und auschalten des Aktors
Wie in der FHEM reference unter Calendar /Switch actors on and off beschrieben
Alles funktioniert soweit

Dieser Google Kalender soll nun auf einen anderen, externen Kalender umgestellt werden.
Diesen bekomme ich via aboniertem ical ins FHEM eingelesen
Leider ist es jetzt so, dass dieser externe Kalender nun so benannt ist wie der Aktor und das eigentliche subject/title frei wählbar ist.

Meine Überlegung um mit dem neuen externe Kalender zu arbeiten ist, dass ich das event wie gewohnt auslese.
Wenn dort ein Eintrag ist überschreibe ich das vorhandene subject/title mit dem Namen des Aktors wobei ich die Zeiten bestehen lasse.
Ist dies vorstellbar?
Kann mich dabei jemand Unterstützen?

Vielen Dank für euren input
3 x Fhem 5.9 mit RPI

Dr. Boris Neubert

Hallo,

ich habe das Problem nicht verstanden. Wenn Du nur einen Aktor hast und alle Termine im Kalender die An-Zeiten des Aktors beschreiben, dann brauchst Du doch die Prüfung auf den Namen des Aktors im Titel des Termins gar nicht. Kannst Du die Aufgabenstellung bitte mit einem kleinen Beispiel unterfüttern?

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

cornelius fillmore

Anbei ein Beispiel
Grün ist mein bisheriger manuell geführter Google Kalender
Der Titel des events ist gleich dem Name des Aktors (hier: Saal) bei FHEM
Ein Termin löst mit event start das einschalten und mit event off das ausschalten des actors (Saal) im FHEM aus

Rot ist ein importierten Kalender
Dieser hat jetzt halt leider den Namen des Raumes wo etwas stattfindet (hier: Saal)
Was dort stattfidet gibt dieser mit, dies interessiert mich und den Aktor aber nicht
Der rote Kalender ist ein "Abfallprodukt" einer Termimbuchung wo unterschiedliche Nutzer eine Ressource (hier den Raum Saal) mitbuchen.

Meine Idee war halt dann einfach:
Schaue in den roten Kalender,
wenn dort etwas drinn steht
tausche den titel gegen den Namen des Aktors aus
behalte Anfangs und Endzeit bei

Verständlich?
3 x Fhem 5.9 mit RPI

Dr. Boris Neubert

Gut, das macht es mir verständlich.

Benutze für den Kalender namens Saal die Funktion, Termine mit onCreateEvent zu verändern. Du findest ein Beispiel in der CommandRef zu Calender unter Plug-Ins.

In etwa so könnte es gehen:

attr SaalCalendar onCreateEvent { $e->{summary}= "Saal";; }
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

Aber wenn es doch immer um "Saal" geht, braucht man das doch gar nicht. Dann kann man das doch einfach in dem notify fix vorgeben, das man zur Auswertung des events verwendet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

cornelius fillmore

Zitat von: betateilchen am 31 Oktober 2023, 09:15:07Aber wenn es doch immer um "Saal" geht, braucht man das doch gar nicht. Dann kann man das doch einfach in dem notify fix vorgeben, das man zur Auswertung des events verwendet.
OK
wie mache ich dies?
Derzeit frage ich mit
MyCalendar:end:.* {my $reading="$EVTPART0"; my $uid= "$EVTPART1"; my $actor= fhem("get MyCalendar summary $uid"); if(defined $actor) { fhem("set $actor off") }}das Ganze ab
3 x Fhem 5.9 mit RPI

Dr. Boris Neubert

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

betateilchen

Zitat von: cornelius fillmore am 31 Oktober 2023, 09:08:16Rot ist ein importierten Kalender
Dieser hat jetzt halt leider den Namen des Raumes wo etwas stattfindet (hier: Saal)

Falls man das gleiche notify für mehrere Calendar-devices verwenden möchte, kann man auch das reading calname mit einbinden:

MyCalendar:end:.* { my $actor = ReadingsVal($name,"calname",$name); fhem("set $actor off") }
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

cornelius fillmore

3 x Fhem 5.9 mit RPI

cornelius fillmore

Zitat von: betateilchen am 31 Oktober 2023, 09:56:21
Zitat von: cornelius fillmore am 31 Oktober 2023, 09:08:16Rot ist ein importierten Kalender
Dieser hat jetzt halt leider den Namen des Raumes wo etwas stattfindet (hier: Saal)

Falls man das gleiche notify für mehrere Calendar-devices verwenden möchte, kann man auch das reading calname mit einbinden:

MyCalendar:end:.* { my $actor = ReadingsVal($name,"calname",$name); fhem("set $actor off") }
Irgendwas geht hier nicht kannst du mir noch mal die ganze Zeile für den Start nennen:
Hier der Istzustand
ZitatMyCalendar:start:.* {my $reading="$EVTPART0"; my $uid= "$EVTPART1"; my $actor= fhem("get MyCalendar summary $uid"); if(defined $actor) { fhem("set $actor on") }}
3 x Fhem 5.9 mit RPI

Dr. Boris Neubert

Zitat von: cornelius fillmore am 31 Oktober 2023, 10:56:26Irgendwas geht hier nicht

Wie macht sich das bemerkbar? Log-Auszug dazu bitte posten. Dann können wir helfen.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

Zitat von: cornelius fillmore am 31 Oktober 2023, 10:56:26kannst du mir noch mal die ganze Zeile für den Start nennen:

Naja, genau das gleiche wie für das Ende. Nur "start" anstatt "end" und "set .. on" anstatt "set .. off"

Sinnloses copy & paste macht selten Sinn. Du solltest verstehen, was Du da tust, und warum etwas funktioniert (oder auch warum nicht).
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: cornelius fillmore am 31 Oktober 2023, 10:56:26Irgendwas geht hier nicht

Nimm mal $NAME anstatt $name

(Offtopic - weil es nix mit Calendar zu tun hat, mich aber trotzdem gerade ärgert:
warum kann man die evalSpecials nicht vereinheitlichen?
Mal muss man $name verwenden, an anderer Stelle $NAME und manchmal auch $SELF.
Je nachdem, an welcher Stelle man auf den Namen zugreifen möchte.)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

cornelius fillmore

3 x Fhem 5.9 mit RPI