Hallo Leute,
ich brauch mal wieder eure Hilfe. Ich blick da nicht durch mit fhem und perl in fehm. Hab folgendes DOIF gebaut:
([11:11] and [Geburtstagsliste:t_001_daysleft] == 1)
( {my $val= ReadingsVal ('Geburtstagsliste','t_001_summary','');;
my $t= ReadingsVal ('Geburtstagsliste','t_001_description','');;
my $rec= substr("$t",0,1);;
if (($rec eq "m") || ($rec eq "M")) {fhem ("set SigBot send \@+4917xxxxxxxx Morgen hat $val Geburtstag") }
elsif (($rec eq "c") || ($rec eq "C")) {fhem ("set SigBot send \@+4916xxxxxxx Morgen hat $val Geburtstag") }
else {fhem ("set SigBot send \#Gruppe Morgen hat $val Geburtstag") }
})
DOELSEIF ([06:00])
Bei dem letzten else bekomme ich den text "Morgen hat $val Geburtstag" aber stat $val sollte dort der Name stehen. Sicher habe ich mal wieder irgenwo eine Klammer, Semikolon oder sowas übersehen.
Kann mir jemand da weiterhelfen?
Gruß
Christian
Ist zwar nicht Perl-like, sollte aber funktionieren, wenn Du statt
Zitat von: Kohle77 am 19 November 2021, 12:58:20
{fhem ("set SigBot send \@+4917xxxxxxxx Morgen hat $val Geburtstag") }
{fhem ("set SigBot send \@+4917xxxxxxxx Morgen hat ".$val." Geburtstag") }
schreibst.
Grüße
Hallo,
hatte ich auch schon dran gedacht aber ich bekomme im Log (mit verbose 5):
Not enough arguments. Specify a Recipient, a GroupId or set the defaultPeer attribute
im log.
Gruß
Christian
Ich bin mir nicht sicher... Aber muss man # wirklich escapen? Ich denke eher nicht....
@ und $ sind normal, da das Zeichen sind die bei Arrays und Variablennamen zum Einsatz kommen. Aber #?
Ansonsten mach bitte Mal das Leerzeichen zwischen fhem und ( raus... Funktionen ruft man eigentlich immer so auf fhem($foo)....
Hi,
ich denke das # ist hier das Problem.
Hatte auch schonmal an sowas gedacht:
set SigBot send #Gruppe Morgen hat ['Geburtstagsliste','t_001_summary'] Geburtstag") }
aber da stimmt auch wieder etwas nicht mit den Klammern.
Kann ich nach dem Else einfach ein fhem command machen d.h. else } (set knx_0003000) on z.B.?
Dachte an sowas wie perl und normale FHEM commands mischen.
Gruß
Christian
Hallo,
das Problem ist gefunden.
Ich habe in der Geburtstagsliste in der Variable t_001_summary stehen "Vorname Nachname 'xx" wobei das xx das Jahr ist.
Somit steht in $var eben auch das ' zeichen. Problem ist wohl das eben nur ein ' Zeichen im Text vorkommt und somit das schließende ' fehlt (soweit ich es verstanden habe ist es immer ein ' zum öffnen und ein weiteres ' zum schließen.
Ich habe einfach "Vorname Nachname 19xx" in den Kalender geschrieben und damit entfällt das ' Zeichen und siehe da es geht.
Gruß
Christian