msgDialog: Instant Messaging als FHEM Interface

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

Vorheriges Thema - Nächstes Thema

binford6000

Zitat von: igami am 22 August 2018, 05:39:37
Ich habe den Dialog bei mir importiert und kann direkt nach "02.Klima" auf "Helligkeits Werte anzeigen" gehen und bekomme eine Nachricht.
Poste doch mal ein List von dem Dialog, zu dem Zeitpunkt wo es nicht funktioniert.

Hier auch. Kann direkt zu "02.Klima" auf "Helligkeits Werte anzeigen" gehen.
VG Sebastian

binford6000

Hallo Zusammen,
habe mal ein Icon für meine Dialoge gebaut. Und dazu ein passendes archetype device welches mir meine Dialoge automatisch mit Grundeinstellungen versorgt:
defmod msgConfig_archetype archetype defined_by=msgConfig_archetype TYPE=msgDialog
attr msgConfig_archetype userattr allowed
attr msgConfig_archetype alias Archetyp für msgDialog devices
attr msgConfig_archetype allowed everyone
attr msgConfig_archetype attributes allowed icon group room
attr msgConfig_archetype devStateIcon active:ios-on-blue
attr msgConfig_archetype group Dialoge
attr msgConfig_archetype icon dialog
attr msgConfig_archetype room 91_Dialogsteuerung


Vielleicht kann es ja noch jemand gebrauchen...  :D
VG Sebastian

Mumpitz

Zitat von: igami am 22 August 2018, 05:39:37
Ich habe den Dialog bei mir importiert und kann direkt nach "02.Klima" auf "Helligkeits Werte anzeigen" gehen und bekomme eine Nachricht.
Poste doch mal ein List von dem Dialog, zu dem Zeitpunkt wo es nicht funktioniert.

Also, ganz komisch! Ich habe zuerst die aktuelle Temperaturen angefragt und anschliessend den Helligkeitsverlauf. Die Temperaturen sind gekommen, der Verlauf nicht!

Hier das List des msgdDialogs:
Internals:
   CFGFN     
   DEF        {"02.Klima":{
  "message": [
    "(Aktuelle Temperaturen anzeigen) ",
    "(Temperatur Verlauf anzeigen) ",
"(Helligkeits Werte anzeigen) ",
"(Helligkeits Verlauf anzeigen) ",   
"(abbrechen) ",
    "%me% was möchtest Du tun mein Meister?:"
  ],
    "Aktuelle Temperaturen anzeigen":{
    "message":[
      "Aktuelle Temperaturen:",
  "Küche: [Temp_Wohnzimmer:temperature]°C.",
  "Esszimmer: [blink:Cam_Wohnzimmer_Tempg]°C.",
  "Galerie: [blink:Cam_Galerie_Tempg]°C.",
  "Kinderzimmer Lean:[Temp_Lean:temperature]°C.",
  "Büro UG: [blink:Cam_Buero_Tempg]°C.",
  "Sitzplatz: [blink_outdoor:Cam_Garten_Tempg]°C.",
  "Vorbau: [blink_outdoor:Cam_Eingang_Tempg]°C.",
  "Fragen?"
    ]},
"Temperatur Verlauf anzeigen": {
"message": [
"TelegramBot_MTYPE=queryInline (%me%) ",
"{fhem(\"set %TelegramBot% cmdSend @\".\"R_Eppi {plotAsPng('SVG_FileLog_Temp_Lean_1')}\")}",
"{fhem(\"set %TelegramBot% cmdSend @\".\"R_Eppi {plotAsPng('SVG_FileLog_Temp_Wohnzimmer_1')}\")}",
"Temperatur Verlauf Lean & Wohnzimmer"
]
},


    "Helligkeits Werte anzeigen":{
     "message":[
      "Aktuelle Lux Werte:",
  "Ostseite: [Multisensor_Ost:state] lx.",
  "Südseite: [HM_Lichtsensor_Sued:state] lx.",
  "Westseite: [HM_Lichtsensor_West:state] lx.",
  "Fragen?"
    ]
    },
"Helligkeits Verlauf anzeigen": {
"message": [
"TelegramBot_MTYPE=queryInline (%me%) ",
"{fhem(\"set %TelegramBot% cmdSend @\".\"R_Eppi {plotAsPng('SVG_FileLog_Sensor_Licht_West_3')}\")}",
"Helligkeitsverlauf"
]
},
    "Stehlampe Wohnzimmer einschalten":{
    "commands": "set Licht_Stehlampe_Wohnzimmer on",
    "message":[
      "(%me%) ",
      "Die Lampe im Wohnzimmer wurde eingeschaltet."
    ]
   
   }
}
}
   MSGCOMMAND msg push \@$recipients $message
   NAME       Klima_Dialog
   NOTIFYDEV  TYPE=(ROOMMATE|GUEST)
   NR         1340
   NTFY_ORDER 50-Klima_Dialog
   STATE      rr_Reto: Aktuelle Temperaturen anzeigen
   TRIGGER    02.Klima
   TYPE       msgDialog
   OLDREADINGS:
   READINGS:
     2018-08-23 11:18:43   rr_Reto_history
     2018-08-23 11:18:43   state           rr_Reto: Aktuelle Temperaturen anzeigen
Attributes:
   allowed    rr_Reto
   room       Telegram
   verbose    0


Daraus entnehme ich, dass die Anfrage gar nicht beim Dialog angekommen ist. Hier das Roomate Device:



Internals:
   DEF        rgr_Residents
   DURATIONTIMER 1535016572.68152
   NAME       rr_Reto
   NOTIFYDEV  global,
   NR         205
   NTFY_ORDER 50-rr_Reto
   READY      1
   RESIDENTGROUPS rgr_Residents
   STATE      home
   TYPE       ROOMMATE
   READINGS:
     2018-08-23 11:13:32   durTimerAbsence 00:00:00
     2018-08-23 11:13:32   durTimerAbsence_cr 0
     2018-08-23 11:28:32   durTimerPresence 00:15:00
     2018-08-23 11:28:32   durTimerPresence_cr 15
     2016-01-07 05:45:26   durTimerSleep   00:00:00
     2016-01-07 05:45:26   durTimerSleep_cr 0
     2018-08-23 11:18:43   fhemMsgPush     Aktuelle Temperaturen:
Küche: 25.8°C.
Esszimmer: 25.3°C.
Galerie: 25.3°C.
Kinderzimmer Lean:26.0°C.
Büro UG: 26.4°C.
Sitzplatz: 26.4°C.
Vorbau: 22.55°C.
Fragen?
     2018-08-23 11:18:43   fhemMsgPushGw    Eppi_Telegram:@285515829:OK
     2018-08-23 11:18:43   fhemMsgPushPrio 0
     2018-08-18 21:23:24   fhemMsgPushReceived abbrechen
     2018-08-18 21:23:24   fhemMsgPushReceivedContact Eppi_Telegram
     2018-08-23 11:18:43   fhemMsgPushState 1
     2018-08-23 11:18:43   fhemMsgPushTitle -
     2018-08-23 11:22:05   fhemMsgRcvPush  Helligkeits Verlauf anzeigen
     2018-08-23 11:22:05   fhemMsgRcvPushGw Eppi_Telegram
     2018-08-23 11:18:43   fhemMsgState    1
     2018-08-23 11:18:43   fhemMsgStateTypes push:1
     2018-08-23 11:13:32   lastArrival     2018-08-23 11:13:32
     2016-01-07 05:45:26   lastAwake       2016-01-07 05:45:26
     2018-08-23 09:53:28   lastDeparture   2018-08-23 09:53:28
     2018-08-23 11:13:32   lastDurAbsence  01:20:04
     2018-08-23 11:13:32   lastDurAbsence_cr 80
     2018-08-23 09:53:28   lastDurPresence 42:35:48
     2018-08-23 09:53:28   lastDurPresence_cr 2556
     2016-01-07 05:45:26   lastDurSleep    04:44:34
     2016-01-07 05:45:26   lastDurSleep_cr 285
     2017-10-25 17:57:31   lastLocation    home
     2018-08-23 09:53:28   lastMood        calm
     2016-01-07 01:00:52   lastSleep       2016-01-07 01:00:52
     2018-08-23 11:13:32   lastState       absent
     2017-10-25 17:57:47   location        home
     2018-08-23 11:13:32   mood            calm
     2018-08-23 11:13:32   presence        present
     2018-08-23 11:13:32   state           home
     2015-12-15 06:14:57   wakeup          0
     2015-12-15 06:12:18   wayhome         0
   TIMER:
     rr_Reto_DurationTimer:
       HASH       rr_Reto
       MODIFIER   DurationTimer
       NAME       rr_Reto_DurationTimer
Attributes:
   alias      Status Reto
   devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown:home
   group      Home State
   icon       people_sensor
   msgContactPush Eppi_Telegram:@xxxxxxxxx
   room       Steuerung
   rr_realname group
   sortby     4
   webCmd     state


Hier steht ja einerseits die aktuelle Temperatur, anderseits auch meine neue Anfrage, welche jedoch nicht weitergereicht wurde?

Jemand einen Plan?

shilbert

#513
Hallo zusammen,

Ich habe analog zum Wiki ein Meta-Menü erstellt. Das wird mir auch angezeigt. Allerdings erscheint als einziger Auswahlknopf "abbrechen"

Ich habe den Beispieldialog zur Waschmaschine in meiner fhem.cfg

Wo kann ich ansetzen ?

[Gelöst]: Mann muss offenbar "attr meta_Dialog allowed XXXX" für jeden Dialog setzen. Macht Sinn.

schnitzelbrain

Hallo,

vielleicht kann mir jemand auf die Sprünge helfen.
Problem: Bild von SSCAm per Telegram auf Anforderung versenden.
Wenn ich diesen code in die fhem Kommandozeile eingebe funktioniert es:

set telegrambot sendImage @@meine_id {(ReadingsVal("syno_balkonien","full_path",""))}
   


im MSGDialog so, leider nicht :
"command": [
"{fhem(\"set telegrambot sendImage @@meine_id {(ReadingsVal(\"syno_balkonien\",\"full_path\",\"\"))}\")}"
    ]


Auch nicht wenn ich den kompletten code so in die command Zeile kopiere und die \ entferne dann kommt folgende Fehlermeldung:
Global symbol "@meine_id" requires explicit package name at (eval 7244) line 1.
syntax error at (eval 7244) line 1, near ""set telegrambot sendImage @@meine_id {(ReadingsVal("syno_balkonien"


Ich denke mal Irgendwo noch ein escapen oder "" oder {, aber ich komme nicht drauf.

Grüße

binford6000

Moin,
mach doch sowas:
attr <dialog> evalSpecials datei={(ReadingsVal("syno_balkonien","full_path",""))}
Dann hast du dir das ganze Escapen gespart  8)
"command": [
"{fhem(\"set telegrambot sendImage @meine_id %datei%\")}"
    ]

VG Sebastian

schnitzelbrain

Zitat von: binford6000 am 26 August 2018, 11:49:36
Moin,
mach doch sowas:
attr <dialog> evalSpecials datei={(ReadingsVal("syno_balkonien","full_path",""))}
Dann hast du dir das ganze Escapen gespart  8)
"command": [
"{fhem(\"set telegrambot sendImage @meine_id %datei%\")}"
    ]

VG Sebastian

Super, danke funktioniert nach kleiner Anpassung.
"set telegrambot sendImage @meine_id %datei% "

hat genügt.

Vielen Dank !

Smarti

Nabend,

hab da ne Frage an die Experten. ich würde gerne folgendes in einem Dialog ausführen:

{qx(wget --no-cookies --no-cache --timestamping http://wetterstationen.meteomedia.de/messnetz/vorhersagegrafik/108241.png -O ./www/snapshots/4dwetter.png)}

Wie muss ich das bewerkstelligen, im Konsolenfester wird alles prima ausgeführt.


igami

Zitat von: Smarti am 27 August 2018, 22:19:24
Wie muss ich das bewerkstelligen, im Konsolenfester wird alles prima ausgeführt.
Einfach einfügen als command:

defmod test_dialog msgDialog {\
  "test": {\
    "commands": "{qx(wget --no-cookies --no-cache --timestamping http://wetterstationen.meteomedia.de/messnetz/vorhersagegrafik/108241.png -O ./www/snapshots/4dwetter.png)}"\
  }\
}
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

Smarti

Zitat von: igami am 28 August 2018, 05:57:46
Einfach einfügen als command:

defmod test_dialog msgDialog {\
  "test": {\
    "commands": "{qx(wget --no-cookies --no-cache --timestamping http://wetterstationen.meteomedia.de/messnetz/vorhersagegrafik/108241.png -O ./www/snapshots/4dwetter.png)}"\
  }\
}


Super! Das ist ja einfach...

Dann ist mir einfach noch nicht klar wann brauche ich z.B. fhem() bzw. system (). wo finde ich eine Doku?

Anderes Thema:
Gibt es auch die Möglichkeit in einen Dialog eine Passwortabfrage einzubauen, so dass diese nicht im Chatverlauf sichtbar ist...

Dank!

binford6000

ZitatDann ist mir einfach noch nicht klar wann brauche ich z.B. fhem() bzw. system (). wo finde ich eine Doku?

Otto hat das Ganze mal sehr schön herausgearbeitet:
http://heinz-otto.blogspot.com/2018/02/in-fhem-externe-programme-aufrufen.html

{fhem("set device on");}
ist der PERL-Aufruf eines FHEM-Befehls.

VG Sebastian

schnitzelbrain

#521
Hallo,
nach der tollen Hilfe hab ich jetzt doch noch ein Problem.
Es wird leider immer das vorletzte Bild gesendet.

Hier der Aufruf
"set syno_balkonien snap ",
"sleep 5; set telegrambot sendImage %empfanger% %balkon_bild% "


Die beiden %Variablen% werden mit evalspecials direkt im modul ermittelt.

Es liegt mein user reading full_path aus dem sscamera Modul zu grunde.
Wenn ich das sscamera Modul beobachte, wird das user reading direkt geändert sobald in Telegram der Button gedrückt wird.

Wann werden denn die eval specials berechnet? Es scheint erst wenn das msgModul abgearbeitet wurde.
Dann kommt die Änderung erst beim nöchsten Aufruf zum Tragen.

Lässt sich dies beeinflussen oder gibt es eine idee wie es besser macht und die aktuelle Aufnahme gesendet werden kann.

Grüße
Schnitzelbrain

Grüße Schnitzelbrain

binford6000

ZitatLässt sich dies beeinflussen oder gibt es eine idee wie es besser macht und die aktuelle Aufnahme gesendet werden kann.
Moin,
ich habe die Logik fürs Bilder senden in ein dummy + notify ausgelagert, da ich es auch an anderer Stelle nutze.
Such mal nach sleep hier im msgDialog-Thread. Das Thema ist bereits behandelt worden...

VG Sebastian

schnitzelbrain

Zitat von: binford6000 am 29 August 2018, 09:02:53
Moin,
ich habe die Logik fürs Bilder senden in ein dummy + notify ausgelagert, da ich es auch an anderer Stelle nutze.
Such mal nach sleep hier im msgDialog-Thread. Das Thema ist bereits behandelt worden...

VG Sebastian

Danke für den Tipp, aber ich konnte es damit nicht Lösen.
Den Sleep hatte ich ja schon drin aber weder Zeitdauer (10 sekunden max) noch position (Vor, hinter dem anderen befehl oder auch einzeln) konnten etwas am Ergebnis ändern.
Sonst hatte ich bezüglich Sleep nix zusätzliches gefunden.

Der Sleep hat wohl verzögert (passend zu den Sekunden) aber es kam trotzdem das vorletzte Bild.

Ich habe jetzt einfach zwei getrennte Befehle geschrieben. Einmal Aufnahme und dann Abfrage.
auch wenn ich direkt nach der Aufnahme auf Versenden drücke kommt jetzt immer das aktuelle Bild.



wolfram

Hallo und guten Abend,

eine kurze Frage an die Experten, denn bei meiner Suche habe ich nicht genau das gefunden, was ich gesucht habe (hoffentlich bin ich hier richtig):

Wenn meine Waschmaschine fertig ist bekomme ich per Telegram eine Nachricht, dass die Waschmaschine fertig ist - super.
Nun ist es aber so, dass ich mich "zwingen" möchte diese auszuräumen. Mit anderen Worten hätte ich gern:

- Einen Dialog, der in bestimmten Intervallen (alle 10) min "nervt", also die Nachricht wieder und wieder versendet, bis ich ein bestimmtes Schlüsselwort, oder ähnliches versendet habe, dass die Waschmaschine ausgeräumt ist.

Hat jemand sowas schon umgesetzt und kann mich auf den Weg bringen?

Liebe Grüße und einen schönen Abend
wolf