msgDialog: Instant Messaging als FHEM Interface

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

Vorheriges Thema - Nächstes Thema

igami

Es muss sein:

<NAME des TelegramBot Device>:@<deine Telegram ID>

Ich vermute, dass du da was durcheinander bringst. Wenn du magst kannst du mir ein List von deinem TelegramBot per PM schicken, dann kann ich es dir genau 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

Flipper92

Zitat von: igami am 02 Oktober 2017, 17:05:12
Versuch mal bitte die Version hier aus dem Anhang.
...
Wer heute schon ein update vom msgConfig gemacht hat braucht mit der neuen Version das notify nicht mehr :)

Hey,
Ich verwende die zweite Version (aus dem Zitat) und bekomme die normale Keyboards zum laufen, nicht aber die inline. Würde die wieder deaktiviert oder hab ich was übersehen?

Elche notify wird mit dem Update der msgConfig nicht mehr benötigt?

PS: nutze auch Telegram.

Gruß Dominik

igami



Zitat von: Flipper92 am 03 Oktober 2017, 22:03:17
Hey,
Ich verwende die zweite Version (aus dem Zitat) und bekomme die normale Keyboards zum laufen, nicht aber die inline. Würde die wieder deaktiviert oder hab ich was übersehen?

Elche notify wird mit dem Update der msgConfig nicht mehr benötigt?

PS: nutze auch Telegram.

Gruß Dominik

Für inline brauchst du noch den cmdalias den ich weiter vorne gepostet habe. Ich persönlich finde die normalen Keyboards angenehmer.

Mit dem Update von msgConfig braucht man das msgPushReceived notify nicht mehr.
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

Flipper92

Zitat von: igami am 04 Oktober 2017, 06:20:24
Für inline brauchst du noch den cmdalias den ich weiter vorne gepostet habe. Ich persönlich finde die normalen Keyboards angenehmer.

Grad den halben Text gelöscht :-) Da es beim nächsten Test doch funktioniert hat mit dem inline.

Woran kann es liegen, das Waschmaschine funktioniert, aber kanaan nicht.
abbrechen funktioniert bei mir auch nicht.

igami

Kein allowed gesetzt?
Am besten Mal ein list posten, dann kann ich gucken
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

Andy89

Guten Tag,
ich bin heute auch auf Telegram umgestiegen und hab direkt dieses coole Modul gefunden. Normale Nachrichten, Fotos etc kann ich senden, jedoch bekomme ich das mit dem Menü gar nicht hin. Egal was ich an den Bot schreibe, es kommt kein Menü. Vielleicht findet ja jemand den Fehler...

hier ein list von telegramBot:
Internals:
   FAILS      0
   NAME       telegramBot
   NR         1547
   OLD_POLLING 183
   POLLING    183
   SNAME      telegramBot
   STATE      Polling
   TYPE       TelegramBot
   UPDATER    0
   WAIT       0
   me         460***817:A***Bot:@A***Bot
   offset_id  688***981
   sentLastResult SUCCESS
   sentMsgId  134
   sentMsgOptions
   sentMsgPeer Andy****
   sentMsgPeerId 158***404
   sentMsgResult SUCCESS
   sentMsgText test
   AliasCmds:
   Contacts:
     158***404  158***404:Andy****:@Andreas*****
   HU_DO_PARAMS:
     NAME
     addr       https://api.telegram.org:443
     boundary   TelegramBot_boundary-x0123
     buf
     code       200
     conn
     data
     displayurl <hidden>
     header     agent: TelegramBot/1.0

User-Agent: TelegramBot/1.0

Accept: application/json

Accept-Charset: utf-8

Content-Type: multipart/form-data; boundary=TelegramBot_boundary-x0123
     hideurl    1
     host       api.telegram.org
     httpheader HTTP/1.1 200 OK

Server: nginx/1.10.0

Date: Wed, 04 Oct 2017 09:57:21 GMT

Content-Type: application/json

Content-Length: 259

Connection: close

Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: GET, POST, OPTIONS

Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection

Strict-Transport-Security: max-age=31536000; includeSubdomains
     hu_blocking 0
     hu_filecount 38
     hu_port    443
     hu_portSfx
     loglevel   4
     method     POST
     path       /bot460***817:AA***x8/sendMessage
     protocol   https
     redirects  0
     timeout    30
     url        https://api.telegram.org/bot460***817:AA***x8/sendMessage
     args:
       @Andreas*****
       test
       undef
       0
       undef
       undef
       1
     hash:
     sslargs:
   HU_UPD_PARAMS:
     FD         53
     NAME
     addr       https://api.telegram.org:443
     buf
     code       200
     displayurl <hidden>
     header     agent: TelegramBot/1.0

User-Agent: TelegramBot/1.0

Accept: application/json

Accept-Charset: utf-8
     hideurl    1
     host       api.telegram.org
     hu_blocking 0
     hu_filecount 182
     hu_port    443
     hu_portSfx
     isPolling  update
     loglevel   4
     method     GET
     offset     688***981
     path       /bot460***817:AA***x8/getUpdates?offset=688***981&limit=5&timeout=120
     protocol   https
     redirects  0
     timeout    245
     url        https://api.telegram.org/bot460***817:AA***x8/getUpdates?offset=688***981&limit=5&timeout=120
     hash:
     sslargs:
   READINGS:
     2017-10-04 08:52:24   Contacts        158***404:Andy****:@Andreas*****
     2017-10-04 08:46:32   PollingErrCount 0
     2017-10-04 11:52:21   StoredCommands  fhem

     2017-10-04 11:57:48   fhemMsgRcvPush  Flur
     2017-10-04 11:57:48   fhemMsgRcvPushGw telegramBot
     2017-10-04 11:57:48   msgChat         Andy****
     2017-10-04 11:57:48   msgChatId       158***404
     2017-10-04 11:57:48   msgFileId
     2017-10-04 11:57:48   msgId           135
     2017-10-04 11:57:48   msgPeer         Andy****
     2017-10-04 11:57:48   msgPeerId       158***404
     2017-10-04 11:57:48   msgReplyMsgId
     2017-10-04 11:57:48   msgText         Flur
     2017-10-04 11:57:48   prevMsgChat     Andy****
     2017-10-04 11:57:48   prevMsgFileId
     2017-10-04 11:57:48   prevMsgId       133
     2017-10-04 11:57:48   prevMsgPeer     Andy****
     2017-10-04 11:57:48   prevMsgPeerId   158***404
     2017-10-04 11:57:48   prevMsgReplyMsgId
     2017-10-04 11:57:48   prevMsgText     test
     2017-10-04 11:52:05   queryData       TBOT_FAVORITE_CANCEL
     2017-10-04 11:52:05   queryID         680419048323465712
     2017-10-04 11:52:05   queryPeer       Andy****
     2017-10-04 11:52:05   queryPeerId     158***404
     2017-10-04 11:52:05   queryReplyMsgId 127
     2017-10-04 11:57:21   sentMsgId       134
     2017-10-04 11:57:21   sentMsgPeerId   158***404
     2017-10-04 11:57:21   sentMsgResult   SUCCESS
   inlinechats:
   sentQueue:
Attributes:
   DbLogExclude .*
   allowUnknownContacts 0
   cmdFavorites /cmd
   cmdKeyword fhem
   cmdRestrictedPeer 158***404
   defaultPeer @Andreas*****
   event-on-change-reading .*
   favorites  /[-Flur Cam Bild] = set FZ_CAM_IT on;; sleep 65;; get cam_tuer image;
/[-Flur Cam aus] = set FZ_CAM_IT off
   favoritesInline 1
   msgContactPush telegramBot:@158***404
   pollingTimeout 120
   room       z_Module
   utf8Special 1


hier ein gekürztes list vom residents-device:
Internals:
   .eventMapCmd zuhause:noArg abwesend:noArg verreist:noArg bettfertig:noArg schläft:noArg aufgestanden:noArg
   DEF        rgr_Residents
   NAME       rr_Andy
   NOTIFYDEV  global,rr_Andy_wakeuptimer1,rr_Andy_wakeuptimer2
   NR         823
   NTFY_ORDER 50-rr_Andy
   READY      1
   RESIDENTGROUPS rgr_Residents
   STATE      zuhause
   TYPE       ROOMMATE
   READINGS:
     2017-10-04 11:55:47   fhemMsgPush     (Please define first) (abbrechen) Ich kann folgendes für dich tun:
     2017-10-04 11:55:47   fhemMsgPushGw    telegramBot:@Andreas***:ERROR
     2017-10-04 11:55:47   fhemMsgPushPrio 0
     2017-10-04 11:55:47   fhemMsgPushState 0
     2017-10-04 11:55:47   fhemMsgPushTitle -
     2017-10-04 12:06:50   fhemMsgRcvPush  Flur
     2017-10-04 12:06:50   fhemMsgRcvPushGw telegramBot
     2017-10-04 11:55:47   fhemMsgState    0
     2017-10-04 11:55:47   fhemMsgStateTypes push:0
     2017-07-29 19:00:58   lastArrival     2017-07-29 19:00:58
   TIMER:
Attributes:
  event-on-change-reading .* 
   msgContactPush telegramBot:@158***404


hier ein list vom msgConfig device:
Internals:
   CFGFN
   NAME       myMsgConfig
   NOTIFYDEV  TYPE=(Jabber|TelegramBot|yowsup)
   NR         4308
   NTFY_ORDER 50-myMsgConfig
   STATE      1
   TYPE       msgConfig
   Helper:
     DBLOG:
       fhemMsgState:
         logdb:
           TIME       1507107692.41934
           VALUE      initialized
   READINGS:
     2017-10-04 11:17:53   fhemMsgPush     @ (andy)
Die Wachmaschine ist fertig.
     2017-10-04 11:17:53   fhemMsgPushGw    telegramBot:OK
     2017-10-04 11:17:53   fhemMsgPushPrio 0
     2017-10-04 11:17:53   fhemMsgPushState 1
     2017-10-04 11:17:53   fhemMsgPushTitle -
     2017-10-04 11:17:53   fhemMsgState    1
     2017-10-04 11:17:53   fhemMsgStateTypes push:1
Attributes:
   DbLogExclude .*
   comment    FHEM Global Configuration for command 'msg'
   evalSpecials me=rr_Andy
TelegramBot=telegramBot
   event-on-change-reading .*
   group      Global
   msgContactPush telegramBot
   msgType    text
   room       msg,z_Module
   stateFormat fhemMsgState
   userattr   evalSpecials:textField-long
   verbose    3


und natürlich gibts auch den cmdalias für die inlines:
Internals:
   ALIAS      set
   CFGFN
   DEF        set .+ message (.|\n)+ AS {
  my ($NAME, $cmd, $message) = split(/[\s]+/, $EVENT, 3);
  my $TYPE = InternalVal($NAME, "TYPE", "");
  (my $recipient, $message) = ($message =~ m/(@\S+)? (.+)/s);

  if($TYPE eq "TelegramBot" && $recipient){
    my ($contact) = devspec2array("TYPE=(ROOMMATE|GUEST):FILTER=msgContactPush=.*$recipient.*");
    my $sentMsgId = ReadingsVal($NAME, "$contact\_sentMsgId", "");

    if($sentMsgId ne ""){
      fhem("set $NAME queryEditInline $sentMsgId $recipient $message");
    }
    else{
      fhem("set $NAME queryInline $recipient $message");
    }
  }
  else{
    fhem("set $EVENT");
  }
}
   NAME       message2queryEditInline
   NEWCMD     {
  my ($NAME, $cmd, $message) = split(/[\s]+/, $EVENT, 3);
  my $TYPE = InternalVal($NAME, "TYPE", "");
  (my $recipient, $message) = ($message =~ m/(@\S+)? (.+)/s);

  if($TYPE eq "TelegramBot" && $recipient){
    my ($contact) = devspec2array("TYPE=(ROOMMATE|GUEST):FILTER=msgContactPush=.*$recipient.*");
    my $sentMsgId = ReadingsVal($NAME, "$contact\_sentMsgId", "");

    if($sentMsgId ne ""){
      fhem("set $NAME queryEditInline $sentMsgId $recipient $message");
    }
    else{
      fhem("set $NAME queryInline $recipient $message");
    }
  }
  else{
    fhem("set $EVENT");
  }
}
   NR         4879
   PARAM      .+ message (.|\n)+
   STATE      defined
   TYPE       cmdalias
Attributes:
   DbLogExclude .*
   room       msg
   verbose    5


und dann noch ein list von Test Menü:
Internals:
   CFGFN
   CHANGED
   DEF        {"Flur":{
  "message": [
    "(Einschalten)",
    "(Ausschalten)",
    "(abbrechen) "
  ],
  "Einschalten":{
  "commands": "set %actor% on",
  "message":[
    "(%me%) ",
    "Die Lampe im Flur wurde eingeschaltet."
  ]
  },
  "Ausschalten":{
  "commands": "set %actor% off",
  "message":[
    "(%me%) ",
    "Die Lampe im Flur wurde ausgeschaltet."
  ]
  }
}
}
   NAME       Flur_dialog
   NOTIFYDEV  TYPE=(ROOMMATE|GUEST)
   NR         6127
   NTFY_ORDER 50-Flur_dialog
   STATE      rr_Andy: Flur
   TRIGGER    Flur
   TYPE       msgDialog
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1507110062.74787
           VALUE      Initialized
   READINGS:
     2017-10-04 13:02:58   everyone_history Flur
     2017-10-04 13:42:16   rr_Andy_history Flur
     2017-10-04 13:42:16   state           rr_Andy: Flur
Attributes:
   DbLogExclude .*
   allowed    rr_Andy
   evalSpecials actor=FZ_Deckenlampe
   event-on-change-reading .*
   room       msg


leider finde ich den Fehler nicht. Vielleicht hatte jemand ja das gleiche.
Liegt es evtl an den Favoriten im telegramBot, die auch commands erlauben?

hmmm ??? ???
Danke schon mal für die Hilfe.

Beste Grüße
Andy
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

Flipper92

Zitat von: igami am 04 Oktober 2017, 10:06:25
Kein allowed gesetzt?

Ups. Das wars.

Hab aber nun auch ein Punkt wo ich nicht weiter komme.
Hab die Waschmaschinen Timer mal für eine Heizung ummoduliert.
Aktuell sieht es so aus (komplett)
{ "Heizung": {
      "message": [
        "(bestätigen|abbrechen) ",
        "(aus:04.5|5°C:05.0|6°C:06.0|7°C:07.0) ",
"(8°C:08.0|9°C:09.0|10°C:10.0|11°C:11.0) ",
"(12°C:12.0|13°C:13.0|14°C:14.0|15°C:15.0) ",
"(15.5°C:15.5|16°C:16.0|16.5°C:16.5|17°C:17.0) ",
"(17.5°C:17.5|18°C:18.0|18.5°C:18.5|19°C:19.0) ",
"(19.5°C:19.5|20°C:20.0|20.5°C:20.5|21°C:21.0) ",
"(21.5°C:21.5|22°C:22.0|22.5°C:22.5|23°C:23.0) ",
"(23.5°C:23.5|24°C:24.0|25°C:25.0|26°C:26.0) ",
"(27°C:27|28°C:28|29°C:29|voll:29.5) ",
        "Aktuell ist [Wohnzimmer.Thermostat:desiredTemperature] eingestellt.",
"Treffen Sie das Setup."
      ],
      "Setup": {
        "match": "[0-2][0-9][:.]([0]|[5])",
        "commands": [
          "{my $temperatur = '$message';; fhem(\"set Wohnzimmer.Thermostat desiredTemperature $temperatur\");;}",
          "set $SELF say @$recipient Waschmaschine|programmieren|bestätigen"
        ]
}
    }
}


Tastatur geht auf, aber es geht nicht weiter wenn ich eine Temperatur auswähle.

Grüße

Andy89

#52
ich hab nun einen Erfolg... ich hatte nicht die neuste Version  ??? ??? ???
hab den Thread zwar mehrfach gelesen, aber dennoch hatte ich nicht die aktuellste Version genommen  :-X :-X :-X :-X
nun kommen immerhin schon die Menüs richtig an  ;D

so nun kann ich auch drauf reagieren. Was mir aufgefallen ist, da bei mir im "Flur" erstmal nichts anklickbar war, ist dass hinter einem Befehl in Klammern zwingend ein Leerzeichen vorhanden sein muss:

defmod Flur_dialog msgDialog {"Flur":{\
  "message": [\
    "(Einschalten) ",\
    "(Ausschalten) ",\
    "(abbrechen) ",\
"{return('Lampe: ' . (ReadingsVal('%actor%', 'state', '') eq 'on' ? 'eingeschaltet' : 'ausgeschaltet'))}"\
  ],\
  "Einschalten":{\
  "commands": "set %actor% on",\
  "message":[\
    "(%me%) ",\
    "Die Lampe im Flur wurde eingeschaltet."\
  ]\
  },\
  "Ausschalten":{\
  "commands": "set %actor% off",\
  "message":[\
    "(%me%) ",\
    "Die Lampe im Flur wurde ausgeschaltet."\
  ]\
  }\
}\
}
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

binford6000

Hallo Zusammen,
ich habe mal versucht, meine Lampen und Lightscenes in einen Dialog zu gießen.
Der Dialog lässt sich komplett navigieren und die Menüeinträge sind auch dynamisch.  :D

Aber leider schaltet keines der commands! Im Log ist auch nichts zu finden (auch Verbose 5)
Der Dialog bleibt einfach dort stehen. Die dazugehörige Nachricht wir auch nicht versendet.  :(

Picke ich mir eine Lampe heraus
und baue daraus einen Minidialog wird das command auch ausgeführt und das device korrekt geschaltet  ???
{"Beleuchtung":{
  "message": [
    "(Szenen) ",
    "(Lampen einschalten) ",
    "(Lampen ausschalten) ",
    "(abbrechen) ",
"Szenen einstellen oder Lampen schalten:"
  ],
  "Szenen":{
  "message":[
    "{return('(abwesend einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'abwesend')}",
"{return('(anwesend einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'anwesend')}",
"{return('(anwesend_alle einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'anwesend_alle')}",
"{return('(anwesend_alle_farbe einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'anwesend_alle_farbe')}",
"{return('(schlafen einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'schlafen')}",
"{return('(kino einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'kino')}",
"(abbrechen) ",
"Welche Lichtszene soll aktiviert werden?"
  ]
  },
  "abwesend einschalten":{
  "commands": "set Standard.LS scene abwesend",
  "message":[
    "(%me%) ",
    "Die Szene abwesend wurde aktiviert."
  ]
  },
  "anwesend einschalten":{
  "commands": "set Standard.LS scene anwesend",
  "message":[
    "(%me%) ",
    "Die Szene anwesend wurde aktiviert."
  ]
  },
  "anwesend_alle einschalten":{
  "commands": "set Standard.LS scene anwesend_alle",
  "message":[
    "(%me%) ",
    "Die Szene anwesend_alle wurde aktiviert."
  ]
  },
  "anwesend_alle_farbe einschalten":{
  "commands": "set Standard.LS scene anwesend_alle_farbe",
  "message":[
    "(%me%) ",
    "Die Szene anwesend_alle_farbe wurde aktiviert."
  ]
  },
  "schlafen einschalten":{
  "commands": "set Standard.LS scene schlafen",
  "message":[
    "(%me%) ",
    "Die Szene schlafen wurde aktiviert."
  ]
  },
  "kino einschalten":{
  "commands": "set Standard.LS scene kino",
  "message":[
    "(%me%) ",
    "Die Szene kino wurde aktiviert."
  ]
  },
  "Lampen einschalten":{
  "message":[
    "{return('(Flur einschalten) ') if(ReadingsVal('fl_sw_1', 'state', '') eq 'off')}",
"{return('(Kueche einschalten) ') if(ReadingsVal('SteckdoseIT2', 'state', '') eq 'off')}",
"{return('(Schlafzimmer einschalten) ') if(ReadingsVal('sz_col_1', 'state', '') eq 'off')}",
"(abbrechen) ",
"Welche Lampe soll eingeschaltet werden?"
  ]
  },
  "Flur einschalten":{
  "commands": "set fl_sw_1 on",
  "message":[
    "(%me%) ",
    "Die Lampe im Flur wurde eingeschaltet."
  ]
  },
  "Kueche einschalten":{
  "commands": "set SteckdoseIT2 on",
  "message":[
    "(%me%) ",
    "Die Lampe in der Kueche wurde eingeschaltet."
  ]
  },
  "Schlafzimmer einschalten":{
  "commands": "set sz_col_1 on",
  "message":[
    "(%me%) ",
    "Die Lampe im Schlafzimmer wurde eingeschaltet."
  ]
  },
  "Lampen ausschalten":{
  "message":[
    "{return('(Flur ausschalten) ') if(ReadingsVal('fl_sw_1', 'state', '') ne 'off')}",
"{return('(Kueche ausschalten) ') if(ReadingsVal('SteckdoseIT2', 'state', '') ne 'off')}",
"{return('(Schlafzimmer ausschalten) ') if(ReadingsVal('sz_col_1', 'state', '') ne 'off')}",
"(abbrechen) ",
"Welche Lampe soll ausgeschaltet werden?"
  ]
  },
  "Flur ausschalten":{
  "commands": "set fl_sw_1 off",
  "message":[
    "(%me%) ",
    "Die Lampe im Flur wurde ausgeschaltet."
  ]
  },
  "Kueche ausschalten":{
  "commands": "set SteckdoseIT2 off",
  "message":[
    "(%me%) ",
    "Die Lampe in der Kueche wurde ausgeschaltet."
  ]
  },
  "Schlafzimmer ausschalten":{
  "commands": "set sz_col_1 off",
  "message":[
    "(%me%) ",
    "Die Lampe im Schlafzimmer wurde ausgeschaltet."
  ]
  }
}
}

Ich frage mich nur woran das liegen könnte? Habt ihr eine Idee?
VG Sebastian

igami

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

ZitatDu schließt erst den Szenen Teil mit der }

Thx! Hier der funktionierende Code:
{"Beleuchtung":{
  "message": [
    "(Szenen) ",
    "(Lampen einschalten) ",
    "(Lampen ausschalten) ",
    "(abbrechen) ",
    "Szenen einstellen oder Lampen schalten:"
  ],
  "Szenen":{
    "message":[
      "{return('(abwesend einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'abwesend')}",
      "{return('(anwesend einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'anwesend')}",
      "{return('(anwesend_alle einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'anwesend_alle')}",
      "{return('(anwesend_alle_farbe einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'anwesend_alle_farbe')}",
      "{return('(schlafen einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'schlafen')}",
      "{return('(kino einschalten) ') if(ReadingsVal('Standard.LS', 'state', '') ne 'kino')}",
      "(abbrechen) ",
      "Welche Lichtszene soll aktiviert werden?"
    ],
"abwesend einschalten":{
    "commands": "set Standard.LS scene abwesend",
    "message":[
      "(%me%) ",
      "Die Szene abwesend wurde aktiviert."
    ]
    },
    "anwesend einschalten":{
    "commands": "set Standard.LS scene anwesend",
    "message":[
      "(%me%) ",
      "Die Szene anwesend wurde aktiviert."
    ]
    },
    "anwesend_alle einschalten":{
    "commands": "set Standard.LS scene anwesend_alle",
    "message":[
      "(%me%) ",
      "Die Szene anwesend_alle wurde aktiviert."
    ]
    },
    "anwesend_alle_farbe einschalten":{
    "commands": "set Standard.LS scene anwesend_alle_farbe",
    "message":[
      "(%me%) ",
      "Die Szene anwesend_alle_farbe wurde aktiviert."
    ]
    },
    "schlafen einschalten":{
    "commands": "set Standard.LS scene schlafen",
    "message":[
      "(%me%) ",
      "Die Szene schlafen wurde aktiviert."
    ]
    },
    "kino einschalten":{
    "commands": "set Standard.LS scene kino",
    "message":[
      "(%me%) ",
      "Die Szene kino wurde aktiviert."
    ]
}
    },
    "Lampen einschalten":{
    "message":[
      "{return('(Flur einschalten) ') if(ReadingsVal('fl_sw_1', 'state', '') eq 'off')}",
      "{return('(Kueche einschalten) ') if(ReadingsVal('SteckdoseIT2', 'state', '') eq 'off')}",
      "{return('(Schlafzimmer einschalten) ') if(ReadingsVal('sz_col_1', 'state', '') eq 'off')}",
      "(abbrechen) ",
      "Welche Lampe soll eingeschaltet werden?"
    ],
    "Flur einschalten":{
    "commands": "set fl_sw_1 on",
    "message":[
      "(%me%) ",
      "Die Lampe im Flur wurde eingeschaltet."
    ]
    },
    "Kueche einschalten":{
    "commands": "set SteckdoseIT2 on",
    "message":[
      "(%me%) ",
      "Die Lampe in der Kueche wurde eingeschaltet."
    ]
    },
    "Schlafzimmer einschalten":{
    "commands": "set sz_col_1 on",
    "message":[
      "(%me%) ",
      "Die Lampe im Schlafzimmer wurde eingeschaltet."
    ]
}
    },
"Lampen ausschalten":{
    "message":[
      "{return('(Flur ausschalten) ') if(ReadingsVal('fl_sw_1', 'state', '') ne 'off')}",
      "{return('(Kueche ausschalten) ') if(ReadingsVal('SteckdoseIT2', 'state', '') ne 'off')}",
      "{return('(Schlafzimmer ausschalten) ') if(ReadingsVal('sz_col_1', 'state', '') ne 'off')}",
      "(abbrechen) ",
      "Welche Lampe soll ausgeschaltet werden?"
    ],
    "Flur ausschalten":{
    "commands": "set fl_sw_1 off",
    "message":[
      "(%me%) ",
      "Die Lampe im Flur wurde ausgeschaltet."
    ]
    },
    "Kueche ausschalten":{
    "commands": "set SteckdoseIT2 off",
    "message":[
      "(%me%) ",
      "Die Lampe in der Kueche wurde ausgeschaltet."
    ]
    },
    "Schlafzimmer ausschalten":{
    "commands": "set sz_col_1 off",
    "message":[
      "(%me%) ",
      "Die Lampe im Schlafzimmer wurde ausgeschaltet."
    ]
    }
   }
}
}


Was mir jetzt noch fehlt wäre quasi ein "Navigations-Dialog".  Bei "abbrechen" lande ich immer in %me%,
muss also in meinem Fall "Q" anklicken um dann wieder meine ganzen Dialoge zu sehen.
Sowas wie ein "zurück" Dialog...  ???
VG Sebastian

igami

"zurück" könnte man auch in den Meta Dialog integrieren. Es sollte ja pro Benutzer immer nur ein Dialog aktiv sein. Dann muss man ja nur für diesen Dialog "set <Dialog> say @$recipient {perl Code für history ohne den letzten Teil}".
Ich teste das Mal, wenn ich wieder zu Hause bin.

Spricht aus eurer Sicht noch etwas dagegen das Modul offiziell einzuchecken?
Dann würde ich noch ein bisschen was am logverhalten basteln und die Commandref fertig machen.
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

ZitatDann muss man ja nur für diesen Dialog "set <Dialog> say @$recipient {perl Code für history ohne den letzten Teil}".
Ich teste das Mal, wenn ich wieder zu Hause bin.

Klingt gut!

ZitatSpricht aus eurer Sicht noch etwas dagegen das Modul offiziell einzuchecken?
Dann würde ich noch ein bisschen was am logverhalten basteln und die Commandref fertig machen.

Stimmt, der Meta-Dialog schreibt immer ins log, auch mit verbose 0. Aus meiner Sicht spricht nichts dagegen das Modul offiziell einzuchecken.
Es läuft alles stabil und rund. Ein großes Lob von mir an dieser Stelle! Das Warten hat sich wirklich gelohnt!
VG Sebastian

igami

Was schreibt der denn ins Log? Ich bin eher der Meinung, dass ich nicht genug Meldungen bei verbose 3-5 zur Verfügung Stelle um Fehler zu erkennen.
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

Flipper92

Zitat von: igami am 05 Oktober 2017, 15:32:21
Spricht aus eurer Sicht noch etwas dagegen das Modul offiziell einzuchecken?

Bei mir macht es immer wieder Probleme mit der Performance.
Gestern hatte ich ein "Menü" das mein FHEM immer abstürzen ließ.
Auch mit meinem vorherigen Menü gibt es ein paar Probleme bei der Geschwindigkeit. Muss heufig FHEM neu starten.

Gruß