FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Kohle77 am 19 November 2021, 12:58:20

Titel: [gelöst] FHEM - PERL es wird $var geschickt aber ich verstehe nicht warum
Beitrag von: Kohle77 am 19 November 2021, 12:58:20
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
Titel: Antw:FHEM - PERL es wird $var geschickt aber ich verstehe nicht warum
Beitrag von: alanblack am 19 November 2021, 19:09:01
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
Titel: Antw:FHEM - PERL es wird $var geschickt aber ich verstehe nicht warum
Beitrag von: Kohle77 am 19 November 2021, 21:29:38
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
Titel: Antw:FHEM - PERL es wird $var geschickt aber ich verstehe nicht warum
Beitrag von: bartman121 am 19 November 2021, 21:45:23
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)....
Titel: Antw:FHEM - PERL es wird $var geschickt aber ich verstehe nicht warum
Beitrag von: Kohle77 am 20 November 2021, 06:32:10
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
Titel: [gelöst]:FHEM - PERL es wird $var geschickt aber ich verstehe nicht warum
Beitrag von: Kohle77 am 22 November 2021, 07:34:07
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