Autor Thema: msgDialog: Instant Messaging als FHEM Interface  (Gelesen 79539 mal)

Offline sku

  • Jr. Member
  • **
  • Beiträge: 99
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #555 am: 19 Oktober 2018, 23:47:52 »
Hallo zusammen,

ich hab einen Dialog gebaut, den ich leider weder per RAWimport noch def modify im device ändern kann. Es passiert einfach nix, keine Meldung, kein Logeintrag, auch nicht bei verbose 5 des msgDialog device. Füge ich jedoch den code manuell in die fhem.cfg ein, funktioniert alles Fehlerfrei.

Hier der Code:
{
  "Heizung": {
    "message": [
    "(Heizung Text) ",
    "(Heizung Graph) ",
    "(Heizung Hauptschalter) ",
    "(Heizungsabsenkung) ",
    "(SZ Nachtbetrieb) ",
    "(AZ|Bad) ",
    "(SZ|WZ) ",
    "(zurück:%me%|ende) ",
    "Aktuell Soll - Ist:",
    "AZ:  [az_ThstWand_Climate:desired-temp] - [az_ThstWand_Climate:measured-temp].",
    "Bad: [bad_ThstWand_Climate:desired-temp] - [bad_ThstWand_Climate:measured-temp].",
    "SZ:  [sz_ThstWand_Climate:desired-temp] - [sz_ThstWand_Climate:measured-temp].",
    "WZ:  [wz_ThstWand_Climate:desired-temp] - [wz_ThstWand_Climate:measured-temp].",
"Draußen kälter: [raumdurchschnitt:draussenkaelter]"
    ],
    "Heizung Text": {
      "message": [
        "AZ",
        "[az_Thst1_Clima:state]%",
        "[az_ThstWand_Weather:state]%",
        "Bad",
        "[bad_Thst1_Clima:state]%",
        "[bad_ThstWand_Weather:state]%",
        "SZ",
        "[sz_Thst1_Clima:state]%",
        "[sz_ThstWand_Weather:state]%",
        "WZ",
        "[wz_Thst1_Clima:state]%",
        "[wz_Thst2_Clima:state]%",
        "[wz_ThstWand_Weather:state]%"
      ]
},
    "Heizung Graph": {
      "commands": "set %TelegramBot% cmdSend {plotAsPng('SVG_rasp3_DbLog_Heizung')}",
      "message": "Plot"
},
    "Heizung Hauptschalter": {
      "message": [
"(einschalten) ",
"(ausschalten) ",
"(zurück|abbrechen) ",
"Heizung Hauptschalter: [heizung_rasp3:state]"
      ],
      "einschalten": {
    "commands": [
  "set heizung_rasp3 on",
  "set $SELF say @$recipient Heizung"
        ]
      },
  "ausschalten": {
    "commands": [
  "set heizung_rasp3 off",
  "set $SELF say @$recipient Heizung"
        ]
      }
 
    },
"Heizungsabsenkung": {
      "message": [
"(einschalten) ",
"(ausschalten) ",
"(zurück|abbrechen) ",
"Heizungsabsenkung: [heizungsabsenkung_rasp3:state]"
      ],
      "einschalten": {
    "commands": [
  "set heizungsabsenkung_rasp3 on",
  "set $SELF say @$recipient Heizung"
        ]
      },
  "ausschalten": {
    "commands": [
  "set heizungsabsenkung_rasp3 off",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
"SZ Nachtbetrieb": {
      "message": [
"(einschalten) ",
"(ausschalten) ",
"(zurück|abbrechen) ",
"SZ Nachtbetrieb: [sz_nachtbetrieb_rasp3:state]"
      ],
      "einschalten": {
    "commands": [
  "set sz_nachtbetrieb_rasp3 on",
  "set $SELF say @$recipient Heizung"
        ]
      },
  "ausschalten": {
    "commands": [
  "set sz_nachtbetrieb_rasp3 off",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
    "AZ": {
      "message": [
"(zurück|abbrechen) ",
"(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) ",
        "Ist: [az_ThstWand_Climate:measured-temp]",
"Soll: [az_ThstWand_Climate:desired-temp]",
"Tag: [az_ThstWand_Climate:R-dayTemp]",
"Nacht: [az_ThstWand_Climate:R-nightTemp]"
      ],
      "Setup": {
        "match": "[0-2][0-9][.]([0]|[5])",
        "commands": [
          "{my $temperatur = '$message';;;; fhem(\"set az_ThstWand_Climate desired-temp $temperatur\");;;;}",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
    "Bad": {
      "message": [
"(zurück|abbrechen) ",
"(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) ",
        "Ist: [bad_ThstWand_Climate:measured-temp]",
"Soll: [bad_ThstWand_Climate:desired-temp]",
"Tag: [bad_ThstWand_Climate:R-dayTemp]",
"Nacht: [bad_ThstWand_Climate:R-nightTemp]"
      ],
      "Setup": {
        "match": "[0-2][0-9][.]([0]|[5])",
        "commands": [
          "{my $temperatur = '$message';;;; fhem(\"set bad_ThstWand_Climate desired-temp $temperatur\");;;;}",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
    "SZ": {
      "message": [
"(zurück|abbrechen) ",
"(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) ",
        "Ist: [sz_ThstWand_Climate:measured-temp]",
"Soll: [sz_ThstWand_Climate:desired-temp]",
"Tag: [sz_ThstWand_Climate:R-dayTemp]",
"Nacht: [sz_ThstWand_Climate:R-nightTemp]"
      ],
      "Setup": {
        "match": "[0-2][0-9][.]([0]|[5])",
        "commands": [
          "{my $temperatur = '$message';;;; fhem(\"set sz_ThstWand_Climate desired-temp $temperatur\");;;;}",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
    "WZ": {
      "message": [
"(zurück|abbrechen) ",
"(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) ",
        "Ist: [wz_ThstWand_Climate:measured-temp]",
"Soll: [wz_ThstWand_Climate:desired-temp]",
"Tag: [wz_ThstWand_Climate:R-dayTemp]",
"Nacht: [wz_ThstWand_Climate:R-nightTemp]"
      ],
      "Setup": {
        "match": "[0-2][0-9][.]([0]|[5])",
        "commands": [
          "{my $temperatur = '$message';;;; fhem(\"set wz_ThstWand_Climate desired-temp $temperatur\");;;;}",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
    "ende": {
      "match": "\/?abbrechen",
  "commands": "deletereading TYPE=msgDialog $recipient_history",
      "message": "Pfiat di!"
    }
  }
}

Offline igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2680
  • RTFM
    • commandref
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #556 am: 20 Oktober 2018, 07:53:22 »
ich hab einen Dialog gebaut, den ich leider weder per RAWimport noch def modify im device ändern kann.
Das spricht ja für ein Fehlverhalten von FHEMWEB.

Es passiert einfach nix, keine Meldung, kein Logeintrag, auch nicht bei verbose 5 des msgDialog device. Füge ich jedoch den code manuell in die fhem.cfg ein, funktioniert alles Fehlerfrei.
Ist denn das allowed Attritbut vergeben?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im August 2019.

MAINTAINER: archetype, Heating_Control, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap, RandomTimer, WeekdayTimer
ToDo: adb, FluxLED

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1106
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #557 am: 20 Oktober 2018, 07:56:14 »
Moin,
einfach in eine Leere msgDialog Definition einegeben. Läuft.
define test msgDialog {}Und dann dein Dialog reinkopiert. Kann ihn sofort in Telegram aufrufen.
Vg Sebastian
Proxmox, nextcloud, fhem mit: deconz, CUL via ser2net, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking, Testumgebung: docker pull fhem/fhem

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1106
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #558 am: 20 Oktober 2018, 07:59:06 »
Und wie igami schreibt dass Attribut allowed nicht vergessen.
Ich hab bei mir ein archetype device eingerichtet was das automatisch für mich tut...
VG Sebastian
Proxmox, nextcloud, fhem mit: deconz, CUL via ser2net, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking, Testumgebung: docker pull fhem/fhem

Offline sku

  • Jr. Member
  • **
  • Beiträge: 99
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #559 am: 22 Oktober 2018, 10:46:55 »
Vielen Dank für die Antworten, leider war die zündende Idee nicht dabei...
Attribut ist gesetzt.
neues device anlegen und reinkopieren funktioniert bei mir auch nicht, hatte ich schon probiert und jetzt eben wieder.


list, hatte ich vergessen (hier ohne DEF weil das schon weiter oben steht):
   MSGCOMMAND msg push \@$recipients $message
   NAME       Heizung_Dialog
   NOTIFYDEV  TYPE=(ROOMMATE|GUEST)
   NR         228
   NTFY_ORDER 50-Heizung_Dialog
   STATE      rr_michi: Heizung
   TRIGGER    Heizung
   TYPE       msgDialog
   OLDREADINGS:
   READINGS:
     2018-10-20 16:22:38   state           rr_michi: Heizung
Attributes:
   allowed    everyone
   room       msg

list WEB:
Internals:
   CONNECTS   545
   CSRFTOKEN  csrf_633
   DEF        8083 global
   FD         7
   NAME       WEB
   NR         5
   NTFY_ORDER 50-WEB
   PORT       8083
   STATE      Initialized
   TYPE       FHEMWEB
   READINGS:
     2018-10-18 14:29:17   state           Initialized
Attributes:
   JavaScripts codemirror/fhem_codemirror.js pgm2/fhem_details.js
   allowfrom  127.0.0.1
   confirmDelete 1
   editConfig 1
   longpoll   1
   menuEntries fhem-PC,/fhem,fhem-rasp1,/fhem-rasp1
   stylesheetPrefix dark
   title      { if($FW_room) { "rasp3: $FW_room" } elsif($FW_detail) { "rasp3: $FW_detail" } else { "rasp3" } }
   webname    fhem-rasp3

fhemweb hatte ich auch schon im Verdacht, hatte schon probiert die Attr. JavaScripts und title zu entfernen, leider ohne Erfolg.

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1106
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #560 am: 22 Oktober 2018, 11:01:25 »
Zitat
neues device anlegen und reinkopieren funktioniert bei mir auch nicht, hatte ich schon probiert und jetzt eben wieder.
Kommt da eine Fehlermeldung?
Proxmox, nextcloud, fhem mit: deconz, CUL via ser2net, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking, Testumgebung: docker pull fhem/fhem

Offline sku

  • Jr. Member
  • **
  • Beiträge: 99
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #561 am: 22 Oktober 2018, 12:07:34 »
Kommt da eine Fehlermeldung?

nein, keine Meldung, kein Logeintrag...

WEB verbose 5:
2018.10.22 12:08:22 4: WEB_192.168.0.210_56080 => 304 Not Modified
2018.10.22 12:08:22 4: WEB_192.168.0.210_56082 GET /fhem-rasp3/pgm2/jquery-ui.min.css; BUFLEN:0
2018.10.22 12:08:22 4: WEB_192.168.0.210_56082 => 304 Not Modified
2018.10.22 12:08:22 4: WEB_192.168.0.210_56084 GET /fhem-rasp3/pgm2/jquery.min.js; BUFLEN:0
2018.10.22 12:08:22 4: WEB_192.168.0.210_56084 => 304 Not Modified
2018.10.22 12:08:22 4: WEB_192.168.0.210_56080 GET /fhem-rasp3/pgm2/fhemweb.js; BUFLEN:0
2018.10.22 12:08:22 4: WEB_192.168.0.210_56080 => 304 Not Modified
2018.10.22 12:08:22 4: WEB_192.168.0.210_56082 GET /fhem-rasp3/pgm2/doif.js; BUFLEN:0
2018.10.22 12:08:22 4: WEB_192.168.0.210_56082 => 304 Not Modified
2018.10.22 12:08:22 4: WEB_192.168.0.210_56084 GET /fhem-rasp3/pgm2/fhemweb_readingsGroup.js; BUFLEN:0
2018.10.22 12:08:22 4: WEB_192.168.0.210_56084 => 304 Not Modified
2018.10.22 12:08:22 4: Connection accepted from WEB_192.168.0.123_56088
2018.10.22 12:08:22 4: WEB_192.168.0.210_56088 GET /fhem-rasp3/pgm2/jquery-ui.min.js; BUFLEN:0
2018.10.22 12:08:22 4: WEB_192.168.0.210_56088 => 304 Not Modified
2018.10.22 12:08:22 4: WEB_192.168.0.210_56080 GET /fhem-rasp3/pgm2/darkCommon.css; BUFLEN:0
2018.10.22 12:08:22 4: WEB_192.168.0.210_56080 => 304 Not Modified
2018.10.22 12:08:22 4: WEB_192.168.0.210_56080 GET /fhem-rasp3/pgm2/dashboard_darkstyle.css; BUFLEN:0
2018.10.22 12:08:22 4: WEB_192.168.0.210_56080 => 304 Not Modified
2018.10.22 12:08:23 4: WEB_192.168.0.210_56080 GET /fhem-rasp3/images/default/icoEverything.png; BUFLEN:0
2018.10.22 12:08:23 4: WEB_192.168.0.210_56080 => 304 Not Modified
2018.10.22 12:08:23 4: WEB_192.168.0.210_56082 GET /fhem-rasp3/images/default/fhemicon_dark.png; BUFLEN:0
2018.10.22 12:08:23 4: WEB_192.168.0.210_56082 => 304 Not Modified
« Letzte Änderung: 22 Oktober 2018, 12:11:19 von sku »

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1106
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #562 am: 22 Oktober 2018, 13:20:08 »
Dein FHEMWEB hat aber nichts mit msgDialog zu tun...  :o
Also zumindest wäre mir dieser Zusammenhang neu...  ;D
Proxmox, nextcloud, fhem mit: deconz, CUL via ser2net, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking, Testumgebung: docker pull fhem/fhem

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1106
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #563 am: 22 Oktober 2018, 13:24:08 »
Dein Dialog frisch angelegt mit:
define test msgDialog {}dann auf DEF und deinen Dialog eingefügt. Speichern. Keine Fehlermeldung. Einmal in Telegram aufgerufen:

 Historie löschen
Internals:
   CFGFN     
   DEF        {
  "Heizung": {
    "message": [
    "(Heizung Text) ",
    "(Heizung Graph) ",
    "(Heizung Hauptschalter) ",
    "(Heizungsabsenkung) ",
    "(SZ Nachtbetrieb) ",
    "(AZ|Bad) ",
    "(SZ|WZ) ",
    "(zurück:%me%|ende) ",
    "Aktuell Soll - Ist:",
    "AZ:  [az_ThstWand_Climate:desired-temp] - [az_ThstWand_Climate:measured-temp].",
    "Bad: [bad_ThstWand_Climate:desired-temp] - [bad_ThstWand_Climate:measured-temp].",
    "SZ:  [sz_ThstWand_Climate:desired-temp] - [sz_ThstWand_Climate:measured-temp].",
    "WZ:  [wz_ThstWand_Climate:desired-temp] - [wz_ThstWand_Climate:measured-temp].",
"Draußen kälter: [raumdurchschnitt:draussenkaelter]"
    ],
    "Heizung Text": {
      "message": [
        "AZ",
        "[az_Thst1_Clima:state]%",
        "[az_ThstWand_Weather:state]%",
        "Bad",
        "[bad_Thst1_Clima:state]%",
        "[bad_ThstWand_Weather:state]%",
        "SZ",
        "[sz_Thst1_Clima:state]%",
        "[sz_ThstWand_Weather:state]%",
        "WZ",
        "[wz_Thst1_Clima:state]%",
        "[wz_Thst2_Clima:state]%",
        "[wz_ThstWand_Weather:state]%"
      ]
},
    "Heizung Graph": {
      "commands": "set %TelegramBot% cmdSend {plotAsPng('SVG_rasp3_DbLog_Heizung')}",
      "message": "Plot"
},
    "Heizung Hauptschalter": {
      "message": [
"(einschalten) ",
"(ausschalten) ",
"(zurück|abbrechen) ",
"Heizung Hauptschalter: [heizung_rasp3:state]"
      ],
      "einschalten": {
    "commands": [
  "set heizung_rasp3 on",
  "set $SELF say @$recipient Heizung"
        ]
      },
  "ausschalten": {
    "commands": [
  "set heizung_rasp3 off",
  "set $SELF say @$recipient Heizung"
        ]
      }
 
    },
"Heizungsabsenkung": {
      "message": [
"(einschalten) ",
"(ausschalten) ",
"(zurück|abbrechen) ",
"Heizungsabsenkung: [heizungsabsenkung_rasp3:state]"
      ],
      "einschalten": {
    "commands": [
  "set heizungsabsenkung_rasp3 on",
  "set $SELF say @$recipient Heizung"
        ]
      },
  "ausschalten": {
    "commands": [
  "set heizungsabsenkung_rasp3 off",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
"SZ Nachtbetrieb": {
      "message": [
"(einschalten) ",
"(ausschalten) ",
"(zurück|abbrechen) ",
"SZ Nachtbetrieb: [sz_nachtbetrieb_rasp3:state]"
      ],
      "einschalten": {
    "commands": [
  "set sz_nachtbetrieb_rasp3 on",
  "set $SELF say @$recipient Heizung"
        ]
      },
  "ausschalten": {
    "commands": [
  "set sz_nachtbetrieb_rasp3 off",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
    "AZ": {
      "message": [
"(zurück|abbrechen) ",
"(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) ",
        "Ist: [az_ThstWand_Climate:measured-temp]",
"Soll: [az_ThstWand_Climate:desired-temp]",
"Tag: [az_ThstWand_Climate:R-dayTemp]",
"Nacht: [az_ThstWand_Climate:R-nightTemp]"
      ],
      "Setup": {
        "match": "[0-2][0-9][.]([0]|[5])",
        "commands": [
          "{my $temperatur = '$message';;;; fhem(\"set az_ThstWand_Climate desired-temp $temperatur\");;;;}",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
    "Bad": {
      "message": [
"(zurück|abbrechen) ",
"(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) ",
        "Ist: [bad_ThstWand_Climate:measured-temp]",
"Soll: [bad_ThstWand_Climate:desired-temp]",
"Tag: [bad_ThstWand_Climate:R-dayTemp]",
"Nacht: [bad_ThstWand_Climate:R-nightTemp]"
      ],
      "Setup": {
        "match": "[0-2][0-9][.]([0]|[5])",
        "commands": [
          "{my $temperatur = '$message';;;; fhem(\"set bad_ThstWand_Climate desired-temp $temperatur\");;;;}",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
    "SZ": {
      "message": [
"(zurück|abbrechen) ",
"(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) ",
        "Ist: [sz_ThstWand_Climate:measured-temp]",
"Soll: [sz_ThstWand_Climate:desired-temp]",
"Tag: [sz_ThstWand_Climate:R-dayTemp]",
"Nacht: [sz_ThstWand_Climate:R-nightTemp]"
      ],
      "Setup": {
        "match": "[0-2][0-9][.]([0]|[5])",
        "commands": [
          "{my $temperatur = '$message';;;; fhem(\"set sz_ThstWand_Climate desired-temp $temperatur\");;;;}",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
    "WZ": {
      "message": [
"(zurück|abbrechen) ",
"(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) ",
        "Ist: [wz_ThstWand_Climate:measured-temp]",
"Soll: [wz_ThstWand_Climate:desired-temp]",
"Tag: [wz_ThstWand_Climate:R-dayTemp]",
"Nacht: [wz_ThstWand_Climate:R-nightTemp]"
      ],
      "Setup": {
        "match": "[0-2][0-9][.]([0]|[5])",
        "commands": [
          "{my $temperatur = '$message';;;; fhem(\"set wz_ThstWand_Climate desired-temp $temperatur\");;;;}",
  "set $SELF say @$recipient Heizung"
        ]
      }
    },
    "ende": {
      "match": "\/?abbrechen",
  "commands": "deletereading TYPE=msgDialog $recipient_history",
      "message": "Pfiat di!"
    }
  }
}
   MSGCOMMAND msg push \@$recipients $message
   NAME       test
   NOTIFYDEV  TYPE=(ROOMMATE|GUEST)
   NR         2076
   NTFY_ORDER 50-test
   STATE      rr_Sebastian: Heizung
   TRIGGER    Heizung
   TYPE       msgDialog
   READINGS:
     2018-10-22 13:16:56   rr_Sebastian_history Heizung
     2018-10-22 13:16:56   state           rr_Sebastian: Heizung
Attributes:
   allowed    rr_Sebastian
   group      Dialoge
   icon       dialog
   room       91_Dialogsteuerung

Was mir auffällt: Bei dir fehlt das reading <ROOMMATE>_history -> wird vom Meta-Dialog wieder gelöscht.
Und bei mir gibt es kein OLDREADINGS.
« Letzte Änderung: 22 Oktober 2018, 13:31:58 von binford6000 »
Proxmox, nextcloud, fhem mit: deconz, CUL via ser2net, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking, Testumgebung: docker pull fhem/fhem

Offline nanocosmos

  • Full Member
  • ***
  • Beiträge: 217
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #564 am: 01 November 2018, 16:46:12 »
Da ich nicht das Rad neu erfinden wollte bzw. geringe Kentnisse in Perl habe, wollte ich einen Heizungs Dialog hier aus dem Thread verwenden.
Erstmal danke für die tolle Vorarbeit.

Leider habe ich zwei Fehler:
1. Es wird immer nur mein Büro geschaltet, auch wenn ich als Zimmer beispielsweise Wohnzimmer wähle. Meine sehr rudimentären Kentnisse in Perl haben mir leider nicht weitergeholfen den Fehler zu finden.

{
"1. Heizung": {
"match": "Raumtemperaturen",
"message": [
"(Schlafzimmer) (Bücherzimmer|Wohnzimmer) (Küche|Bad unten) (Büro Daniel|Büro Lisa) ",
"TelegramBot_MTYPE=queryInline (%me%) ",
"{return telegramBotGetRoomTemperatureListMessage() }"
],
"Raum": {
"match": "(Küche|Schlafzimmer|Wohnzimmer|Büro Daniel|Büro Lisa|Esszimmer)",
"commands": "setreading $SELF $recipient_Room $message",
"message": [
"(10.0|12.0|16.0|17.0) ",
"(17.5|18.0|18.5|19.0) ",
"(19.5|20.0|20.5|21.0) ",
"(21.5|22.0|22.5|23.0) ",
"(abbrechen) ",
"Heizung im $message einstellen"
],
"Temperatur": {
"match": "on|off|[0-2][0-9][:.]([0]|[5])",
"commands": [
"{my $temp = $message;;;; $temp =~ s/([\\d]{1,2}\\.[\\d{1}])/$1/g;;;; my $room = ReadingsVal(\"$SELF\", \"$recipient_Room\", \"\");;;; my $clima = ($room==\"Büro Daniel\"?\"dz_heizung_Clima\": ($room==\"Esszimmer\"?\"ez_heizung_Clima\":($room==\"Schlafzimmer\"?\"sz_heizung_Clima\":($room==\"Wohnzimmer\"?\"wz_heizung_Clima\":\"\"))));;;; fhem (\"set $clima desired-temp $temp\") }"
],
"message": [
"TelegramBot_MTYPE=queryInline (%me%) ",
"{my $room = ReadingsVal(\"$SELF\", \"$recipient_Room\", \"\");;;; return \"Temperatur im $room auf $message eingestellt.\";;;; }"
]
}
}
  }
}

2. Ich habe, um die aktuellen Temperaturen zu erhalten, die Änderung an der 99myUtils.pm vorgenommen.
Dies klappt auch wunderbar, doch nach 1-2 Tagen erscheint immer die Fehlermeldung:
Undefined subroutine &main:: telegramBotGetRoomTemperatureListMessage called at (eval 4421) line 1.

Wenn ich die 99myUtils öffne und ohne Änderung nochmal speichere, funktioniert es wieder, d.h. die Raumtemperaturen werden geschickt.

sub telegramBotGetRoomTemperatureListMessage()
{
my $tempDaniel = ReadingsVal("dz_heizung_Clima", "measured-temp", "0");
my $desiredTempDaniel = ReadingsVal("dz_heizung_Clima", "desired-temp", "0");
my $tempLisa = ReadingsVal("lz_heizung_Clima", "measured-temp", "0");
my $desiredTempLisa = ReadingsVal("lz_heizung_Clima", "desired-temp", "0");
my $tempBadunten = ReadingsVal("bz_heizung_Clima", "measured-temp", "0");
my $desiredBadunten = ReadingsVal("bz_heizung_Clima", "desired-temp", "0");
my $tempKueche = ReadingsVal("HZ_KUECHE", "measured-temp", "0");
my $desiredTempKueche = ReadingsVal("HZ_KUECHE", "desired-temp", "0");
my $tempSchlafzimmer = ReadingsVal("sz_heizung_Clima", "measured-temp", "0");
my $desiredTempSchlafzimmer = ReadingsVal("sz_heizung_Clima", "desired-temp", "0");
my $tempWohnzimmer = ReadingsVal("wz_heizung_Clima", "measured-temp", "0");
my $desiredTempWohnzimmer = ReadingsVal("wz_heizung_Clima", "desired-temp", "0");
my $tempBuecher = ReadingsVal("bz_heizung", "measured-temp", "0");
my $desiredTempBuecher = ReadingsVal("bz_heizung", "desired-temp", "0");
my $tempEsszimmer = ReadingsVal("ez_heizung", "measured-temp", "0");
my $desiredTempEsszimmer = ReadingsVal("ez_heizung", "desired-temp", "0");
my $returnMessage = "- 1. Stock -\n";
$returnMessage .= "Daniel: $tempDaniel °C (-> $desiredTempDaniel °C)\n";
$returnMessage .= "Lisa: $tempLisa °C (-> $desiredTempLisa °C)\n";
$returnMessage .= "Schlafz.: $tempSchlafzimmer °C (-> $desiredTempSchlafzimmer °C)\n";
$returnMessage .= "- Erdgeschoss -\n";
$returnMessage .= "Bad unten: $tempBadunten °C (-> $desiredBadunten °C)\n";
$returnMessage .= "Bücherzimmer: $tempBuecher °C (-> $desiredTempBuecher °C)\n";
$returnMessage .= "Esszimmer: $tempEsszimmer °C (-> $desiredTempEsszimmer °C)\n";
$returnMessage .= "Wohnzimmer: $tempWohnzimmer °C (-> $desiredTempWohnzimmer °C)\n";


return $returnMessage;
}

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1106
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #565 am: 01 November 2018, 21:45:48 »
Hallo,

Zu 1:
my $clima = ($room==\"Büro Daniel\"?\"dz_heizung_Clima\": ($room==\"Esszimmer\"?\"ez_heizung_Clima\":($room==\"Schlafzimmer\"?\"sz_heizung_Clima\":($room==\"Wohnzimmer\"?\"wz_heizung_Clima\":\"\"))));;;;
Der Rest nach "Büro Daniel" wird wohl nicht mehr ausgewertet. Da mein PERL auch noch in Level 2-3 steckt würde ich hier klassisches if/elsif verwenden.
Was ich definitiv besser lesen kann als die Kurzform...  :o

Zu 2:
Das liegt wohl eher nicht an msgDialog. Aber ich probier es einfach nochmal am Wochenende aus.

VG Sebastian
Proxmox, nextcloud, fhem mit: deconz, CUL via ser2net, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking, Testumgebung: docker pull fhem/fhem

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1106
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #566 am: 02 November 2018, 11:22:31 »
Hallo nochmal,
probier mal den hier:
{
"1. Heizung": {
"match": "Raumtemperaturen",
"message": [
"(Schlafzimmer|Büro Daniel) (Esszimmer|Wohnzimmer) ",
"TelegramBot_MTYPE=queryInline (%me%) ",
"{return telegramBotGetRoomTemperatureListMessage() }"
],
"Raum": {
"match": "(Esszimmer|Schlafzimmer|Wohnzimmer|Büro Daniel)",
"commands": "setreading $SELF $recipient_Room $message",
"message": [
"(10.0|12.0|16.0|17.0) ",
"(17.5|18.0|18.5|19.0) ",
"(19.5|20.0|20.5|21.0) ",
"(21.5|22.0|22.5|23.0) ",
"(abbrechen) ",
"Heizung im $message einstellen"
],
"Temperatur": {
"match": "on|off|[0-2][0-9][:.]([0]|[5])",
"commands": [
"{my $temp = $message;;;; my $clima;;;; $temp =~ s/([\\d]{1,2}\\.[\\d{1}])/$1/g;;;; my $room = ReadingsVal(\"$SELF\", \"$recipient_Room\", \"\");;;; if ($room eq \"Büro Daniel\") {$clima = \"dz_heizung_Clima\";;;;} elsif ($room eq \"Esszimmer\") {$clima = \"ez_heizung_Clima\";;;;} elsif ($room eq \"Schlafzimmer\") {$clima = \"sz_heizung_Clima\";;;;} elsif ($room  eq \"Wohnzimmer\") {$clima = \"wz_heizung_Clima\";;;;} fhem (\"set $clima desired-temp $temp\") }" ],
"message": [
"TelegramBot_MTYPE=queryInline (%me%) ",
"{my $room = ReadingsVal(\"$SELF\", \"$recipient_Room\", \"\");;;; return \"Temperatur im $room auf $message eingestellt.\";;;; }"
]
}
}
  }
}

VG Sebastian
Proxmox, nextcloud, fhem mit: deconz, CUL via ser2net, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking, Testumgebung: docker pull fhem/fhem

Offline nanocosmos

  • Full Member
  • ***
  • Beiträge: 217
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #567 am: 02 November 2018, 15:27:01 »
Vielen Dank!!!
Hat super funktioniert. :)
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Smarti

  • New Member
  • *
  • Beiträge: 44
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #568 am: 06 Januar 2019, 12:12:18 »
Hallo,

ich versuche gerade den Dialog mit der Einkaufsliste zu erweitern, komme aber nicht weiter... meine Perl Kenntnisse sind eher rudimentär, kenne eigentlich eher C.

Dabei der eigentliche Dialog von igami:

[..]
Ich nutze PostMe mit msgDialog, aber ohne TBot_List
defmod Einkaufsliste_Dialog msgDialog { \
  "Einkaufsliste": {\
    "message": [\
      "(Waren hinzufügen) ", \
      "(Waren entfernen) ", \
      "(einkaufen) ", \
      "(abbrechen) ",\
      "{my $content = (split(': ', fhem('get %PostMe% list %list%')))[1];;;; return('Keine Einträge vorhanden') unless($content);;;; return(join('\n', split(',', $content)));;;;}"\
    ],\
    "Waren hinzufügen": {\
      "message": [\
        "Bitte jede Ware als neue Nachricht hinzufügen.",\
        "Das hinzufügen von Waren durch \"/beenden\" beenden."\
      ],\
      "Ware hinzufügen": {\
        "match": "[^/]+",\
        "commands": [\
          "set %PostMe% add %list% $message",\
          "setreading $SELF $recipient_history Einkaufsliste|Waren hinzufügen"\
        ]\
      }\
    },\
    "Waren entfernen": {\
      "message": [\
        "{return('(' . join(') (', split(',', (split(': ', fhem('get %PostMe% list %list%')))[1]), 'beenden'). ') ')}",\
        "Welche Ware möchtest du entfernen?"\
      ],\
      "Ware entfernen": {\
        "match": "^(?!beenden).+",\
        "commands": [\
          "set %PostMe% remove %list% $message",\
          "set $SELF say @$recipient Einkaufsliste|Waren entfernen"\
        ]\
      }\
    },\
    "einkaufen": {\
      "commands": [\
        "setreading $SELF $recipient_history Einkaufsliste|noch einzukaufen"\
      ],\
      "message": [\
        "{return('(' . join(') (', split(',', (split(': ', fhem('get %PostMe% list %list%')))[1])) . ') ')}",\
        "(beenden) ",\
        "Bitte die Waren der Reihenfolge nach auswählen in der sie eingekauft werden."\
      ]\
    },\
    "noch einzukaufen": {\
      "message": [\
        "{return('(' . join(') (', split(',', (split(': ', fhem('get %PostMe% list %list%')))[1])) . ') ')}",\
        "(beenden) ",\
        "Noch einzukaufen:"\
      ],\
      "Ware eingekauft": {\
        "match": "^(?!beenden).+",\
        "commands": [\
          "set %PostMe% remove %list% $message",\
          "set $SELF say @$recipient Einkaufsliste|noch einzukaufen"\
        ]\
      }\
    }    \
  }\
}
attr Einkaufsliste_Dialog evalSpecials PostMe=PostMe\
list=Einkaufsliste


Ich habe nun eine Erweiterung geschrieben um alle bestehenden Listen auszulesen:

defmod test_Dialog msgDialog {\
  "Listen": {\
    "message": [\
      "{my $content = ReadingsVal('%PostMe%', 'postmeCnt', '');;my $list;; my @a;; for my $i (0..$content) { $list = 'postme'.sprintf('%02i',$i).'Name';; push(@a,ReadingsVal('%PostMe%',$list,''));;};; return('Keine Listen vorhanden') unless(@a);; return (join(',',@a));;}"\
    ]\
 }\
}

attr test_Dialog evalSpecials PostMe=PostIt


Nun will / sollten diese vergleichbar wie bei "Ware entfernen" als Buttons zurückgegeben werden, damit dann bei der "Einkaufliste" eingestiegen werden kann.

Kann mir da jemand weiterhelfen...

Bin über Optimierungen in meinem Code auch offen.

THX
« Letzte Änderung: 06 Januar 2019, 12:18:09 von Smarti »

Offline l2r

  • Sr. Member
  • ****
  • Beiträge: 569
Antw:msgDialog: Instant Messaging als FHEM Interface
« Antwort #569 am: 11 Januar 2019, 09:42:09 »
moin zusammen,

hat sich in seit dem Wochenende irgendwas geändert?
Bei mir scheint der msgDialog nicht mehr auf die Trigger zu reagieren. Kann das noch jemand bestätigen?

Außerdem habe ich noch eine Frage:
Ich möchte gerne Pushover als default für msg benutzer und zusätzlich für msgDialog dann Telegram. Ich habe mir also testweise im globalmsg folgendes gesetzt:
attr msgDialog_msgCommand msg \@Telegram:\@$recipients $messageist das korrekt? Leider bekomme ich keine Antworten auf meine Trigger, egal ob ich das Attribut jetzt setze oder nicht. Aktuell steht msgContactPush wieder auf Telegram. Leider bekomme ich auch hier keine Nachrichten.

EDIT: scheint jetzt wieder zu laufen. Ich hab aber keine Ahnung woran es gelegen hat ;-)

Gruß Michael
« Letzte Änderung: 11 Januar 2019, 10:55:17 von l2r »
Wissen ist Macht.
Ich weiß nix.
Macht nix.

 

decade-submarginal