Hauptmenü

Problem mit Perl templates

Begonnen von Eonwe, 10 März 2023, 00:19:28

Vorheriges Thema - Nächstes Thema

Eonwe

Hallo zusammen,

ich nutze FHEM schon seit einigen Jahren, auch DOIFs. Ich war hier sogar schonmal angemeldet, das ist aber ewig her.
Jetzt wollte ich für eine neue Aufgabe DOIF mit Perl und templates umsetzen, aber ich komm auf keinen Grünen Zweig.
Ziel ist die Steuerung des Anwesenheitsstatus über PING auf Handys.

folgendes funktioniert.
{if ([Handy_Test] eq "present")
{fhem_set"rr_Test home"}
}


Will ich das jetzt auf ein template übertragen
defmod DOIF_TEST DEF tpl_presence(
{if ([$1] eq "present")
{fhem_set "$2 home"}
}
)
tpl_presence(Handy_Test,rr_Test)

passiert erstmal gar nichts. Ersetze ich $1 wieder durch einen hart codierten Wert, bekomm ihc bei $2 ne Fehlermeldung:
2023.03.09 23:40:09 1: PERL WARNING: Use of uninitialized value $2 in concatenation (.) or string at (eval 676) line 2.

Irgendwas passt glaube ich mit der Initialisierung der Variablen nicht, aber ich komm nicht drauf, wo und warum.

Danke für eure Hilfe!

xenos1984


Eonwe

Vielen Herzlichen Dank, das war es. Da wär ich im Traum nicht drauf gekommen, dass das case sensitive ist. Jetzt läufts!

Damian

Zitat von: Eonwe am 10 März 2023, 22:09:53
Vielen Herzlichen Dank, das war es. Da wär ich im Traum nicht drauf gekommen, dass das case sensitive ist. Jetzt läufts!

In Perl ist alles case sensitive. Warum sollte man da eine Ausnahme machen? Es ist ja nicht gerade günstig, dass FHEM das nicht tut. if z. B. kann Perl-if sein aber auch FHEM-IF, da kann der Anfänger schnell durcheinander kommen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF