[gelöst] Zugriff auf lokale Variable im Timer (set_Exec)

Begonnen von hackepeter, 01 Juli 2020, 14:28:40

Vorheriges Thema - Nächstes Thema

hackepeter

Hallo,

wie ich es auch drehe - ich kann nicht auf meine lokalen Variablen in einem Timer zugreifen:

{if (["^TC35i:^Message"]){
my $TelNumber = ReadingsVal("Receiver".$ReceiverNr,"Tel","090066666666");;

set_Exec("Timer1",30,'fhem_set("TC35i MSGNumber $TelNumber");fhem_set("TC35i MSGTxt Testsubject");fhem_set("TC35i MSGSend");Log 1,"No SMSreply received, Send_Notification_Recipient2_Message"');


Fehler: Global symbol "$TelNumber" requires explicit package name (did you forget to declare "my $TelNumber"?) at (eval 3155) line 1.

Tausche ich $TelNumber gegen eine Telefonnummer aus, funktioniert der Code.
Hat jemand eine Idee?

Damian

#1
Natürlich nicht. Lokale Variablen sind zum Ausführungszeitpunkt nicht bekannt.

Drehe mal die Anführungszeichen, damit die Variable vorher ausgewertet wird:

"fhem_set('TC35i MSGNumber $TelNumber');...."
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

hackepeter

Vielen Dank Damian, das funktioniert!
Wie immer Weltklasse dieses Forum!