Hauptmenü

Calender in Perl mit uid

Begonnen von doc., 15 November 2022, 10:18:48

Vorheriges Thema - Nächstes Thema

doc.

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!

betateilchen

Warum stellst Du die Frage nicht im richtigen Unterforum?

fhem('get SmartHomeCal events filter:uid=="'.$uid.'"');
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

doc.

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/

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

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 ...  ;)
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

doc.

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.

betateilchen

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?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

doc.

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.

betateilchen

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, in dem seit 4 1/2 Jahren die neue Variante beschrieben ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!