Autor Thema: Hilfe bei Calender  (Gelesen 505 mal)

Offline Gasmast3r

  • Full Member
  • ***
  • Beiträge: 389
Hilfe bei Calender
« am: 11 Juli 2018, 23:53:02 »
Hallo Leute Bitte nicht schlagen, aber ich bin wohl zu doof mein Calender auf den aktuellen stand zu bringen.

wie viele habe ich den log Eintrag
get Kalender_Sven text is deprecated and will be removed soon. Use get Kalender_Sven events instead.

ich habe die im WIKI beschriebene
Google-Kalender zur Steuerung von Dummies

nun weis ich das ich
get Kalender summary uid=$uid 1
ändern muss, aber da ist mein problem ich steig nicht durch wie

habe erst gedacht
events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1',1
aber das scheint es nicht zu sein.

hoffe hier kann sich einer erbarmen und mir das mal erklären aber so das ein nicht studierter das auch versteht.

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 9647
    • Otto's Technik Blog
Antw:Hilfe bei Calender
« Antwort #1 am: 12 Juli 2018, 20:19:21 »
Hi,

löst die Anleitung im Wiki nicht fast das gleiche Problem wie die aktuelle Anleitung von betateilchen?
https://forum.fhem.de/index.php/topic,87895.0.html#new

Die funktioniert bei mir.

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi,HMLAN,HMUART,Homematic,Fritz!Box 7490,Sonos,ET9200,Arduino nano,ESP8266

Offline Gasmast3r

  • Full Member
  • ***
  • Beiträge: 389
Antw:Hilfe bei Calender
« Antwort #2 am: 12 Juli 2018, 20:36:21 »
Habe gedacht könnte das passend ändern aber falsch gedacht.

Hatte den alten get Befehl in FHEM eingegeben um zu schauen was der mir ausgiebt, um dann ein vergleichbaren zu stricken aber das geht ja leider nicht oder das übersteigt meine Fähigkeiten.

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 9647
    • Otto's Technik Blog
Antw:Hilfe bei Calender
« Antwort #3 am: 12 Juli 2018, 21:01:12 »
Hi,

der Originalaufruf ist so
fhem("get Kalender_Christian summary uid=$uid 1");der in den verlinkten Artikel
fhem('get TestKalender events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1',1);
Du musst schon etwas mehr Infos liefern nicht nur Bruchstücke, Wie genau hast Du die Befehle umgesetzt? Was für Fehler kommen?

Es wird wohl ein Problem der " und ' sein. Du kannst nicht einfach Teile in der Mitte per copy & paste tauschen.

Mal ein Beispiel wie der Aufruf im Endeffekt im Klartext aussehen muss.
Alt
get TestKalender summary uid=1ak67ipt9jaev9cg0hp6m40k2tgooglecom 1
Neu
get TestKalender events format:custom="$S" filter:uid=="1ak67ipt9jaev9cg0hp6m40k2tgooglecom" limit:count=1

Zu beachten die uid im alten Format war ein String, die uid im neuen Format muss im Syntax des Strings übergeben werden, es müssen also "" um Text herum :)
Siehe Doku -> https://commandref.fhem.de/#Calendar

Gruß Otto
« Letzte Änderung: 12 Juli 2018, 21:47:55 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi,HMLAN,HMUART,Homematic,Fritz!Box 7490,Sonos,ET9200,Arduino nano,ESP8266

Offline Gasmast3r

  • Full Member
  • ***
  • Beiträge: 389
Antw:Hilfe bei Calender
« Antwort #4 am: 12 Juli 2018, 23:06:10 »
Hy also das ist der eintrag in my_utility

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_Sven summary uid=$uid 1");
if ($Kalendertext =~ /Urlaub/) {
fhem("set Urlaub_dummy ja");
}
if ($Kalendertext =~ /Früh/) {
fhem("set Frueh_dummy ja");
}
if ($Kalendertext =~ /Spät/) {
fhem("set Spaet_dummy ja");
}
if ($Kalendertext =~ /Nacht/) {
fhem("set Nacht_dummy ja");
}
}
}

und so dachte ich würde es gehen
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_Sven events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1',1");
if ($Kalendertext =~ /Urlaub/) {
fhem("set Urlaub_dummy ja");
}
if ($Kalendertext =~ /Früh/) {
fhem("set Frueh_dummy ja");
}
if ($Kalendertext =~ /Spät/) {
fhem("set Spaet_dummy ja");
}
if ($Kalendertext =~ /Nacht/) {
fhem("set Nacht_dummy ja");
}
}
}

Gelesen habe ich das nur verstehen tut ich das irgendwie nicht, aber so wie du das sagt, muss ich für jeden genutzten Eintrag die uid hinterlegen.

beispiel
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_Sven events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1',1");
if ($Kalendertext =~ /28bghn962cojcub27m66oaave7googlecom/) {
fhem("set Urlaub_dummy ja");
}
if ($Kalendertext =~ /5i6bc9f73alud1efut6g0rq5mlgooglecom/) {
fhem("set Frueh_dummy ja");
}
if ($Kalendertext =~ /473hq6j0t6rtoocn5srk3djec8googlecom/) {
fhem("set Spaet_dummy ja");
}
if ($Kalendertext =~ /60g75pqadojrfpalhmicik1ja0googlecom/) {
fhem("set Nacht_dummy ja");
}
}
}

oder bin ich wieder auf dem falschen weg

oder könnte es auch das sein?
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_Sven events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1',1");
if ($filter:field(summary)=~"Urlaub"/) {
fhem("set Urlaub_dummy ja");
}
if ($filter:field(summary)=~"Früh"/) {
fhem("set Frueh_dummy ja");
}
if ($filter:field(summary)=~"Späht"/) {
fhem("set Spaet_dummy ja");
}
if ($filter:field(summary)=~"Nacht"/) {
fhem("set Nacht_dummy ja");
}
}
}
« Letzte Änderung: 12 Juli 2018, 23:15:33 von Gasmast3r »

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 9647
    • Otto's Technik Blog
Antw:Hilfe bei Calender
« Antwort #5 am: 13 Juli 2018, 13:43:49 »
Hi,

du hast meinen Einwand nicht richtig verstanden: :o
fhem("get Kalender_Christian summary uid=$uid 1");
fhem('get TestKalender events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1',1);

Damit kommt die Abfolge der von dir kopierten Innereien, welche zahlreiche und exakt so gesetzten, wichtigen " und ' enthalten völlig durcheinander.

Eventuell brauchst Du einfach nur die ersten (" und letzten 1',1") gegen (' ... 1',1) austauschen. Aber probiert habe ich das jetzt noch nicht!

Edit:
Da ich es auch nicht wusste, eine kurze Erklärung zu der ,1 -  fhem('Befehl',1) - am Ende des Aufrufes. Die Perl Funktion fhem() akzeptiert zwei Aufrufparameter -> ($param, $silent)
- der erste bis zum Komma ist der FHEM Befehl
- der zweite ist die Steuerung ob etwas ins Log geschrieben werden kann oder nicht. 1 (wahr) bedeutet silent -> schreibe keinen Fehler ins Log.

Man kann es gut austesten, indem man einen Fehlerhaften Befehl verwendet und mit und ohne ,1 probiert.

Ich hoffe ich habe es richtig interpretiert  :D

Der Befehl muss als String übergeben werden, also entweder in ' ' oder in " ", der silent Parameter ist ein logischer Ausdruck!
Deswegen fhem('Befehl') oder fhem('Befehl',1) aber nicht fhem('Befehl,1') !

Gruß Otto
« Letzte Änderung: Gestern um 10:17:18 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi,HMLAN,HMUART,Homematic,Fritz!Box 7490,Sonos,ET9200,Arduino nano,ESP8266

Offline Gasmast3r

  • Full Member
  • ***
  • Beiträge: 389
Antw:Hilfe bei Calender
« Antwort #6 am: 13 Juli 2018, 18:29:43 »
Ok werde es die tage mal testen habe erstmal alles gelöscht

Offline Gasmast3r

  • Full Member
  • ***
  • Beiträge: 389
Antw:Hilfe bei Calender
« Antwort #7 am: 15 Juli 2018, 11:49:49 »
Hy so habe mich nochmal ranprobiert aber es klappt nicht.

Problem ist halt auch das mir das passende wissen fehlt um den Skript anzupassen.

ich werde mich mal weiter umschauen und hoffen das es doch irgendwie möglich ist, oder ich habe das glück das der WIKI Ersteller sein Eintrag mal anpasst.

ich bedanke mich aber dennoch schon mal für die bisherige und zukünftige Hilfe.

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 9647
    • Otto's Technik Blog
Antw:Hilfe bei Calender
« Antwort #8 am: 15 Juli 2018, 17:22:15 »
Hi,

"es klappt nicht" ist eine ziemlich bescheuerte und dürftige Beschreibung  ;), wie soll ich da helfen?  ::)
Wo kommt welcher Fehler?
Hast Du mal die get Zeile alleine in der Kommandozeile probiert?
Hast Du  mal eine Log Zeile in den Code eingebaut?
Wie hast Du Deinen Code verändert?

Hier habe ich mal etwas zum debugging beschrieben, vielleicht hilft das.
https://wiki.fhem.de/wiki/Notify#Mein_notify_geht_nicht_-_wie_kann_ich_mir_selbst_helfen:_Debugging

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi,HMLAN,HMUART,Homematic,Fritz!Box 7490,Sonos,ET9200,Arduino nano,ESP8266

Offline Gasmast3r

  • Full Member
  • ***
  • Beiträge: 389
Antw:Hilfe bei Calender
« Antwort #9 am: 15 Juli 2018, 17:33:12 »
Hy fehler könnte ich keine feststellen notify klappte meiner meining nach auch nur war bei dem dummys nix.
Da ich derzeit das auch nur zum laufen haben wollte(ohne derzeitigem nutzen) war ich da zu gange.
Ich werde die tage aber weiter testen
Den code gebe ich gleich mal ein bin mir nicht mehr sicher was nach eingabe war.

das
get Kalender_Sven events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1'
oder
get Kalender_Sven events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1',1
ergiebt das
Kalender_Sven: Parameter parse error: opening quote ' without matching closing quote

ich denke mal nur der befehl ist es nicht
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_Sven events uid=$uid 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");
}
}
}

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_Sven events uid=$uid 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");
}
}
}


das ist meine vermutung

da ich auch nicht weis was er mit
get Kalender_Sven summary uid=$uid 1

ausgegeben bekommt ist es für mich ja noch schwerer irgendeine richtung zu finden
« Letzte Änderung: 15 Juli 2018, 17:49:53 von Gasmast3r »

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 9647
    • Otto's Technik Blog
Antw:Hilfe bei Calender
« Antwort #10 am: 15 Juli 2018, 18:03:01 »
Diese Zeile my $Kalendertext = fhem("get Kalender_Sven events uid=$uid 1");würde ich mal durch diese ersetzen
my $Kalendertext = fhem('get Kalender_Sven events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1');
Wenn Du die Zeile in der Kommandozeile testen willst müsstest Du $uid durch einen richtigen Wert ersetzen. So in der Art
get Kalender_Sven events format:custom="$S" filter:uid=="12345" limit:count=1)
12345 ist nicht die richtige ID!!!

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi,HMLAN,HMUART,Homematic,Fritz!Box 7490,Sonos,ET9200,Arduino nano,ESP8266

Offline Gasmast3r

  • Full Member
  • ***
  • Beiträge: 389
Antw:Hilfe bei Calender
« Antwort #11 am: 15 Juli 2018, 18:15:23 »
hy wenn ich

get Kalender_Sven events format:custom="$S" filter:uid=="473hq6j0t6rtoocn5srk3djec8googlecom" limit:count=1)

bekomme ich Spät angezeigt was auch passen müsste

ich teste das grade mit eine Eintrag in meinen Kalender (habe extra geprüft ob FHEM den auch drin hat) ob es geht

das ist der bis jetzt aufgetretene Fehler

2018.07.15 18:17:00 1: PERL WARNING: Use of uninitialized value $Kalendertext in pattern match (m//) at ./FHEM/99_myUtils.pm line 43.
2018.07.15 18:17:00 1: PERL WARNING: Use of uninitialized value $Kalendertext in pattern match (m//) at ./FHEM/99_myUtils.pm line 46.
2018.07.15 18:17:00 1: PERL WARNING: Use of uninitialized value $Kalendertext in pattern match (m//) at ./FHEM/99_myUtils.pm line 49.
2018.07.15 18:17:00 1: PERL WARNING: Use of uninitialized value $Kalendertext in pattern match (m//) at ./FHEM/99_myUtils.pm line 52.
2018.07.15 18:17:10 1: PERL WARNING: Subroutine Kalenderende redefined at ./FHEM/99_myUtils.pm line 61.
2018.07.15 18:20:00 1: PERL WARNING: Use of uninitialized value $Kalendertext in pattern match (m//) at ./FHEM/99_myUtils.pm line 55.


Notify reagiert Dummy wird nicht geschaltet


MyUtility

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_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 ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids = split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
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");
}
}
}
« Letzte Änderung: 15 Juli 2018, 18:28:18 von Gasmast3r »

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 9647
    • Otto's Technik Blog
Antw:Hilfe bei Calender
« Antwort #12 am: Gestern um 00:29:25 »
Der Fehler bedeutet die Variable $Kalendertext ist leer. Was mich irritiert ist die neu Definition von Kalender ende zwischendurch.

Mir fällt als einziges auf: zwischen sub und Kalenderstart ist eine Leerzeile, die gehört da nicht hin. eigentlich kann sub Kalenderstart auf einer Zeile stehen.

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi,HMLAN,HMUART,Homematic,Fritz!Box 7490,Sonos,ET9200,Arduino nano,ESP8266

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 9647
    • Otto's Technik Blog
Antw:Hilfe bei Calender
« Antwort #13 am: Gestern um 13:09:33 »
Ok die Vermutung heute Nacht war es nicht.

Ich verstehe den Split Teil nicht, aber auf alle Fälle läuft der schief. Keine Ahnung warum. Schon der integrierte Editor zeigt dort Syntax Fehler, bzw. die Code Darstellung ist komisch. Ich konnte deinen Fehler exakt nachvollziehen.

Du kannst es aber wesentlich kürzen und von der Sache her exakt das nehmen was betateilchen vorschlägt:

Ich habe wie folgt getestet und es hat funktioniert!
Du änderst den Aufruf im notify auf
{Kalenderstart($EVTPART1,$EVTPART2)}damit ist der Split schon erledigt.
Die Sub änderst Du in
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");
}
}

Wenn das wieder funktioniert:
Eigentlich kann man noch Beides (start und end) zusammenführen. Aber ich will Dich nicht verwirren und ich hoffe Du verstehst was ich getan habe.
Du kannst den Post von betateilchen durchlesen und bekommst das vielleicht selbst hin  ;)

Gruß Otto
« Letzte Änderung: Gestern um 15:30:48 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi,HMLAN,HMUART,Homematic,Fritz!Box 7490,Sonos,ET9200,Arduino nano,ESP8266

Offline Gasmast3r

  • Full Member
  • ***
  • Beiträge: 389
Antw:Hilfe bei Calender
« Antwort #14 am: Gestern um 14:45:41 »
Hy werde ich testen, glaube den hate ich gelesen ist irgendwas mit aktor ein/aus und Heizung Tag/Nacht ?
Dann habe ich nur Bahnhof Koffer klauen verstanden.

Danke aufjeden fall für deine tatkräftige Hilfe

 

decade-submarginal