FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: michisa86888 am 13 April 2020, 21:06:11

Titel: Notify für FHEM Steuerung per Telegrambot
Beitrag von: michisa86888 am 13 April 2020, 21:06:11
Hallo zusammen,
beschäftige mich gerade zum ersten mal mit Notify.
Möchte jetzt für meine FHEM Installation ein Notfiy für meinen TelegramBot schreiben.
Wenn eine Nachricht an den Bot geschickt wird z.B. Stehlampe an soll das Notify reagieren und die Stehlampe anschalten.

Mein Notify sieht aktuell wie folgt aus:

teleBot:msgText.* {
#Stehlampe Esszimmer
if ($EVTPART1 eq 'Stehlampe') {
if ($EVENT =~ 'an') {
fhem("set Stehlampe ON");
}
elsif ($EVENT =~ 'aus') {
fhem("set Stehlampe OFF");
}
}
#Pumpe Zisterne
if ($EVTPART1 eq 'Pumpe') {
if ($EVENT =~ 'an') {
fhem("set Pumpe_Zisterne ON");
}
elsif ($EVENT =~ 'aus') {
fhem("set Pumpe_Zisterne OFF");
}
}

else {
}
}

Es kommt zwar folgende Meldung im Eventmonitor
2020-04-13 21:05:12 TelegramBot teleBot msgText: Stehlampe an
aber das Notify reagiert nicht?
Titel: Antw:Notify für FHEM Steuerung per Telegrambot
Beitrag von: CoolTux am 13 April 2020, 21:09:27
Stehlampe ist EVTPART0
Titel: Antw:Notify für FHEM Steuerung per Telegrambot
Beitrag von: michisa86888 am 13 April 2020, 21:21:46
Zitat von: CoolTux am 13 April 2020, 21:09:27
Stehlampe ist EVTPART0
Vielen Dank für deine schnelle Antwort.
Das scheint es aber nicht gewesen zu sein. Das Notify reagiert weiterhin nicht?

Sollte die Pumpe dann EVTPART1 bleiben?
Titel: Antw:Notify für FHEM Steuerung per Telegrambot
Beitrag von: flummy1978 am 13 April 2020, 21:23:33
Holla,

grundlegend hat Dir CoolTux ja schon in die richtige Richtung geholfen. Ich wollte nur noch zeigen wie ich (ebenfalls als Anfäger) an solche Sachen immer rangehe:

teleBot:msgText.* {
Log(1, $EVTPART1);
#Stehlampe Esszimmer
if ($EVTPART1 eq 'Stehlampe') {
if ($EVENT =~ 'an') {
Log(1, " Stehlampe soll AN geschaltet werden");
fhem("set Stehlampe ON");
Log(1, " Stehlampe wurde AN geschaltet");
}
elsif ($EVENT =~ 'aus') {
Log(1, " Stehlampe soll AUS geschaltet werden");
fhem("set Stehlampe OFF");
Log(1, " Stehlampe wurde AUS geschaltet");
}
}
usw.


Mit den Log Einträgen siehst Du dann im Log wunderbar welchen Eintrag dein $EVENT oder $EVTPART0 oder $EVTPART1 auslöst. Speziell am Anfang wenn man unsicher mit der Syntax ist, ist das sehr hilfreich. Das ist ganz sicher nicht der Weisheit letzter Schluss, aber für Anfänger hilfreich und hat mich davor bewahrt hier viele Fragen zu stellen die sich wegen einem Tippfehler, oder Missverständnis von EVTPART0 und 1 oder EVEN oder auch $name und $NAME ergaben.

Da ich sowas auch bei mir eingebaut hat noch ein kleiner Tipp:
Schau Dir bitte die Attribute cmdRestrictedPeer die Readings Contacts, msgPeerId usw an und mach es schwerer die Sachen zu schalten. Tue Dir selbst einen Gefallen indem Du solche Anfragen nur von Deinem Kontakt(en) zulässt, den Du selbst eingerichtet hast, alles andere ignoriert wird und nicht ohne zu prüfen einfach irgendwelche Befehle ausführt.
Sicherlich finden es manche nicht so schlimm, wenn jemand auf einmal einem die Lampe hin und her schalten kann, aber ich finde es befremdlich und unverzeihlich wenn ich wüsste dass ich nicht wenigstens versucht habe möglichst viele Hürden einzubauen und es entsprechend  möglichst schwer zu machen.

Hoffe geholfen zu haben
Viele Grüße
Andreas
Titel: Antw:Notify für FHEM Steuerung per Telegrambot
Beitrag von: CoolTux am 13 April 2020, 21:25:45
Mach mal ein list vom Notify

list NOTIFYNAME

Woher weißt Du das es nicht auslöst. Es ist eine Sache das das Notify nicht triggert eine andere das die Befehle nicht ausgeführt werden.
Titel: Antw:Notify für FHEM Steuerung per Telegrambot
Beitrag von: Otto123 am 13 April 2020, 22:15:43
Zum Einlesen: https://wiki.fhem.de/wiki/Notify
Zitat2020-04-13 21:05:12 TelegramBot teleBot msgText: Stehlampe an
Damit ist $NAME teleBot
$EVTPART0 msgText:
$EVTPART1 Stehlampe
$EVTPART2 an

Die Abfrage ($EVENT =~ 'an') ist gefährlich - der reagiert auch auf {('Panne aus'  =~ 'an')}
Also warum den ganzen Event testen?

Der Trigger auf teleBot:msgText.* ist gefährlich, der anschließende Test wird Fehler werfen wenn es $EVTPART1 oder 2 gar nicht gibt. Also besser exakt triggern
teleBot:msgText:(Stehlampe|Pumpe_Zisterne).(ON|OFF)

Gruß Otto
Titel: Antw:Notify für FHEM Steuerung per Telegrambot
Beitrag von: viegener am 13 April 2020, 22:17:48
Ich will ja die notify-Diskussion nicht stören, aber ein ganz anderer Hinweis:

Telegrambot - bietet die Mögichkeit Schaltbefehle (über Favoriten) zu definieren. Damit lässt sich das auch auf bestimmte Absender einschränken und auch Rückmeldungen verschicken

Titel: Antw:Notify für FHEM Steuerung per Telegrambot
Beitrag von: michisa86888 am 13 Mai 2020, 21:41:29
So jetzt habe ich wieder Zeit mich der Sache zu anzunehmen. Habe mal ein list vom aktuellen Notify gemacht

Internals:
   DEF        teleBot:msgText.* {
#Stehlampe Esszimmer
if ($EVTPART0 eq 'Stehlampe') {
if ($EVENT =~ 'an') {
fhem("set Stehlampe ON");
}
elsif ($EVENT =~ 'aus') {
fhem("set Stehlampe OFF");
}
}
#Pumpe Zisterne
if ($EVTPART0 eq 'Pumpe') {
if ($EVENT =~ 'an') {
fhem("set Pumpe_Zisterne ON");
}
elsif ($EVENT =~ 'aus') {
fhem("set Pumpe_Zisterne OFF");
}
}

else {
}
}
   FUUID      5e94b1e8-f33f-f7a6-b2ee-cbed774b92332c3a
   NAME       Telegram_Message_Center
   NOTIFYDEV  teleBot
   NR         110
   NTFY_ORDER 50-Telegram_Message_Center
   REGEXP     teleBot:msgText.*
   STATE      active
   TRIGGERTIME 1589398075.874
   TYPE       notify
   READINGS:
     2020-05-13 21:37:15   state           active
Attributes:
   icon       it_smartphone
   room       93_Notify


Zitat
Woher weißt Du das es nicht auslöst. Es ist eine Sache das das Notify nicht triggert eine andere das die Befehle nicht ausgeführt werden.
Naja im Eventmonitor kommt nichts vom notify? Kann ich das irgendwie anders testen?
Titel: Antw:Notify für FHEM Steuerung per Telegrambot
Beitrag von: Otto123 am 13 Mai 2020, 22:24:55
Ein notify erzeugt nicht zwingend Events, es reagiert darauf.
Ob die Events, auf die das notify reagieren könnte, existieren kannst Du im Eventmonitor prüfen:
Nimm diesen Filter vom notify:
teleBot:msgText.*
oder
teleBot.*
Titel: Antw:Notify für FHEM Steuerung per Telegrambot
Beitrag von: MadMax-FHEM am 13 Mai 2020, 22:29:43
Ich würde auch (mache ich immer zu Beginn so) ausgeben, was denn überhaupt VOR den ganzen "Entscheidungen" reinkommt...
...nicht dass das notify triggert aber für dich nur so aussieht als würde es das nicht tun, weil eben die Entscheidung nicht so zutrifft wie von dir gedacht...

Wurde ja auch von flummy1978 schon mal angeregt...

Gruß, Joachim
Titel: Antw:Notify für FHEM Steuerung per Telegrambot
Beitrag von: Otto123 am 13 Mai 2020, 22:42:29
und wie das geht ist gut beschrieben :)
https://wiki.fhem.de/wiki/Notify#Mein_notify_geht_nicht_-_wie_kann_ich_mir_selbst_helfen:_Debugging