FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: doc. am 15 November 2022, 10:18:48

Titel: Calender in Perl mit uid
Beitrag von: doc. am 15 November 2022, 10:18:48
Hallo zusammen,

ich habe meine Kalenderabfrage in Perl jetzt brav auf "events" umstellen wollen, ich habe aber ein Problem mit der folgenden Zeile:

my $Kalendertext = fhem("get SmartHomeCal events filter:uid==\"$uid\"");

Ich bekomme im Coding kein Ergebnis, wohl aber wenn ich im Device direkt abfrage z.B.

get SmartHomeCal events filter:uid=="75jsut87envogae65gosvd03gkgooglecom"

Stimmt da irgendwas mit den Anführungszeichen nicht?

Danke im Voraus!
Titel: Antw:Calender in Perl mit uid
Beitrag von: betateilchen am 15 November 2022, 10:57:32
Warum stellst Du die Frage nicht im richtigen Unterforum?

fhem('get SmartHomeCal events filter:uid=="'.$uid.'"');
Titel: Antw:Calender in Perl mit uid
Beitrag von: doc. am 15 November 2022, 11:25:00
Zitat von: betateilchen am 15 November 2022, 10:57:32
Warum stellst Du die Frage nicht im richtigen Unterforum?

Sorry, hatte hier in diesem Unterforum ein ähnliches Thema gefunden, wegen des Alters aber ein neues aufgemacht.

Zitat von: betateilchen am 15 November 2022, 10:57:32
fhem('get SmartHomeCal events filter:uid=="'.$uid.'"');

Das macht Sinn, danke...aber müßte meine Variante prinzipiell nicht auch gehen? Siehe hier z.B.: https://de.acervolima.com/perl-in-anfuhrungszeichen-gesetzte-interpolierte-und-maskierte-zeichenfolgen/
Titel: Antw:Calender in Perl mit uid
Beitrag von: betateilchen am 15 November 2022, 11:32:28
Zitat von: doc. am 15 November 2022, 11:25:00
aber müßte meine Variante prinzipiell nicht auch gehen?

Tut sie auch - zumindest bei mir, wenn ich sie in mein FHEM kopiere.
Titel: Antw:Calender in Perl mit uid
Beitrag von: Otto123 am 15 November 2022, 11:48:54
Ich werfe mal noch eine Variante ein:
fhem qq(get SmartHomeCal events filter:uid=="$uid");
es funktionieren alle drei Varianten wenn ich sie bei mir teste ...  ;)
Titel: Antw:Calender in Perl mit uid
Beitrag von: doc. am 15 November 2022, 12:59:42
Zitat von: Otto123 am 15 November 2022, 11:48:54
es funktionieren alle drei Varianten wenn ich sie bei mir teste ...  ;)

Ja, funktioniert auch...uid hat aber am Ende ein Leerzeichen, ich darf nicht == benutzen, sondern =~, oder ich muß das Leerzeichen entfernen ::)

Das habe ich aber erst rausgefunden, als ich jetzt in jedem Schritt eine Ausgabe mit Log gemacht hatte...deswegen danke für eure Bestätigung, daß diese drei Varianten funktionieren müßten, erst dadurch kam ich auf die Idee weiterzusuchen, sonst hätte ich ewig an der falschen Stelle weitergemacht.
Titel: Antw:Calender in Perl mit uid
Beitrag von: betateilchen am 15 November 2022, 14:00:55
Zitat von: doc. am 15 November 2022, 12:59:42
Ja, funktioniert auch...uid hat aber am Ende ein Leerzeichen,

Ich glaube nicht, dass die uid selbst am Ende ein Leerzeichen hat.
Es kommt vielleicht in $uid ein Leerzeichen am Ende vor - das hast Du dann aber höchstwahrscheinlich beim Befüllen der Variable selbst verbrochen.

Wo kommt denn der Wert in $uid her bzw. mit welchem Wert füllst Du diese Variable?
Titel: Antw:Calender in Perl mit uid
Beitrag von: doc. am 13 Dezember 2022, 09:48:36
Das Coding sieht so aus:

sub Kalenderstart ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids = split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
            $uid=~ s/\s+$//;     <-- hab ich eingefügt um das Leerzeichen loszuwerden
    my $Kalendertext = fhem("get SmartHomeCal events filter:uid==\"$uid\"");
    if ($Kalendertext =~ /Urlaub/) {


Ich hab das ehrlichweise von irgendwo übernommen. Und vorher auch nie Probleme gehabt.
Titel: Antw:Calender in Perl mit uid
Beitrag von: betateilchen am 13 Dezember 2022, 09:59:54
Die Variante mit dem $Ereignisteil... ist doch uralt und stammt noch aus Zeiten vor der kompletten Umstellung des Calendar-Moduls.

Schau mal im richtigen Unterforum zum Calendar-Modul, da gibt es einen einzigen angepinnten Beitrag (https://forum.fhem.de/index.php/topic,87895.0.html), in dem seit 4 1/2 Jahren die neue Variante beschrieben ist.