Autor Thema: [gelöst] Beleuchtung mittels Google Calender  (Gelesen 653 mal)

Offline Ronaldo

  • New Member
  • *
  • Beiträge: 19
[gelöst] Beleuchtung mittels Google Calender
« am: 29 März 2016, 20:28:17 »
Moin moin, ich bin der Neue.  8)

Folgendes Problem *weitaushol*:
Ich habe auf dem Flur eine Stehlampe, die morgens um 4:40, wenn ich aufstehe angeht und um 5:30, wenn ich das Haus verlasse wieder ausgeht. Soweit, sogut, meine Frau steht dann irgendwann nach 6 Uhr auf...
Nun kommt es aber hin und wieder vor, dass ich auswärts arbeiten muss und ausliege. Das führt dazu, dass unsere Katze aufgrund des Pawlovschen Reflexes dann, weil die Lampe ja angeht, um kurz vor fünf anfängt zu mauzen, weil sie ja weiß dass gleich jemand kommt, der Futter gibt, was aber ausbleibt. Das mauzen wiederum weckt die Frau vorzeitig --> nicht gut!  ;D
Nun sollte die Lampe halt nicht schalten, wenn ich im Google Kalender eintrage, dass ich auswärts oder im Urlaub bin. Das ganze habe ich nach dieser Anleitung gebaut. Das Abrufen das Kalenders scheint zu funktionieren, die modeEnded und modeStarted schalten auch nach den hinterlegten Zeiten, die Lampe schaltet auch in Abhängigkeit des Dummys, das einzige was nicht klappen will ist das Setzen des Dummys (dessen Zustände wechseln nicht nach Kalender).
Und genau hier hoffe ich auf eure Hilfe.  ;)

Die notifies Kalender_Ronaldo_Ende und Kalender_Ronaldo_Start sehen so aus: Kalender_Ronaldo:modeEnded.*googlecom.* {\ Kalenderende("$EVENT");\ }bzw.Kalender_Ronaldo:modeStarted.*googlecom.* {\ Kalenderstart("$EVENT");\ }
Der dummy kann die Zustände ja und nein einnehmen, hört auf den Namen Auswaertsarbeit_dummy (soll ich einen Screenshot einstellen?) und die 99_myutils.pm sieht so aus:##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.
### Google-Kalender Abfrage nach Urlaub und Auswärtstätigkeit ###
sub
Kalenderstart ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids = split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Kalender_Ronaldo summary uid=$uid 1");
if ($Kalendertext =~ /Urlaub/) {
fhem("set Auswaertsarbeit_dummy ja");
}
if ($Kalendertext =~ /Auswaerts/) {
fhem("set Auswaertsarbeit_dummy ja");
}
}
}
sub Kalenderende ($) {
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids = split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Kalender_Ronaldo summary uid=$uid 1");
if ($Kalendertext =~ /Urlaub/) {
fhem("set Auswaertsarbeit_dummy nein");
}
if ($Kalendertext =~ /Auswaerts/) {
fhem("set Auswaertsarbeit_dummy nein");
}
}
}
### Ende der Google-Kalender Abfrage nach Urlaub und Auswärtstätigkeit ###
1;

Es ist auch so, dass mir das Logfile immer einen Fehler auswirft:2016.03.29 16:20:00 3: Kalender_Ronaldo_Start return value: syntax error at (eval 129065) line 1, at EOF

2016.03.29 16:23:00 3: Kalender_Ronaldo_Ende return value: syntax error at (eval 129087) line 1, at EOF

Leider reichen meine Perl-Kentnisse alles andere als weit...

//Edit: Problem gelöst, zum einen fehlte das zweite Semikolon jeweils in den notifies (wird beim Ausführen des define-Befehls rausgenommen) und zum anderen scheint das ganze tatsächlich in drei Zeilen stehen zu müssen, wie es auch im Wiki ist.  :D
« Letzte Änderung: 02 Dezember 2016, 04:40:32 von Ronaldo »

 

decade-submarginal