[patch] Free/Busy-State für 57_Calendar.pm auswerten

Begonnen von moemoe, 19 September 2014, 16:33:22

Vorheriges Thema - Nächstes Thema

moemoe

Moin,

ich pflege schon seit geraumer Zeit einen Google-Kalender, in welchem ich mir sämtliche Veranstaltungen/Geburtstage/... notiere die ich nicht vergessen möchte, um dann über den Status Verfügbar/Beschäftigt tracke ob ich plane zu dem Event zu gehen oder nicht.

Daher wollte ich nun genau diesen Wert dafür verwenden, hierauf basiert automatisch die Abwesenheit bei fhem zu setzen.

Das ganze lässt sich im ICal über das Feld TRANSP abfragen, welches den wert OPAQUE oder TRANSPARENT annehmen kann (http://www.kanzaki.com/docs/ical/transp.html).

Daher habe ich das Modul erweitert, dass es einem einerseits den Wert free/busy mit ausgeben kann, andererseits aber auch an die Kalender-UIDs (sofern über 'attr <cal> showBusy 1' aktiviert) :free oder :busy anhängt, so dass hier ein einfaches matchen ohne jedes mal die Details abrufen zu müssen möglich ist.

Beispielhafte Ausgaben:
fhem> get CalEvents full all; get CalEvents busy all
xxxcgooglecom   known    start                     busy 18.09.2014 00:00:00-22.09.2014 00:00:00 aaa
xxxgooglecom   known upcoming                     free 11.10.2014 18:30:00-12.10.2014 00:00:00 aaa
xxxgooglecom   known upcoming                     free 01.11.2014 00:00:00-02.11.2014 00:00:00 aaa
xxxgooglecom   known upcoming                     free 16.01.2015 00:00:00-17.01.2015 00:00:00 aaa
xxxgooglecom   known upcoming                     free 21.05.2015 00:00:00-22.05.2015 00:00:00 aaa
busy
free
free
free
free



fhem> list CalEvents
Internals:
   CFGFN     
   DEF        ical url https://www.google.com/...
   NAME       CalEvents
   NR         78
   STATE      Active
   TYPE       Calendar
   Readings:
     2014-09-19 16:26:01   all             xxxgooglecom:free;xxxgooglecom:free;xxxgooglecom:free;xxxgooglecom:free;xxxgooglecom:busy
     2014-09-19 16:26:01   calname         Events
     2014-09-19 16:26:01   lastCheck       2014-09-19 16:25:56
     2014-09-19 16:26:01   lastUpdate      2014-09-19 16:25:56
     2014-09-19 16:26:01   modeAlarm       
     2014-09-19 16:26:01   modeAlarmOrStart xxxgooglecom:busy
     2014-09-19 16:26:01   modeAlarmed     
     2014-09-19 16:26:01   modeChanged     
     2014-09-19 16:26:01   modeEnd         
     2014-09-19 16:26:01   modeEnded       
     2014-09-19 16:26:01   modeStart       xxxgooglecom:busy
     2014-09-19 16:26:01   modeStarted     
     2014-09-19 16:26:01   modeUpcoming    xxxgooglecom:free;xxxgooglecom:free;xxxgooglecom:free;xxxgooglecom:free
     2014-09-19 16:26:01   stateChanged   
     2014-09-19 16:26:01   stateDeleted   
     2014-09-19 16:26:01   stateNew       
     2014-09-19 16:26:01   stateUpdated   
   Fhem:
     interval   3600
     lastCheck  2014-09-19 16:25:56
     lastChkTs  1411136756.07007
     lastUpdate 2014-09-19 16:25:56
     lstUpdtTs  1411136756.07023
     nextCheck  2014-09-19 17:25:56
     nextChkTs  1411140356.07023
     nextUpdate 2014-09-19 17:25:56
     nxtUpdtTs  1411140356.07023
     type       url
     url        https://www.google.com/...
Attributes:
   room       Unsorted
   showBusy   1


Zusätzlich ist mir beim Testen aufgefallen, dass die Argumente für "get" nicht korrekt geprüft werden, ohne Kommando gibt es

Use of uninitialized value $cmd in regexp compilation at ./FHEM/57_Calendar.pm line 1031.
Use of uninitialized value $cmd in regexp compilation at ./FHEM/57_Calendar.pm line 1031.
Use of uninitialized value $cmd in regexp compilation at ./FHEM/57_Calendar.pm line 1031.
Use of uninitialized value $cmd in regexp compilation at ./FHEM/57_Calendar.pm line 1031.
Use of uninitialized value $cmd in regexp compilation at ./FHEM/57_Calendar.pm line 1031.
Use of uninitialized value $cmd in regexp compilation at ./FHEM/57_Calendar.pm line 1031.
Use of uninitialized value $cmd in regexp compilation at ./FHEM/57_Calendar.pm line 1031.
Use of uninitialized value $cmd in regexp compilation at ./FHEM/57_Calendar.pm line 1031.
Use of uninitialized value $cmd in string eq at ./FHEM/57_Calendar.pm line 1067.
Use of uninitialized value $cmd in concatenation (.) or string at ./FHEM/57_Calendar.pm line 1078.


Grüße
Moritz

Dr. Boris Neubert

Hallo,

ich werde mir die Patches ansehen, wenn ich etwas Ruhe dazu finde.

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

Dr. Boris Neubert

In der aktuellen Version vom Calendar habe ich die Prüfung der Argumente von get/set verschärft.

Mit dem TRANSP hadere ich noch.

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

moemoe

Zitat von: Dr. Boris Neubert am 11 Oktober 2014, 19:44:18
Mit dem TRANSP hadere ich noch.

Ich habe es ja absichtlich so gestaltet, dass man im Normalfall davon nichts merkt, sondern es explizit aktivieren muss.

Ich bin auch für jeden anderen Weg offen, darauf aufsetzend irgendwie generische Regeln erstellen zu können, das war nur der einfachste der mir einfiel.

Grüße
Moritz

betateilchen

#4
Zitat von: Dr. Boris Neubert am 11 Oktober 2014, 19:44:18
In der aktuellen Version vom Calendar habe ich die Prüfung der Argumente von get/set verschärft.

  my $cmd= $a[1];
  $cmd= "?" unless($cmd);


hm... wenn aber in $a[1] tatsächlich nix drinstehen würde, gäbe es vermutlich bei der Zuweisung nach $cmd wieder eine Warning im Log, oder?

Mein Vorschlag wäre:

  my $cmd= '?';
  $cmd= $a[1] if(defined($a[1]));
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

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