Hauptmenü

Hilfe bei Calender

Begonnen von Gasmast3r, 11 Juli 2018, 23:53:02

Vorheriges Thema - Nächstes Thema

Otto123

Dein Aktor ist Urlaub_dummy und ein/aus ist ja/nein - weiter ist da nichts anderes. :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gasmast3r


2018.07.16 16:00:00 1: ERROR evaluating my $EVENT='start: 60p32ohlchh64b9j60qmab9k64p3eb9p6sq3cb9mc8p66oj371j68ohiccgooglecom ';my $SELF='Kalender_Sven_Start';my $EVTPART0='start:';my $TYPE='Calendar';my $NAME='Kalender_Sven';my $EVTPART1='60p32ohlchh64b9j60qmab9k64p3eb9p6sq3cb9mc8p66oj371j68ohiccgooglecom';{Kalenderstart($EVTPART1,$EVTPART2)}: Global symbol "$EVTPART2" requires explicit package name (did you forget to declare "my $EVTPART2"?) at (eval 5557868) line 1.


habe Testes halber mal nur start eingetragen.


Otto123

#17
Das verstehe ich nicht, aber Dein Event sieht anders aus:
'start: 60p32ohlchh64b9j60qmab9k64p3eb9p6sq3cb9mc8p66oj371j68ohiccgooglecom '
Damit gibt es nur 2 Parts ....
Dann "dreh" den Aufruf quasi einfach um:
{Kalenderstart($EVTPART1,$EVTPART0)}

Muss ich mir mal noch anschauen, mein Event sieht nämlich so aus:
'changed: 5qi4etradnf8o3009jto6ticfpgooglecom start'

Edit: Ja es gibt beide Events, Du (Beispiel im Wiki) triggerst auf den mit start: vorn und "ich" (betateilchen) hatte den mit start hinten verwendet  :-[ :o ;D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gasmast3r

Hy ich teste das Morgen,  schaffe das heute nicht mehr

Gasmast3r

Cool es klappt Tausend dank schaue mir das noch mal an um zu verstehen wie das nun geändert wurde

hier mal meine Einträge damit andere auch davon was haben
Notify

define Kalender_Sven_Start notify Kalender_Sven:start:.*googlecom.* {Kalenderstart($EVTPART1,$EVTPART0)}
attr Kalender_Sven_Start room Kalender


define Kalender_Sven_Ende notify Kalender_Sven:end:.*googlecom.* {Kalenderende($EVTPART1,$EVTPART0)}
attr Kalender_Sven_Ende room Kalender


99_myUtils

sub Kalenderstart ($$)
{
my ($uid,$cmd) = @_;
            #Log 1, "uid :$uid";
    my $Kalendertext = fhem('get Kalender_Sven events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1');
if ($Kalendertext =~ /Urlaub/) {
fhem("set Urlaub_dummy ja");
}
if ($Kalendertext =~ /Früh/) {
fhem("set Fr_dummy ja");
}
if ($Kalendertext =~ /Spät/) {
fhem("set Sp_dummy ja");
}
if ($Kalendertext =~ /Nacht/) {
fhem("set Nacht_dummy ja");
}
if ($Kalendertext =~ /Frei/) {
fhem("set Frei_dummy ja");
}
}

sub Kalenderende ($$)
{
my ($uid,$cmd) = @_;
            #Log 1, "uid :$uid";
    my $Kalendertext = fhem('get Kalender_Sven events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1');
if ($Kalendertext =~ /Urlaub/) {
fhem("set Urlaub_dummy nein");
}
if ($Kalendertext =~ /Früh/) {
fhem("set Fr_dummy nein");
}
if ($Kalendertext =~ /Spät/) {
fhem("set Sp_dummy nein");
}
if ($Kalendertext =~ /Nacht/) {
fhem("set Nacht_dummy nein");
}
if ($Kalendertext =~ /Frei/) {
fhem("set Frei_dummy nein");
}
}


Dummy

define Urlaub_dummy dummy
attr Urlaub_dummy room Kalender
attr Urlaub_dummy setList ja nein
attr Urlaub_dummy webCmd ja:nein


Otto123

Hi,
schön das es klappt. Ich war nicht untätig und habe das ganze mal noch dahingehend gestrafft, das Du nur ein notify und eine Sub brauchst um start und end im Kalender abzufangen und zu bearbeiten.
- es wird ein anderer Event getriggert, damit hat man die uid und "start oder end".
- der Name des Kalenders, der den Event erzeugt hat, wird übergeben, damit muss man den Namen in der Sub nicht mehr extra "verwalten".
- die Abfrage des Kalenderevents ist etwas lesbarer gestaltet.

Das notify
defmod n_TestKalenderSub notify TestKalender:changed:.* {KalenderSub($EVTPART1,$EVTPART2,$NAME)}

Die Sub
sub KalenderSub ($$$)
{
my ($uid,$cmd,$cname) = @_;
#Log 1, "uid: $uid | Start/End: $cmd | cal: $cname";
    my $format = '"$S"';
$uid='"'.$uid.'"';
$cmd = 'ja' if ($cmd eq 'start');
$cmd = 'nein' if ($cmd eq 'end');

my $Kalendertext = fhem("get $cname events format:custom=$format filter:uid==$uid limit:count=1");
if ($Kalendertext =~ /Urlaub/) {
fhem("set Urlaub_dummy $cmd");
}
if ($Kalendertext =~ /Früh/) {
fhem("set Fr_dummy $cmd");
}
if ($Kalendertext =~ /Spät/) {
fhem("set Sp_dummy $cmd");
}
if ($Kalendertext =~ /Nacht/) {
fhem("set Nacht_dummy $cmd");
}
if ($Kalendertext =~ /Frei/) {
fhem("set Frei_dummy $cmd");
}
}


Die Dummies und der Verwaltung könnte man auch noch effektiver machen.
Ich hoffe Du kommst damit klar.


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gasmast3r

Hy danke für deine weitere Bemühung, langsam verstehe ich die Schose.

Dein Notify fragt die Calendar Einträge ab und schaltet, ich sag mal im Toggle um die jeweiligen Zustände zu ändern Richtig ?

Die Dummys sind so denke schon ok, so kann ich mir persönlicher die weitere Verarbeitung vorstellen.

Danke noch mal für die Bemühungen.

Otto123

naja Toggle würde ich das nicht nennen, das wäre ja ein einziger Schaltimpuls der immer hin und her schaltet.
Hier wird ja gezielt aus start -> ja und aus end -> nein. Aber beide Fälle werden in einem notify und in einer Sub behandelt.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz