[Gelöst] Telegram Nachricht an Kontakt senden @ explicit package name

Begonnen von dietzi, 07 Mai 2019, 08:58:25

Vorheriges Thema - Nächstes Thema

dietzi

Moin,

ich habe ein notify mit folgender enthaltenen Zeile:
fhem("set TelegramBot send @Kontakt_Name Nachricht");

Allerdings scheitert es an dem @-Zeichen. Im Log ist folgender Fehler zu sehen:
Global symbol "@Kontakt_Name" requires explicit package name (did you forget to declare "my @Kontakt_Name"?) at (eval 1090263) line 4.

Wie muss ich das @-Zeichen escapen damit alles rund läuft?

LG Dietzi

amenomade

#1
Ich würde sagen: mit \@
Ansonsten single quotes benutzen: 'set TelegramBot....' (solange deine Nachricht keine Variable enthält. Ggf. musst Du dann dieses String mit "." teilen und wo Variable sind, wieder die double quotes nutzen), z.B.:
fhem('set TelegramBot send @Kontakt '. "teil mit $var $iable")
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

dietzi

Hilft alles leider nicht.

@Kontakt_Name
\@Kontakt_Name
'@Kontakt_Name'
'\@Kontakt_Name'
"@Kontakt_Name"
"\@Kontakt_Name"

Gebe ich den Befehl manuell ein läuft alles durch. Nur im notify funktionert es nicht. Es scheitert am @

Perl ist scheinbar der Meinung dass es sich durch das @ um eine Variable handelt was aber keine ist.....

marvin78

Was ist mit dem hier?

fhem('set TelegramBot send @Kontakt_Name Nachricht');



Sonst musst du schon ein wenig mehr Infos bieten (bspw. das ganze notify). Du kannst nicht erwarten, dass man den Rest errät.

dietzi

Geht auch nicht. Habe inzwischen alle Möglichkeiten durch.....

marvin78

Zitat von: marvin78 am 07 Mai 2019, 09:53:05

Sonst musst du schon ein wenig mehr Infos bieten (bspw. das ganze notify). Du kannst nicht erwarten, dass man den Rest errät.

dietzi

defmod n_test notify device:reading:.* {
  if($EVTPART1 eq "event") {
    fhem('set TelegramBot send @Kontakt_Name Nachricht');
  }
}

marvin78

Escape bitte mal mit doppeltem @.

Kommt hier der selbe Fehler, wie zu Beginn?

Was ergibt

{fhem('set TelegramBot send @Kontakt_Name Nachricht')}

in der Kommandozeile?

dietzi

So.... War ein Fehler meinerseits. Wenn man ein Test-Notify anlegt und das update-reading nicht richtig setzt im Device wird es nichts....

Die richtige Anwendung ist mit Single-Quotes
fhem('set TelegramBot send @Kontakt_Name Nachricht');

Danke für eure Hilfe.

LG Dietzi