Fragen zu Telegram

Begonnen von dennis_n, 22 Januar 2018, 21:25:09

Vorheriges Thema - Nächstes Thema

dennis_n

Hi,

ich bin gerade dabei üer fhem verschiedene Automatismen für unsere Feuerwehr zu organisieren.
Da stellt sich mir die Frage, ob es einen Dienst gibt, mit dem ich Pushnachrichten verschicken kann, welche 2 Link enthält.
Konkret geht es darum, dass ich die Kameraden bei einem Alarm per Handy alarmieren möchte und sie dann Rückmeldung geben, ob sie zum Einsatz kommen oder nicht.
Dazu hätte ich jedem einzelnen eine Pushnachicht geschickt mit einem Link für JA und einem für NEIN. Nach dem Klick, wird dann in fhem das entsprechende Dummy Device des Kameraden auf den entsprechenden Wert gesetzt.

Oder denke ich da zu kompliziert? Geht es vielleicht auch einfacher? Für einen Denkanstoß wäre ich dankbar.

Gruss
Dennis

Wuehler

Hast du dir schon mal das Telegram-Modul angesehen? Vielleicht in Verbindung mit msg?

Damit könnte man eine Gruppe mit allen einrichten oder zu jedem einen einzelnen Chat einrichten. Per inline-Keyboard könntest du einfache Antwortmöglichkeiten bereitstellen. Oder alternativ in der Nachricht Antwort-Kommandos.

dennis_n

Jetzt wo Du es sagst, erinnere ich mich. Ich glaube ich hatte hier schonmal gefragt und auch Telegram empfohlen bekommen.
Das hatte ich mir dann auch angeschaut, aber irgendwie bin ich da nicht weitergekommen.

Eine Gruppe über den Chatbot anzulegen usw. geht ja noch, aber wie werte ich denn über fhem die Antworten der Kameraden aus?
Die antworten ja dann alle in diese Gruppe. Wie bekomme ich denn so das Dummy Device des jeweiligen Kameraden gesetzt?

Über ein wenig Hilfestellung wäre ich Dir sehr dankbar.

Gruss
Dennis

Wuehler

Im Telegrambot gibt es das Reading msgPeer. Jeder der Feuerwehrmänner/frauen braucht einen eigenen Telegram–user. Den kannst du über das reading abfragen.
Ich denke aber in Kombination mit Residents und Roommates und msg geht das noch einfacher als mit dummys alles selbst zu bauen. Ist jetzt nicht mein Spezialgebiet, aber ungefähr so:
– einmal Residents ,,Feuerwehr" anlegen und die Kollegen als ,,Roommates" darin erzeugen.
– msgConfig anlegen und konfigurieren und bei jedem Roommate das Attribut msgContactPush auf Telegram:@<kollege> setzen.
– und als letztes einen msgDialog anlegen.

Details in den jeweiligen Wiki–Artikeln und passenden Foren. Habe auf die Schnelle bestimmt irgendeine Konfiguration vergessen.

dennis_n

Hi Leute,

ich habe es heute endlich geschafft den TelegramBot einzurichten.
Bisher habe ich folgendes Szenario:

in fhem habe ich für jeden Kameraden ein Dummy erstellt mit dem UserReading "Anwesenheit". Diesem Reading setze ich über fhem entweder den Status 0 für "komme nicht zum Einsatz" oder Status 1 "Komme" oder Status 6 "Bin Abwesend". Das funktioniert soweit.

Dann habe ich über Telegram einen neuen Bot eingerichtet und in fhem alles integriert. Ausserdem ein entsprechendes Shortcut angelegt zum testen.
Wenn ich über das Handy im Telegram Messenger dem Bot folgendes sage: /AlarmStatus
zeigt er mir die zuvor als Fovoriten angelegten Shortcuts.

Problem oder Frage 1 die sich mir hier stellt: Hinter dem Shortcut ist jetzt der Befehl "set Kamerad1 Anwesenheit 0|1|6". Aber wie gibt Kamerad2, Kamerad3 usw. die Rückmeldung zu seinem entsprechenden Dummy in fhem? Also wie kann ich unterscheiden, welcher Kamerad gerade antwort gibt?

Problem oder Frage 2: Im Alarmfall will ich in eine Gruppe der Kameraden den Alarmtext schicken. Diese sollen dann jeweils auf ihrem Handy in den Gruppenchat gehen und antworten. Dabei soll jeweils ihr Dummy mit dem entsprechenden Wert gesetzt werden. Wie stelle ich das an?

Und 3. Frage: Wie funktioniert das überhaupt mit der Gruppe? Bisher habe ich ja lediglich den Bot angelegt. Wie wird denn daraus jetzt eine Gruppe mit allen Mitgliedern und nur mit den Mitgliedern der Feuerwehr. Ohne dass da noch jemand fremdes etwas schreiben kann?

Sorry aber ich bin aus dem Wiki Artikel nicht wirklich schlau geworden.

Vielen Dank für eure Hilfe.

Gruss
Dennis


igami

Moin,

habe es gerade nur überflogen, aber es sieht so aus, als wenn sich das mit msgDialog lösen lässt.
Am Wochenende kann ich dir da auch noch genaueres zu sagen.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

CBSnake

Moin,

ich würde keine Gruppe anlegen. Schreib jeden einzeln an und dieser Chat bekommt vom Kameraden einen extra langen lauten Klingelton. Kannst in der Gruppe ja nicht machen das alarmiert dann ja ständig bei jeder Rückmeldung.

Ich kann dir nen Codeschnipsel raussuchen, einfaches DOIF gesendet wird an vorgegeben Benutzer, wenn diese "anwesend" sind. Die bekommen eine Nachricht und 2 Antwortknöpfe. Das ist bei uns fürs Katzenklo machen ;-)

Die Antworten kannst wieder mit nem DOIF auswerten dem Kameraden zuordnen und per readingsgroup Anzeigen lassen.

1. im Monat dann noch Probealarm mit Bestätigung und fertig ist die Laube, falls Mal einer den Chat oder Telegram löscht.

Ins Gerätehaus kannst dann die Readingsgroup noch auf nen Bildschirm legen ;-)
FHEM auf Debian 10, HM-Wlan, JeeLink-Wlan, Wlanduino, ConBee, TP-Link Steckdose, GHoma Steckdosen, Shelly Steckdosen

dennis_n

Moin,

mit jeden einzelenen anschreiben, meinst Du vom angelegten Chatbot aus oder?
Über den Code würde ich mich freuen.

Gruss
Dennis

CBSnake

Na klar übernimmt FHEM das und nicht von Hand ;-)
Tippe ich dir heute oder morgen Mal zusammen. Lässt sich in dem Zuge dann sicher noch optimieren.

Grüße
Achim
FHEM auf Debian 10, HM-Wlan, JeeLink-Wlan, Wlanduino, ConBee, TP-Link Steckdose, GHoma Steckdosen, Shelly Steckdosen

dennis_n

Das wäre super! Das ist nämlich die letzte Hürde und dann kann ich unseren Alarmmonitor in Betrieb nehmen ;-)

Vielen Dank.

Gruss
Dennis

CBSnake

So,

die Namen der Device kannst du natürlich ändern, musst dann aber teils den Code anpassen

zuerst ein Dummy:

define dummy_alarm dummy

danach ein DOIF, das reagiert auf den Dummy, änderst du den Wert/Text des Dummy mit set dummy_alarm hier dein Text, löst das DOIF aus und schickt an alle eingetragenen und nicht abwesend gemeldeten Kameraden den Text aus dem Dummy.

Achtung hier kein define sondern defmod!!, dazu im dummy_alarm auf Raw definition gehen, in dem großen Feld alles löschen und das hier einfügen und auf Execute commands

defmod doif_alarm DOIF (["dummy_alarm:"]) ## dummy_alarm wird mit Text befüllt\
({my $msg = q{Melderauslösung - [dummy_alarm:state]  \
      };;;;;;;; ##text wird aus dummy übernommen\
\
my @rows;;;;;;;;\
        push(@rows, q{Komme});;;;;;;; ##button1\
        push(@rows, q{komme nicht zum Einsatz});;;;;;;; ##button2\
push(@rows, q{Bin Abwesend});;;;;;;; ##button3\
     TelegramBot_SendKeyboard_row("[b]Hierdeinbot[/b]", "87413690", $msg, @rows) if("[rr_Kamerad:presence]" eq "present") ;;;;;;;; ##erster Kamerad nummer\
TelegramBot_SendKeyboard_row("[b]Hierdeinbot[/b]", "87413690", $msg, @rows) if("[rr_Kamerad:presence]" eq "present") ;;;;;;;; ##zweiter Kamerad\
     })


für weitere Kameraden fügst du nach dem anlegen ein:

TelegramBot_SendKeyboard_row("[b]Hierdeinbot[/b]", "87413690", $msg, @rows) if("[rr_Kamerad:presence]" eq "present") ;;;;;;;;


define rr_Kamerad dummy
setreading rr_Kamerad presence present

Du musst anstatt Hierdeinbot deinen Telegrambot einfügen, anstatt 87413690 die msgPeerId (hab ich genommen falls 2 Kameraden den gleichen Namen haben) und du brauchst ein Device z.B. ein Dummy (rr_Kamerad im Beispiel) mit dem Reading presence das auf present stehen muss um die Meldung zu bekommen.

Die Auswertung, noch ein DOIF, reagiert auf das Reading msgPeerId und schreibt ins DOIF ein Reading in der Form ID und Antworttext

define doif_antwort DOIF (["hierdeinbot:msgPeerId"])(setreading $SELF [$DEVICE:msgPeerId] [$DEVICE:msgText])

beide DOIF bitte das Attribut: do always setzen

Was aktuell für mich nicht klar war:

-ist das ein reines System nur für die Feuerwehr oder läuft da noch dein privates drüber? das würde dann das doif_antwort auch mit deinem privaten füllen, könnte man aber noch abfangen
-was passiert wenn 10 Kameraden zeitgleich drücken? Wir haben hier "nur" 4 User :-) Müsstet ihr in geselliger Runde mal testen

Einrichtung bei den Kameraden:

-Du machst in Telegram eine Gruppe
-Du fügst den Telegrambot der Gruppe hinzu
-Jeder schreibt dem nun für ihn sichtbaren Telegrambot eine kurze Nachricht, löscht den Chat aber nicht.

-Du siehst nun unter dem Reading Contacts im Telegrambot n Haufen einträge nach folgendem Schema:

87081590:Dennis:@Milhouse

die Nummer ist die ID die im ersten DOIF genutzt wird
Der Name ist der Klarname aus Telegram, habt ihr da keine Doppelt kann man das im Antwortdoif auch noch verwenden und übersichtlich machen
das@ sind, wenn vom User vergeben Spitznamen

du Kannst nun den dummy_alarm mit Text füllen und damit die Alarmierung auslösen

- händisch
- mit einem AT (Probealarm immer Mittwoch 11 Uhr)
- per Abgriff eines regulären Melders (viele haben Ausgänge die FHEM überwachen kann)

Bau das mal so nach pack in erster und zweiter Kamerad deine Telegram ID, dann kannste testen :-)

Wenns irgendwo klemmt meld dich hier :-)

Grüße
Achim
FHEM auf Debian 10, HM-Wlan, JeeLink-Wlan, Wlanduino, ConBee, TP-Link Steckdose, GHoma Steckdosen, Shelly Steckdosen

dennis_n

Hallo Achim,

ich bin begeistert. WOW, vielen Dnak für Deine Mühe.

Wir haben heute Abend Übung und dann werde ich mal schon den ein oder andere Kameraden mit Telegram vertraut machen.
Das System hängt dann bei uns im Gerätehaus. Meine privaten Sachen laufen da nicht drüber.

Den Alarm greife ich von einem digitalen Melder über Bosmon ab. Dort habe ich die Möglichkeit (zumindest so gelesen), dass ich den Alarm an Telegram weiterleiten kann.
Wobei, wenn ich dich richtig verstanden habe, dann muss ich von Bosmon aus ja nicht an Telegramm weiterleiten, sondern nur den Dummy "dummy_alaram" setzen.
Das kann ich von Bosmon aus mit dem Aufruf einer URL an fhem erledigen.

Und dann wird das DOIF die Kameraden über den Alarm informieren.

Soweit richtig? Den Rest probiere ich aus und melde mich.

Danke

Gruss
Dennis

CBSnake

na wenn möglich würde ich vom Bosmon auch den Meldetext in die URL packen, also den dummy nicht ein/aus setzen sondern set dummy_alarm Firma_XY Feueralarm ausgelöst oder set dummy_alarm Verkehrsunfall bla bla  was halt von der Leitstelle im Bosmon ankommt. Wenn das nicht mitschicken kannst, machst halt ein simples Alarm und gut :-)
FHEM auf Debian 10, HM-Wlan, JeeLink-Wlan, Wlanduino, ConBee, TP-Link Steckdose, GHoma Steckdosen, Shelly Steckdosen

dennis_n

Werde ich testen und Dir Rückmeldung geben.

Danke

Gruss
Dennis

dennis_n

Also ich habe getestet, doch bekomme folgenden Fehler im Reading error des doif_alarm angezeigt:

{my $msg = q{Melderauslösung - ALARM };;;; my @rows;;;; push(@rows, q{Komme});;;; push(@rows, q{komme nicht zum Einsatz});;;; push(@rows, q{Bin Abwesend});;;; TelegramBot_SendKeyboard_row("XXXmeinBotXXX", "13234234", $msg, @rows) if("present" eq "present") ;;;; TelegramBot_SendKeyboard_row("XXXmeinBotXXX", "3452345", $msg, @rows) if("present" eq "present") ;;;; }: Undefined subroutine &main::TelegramBot_SendKeyboard_row called at (eval 190) line 1.

Kannst Du mir nochmal helfen bitte?

Danke

Gruss
Dennis