FHEM > Automatisierung

Problem mit Splitbefehl

(1/3) > >>

crissiloop:
Ich versuche mir mit Google-Kalenderevents den Status von Dummies setzen zu lassen.
Solange nur ein Kalenderevent zu einer Zeit vorhanden ist, funktioniert es auch. Sind aber 2 Events zur gleichen Zeit vorhanden klappt es nicht mehr und ich bekomme die folgende Meldung im Log:


--- Code: ---Kalender_Christian_Start return value: Unknown command {\
Kalenderstart("qkbb3pr82gj3ptejvrsti0inr0googlecom, try help
Unknown command sl5envs7hmh4gnfe0g73n2gu3cgooglecom");\
}, try help
--- Ende Code ---


die UIDs sind die beiden Events, um welche es sich handelt.

Die Funktion in meinre MyUtils.pm schaut wie folgt aus:

--- Code: ---sub
Kalenderstart ($)
{
my ($EVTPART1) = @_;
my @uids=split(/;/,$EVTPART1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Kalender_Christian summary $uid");
if ($Kalendertext =~ m"Urlaub") {
fhem("setstate Urlaub_dummy 1");
};
if ($Kalendertext =~ m"Besuch") {
fhem("setstate Gast_dummy 1");
};
};
}
--- Ende Code ---


Und aufgerufen wird es:

--- Code: ---define Kalender_Christian_Start notify Kalender_Christian:modeStarted.*googlecom.* {
Kalenderstart("%EVTPART1");
}
--- Ende Code ---


Laut dem Post: Link liegt es wohl am Semikolon als Trennung der UIDS.
Aber die Lösung, im Calendar-Modul den Trenner zu ändern stellt für mich keine Lösung dar.
Hat jemand eine Idee?

Christian

MisterEltako:
Hi!

versuch doch erstmal zu loggen was überhaupt getestet wird und welche Werte in den Variablen stehen:

sub
Kalenderstart ($)
{
   my ($EVTPART1) = @_;
   my @uids=split(/;/,$EVTPART1);
        Log 3, "Eventpart1: $EVTPART1";
   foreach my $uid (@uids) {
      my $Kalendertext = fhem("get Kalender_Christian summary $uid");
      Log 3, "uid: $uid;
                if ($Kalendertext =~ m"Urlaub") {
         fhem("setstate Urlaub_dummy 1");
      };
      if ($Kalendertext =~ m"Besuch") {
         fhem("setstate Gast_dummy 1");
      };
   };
}

MfG, MisterEltako.

ThomasL:
Hallo,

ich mach das einfach so:

define Heizungcheck at *00:13 { if(index((fhem "get Hauskalender full modeStart"),"Heizung")>0){fhem "set dHeizung on"} else {fhem "set dHeizung off"}}

Wenn eine Event "Heizung" im Kalender enthalten ist, wird der Dummy gesetzt.

Grüße
Thomas

MisterEltako:
Noch eine Idee:

Versuche es bitte mit

my @uids=split(/\;/,$EVTPART1);
oder:
my @uids=split(/[;]/,$EVTPART1);

[;] .... besagt das auch ein Semikolon als Trenner fungieren darf.

Funktioniert es dann?


MfG, MisterEltako.

crissiloop:
Hallo MisterEltako,
danke für deine Hinweise, aber leider scheint das Semikolon bei 2 gleichzeitigen Ereignissen bereits den Aufruf der Funktion zu zerschießen.

Funktion wurde um die Logeinträge ergänzt:

--- Code: ---sub
Kalenderstart ($)
{
my ($EVTPART1) = @_;
        Log 3, "Eventpart1 ohne Split: $EVTPART1";
my @uids=split(/[;]/,$EVTPART1);
        Log 3, "Eventpart1: $EVTPART1";
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Kalender_Christian summary $uid");
                Log 3, "uid: $uid";
if ($Kalendertext =~ m"Urlaub") {
fhem("setstate Urlaub_dummy 1");
};
if ($Kalendertext =~ m"Besuch") {
fhem("setstate Gast_dummy 1");
};
};
}


--- Ende Code ---


Mit einem Event sind die Logeinträge sauber vorhanden und auch der Dummy wird gesetzt:

--- Code: ---013.03.20 18:44:33 3: Eventpart1: 011mfi0j3ihdphi71e90po59logooglecom
2013.03.20 18:44:33 3: get Kalender_Christian summary 011mfi0j3ihdphi71e90po59logooglecom : Urlaub
2013.03.20 18:44:33 3: uid: 011mfi0j3ihdphi71e90po59logooglecom
--- Ende Code ---


Und bei 2 gleichzeitigen Events die bekannte Fehlermeldung:

--- Code: ---2013.03.20 18:52:00 3: Kalender_Christian_Start return value: Unknown command {\
Kalenderstart("35mv9m3oipaljjetg5uuijqqacgooglecom, try help
Unknown command hrfbl5orrenj0ufnv9jovc1u5cgooglecom");\
}, try help
--- Ende Code ---


Ich habe leider auch keine Idee mehr! Also das Semikolon zu escapen scheint nicht zu funktionieren, in \073 geht es auch nicht?

Christian

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln