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
Hallo,
ich werde mir die Patches ansehen, wenn ich etwas Ruhe dazu finde.
Viele Grüße
Boris
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
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
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]));
Nein, das habe ich getestet. :)