msgDialog: Instant Messaging als FHEM Interface

Begonnen von igami, 30 September 2017, 15:09:01

Vorheriges Thema - Nächstes Thema

Amenophis86

#135
Ok, jetzt habe ich auch das Readings fhemMsgRcvPush. Danke, aber der Dialog wird noch nicht aufgerufen, obwohl ich "test" sende. Also schein ich noch einen Fehler zu haben.

Edit:
Was muss im Dialog im Internal STATE stehen? Aktuell steht dort: "rr_Etienne: test". Hier nochmal ein List des Dialog:
Internals:
   DEF        {
  "test": {
    "match": "\/?(start|%me%)",
    "commands": "deletereading TYPE=msgDialog $recipient_history",
    "message": [
      "{return('(' . join(') (', sort(split('\n', fhem('get TYPE=msgDialog:FILTER=NAME!=$SELF:FILTER=allowed=.*($recipient|everyone).* trigger'))), 'abbrechen') . ') ')}",
      "Ich kann folgendes für dich tun:"
    ]
  },
  "zurück": {
    "commands": "set $recipient_history=.+|.+ say @$recipient {(ReadingsVal($DEV, '$recipient_history', '') =~ m/(.+)\\|.+$/;; return $2 ? $2 : $1;;)}"
  },
  "abbrechen": {
    "match": "\/?abbrechen",
    "commands": "deletereading TYPE=msgDialog $recipient_history",
    "message": [
      "TelegramBot_MTYPE=queryInline (%me%) ",
      "Dialog abgebrochen."
    ]
  },
  "beenden": {
    "match": "\/?beenden",
    "commands": "deletereading TYPE=msgDialog $recipient_history",
    "message": [
      "TelegramBot_MTYPE=queryInline (%me%) ",
      "Dialog beendet."
    ]
  }
}
   MSGCOMMAND msg push \@$recipients $message
   NAME       meta_Dialog
   NOTIFYDEV  TYPE=(ROOMMATE|GUEST)
   NR         25
   NTFY_ORDER 50-meta_Dialog
   STATE      rr_Etienne: test
   TRIGGER    abbrechen,beenden,zurück,test
   TYPE       msgDialog
   READINGS:
     2017-10-31 09:03:39   state           rr_Etienne: test
Attributes:
   allowed    rr_Etienne
   evalSpecials me=test
TelegramBot=TelegramBot



EDIT:
Warum auch immer, aber es geht jetzt wohl doch. Jetzt muss ich mich mal mit dem Dialog bzw dem JSON auseinander setzen. Danke für die Hilfe bisher :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Smarti

Hallo,

ich habe die letzten paar Antworten nur überflogen, aber ich hatte auch so meine Schwierkigkeiten am Anfang bis der Dialog lief :)

Zum einen sind hier einige Abhängigkeiten drin (neben dem eigentlichen Messanger z.B. Telegramm): msg und roommates. Jemand der diese noch nicht verwendet tut sich schwer alles gleich zu erfassen. Hier wäre ein Hinweis im Wiki ganz hilfreich.

Damit der Dialog reagiert, muss jeder einzelne Dialog für die entsprechenden roommates auf "allowed" gesetzt werden. Wird häufig auch vergessen.

Die evalSpecials haben am einfach auch beim einen oder anderen Probleme gemacht (siehe Seite 2-3) ist im Wikie aber inzwischen ganz gut beschrieben:

attr myMsgConfig msgDialog_evalSpecials me=<Aktivierungswort bzw. -Nachricht>
TelegramBot=<Name des TelegramBot-device>

Wobei hier auch eine kleine Änderung stattgefunden hat aus "evalSpecials" wurde "msgDialog_evalSpecials"

Hoffe das hilft dem einen oder anderen weiter...

binford6000

Moin Smarti,
ZitatZum einen sind hier einige Abhängigkeiten drin (neben dem eigentlichen Messanger z.B. Telegramm): msg und roommates. Jemand der diese noch nicht verwendet tut sich schwer alles gleich zu erfassen. Hier wäre ein Hinweis im Wiki ganz hilfreich.
hab gerade das Wiki etwas überarbeitet  ;)

Der msg-Befehl sowie TelegramBot, Jabber und yowsup sind verlinkt. Leider gibt es zu ROOMMATE und GUEST keine Wiki-Artikel...
VG Sebastian

Smarti

Habe ich auch feststellen müssen, bin allerdings hier fündig geworden: https://wiki.fhem.de/wiki/Weckautomation#Notwendige_Devices_anlegen

Vielleicht kannst du ihn noch verlinken...


PSI69

#139
Hallo igami,

Dein Beispielcode hat funktioniert, was auch sonst... :D

Zitat von: igami am 29 Oktober 2017, 19:23:12

defmod plot msgDialog {\
  "plot": {\
    "commands": "set $SELF say @$recipient plot|send",\
"message": "das war das Bild",\
"send": {\
  "message": "TelegramBot_MTYPE=cmdSend {plotAsPng('SVG_FileLog_hc_Steckdose.EXT.Schuppen')}"\
}\
  }\
}

das funktioniert.

Ja, das mit den verschachtelten messages will ich noch einbauen.

Auch als ich ihn so abgeändert hatte (ich dachte, die Leerzeichen sind die Ursache), hat das Plot Versenden auch geklappt:

defmod plot msgDialog {\
  "Steckdose Schuppen Verlaufsdiagramm": {\
    "commands": "set $SELF say @$recipient Steckdose Schuppen Verlaufsdiagramm|send",\
"message": "das war das Bild",\
"send": {\
  "message": "TelegramBot_MTYPE=cmdSend {plotAsPng('SVG_FileLog_hc_Steckdose.EXT.Schuppen')}"\
}\
  }\
}


Als ich ihn so 'meinem' Außenanlagen-Dialog hinzugefügt habe, auch noch. Übersieh mal das mit den 3 IPCAM Images, das ist noch in 'Entwicklung'...

Internals:
   CFGFN
   DEF        {
  "Außenanlagen": {
    "message": [
      "{return('(Steckdose Schuppen Ein) ') if(ReadingsVal('%aussen_actor%', 'state', '') ne 'on')}",
      "{return('(Steckdose Schuppen Aus) ') if(ReadingsVal('%aussen_actor%', 'state', '') eq 'on')}",
      "{return('(Steckdose Schuppen Automatik Ein) ') if(ReadingsVal('%aussen_dummy%', 'state', '') ne 'on')}",
      "{return('(Steckdose Schuppen Automatik Aus) ') if(ReadingsVal('%aussen_dummy%', 'state', '') eq 'on')}",
      "(Steckdose Schuppen Verlaufsdiagramm) ",
      "(Send Picture Camera Eingang) ",
      "(Send Picture Camera Carport) ",
      "(Send Picture Camera Garten) ",
      "(abbrechen) ",
      "Menü Außenanlagen"
    ],
    "Steckdose Schuppen Ein": {
      "commands": "set Steckdose.EXT.Schuppen on",
      "message": [
        "(%me%) ",
        "Steckdose Schuppen ist Ein."
      ]
    },
    "Steckdose Schuppen Aus": {
      "commands": "set Steckdose.EXT.Schuppen off",
      "message": [
        "(%me%) ",
        "Steckdose Schuppen ist Aus."
      ]
    },
    "Steckdose Schuppen Automatik Ein": {
      "commands": "set Steckdose.EXT.Schuppen.Auto on",
      "message": [
        "(%me%) ",
        "Steckdose Schuppen Automatik ist Ein."
      ]
    },
    "Steckdose Schuppen Automatik Aus": {
      "commands": "set Steckdose.EXT.Schuppen.Auto off",
      "message": [
        "(%me%) ",
        "Steckdose Schuppen Automatik ist Aus."
      ]
    },
    "Steckdose Schuppen Verlaufsdiagramm": {
      "commands": "set $SELF say @$recipient Steckdose Schuppen Verlaufsdiagramm|send",
      "message": [
        "(%me%) ",
        "Steckdose Schuppen Verlaufsdiagramm"
      ],
      "send": {
        "message": "TelegramBot_MTYPE=cmdSend {plotAsPng('SVG_FileLog_hc_Steckdose.EXT.Schuppen')}"
      }
    },
    "Send Picture Camera Eingang": {
      "commands": [
        "get IPCAM_Kamera_Eingang image",
        "set %TelegramBot% sendImage /opt/fhem/tmp/ipcam/IPCAM_Kamera_Eingang_snapshot.jpg"
      ],
      "message": "(%me%) $message"
    },
    "Send Picture Camera Carport": {
      "commands": [
        "get IPCAM_Kamera_Carport image",
        "set %TelegramBot% sendImage /opt/fhem/tmp/ipcam/IPCAM_Kamera_Carport_snapshot.jpg"
      ],
      "message": "(%me%) $message"
    },
    "Send Picture Camera Garten": {
      "commands": [
        "get IPCAM_Kamera_Garten image",
        "set %TelegramBot% sendImage /opt/fhem/tmp/ipcam/IPCAM_Kamera_Garten_snapshot.jpg"
      ],
      "message": "(%me%) $message"
    }
  }
}
   MSGCOMMAND msg push \@$recipients $message
   NAME       msgD_Aussen
   NOTIFYDEV  TYPE=(ROOMMATE|GUEST)
   NR         2996
   NTFY_ORDER 50-msgD_Aussen
   STATE      rr_Peter: Steckdose Schuppen Verlaufsdiagramm
   TRIGGER    Außenanlagen
   TYPE       msgDialog
   READINGS:
     2017-10-31 15:29:56   rr_Peter_history Außenanlagen|Steckdose Schuppen Verlaufsdiagramm
     2017-10-31 15:29:56   state           rr_Peter: Steckdose Schuppen Verlaufsdiagramm
Attributes:
   alias      msgDialog Außenanlagen
   allowed    rr_Peter,rr_Yvonne
   evalSpecials aussen_actor=Steckdose.EXT.Schuppen
aussen_dummy=Steckdose.EXT.Schuppen.Auto
aussen_plot=SVG_FileLog_hc_Steckdose.EXT.Schuppen
   room       IS Messenger
   verbose    5


Jetzt habe ich nur Deinen 'plot' Dialog gelöscht und als Ergebnis klappt das Versenden nicht mehr. Hier Log Level 5:

2017.10.31 15:29:53 3: msg rr_Peter: ID=1509460193.50088.1 TYPE=push ROUTE=TeleBot RECIPIENT=@168363762 STATUS=OK PRIORITY=0 TITLE='' MSG='(Steckdose Schuppen Ein)

(Steckdose Schuppen Automatik Ein)

(Steckdose Schuppen Verlaufsdiagramm)
(Send Picture Camera Eingang)
(Send Picture Camera Carport)
(Send Picture Camera Garten)
(abbrechen)
Menü Außenanlagen'
2017.10.31 15:29:56 5: msgDialog (msgD_Aussen) - entering msgDialog_Notify
2017.10.31 15:29:56 4: msgDialog (msgD_Aussen) triggered by "rr_Peter fhemMsgRcvPush: Steckdose Schuppen Verlaufsdiagramm"
2017.10.31 15:29:56 5: msgDialog (msgD_Aussen)
    entering msgDialog_progress
        recipients: rr_Peter
        message:    Steckdose Schuppen Verlaufsdiagramm
        force:      0
2017.10.31 15:29:56 5: msgDialog (msgD_Aussen) - entering msgDialog_evalSpecials
2017.10.31 15:29:56 5: msgDialog (msgD_Aussen) - entering msgDialog_Set
2017.10.31 15:29:56 5: msgDialog (msgD_Aussen) - entering msgDialog_Set
2017.10.31 15:29:56 5: msgDialog (msgD_Aussen)
    entering msgDialog_progress
        recipients: rr_Peter
        message:    Steckdose Schuppen Verlaufsdiagramm|send
        force:      1
2017.10.31 15:29:56 5: msgDialog (msgD_Aussen) - entering msgDialog_evalSpecials
2017.10.31 15:29:56 5: msgDialog (msgD_Aussen) - entering msgDialog_Set
2017.10.31 15:29:56 3: msg rr_Peter: ID=1509460196.20109.1 TYPE=push ROUTE=TeleBot RECIPIENT=@168363762 STATUS=OK PRIORITY=0 TITLE='' MSG='(Q)
Steckdose Schuppen Verlaufsdiagramm'
2017.10.31 15:30:38 5: msgDialog (msgD_Aussen) - entering msgDialog_Notify


Kaum füge ich dies hier wieder meiner Konfiguration hinzu, klappt das Versenden aus dem Aussenanlagen Dialog wieder!

Internals:
   CFGFN
   DEF        {
  "Steckdose Schuppen Verlaufsdiagramm": {
    "commands": "set $SELF say @$recipient Steckdose Schuppen Verlaufsdiagramm|send",
    "message": [
      "(%me%) ",
      "Steckdose Schuppen Verlaufsdiagramm"
    ],
    "send": {
      "message": "TelegramBot_MTYPE=cmdSend {plotAsPng('SVG_FileLog_hc_Steckdose.EXT.Schuppen')}"
    }
  }
}
   MSGCOMMAND msg push \@$recipients $message
   NAME       plot
   NOTIFYDEV  TYPE=(ROOMMATE|GUEST)
   NR         65914
   NTFY_ORDER 50-plot
   STATE      rr_Peter: send
   TRIGGER    Steckdose Schuppen Verlaufsdiagramm
   TYPE       msgDialog
   READINGS:
     2017-10-31 15:43:07   rr_Peter_history
     2017-10-31 15:43:07   state           rr_Peter: send
Attributes:
   allowed    rr_Peter,rr_Yvonne
   room       IS Messenger


Log:

2017.10.31 15:42:58 5: msgDialog (msgD_Aussen) - entering msgDialog_Notify
2017.10.31 15:42:58 4: msgDialog (msgD_Aussen) triggered by "rr_Peter fhemMsgRcvPush: Q"
2017.10.31 15:42:58 5: msgDialog (msgD_Aussen)
    entering msgDialog_progress
        recipients: rr_Peter
        message:    Q
        force:      0
2017.10.31 15:42:58 5: msgDialog (msgD_Aussen) - entering msgDialog_evalSpecials
2017.10.31 15:43:05 5: msgDialog (msgD_Aussen) - entering msgDialog_Notify
2017.10.31 15:43:05 4: msgDialog (msgD_Aussen) triggered by "rr_Peter fhemMsgRcvPush: Außenanlagen"
2017.10.31 15:43:05 5: msgDialog (msgD_Aussen)
    entering msgDialog_progress
        recipients: rr_Peter
        message:    Außenanlagen
        force:      0
2017.10.31 15:43:05 5: msgDialog (msgD_Aussen) - entering msgDialog_evalSpecials
2017.10.31 15:43:05 3: msg rr_Peter: ID=1509460985.45968.1 TYPE=push ROUTE=TeleBot RECIPIENT=@168363762 STATUS=OK PRIORITY=0 TITLE='' MSG='(Steckdose Schuppen Ein)

(Steckdose Schuppen Automatik Ein)

(Steckdose Schuppen Verlaufsdiagramm)
(Send Picture Camera Eingang)
(Send Picture Camera Carport)
(Send Picture Camera Garten)
(abbrechen)
Menü Außenanlagen'
2017.10.31 15:43:07 5: msgDialog (msgD_Aussen) - entering msgDialog_Notify
2017.10.31 15:43:07 4: msgDialog (msgD_Aussen) triggered by "rr_Peter fhemMsgRcvPush: Steckdose Schuppen Verlaufsdiagramm"
2017.10.31 15:43:07 5: msgDialog (msgD_Aussen)
    entering msgDialog_progress
        recipients: rr_Peter
        message:    Steckdose Schuppen Verlaufsdiagramm
        force:      0
2017.10.31 15:43:07 5: msgDialog (msgD_Aussen) - entering msgDialog_evalSpecials
2017.10.31 15:43:07 5: msgDialog (msgD_Aussen) - entering msgDialog_Set
2017.10.31 15:43:07 5: msgDialog (msgD_Aussen)
    entering msgDialog_progress
        recipients: rr_Peter
        message:    Steckdose Schuppen Verlaufsdiagramm|send
        force:      1
2017.10.31 15:43:07 5: msgDialog (msgD_Aussen) - entering msgDialog_evalSpecials
2017.10.31 15:43:07 3: msg rr_Peter: ID=1509460987.58281.1 TYPE=push ROUTE=TeleBot RECIPIENT=@168363762 STATUS=OK PRIORITY=0 TITLE='' MSG='(Q)
Steckdose Schuppen Verlaufsdiagramm'
2017.10.31 15:43:07 3: msg rr_Peter: ID=1509460987.62378.1 TYPE=push ROUTE=TeleBot RECIPIENT=@168363762 STATUS=OK PRIORITY=0 TITLE='' MSG='{plotAsPng('SVG_FileLog_hc_Steckdose.EXT.Schuppen')}'
2017.10.31 15:43:07 3: msg rr_Peter: ID=1509460987.76551.1 TYPE=push ROUTE=TeleBot RECIPIENT=@168363762 STATUS=OK PRIORITY=0 TITLE='' MSG='(Q)
Steckdose Schuppen Verlaufsdiagramm'
2017.10.31 15:43:11 5: msgDialog (msgD_Aussen) - entering msgDialog_Notify


Jetzt habe ich den 'plot' Dialog einfach disabled und es wird kein Plot mehr verschickt!

2017.10.31 15:51:42 3: get TYPE=msgDialog:FILTER=NAME!=meta_Dialog:FILTER=allowed=.*(rr_Peter|everyone).* trigger : Alarmanlage
Außenanlagen
Jalousien
2017.10.31 15:51:42 3: msg rr_Peter: ID=1509461502.28767.1 TYPE=push ROUTE=TeleBot RECIPIENT=@168363762 STATUS=OK PRIORITY=0 TITLE='' MSG='(Alarmanlage) (Außenanlagen) (Jalousien)
(abbrechen)
(beenden)
Ich kann folgendes für dich tun:'
2017.10.31 15:51:42 5: msgDialog (msgD_Aussen) - entering msgDialog_Notify
2017.10.31 15:51:42 4: msgDialog (msgD_Aussen) triggered by "rr_Peter fhemMsgRcvPush: Q"
2017.10.31 15:51:42 5: msgDialog (msgD_Aussen)
    entering msgDialog_progress
        recipients: rr_Peter
        message:    Q
        force:      0
2017.10.31 15:51:42 5: msgDialog (msgD_Aussen) - entering msgDialog_evalSpecials
2017.10.31 15:51:44 5: msgDialog (msgD_Aussen) - entering msgDialog_Notify
2017.10.31 15:51:44 4: msgDialog (msgD_Aussen) triggered by "rr_Peter fhemMsgRcvPush: Außenanlagen"
2017.10.31 15:51:44 5: msgDialog (msgD_Aussen)
    entering msgDialog_progress
        recipients: rr_Peter
        message:    Außenanlagen
        force:      0
2017.10.31 15:51:44 5: msgDialog (msgD_Aussen) - entering msgDialog_evalSpecials
2017.10.31 15:51:44 5: msgDialog (msgD_Aussen) - entering msgDialog_Set
2017.10.31 15:51:44 3: msg rr_Peter: ID=1509461504.95368.1 TYPE=push ROUTE=TeleBot RECIPIENT=@168363762 STATUS=OK PRIORITY=0 TITLE='' MSG='(Steckdose Schuppen Ein)

(Steckdose Schuppen Automatik Ein)

(Steckdose Schuppen Verlaufsdiagramm)
(Send Picture Camera Eingang)
(Send Picture Camera Carport)
(Send Picture Camera Garten)
(abbrechen)
Menü Außenanlagen'
2017.10.31 15:51:47 5: msgDialog (msgD_Aussen) - entering msgDialog_Notify
2017.10.31 15:51:47 4: msgDialog (msgD_Aussen) triggered by "rr_Peter fhemMsgRcvPush: Steckdose Schuppen Verlaufsdiagramm"
2017.10.31 15:51:47 5: msgDialog (msgD_Aussen)
    entering msgDialog_progress
        recipients: rr_Peter
        message:    Steckdose Schuppen Verlaufsdiagramm
        force:      0
2017.10.31 15:51:47 5: msgDialog (msgD_Aussen) - entering msgDialog_evalSpecials
2017.10.31 15:51:47 5: msgDialog (msgD_Aussen) - entering msgDialog_Set
2017.10.31 15:51:47 5: msgDialog (msgD_Aussen) - entering msgDialog_Set
2017.10.31 15:51:47 5: msgDialog (msgD_Aussen)
    entering msgDialog_progress
        recipients: rr_Peter
        message:    Steckdose Schuppen Verlaufsdiagramm|send
        force:      1
2017.10.31 15:51:47 5: msgDialog (msgD_Aussen) - entering msgDialog_evalSpecials
2017.10.31 15:51:47 5: msgDialog (msgD_Aussen) - entering msgDialog_Set
2017.10.31 15:51:47 3: msg rr_Peter: ID=1509461507.16127.1 TYPE=push ROUTE=TeleBot RECIPIENT=@168363762 STATUS=OK PRIORITY=0 TITLE='' MSG='(Q)
Steckdose Schuppen Verlaufsdiagramm'
2017.10.31 15:52:36 5: msgDialog (msgD_Aussen) - entering msgDialog_Notify


Hast Du eine Idee, warum der Aufruf aus meinem Dialog heraus nur klappt, wenn Dein von mir abgeändertes Dialogbeispiel zusätzlich in FHEM vorhanden und aktiv ist?

Tschau Peter
FHEM auf RPi 5 unter Bookworm mit inzwischen einem ganzen Zoo von Geräten...

igami

Ich habe es nur so überflogen, aber was mir aufgefallen ist, dass es bei dir 3 Stufen sind: "Außenanlagen|Steckdose Schuppen Verlaufsdiagramm|send" du hast aber das "Außenanlagen" weggelassen.
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

PSI69

Zitat von: igami am 31 Oktober 2017, 16:03:51
Ich habe es nur so überflogen, aber was mir aufgefallen ist, dass es bei dir 3 Stufen sind: "Außenanlagen|Steckdose Schuppen Verlaufsdiagramm|send" du hast aber das "Außenanlagen" weggelassen.

Oh Schitt; genau das war es natürlich.

Danke,
Peter
FHEM auf RPi 5 unter Bookworm mit inzwischen einem ganzen Zoo von Geräten...

Flipper92

Hey,
ich schon wieder :-)

Ich bin auf der suche nach einer Möglichkeit eine Mehrzeilige Nachrichten zu versenden.
Aktuell sieht es z.B. so aus:
{"Status": {
"message": [
"(Zurück:%me%) ",
"** Schalter **",
"TV: [Wohnzimmer.TV.Steckdose:state]",
"Schranklicht: [Wohnzimmer.Schranklicht:state]",
"Nachtlicht: [Schlafzimmer.Nachtlicht:state]",
"Waschmaschine: [Kueche.Waschmaschine:state]",
"FREI: [Steckdose.Laserdrucker:state]",
"Entfeuchter: [Jennifer.Entfeuchter:state]",
" ",
"** Türen **",
"Haustüre: nn",
"Balkontüre: [Wohnzimmer.Balkontuer:state]",
"Wohnzimmer: nn",
"Schlafzimmer: nn",
"Küche: nn",
"Arbeitszimmer: nn",
" ",
"** Fenster **",
"Wohnzimmer 1: [Wohnzimmer.Fenster1:state]",
"Wohnzimmer 2: nn",
"Schlafzimmer 1: [Schlafzimmer.Fenster1:state]",
"Schlafzimmer 2: nn",
"Küche: nn",
"Arbeitszimmer: [Jennifer.Fenster:state]",
" ",
"** Anwesend **",
"Handy Jenni: [Handy.Jennifer:state]",
"Schlüssel Jenni: nn",
"Handy Dominik: [Handy.Dominik:state]",
"Schlüssel Dominik: [Schluessel.Blau:state]",
"Schlüssel Grün: [Schluessel.Gruen:state]",
"Schlüssel Schwarz: [Schluessel.Schwarz:state]",
"Verschwunden1: [Schluessel.Fehlt1:state]",
" ",
"** FireTV **",
"Status: [FireTV:screen_state]"
]
}
}

Das geht doch sicher irgendwie besser oder?

Ich hab in dem Zusammenhang das Problem, das ich bei einem Bild ein längeren Untertitel mitgeben möchte.
"set %TelegramBot% sendImage \@$msgPeerId /opt/fhem/www/images/default/weather/".ReadingsVal('Wetter.Yahoo','icon','0').".png
".ReadingsVal('Wetter.Rusenschloss','condition','0')." bei
".ReadingsVal('Wetter.Heimbergstr.Temp','temperature','0')." (Gefühlt: ".ReadingsVal('Wetter.Rusenschloss','feelslike_c','0')."°C) bei ".ReadingsVal('Wetter.Heimbergstr.Temp','humidity','0')."%
UV-Index: ".ReadingsVal('Wetter.Heimbergstr.UV','uv_val','0')." Risiko: ".ReadingsVal('Wetter.Heimbergstr.UV','uv_risk','0')."
goo.gl/HWdhHo

Wind: ".ReadingsVal('Wetter.Rusenschloss','wind_speed','0'). "km/h
Regen: ".ReadingsVal('Wetter.Rusenschloss','rain','0')." l/s
Luftdruck: ".ReadingsVal('Wetter.Rusenschloss','pressure','0')." hPa (".ReadingsVal('Wetter.Rusenschloss','pressure_trend','0').")"

Das hatte ich in meinem alten Menü und würde es gerne übertragen. Leider klappt es nicht so einfach.
Allein das Bild wird schon nicht gesendet.

So sieht das Dialog aktuell aus. Wichtig hier: "Wetter jetzt"
{"Wetter": {
"message": [
"(Sonnenverlauf) ",
"(Wetter jetzt) ",
"(Wetter heute) ",
"(Wetter morgen) ",
"(Wetter 3-Tage) ",
"(Mond Infos) ",
"(Zurück:%me%) ",
"Wie kann ich dir dienen?"
],
"Sonnenverlauf": {
"message": [
"(zurück) ",
"Sonnenaufgang: [Astro:SunRiese]",
"Sonnenuntergang: [Astro:SunSet]",
"Tag dauer: [Astro:SunTransit]"
]
},
"Wetter jetzt": {
"message": [
"(zurück:Wetter) ",
"hier kommt noch was"
],
"commands": [
"set %TelegramBot% sendImage @$recipient /opt/fhem/www/images/default/weather/sunny.png"
]
},
"Wetter heute": {
"message": [
"(zurück) ",
"hier kommt noch was"
]
},
"Wetter morgen": {
"message": [
"(zurück) ",
"hier kommt noch was"
]
},
"Wetter 3-Tage": {
"message": [
"(zurück) ",
"hier kommt noch was"
]
},
"Mond Infos": {
"message": [
"(zurück:Wetter) ",
"Aufgang: [Wetter.Rusenschloss:moonrise]",
"Untergang: [Wetter.Rusenschloss:moonset]",
"Alter: [Wetter.Rusenschloss:moon_age]",
"Mondphase: [Wetter.Rusenschloss:moon_phase]"
]
},
"zurück": {
"match": "\/?zurück",
"commands": "set $recipient_history=.+ say @$recipient {(ReadingsVal($DEV, '$recipient_history', '') =~ m/(.+)\\|.+$/;; return $2 ? $2 : $1;;)}"
}
}
}


Kann mir hier jemand helfen?
Grüße am Feiertag

binford6000

ZitatIch bin auf der suche nach einer Möglichkeit eine Mehrzeilige Nachrichten zu versenden.
Aktuell sieht es z.B. so aus:
Moin Flipper,
"** Türen **", wird bei mir gar nicht angezeigt.
Und bei " ", verabschidet sich mein FHEM  :(
TelegramBot kennt aber \n für einen Zeilenumbruch. Kannst auch mehrere hintereinander hängen...

igami

Zitat von: Flipper92 am 31 Oktober 2017, 23:20:01
Das geht doch sicher irgendwie besser oder?
Was meinst du denn mit besser?

Zitat von: Flipper92 am 31 Oktober 2017, 23:20:01
Allein das Bild wird schon nicht gesendet.
Das liegt daran, dass $recipient deinen ROOMMATE Namen enthält und nicht deine Telegram ID.

Ich wollte es noch so bauen, dass man mehrere Nachrichten auf einmal versenden kann. Dann kann durch TelegramBot_MTYPE auch ein Bild versendet werden.
Aber ich muss erst mal schauen, dass ich damit anfange.
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

binford6000

@igami: Der Logeintrag vom FHEM-Crash:
Nested quantifiers in regex; marked by <-- HERE in m/^fhemMsgPush: (abbrechen|zurück:Q)
Dreambox: abwesend

** <-- HERE  Schalter **

Die Leerzeile ist wohl " ",
Vielleicht kannst Du was damit anfangen...
VG Sebastian

igami

Zitat von: binford6000 am 01 November 2017, 08:59:57
Vielleicht kannst Du was damit anfangen...
VG Sebastian
Post mal bitte die Raw definiton von einem ganzen Dialog bei dem es nicht funktioniert. ich kann es nicht nachstellen.

defmod test msgDialog {\
  "test": {\
    "message": [\
      "** test **",\
      "Zeile 2"\
    ]\
  }\
}

der geht bei mir einwandfrei
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

binford6000

Zitatder geht bei mir einwandfrei

Der verursacht einen FHEM-Crash bei mir. Liegt aber am Modul 22_HOMEMODE.pm welches ich auch im Einsatz habe:
Nested quantifiers in regex; marked by <-- HERE in m/^fhemMsgPush: ** <-- HERE  test **
Zeile 2$/ at ./FHEM/22_HOMEMODE.pm line 989.

Und zwar in dieser Regex:
{
  next if (!grep /^$_$/,@{$events});
  $mode = $_;
}

Hat also erstmal nix mit msgDialog zu tun...
VG Sebastian



Esjay

Hallo zusammen,
ich hänge mich mal an. Schön das es jetzt das Modul gibt. Aber alter Besen ist das Umfangreich. Ich glaube wenn mann keine Programmierkenntnisse hat wird es echt schwierig.
Ich habe jetzt schon öffter angesetzt, und habe jetzt so ein bisschen den Überblick verloren. Ziel ist es irgendwann mal richtung Design in #100 von binford6000.

Vll mag ja nochmal jemand drauf gucken. Bisherige definitionen.

list myMsgConfig
Internals:
   CFGFN
   NAME       myMsgConfig
   NOTIFYDEV  TYPE=(Jabber|TelegramBot|yowsup)
   NR         78703
   NTFY_ORDER 50-myMsgConfig
   STATE      initialized
   TYPE       msgConfig
   READINGS:
     2017-11-02 11:46:00   fhemMsgRcvPush  M
     2017-11-02 11:46:00   fhemMsgRcvPushGw TelegramBot
     2017-11-02 11:13:05   fhemMsgState    initialized
Attributes:
   comment    FHEM Global Configuration for command 'msg'
   evalSpecials me=M
TelegramBot=TelegramBot
   group      Global
   msgContactPush TelegramBot:@156XXXXXX
   msgType    text
   room       msg
   stateFormat fhemMsgState
   userattr   evalSpecials:textField-long
   verbose    3


list meta_Dialog

Internals:
   CFGFN
   DEF        {
  "%me%": {
    "match": "\/?(start|%me%)",
    "commands": [
  "deletereading TYPE=msgDialog $recipient_history",
  "deletereading %TelegramBot% $recipient_sentMsgId"
    ],
    "message": [
      "{return('(' . join(') (', sort(split('\n', fhem('get TYPE=msgDialog:FILTER=NAME!=$SELF:FILTER=allowed=.*($recipient|everyone).* trigger')))) . ') ')}",
      "(abbrechen) ",
      "Ich kann folgendes für dich tun:"
    ]
  },
  "abbrechen": {
    "match": "\/?abbrechen",
    "commands": [
  "deletereading TYPE=msgDialog $recipient_history",
  "deletereading %TelegramBot% $recipient_sentMsgId"
    ],
    "message": [
      "(%me%) ",
      "Dialog abgebrochen."
    ]
  },
  "beenden": {
    "match": "\/?beenden",
    "commands": [
  "deletereading TYPE=msgDialog $recipient_history",
  "deletereading %TelegramBot% $recipient_sentMsgId"
    ],
    "message": [
      "(%me%) ",
      "Dialog beendet."
    ]
  }
}
   MSGCOMMAND msg push \@$recipients $message
   NAME       meta_Dialog
   NOTIFYDEV  TYPE=(ROOMMATE|GUEST)
   NR         78230
   NTFY_ORDER 50-meta_Dialog
   STATE      Initialized
   TRIGGER    abbrechen,beenden,%me%
   TYPE       msgDialog
   READINGS:
     2017-11-02 10:59:32   state           Initialized
Attributes:
   allowed    everyone
   room       msg


list sentMsgIdByPeerId

Internals:
   CFGFN
   DEF        .+:sentMsgId.+ {
  return unless($TYPE eq "TelegramBot");

  my $dev_hash = $defs{$NAME};
  my $sentMsgId = ReadingsVal($NAME, "sentMsgId", "");
  my $sentMsgPeerId = ReadingsVal($NAME, "sentMsgPeerId", "");
  my ($contact) = devspec2array("TYPE=(ROOMMATE|GUEST):FILTER=msgContactPush=.*$sentMsgPeerId.*");

  readingsSingleUpdate($dev_hash, "$contact\_sentMsgId", $sentMsgId, 1);
}
   NAME       sentMsgIdByPeerId
   NR         78323
   NTFY_ORDER 50-sentMsgIdByPeerId
   REGEXP     .+:sentMsgId.+
   STATE      active
   TYPE       notify
   READINGS:
     2017-11-02 11:01:55   state           active
Attributes:
   devStateIcon {ReadingsVal($name, "state", "inactive") eq "active" ? ".*:ios-on-blue:inactive" : ".*:ios-off:active"}
   icon       audio_mic
   room       msg


Zusätzlich habe ich bei meinem Roommate folgendes gesetzt

msgContactPush

TelegramBot:@1568XXXX


Zum Testen habe ich den Waschmaschinendialog eingefügt.

Wenn ich jetzt M in den Chat schicke, werden auch die Readings im Roommate und im myMsgConfig Device aktualisiert. Passieren tut allerdings rein gar nichts.

Sieht jemand den Fehler, und kann mich aufklären?

Mir ist so glaube ich auch ein Fehler im Wiki aufgefallen unter dem Punkt "msgConfig". Fehlt da nicht der Zeilenumbruch hinter "me=<Aktivierungswort bzw. -Nachricht>"?

Grüße

PSI69

@Esjay
Siehe wiki
defmod myMsgConfig msgConfig
attr myMsgConfig msgDialog_evalSpecials me=<Aktivierungswort bzw. -Nachricht>
TelegramBot=<Name des TelegramBot-device>
attr myMsgConfig msgContactPush TelegramBot
attr myMsgConfig room msg


Der Name hat sich geändert in 'msgDialog_evalSpecials'...

Peter
FHEM auf RPi 5 unter Bookworm mit inzwischen einem ganzen Zoo von Geräten...