Fehlermeldung bei Senden einer Telegram-Nachricht mit if

Begonnen von vic, 19 August 2018, 10:37:05

Vorheriges Thema - Nächstes Thema

vic

Guten Tag liebe Gemeinde

Ich stecke schon seit einigen Tagen an einem Problem fest und hoffe auf eure Hilfe.
Für meine Frau habe ich ein Armband konstruiert an dem eine HM-Funkfernsteuerung angebracht ist. Die Idee ist dass falls sie Hilfe benötigt einen Knopf betätigen kann und ich eine Nachricht via e-Mail und Telgram erhalte.

Das Ganze funktioniert mit diesem Code:
##### Funktioniert
define act_Alarm_1.1 notify HM_691F15:HM_691F15_Btn_01.Short \
{ (DebianMail_gmx('name@host.com','***** Fhem ***** Alarm!!! *****', \
'Der Alarmknopf 1 wurde aktiviert!') ) } ;; \
set teleBot message @@pasta ***** Fhem ***** Alarm!!! ***** \n Der Alarmknopf 1 wurde aktiviert!


Da die Funkfernbedienung mehrere Alarme sendet (ca. 2 bis 6) wollte ich eine Routine schreiben die nur einen Alarm auslöst.
So würde er funktionieren:
##### Funktioniert
define act_Alarm_1 notify HM_691F15_Btn_01 \
{if (Value("var_Alarm_1.1") ne "off") \
{ DebianMail_gmx('name@host.com','***** Fhem ***** Alarm!!! *****', \
'Der Alarmknopf wurde aktiviert!' ) } ;; \
{ fhem("set var_Alarm_1.1 off ;; define Timer_Alarm_1.1 at +00:00:03 set var_Alarm_1.1 on") } \
}



Wenn ich jedoch die Telegram-Benachrichtigung einfüge funktioniert es nicht mehr:
##### Funktioniert nicht
define act_Alarm_1 notify HM_691F15_Btn_01 \
{if (Value("var_Alarm_1.1") ne "off") \
{ DebianMail_gmx('name@host.com','***** Fhem ***** Alarm!!! *****', \
'Der Alarmknopf wurde aktiviert!' ) } ;; \
{ fhem("set var_Alarm_1.1 off ;; define Timer_Alarm_1.1 at +00:00:03 set var_Alarm_1.1 on ;; set teleBot message @@pasta ***** Fhem ***** Alarm!!! ***** \n Der Alarmknopf 1 wurde aktiviert!") } \
}



Die folgende Fehlermeldung erscheint:
2018.08.19 10:06:03 1: ERROR evaluating my $NAME='HM_691F15_Btn_01';my $EVTPART1='130';my $SELF='act_Alarm_1';my $TYPE='CUL_HM';my $EVENT='trigger_cnt: 130';my $EVTPART0='trigger_cnt:';{if (Value("var_Alarm_1.1") ne "off") { DebianMail_gmx('name@host.com','***** Fhem ***** Alarm!!! *****', 'Der Alarmknopf wurde aktiviert!' ) } ; { fhem("set var_Alarm_1.1 off ; define Timer_Alarm_1.1 at +00:00:03 set var_Alarm_1.1 on ; set teleBot message @@pasta ***** Fhem ***** Alarm!!! ***** \n Der Alarmknopf 1 wurde aktiviert!") } }: Global symbol "@pasta" requires explicit package name (did you forget to declare "my @pasta"?) at (eval 194) line 4. 2018.08.19 10:06:03 3: act_Alarm_1 return value: Global symbol "@pasta" requires explicit package name (did you forget to declare "my @pasta"?) at (eval 194) line 4.

Nun hoffe ich fest auf eure Hilfe und bedanke mich dass ihr euch für mein Anliegen Zeit nehmt.

Raspberry Pi 4
RFXTRX 868MHz und 433MHz
FS20, Intertechno, Homematic, Shelly
MAX!-Cube, Philips HUE-Bridge

Otto123

Moin,

du musst im at die ; verdoppeln!
https://fhem.de/commandref_DE.html#command
ZitatFür jede weitere Indirektion muss man die Strichpunkte verdoppeln. Um also die beiden Lampen um 7:00 für 10 Minuten einzuschalten schreibt man:
define onAt at 07:00 set Lamp1 on;;set Lamp2 on;; define offAt at +00:10 set Lamp1 off;;;;set Lamp2 off

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

vic

Wow Danke Otto für die superschnelle Antwort.

Habe den Code geändert da der Alarm auf Telegram sofort raus sollte:
define act_Alarm_1 notify HM_691F15_Btn_01 \
{if (Value("var_Alarm_1.1") ne "off") \
{ DebianMail_gmx('claudio.violi@lienta.ch','***** Fhem ***** Alarm!!! *****', \
'Der Alarmknopf wurde aktiviert!' ) } ;; \
{ fhem("set teleBot message @@ra_violi ***** Fhem ***** Alarm!!! ***** \n Der Alarmknopf 1 wurde aktiviert! ;; \
set var_Alarm_1.1 off ;; define Timer_Alarm_1.1 at +00:00:03 set var_Alarm_1.1 on") } \
}


Leider funktioniert dies immer noch nicht.
Meldung jetzt:
2018.08.19 12:14:50 1: ERROR evaluating my $EVENT='trigger_cnt: 1';my $NAME='HM_691F15_Btn_01';my $EVTPART1='1';my $EVTPART0='trigger_cnt:';my $TYPE='CUL_HM';my $SELF='act_Alarm_1';{if (Value("var_Alarm_1.1") ne "off")
{ DebianMail_gmx('name@host.com','***** Fhem ***** Alarm!!! *****',
'Der Alarmknopf wurde aktiviert!' ) } ;
{ fhem("set teleBot message @@pasta ***** Fhem ***** Alarm!!! ***** \n Der Alarmknopf 1 wurde aktiviert! ;
set var_Alarm_1.1 off ; define Timer_Alarm_1.1 at +00:00:03 set var_Alarm_1.1 on") }
}: Global symbol "@pasta" requires explicit package name (did you forget to declare "my @pasta"?) at (eval 193) line 4.

2018.08.19 12:14:50 3: act_Alarm_1 return value: Global symbol "@pasta" requires explicit package name (did you forget to declare "my @pasta"?) at (eval 193) line 4.


Danke für die Hilfe

Claudio
Raspberry Pi 4
RFXTRX 868MHz und 433MHz
FS20, Intertechno, Homematic, Shelly
MAX!-Cube, Philips HUE-Bridge

Otto123

#3
Hallo Claudio,

dein Code macht mich confus, da im Code und in der Fehlermeldung unterschiedliche Nudeln zum Einsatz kommen.
;D
Ich glaube also nicht das beides etwas miteinander zu tun hat.

Ich weiß nicht, ich maskiere die @ innerhalb von "" immer mit \@ - ob die Verdopplung auch richtig ist kann ich jetzt nicht sagen.
Du machst nach dem if () {} nochmal eine Ebene auf {fhem("")} ob da so richtig geht weiß ich auch nicht. Ich würde nur if (){};fhem("") schreiben.
Allerdings hast du im ersten Post die Ausgangslage auch so als funktionierend beschrieben.

Meine erste anmerkung war auf diesen Code Abschnitt
Zitatdefine Timer_Alarm_1.1 at +00:00:03 set var_Alarm_1.1 on ;; set teleBot message @@pasta ***** Fhem ***** Alarm!!!
anstatt der roten ;; müssen vier hin -> ;;;;

Was auch zur Fehlermeldung passt weil er mit dem nachfolgenden @pasta Probleme hat  ;D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

vic

Hallo Otto

Vielen Dank für deine Hilfe.

Habe nun folgendes zusammengebastelt.
In 99_myUtils.pm:
######## Alarm Start ############
sub
prl_Alarm($)
{
   my ($var_Alarmcode) = @_;
{ DebianMail_gmx('name@host.com','***** Fhem ***** Alarm!!! *****', 'Der Alarmknopf wurde aktiviert!' ) };

fhem("set teleBot message \@\@pasta ***** Fhem ***** Alarm!!! ***** \n Der Alarmknopf 1 wurde aktiviert!" );
}
######## Alarm Ende ############


Dies funktioniert.

In fhem_003_Define_HM.cfg:
define act_Alarm_1 notify HM_691F15_Btn_01 \
{if (Value("var_Alarm_1.1") ne "off") \
{ prl_Alarm("on") } ;; \
{ fhem("set var_Alarm_1.1 off ;; \
define Timer_Alarm_1.1 at +00:00:03 set var_Alarm_1.1 on") } \
}


Den zweiten Teil konnte ich noch nicht testen da ich im Moment "offline" bin.

Ein sehr guter Hinweis war die Maskierung!

Vielen Dank und viele Grüsse von Irgendwo auf dem Zürichsee. 8)

Claudio
Raspberry Pi 4
RFXTRX 868MHz und 433MHz
FS20, Intertechno, Homematic, Shelly
MAX!-Cube, Philips HUE-Bridge

vic

Hallo Otto und Gemeinde

Hiermit möchte ich den Post erfolgreich abschliessen.

Der eingesetzte Code sieht wie folgt aus. In 99_myUtils.pm:

######## Alarm Start ############
sub
prl_Alarm($)
{
   my ($var_Alarmcode) = @_;
{ DebianMail_gmx('name@host.com','***** FHEM ***** Alarm!!! *****', "Der Alarmknopf $var_Alarmcode wurde aktiviert!" ) };

fhem("set teleBot message \@\@pasta ***** FHEM ***** Alarm!!! ***** \n Der Alarmknopf $var_Alarmcode wurde aktiviert!" );
}
######## Alarm Ende ############



und in fhem_003_Define_HM.cfg
##### Funktioniert
define act_Alarm_1.1 notify HM_691F15_Btn_01 \
{if (Value("var_Alarm_1") ne "off") \
{ prl_Alarm("1") } ;; \
{ fhem("set var_Alarm_1 off ;; \
define Timer_Alarm_1 at +00:00:03 set var_Alarm_1 on") } \
}


Funktioniert wunderbar.

Vielen Dank allen und vor allem Dir Otto!

Claudio
Raspberry Pi 4
RFXTRX 868MHz und 433MHz
FS20, Intertechno, Homematic, Shelly
MAX!-Cube, Philips HUE-Bridge