MSG für Nutzung von Signalbot mit msgDialog anpassen (Code dabei)

Begonnen von laberlaib, 05 Juli 2022, 08:50:23

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

Zitat von: Beta-User am 13 Juli 2022, 15:54:24
Bin immer noch nicht überzeugt, dass das mit dem @/# ein Problem auf der msg/msgConfig-Seite ist - mit Telegram geht das jedenfalls.

Kann wie gesagt auch an meiner Unfähigkeit liegen, mit der Modulbeschreibung und dem im Forum gegebenen Hilfen eine funktionierende Konfiguration hinzubekommen.

Zitat
Versteht denn SignalBot zwischenzeitlich den msg-Kommand? Es gab rund um https://forum.fhem.de/index.php/topic,118370.msg1174315.html#msg1174315 mal eine Diskussion zum Einbau des "Standardkommandos" "msg" als alias. Das war mein Bezugspunkt von der Zwischenbemerkung vorhin (ich habe das ansonsten nicht weiter verfolgt).

Nope
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Beta-User

Hmm, mal sehen, ob das mit send statt msg die Ursache war.

Leider hatte ich "SignalBot" statt "Signalbot" in die msgSchema.pm eingebaut, Korrektur anbei...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Dr. Boris Neubert

Habe mir die drei neusten Dateien aus diesem Thema heruntergeladen und probiere es bald aus.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

laberlaib

Modulversionen:
Letztes Update vor 7 Tagen, meine o.g. Änderungen, keine Dateien hier aus dem Thread.

Signalbot:
defmod Signalbot Signalbot
attr Signalbot event-on-change-reading .*
attr Signalbot room BACKOFFICE,msgDialog

globalMSG (Auszugsweise)
defmod globalMsg msgConfig
attr globalMsg userattr msgDialog_evalSpecials:textField-long msgDialog_msgCommand:textField
attr globalMsg comment msg audio |Titel| das was angesagt werdne soll LANG=de/es\
Titel wird ignoriert
attr globalMsg group Global
attr globalMsg msgCmdAudio set %DEVICE% speak %MSG%
attr globalMsg msgCmdLight { my $d='%DEVICE%';; my $state=ReadingsVal($d,"state","off");; fhem "set $d blink 3 1";; fhem "sleep 6.25;; set $d:FILTER=state!=$state $state";; }
attr globalMsg msgCmdMail {fktSendEmail('%DEVICE%','%TITLE%','%MSG%')}
attr globalMsg msgCmdPush set %DEVICE% send @%RECIPIENT% %MSG%


rr_Laib (Auszug)
defmod rr_Laib ROOMMATE rgr_FamilieStumpfDelgado
attr rr_Laib userattr rr_otpdevice
attr rr_Laib comment msgContactPush old jc_fhemServerStuDe:laibo@trashserver.net
attr rr_Laib devStateIcon .*home:user_available@green:absent .*absent:user_away@red:home .*gone:user_ext_away@red:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping@yellow:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown:home
attr rr_Laib event-on-change-reading state,fhemMsgRcvPush
attr rr_Laib group Laib
attr rr_Laib icon people_sensor
attr rr_Laib msgContactMail fhem@philippstumpf.de
attr rr_Laib msgContactPush Signalbot:laberlaib


Mein Kontakt wurde wie beschrieben als "laberlaib" gespeichert.
Befehlt in COmmandozeile:
msg @rr_Laib Hallo FHEM Forum
Kommt an.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

binford6000

Moin,
mich würde auch mal interessieren, wie denn die Dialoge in Signal dargestellt werden?
Wäre toll, wenn @laberlaib mal bei Gelegenheit ein, zwei Screenshots erstellen könnte :)

VG Sebastian

Dr. Boris Neubert

Hallo Sebastian,

Zitat von: binford6000 am 14 Juli 2022, 08:11:56
mich würde auch mal interessieren, wie denn die Dialoge in Signal dargestellt werden?

was meinst Du mit Dialoge? Im vorigen Beitrag von laberlaib hing ja ein Screenshot an. Anbei noch einer von mir.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

binford6000

Zitatwas meinst Du mit Dialoge?

Naja, wie laberlaib im Titel und im ersten Satz beschrieben hat: Die Nutzung von msgDialog-Devices aka Dialogen.
https://wiki.fhem.de/wiki/MsgDialog

VG Sebastian

Dr. Boris Neubert

Modulversionen: die neuesten aus diesem Thema (hier angefügt).

Ich habe die Situation von laberlaib nachgestellt.

Ich habe einen ROOMMATE namens rr_Boris. Der hat das Attribut

msgContactPush Signal:@Boris

Dem Signalbot namens Signal habe ich vorher mit

set Signal addContact Boris +49......

meine Telefonnummer mitgeteilt.

Am Device globalMsg sind die Attribute wie folgt hinterlegt:

msgCmdPush set %DEVICE% send %RECIPIENT% %MSG%
msgContactPush #Hausbewohner


Achtung, das msgCmdPush ist anders als bei laberlaib, da ist kein @ vor dem %RECIPIENT%.

Ich kann mit

msg @rr_Boris Hallo Boris!

Nun habe ich noch ein Device RESIDENTS namens rgr_Hausbewohner. Dieses hat das Attribut

msgContactPush Signal:#Hausbewohner

Hausbewohner ist eine Signalgruppe, in der ich drin bin.

Leider funktionieren weder

msg @rgr_Hausbewohner Hallo Hausbewohner!

noch

msg #Hausbewohner Hallo Ihr Menschen!
msg @#Hausbewohner Hallo Ihr Menschen!


Es gibt keine Fehlermeldung. Im Log steht


2022.07.14 16:34:02 3: msg rgr_Hausbewohner: ID=1657809242.71543.1 TYPE=push ROUTE=Signal:#Hausbewohner STATUS=UNDEFINED PRIORITY=0 TITLE='' 'Hallo Hausbewohner!'
2022.07.14 16:38:22 3: msg globalMsg: ID=1657809502.81387.1 TYPE=push ROUTE=#Hausbewohner STATUS=UNDEFINED PRIORITY=0 TITLE='' '#Hausbewohner Hallo Ihr Menschen!'
2022.07.14 16:42:53 3: msg globalMsg: ID=1657809773.64942.1 TYPE=push ROUTE=#Hausbewohner STATUS=UNDEFINED PRIORITY=0 TITLE='' '@#Hausbewohner Hallo ihr Bewohner!'


Zumindest der zweite und dritte Logeintrag sehen verdächtig aus, weil Signal gar nicht erwähnt wird und der Adressat hinten in der Nachricht nochmal steht.

Woran könnte es nun liegen?

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Beta-User

Hmm, die Diskussion geht zwar am Thread-Thema leicht vorbei, aber zum Vergleich:
Bei mir zeigt in der msgConfig-Instanz das Attribut msgContactPush auf eine Telegram-Instanz. Das entspricht auch dem, was im Wiki steht (da ist Pushover der default).

Ich nutze aber bisher keine Gruppenfunktionen.

msgCmdPush kann wohl zentral entfallen nach der Änderung von msgSchema.pm.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Dr. Boris Neubert

Danke, Beta-User, das hat mich aufs richtige Gleis gesetzt.

Hier eine funktionierende Lösung mit Beschreibung für die Nachwelt. Diese enthält einen Workaround, da msg anscheinend nicht mit Signal-Gruppennamen umgehen kann. Diese beginnen mit #. Außerdem habe ich noch getestet, dass es der Erweiterungen von laberlaib bedarf, damit msg in Verbindung mit Signal mit verschiedenen Empfängern umgehen kann.

Ich habe einen Signalbot namens Signal, RESIDENTS namens rgr_Hausbewohner und ROOMMATE namens rr_Boris.

Signal verlangt als Empfänger entweder @Benutzername oder #Gruppenname. Der Nachhaltigkeit wegen habe ich meinen Benutzer mit

set Signal addContact Boris +49....

im Device Signal fest verdrahtet.

in globalMsg sind die Attribute wie folgt hinterlegt:

msgCmdPush set %DEVICE% send %RECIPIENT% %MSG%
msgContactPush Signal


Dem msgCmdPush muss man also das Device, in meinem Fall das Device namens Signal, und den Empfänger, also @Benutzername oder #Gruppenname mitgeben. msgContactPush ist entweder Device:Empfänger oder nur Device. Wenn nur Device, hier also Signal angegeben ist, wird kein Empfänger an das Device Signal durchgereicht. Das Device Signal hat aber mit

attr Signal defaultPeer #Hausbewohner

einen Standardempfänger für den Fall, dass im send-Befehl der Empfänger fortgelassen wird. Das ist ein Workaround, weil ich eigentlich

attr msgContactPush globalMsg Signal:#Hausbewohner

haben möchte. Dann kommen die Nachrichten aber nicht über msg an, obwohl direktes Senden per set Signal send #Hausbewohner Nachricht funktioniert.

Am ROOMMATE rr_Boris wird

attr rr_Boris msgContactPush Signal:@Boris

und am RESIDENTS rgr_Hausbewohner wird analog zu globalMsg

attr rgr_Hausbewohner   msgContactPush Signal

festgelegt.






Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Beta-User

Zitat von: Dr. Boris Neubert am 14 Juli 2022, 17:54:30
Danke, Beta-User, das hat mich aufs richtige Gleis gesetzt.
:)

Ein paar Anmerkungen noch zu der Beschreibung für die Nachwelt:

Zitatin globalMsg sind die Attribute wie folgt hinterlegt:
msgCmdPush set %DEVICE% send %RECIPIENT% %MSG%
msgContactPush Signal

Vermutlich braucht man die erste Zeile nicht, wenn msgSchema.pm angepaßt ist. Aus dem TYPE ergibt sich dann nach meinem Verständnis das Schema für die "Bedienung" des jeweiligen "Ausgabegeräts".
Es wäre hilfreich, wenn du testen könntest, ob diese Annahme zutreffend ist.

Zitat
Diese enthält einen Workaround, da msg anscheinend nicht mit Signal-Gruppennamen umgehen kann. Diese beginnen mit #.
Wie gesagt, nutze ich keine Gruppenfunktionen, aber das Schema für Gruppennamen in msg ist ein generisches. Wenn das nicht funktioniert, liegt es daher mAn. an irgend was anderem.

Generell meine ich verstanden zu haben, dass msg immer versucht, Anweisungen vom "großen zum kleinen" aufzulösen und dabei aber immer die Spezialitäten bis ruter zu der untersten erkannten Ebene versucht aufzulösen. Es kann daher sein, dass die RESIDENTS-Vorgaben die globalen Vorgaben überschreiben, wenn du was an ein solches Device "verschickst".

Irgendwie werde ich den Verdacht nicht los, dass deine Einstellungen zum Teil nicht auf der richtigen Ebene sind ("Hausbewohner" gehört evtl. an das RESIDENTS hin?).

Zitat
Außerdem habe ich noch getestet, dass es der Erweiterungen von laberlaib bedarf, damit msg in Verbindung mit Signal mit verschiedenen Empfängern umgehen kann.
Vermutlich gilt das nicht nur für Signal.

Generell fände ich es weiter hilfreich, wenn man für die vielen Attribute jeweils eine etwas einleuchtendere online-Hilfe bekäme. Ein Anfang ist gemacht...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

laberlaib

Zitat von: Dr. Boris Neubert am 13 Juli 2022, 15:41:18
@Laberlaib, kannst Du mit Deinen Erweiterungen vom msg-Modul eine Nachricht an eine Signal-Gruppe schicken (bei mir #Hausbewohner)?
Ich nutze Gruppen nicht im Zusammenhang mit FHEM - das ist dann ein Gruppenchat in Signal oder einfach eine Art Broadcast von FHEM, also mehrfach die gleiche Nachricht an unterschiedliche Kontakte?


Zitat von: binford6000 am 14 Juli 2022, 09:07:04
Naja, wie laberlaib im Titel und im ersten Satz beschrieben hat: Die Nutzung von msgDialog-Devices aka Dialogen.
https://wiki.fhem.de/wiki/MsgDialog

Da Signal kein Inlinekeyboard hat, sieht das relativ unspektakulär aus, wie ein oldschool Textmenü: also ich schreib z.B. mein Keyword für den Sauger - "Sauger" und damit die Befehle dann einfach und schnell zu tippen sind kommt halt zurück:
Was kann ich für Dich tun?
1) Wohnzimmer
2) Schlafzimmer
3) Esszimmer
4) Flur

Und im Dialog weiter zu gehen, reicht dann die Zahl einzutippen.
Das ist nicht so komfortabel wie in Telegramm, aber innerhalb meines eigenen Netzes steuer ich alles über eine HTTP-Shortcuts App. Signal brauch ich nur für die Steuerung oder eher das Info abfragen von extern - also eher selten.

Zitat von: Beta-User am 15 Juli 2022, 10:25:07
Generell fände ich es weiter hilfreich, wenn man für die vielen Attribute jeweils eine etwas einleuchtendere online-Hilfe bekäme. Ein Anfang ist gemacht...
Evtl. im 3-4 wöchigen Urlaub, jetzt in der unmittelbaren Vorbereitung komme ich eher nicht dazu.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

Dr. Boris Neubert

Zitat von: Beta-User am 15 Juli 2022, 10:25:07
Vermutlich braucht man die erste Zeile nicht, wenn msgSchema.pm angepaßt ist. Aus dem TYPE ergibt sich dann nach meinem Verständnis das Schema für die "Bedienung" des jeweiligen "Ausgabegeräts".
Es wäre hilfreich, wenn du testen könntest, ob diese Annahme zutreffend ist.

Diese Annahme trifft zu. Ich habe das Attribut gelöscht.

Zitat
Wie gesagt, nutze ich keine Gruppenfunktionen, aber das Schema für Gruppennamen in msg ist ein generisches. Wenn das nicht funktioniert, liegt es daher mAn. an irgend was anderem.

Ich müsste es halt mal debuggen...

Zitat
Generell meine ich verstanden zu haben, dass msg immer versucht, Anweisungen vom "großen zum kleinen" aufzulösen und dabei aber immer die Spezialitäten bis ruter zu der untersten erkannten Ebene versucht aufzulösen. Es kann daher sein, dass die RESIDENTS-Vorgaben die globalen Vorgaben überschreiben, wenn du was an ein solches Device "verschickst".

Irgendwie werde ich den Verdacht nicht los, dass deine Einstellungen zum Teil nicht auf der richtigen Ebene sind ("Hausbewohner" gehört evtl. an das RESIDENTS hin?).

Ja, die Hierarchie habe ich auch so verstanden. Und der Empfänger #Hausbewohner (Signal-Gruppe, im Gegensatz zu @Boris, Signal-Einzelempfänger) sollte in diesen Überlegungen austauschbar verwendbar sein. Es funktioniert nur leider nicht.

Ich habe daher den Workaround verwendet, über den defaultPeer am Signalbot-Device an die Gruppe #Hausbewohner zu versenden, und den Empfänger bei msg fortzulassen, wenn ich eigentlich #Hausbewohner schreiben müsste.

Ich habe das gerade noch einmal ausprobiert. Am Device rr_Boris sendet msgContactPush Signal:@Boris an mich, aber msgContactPush Signal:#Hausbewohner tut nichts bzw. sendet über das zweitpriorisierte Device eine E-Mail an mich. Das deutet für mich auf ein Problem mit dem # hin.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Beta-User

Zitat von: Dr. Boris Neubert am 16 Juli 2022, 07:43:05
Diese Annahme trifft zu. Ich habe das Attribut gelöscht.
Klingt erst mal gut... :)

Zitat
Ja, die Hierarchie habe ich auch so verstanden. Und der Empfänger #Hausbewohner (Signal-Gruppe, im Gegensatz zu @Boris, Signal-Einzelempfänger) sollte in diesen Überlegungen austauschbar verwendbar sein. Es funktioniert nur leider nicht.
Meine Vermutung dazu:
das # ist für msg erst mal "nur" der Hinweis, dass es nach einer "Gruppe" suchen soll. Das wäre dann aber ein RESIDENTS-Device, an dem dann diese Gruppenanweisung hin müßte (zu dem rgr-Device würde dann der ROOMMATE rr_Boris gehören)?
Aber wie gesagt: ich nutze die Gruppenfunktion (derzeit noch) nicht, das ist nur eine Interpretation dessen, was ich als "interne Logik" dieser Module iVm. "msg" glaube erkannt zu haben...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

binford6000

ZitatDa Signal kein Inlinekeyboard hat, sieht das relativ unspektakulär aus, wie ein oldschool Textmenü.
Und im Dialog weiter zu gehen, reicht dann die Zahl einzutippen.

OK dann ist Telegram für die schnelle Steuerung von unterwegs leider immer noch fest gesetzt.  :-\
VG Sebastian