Hi,
nach einigem rumprobieren hab ich den TelegramBot am laufen. Total geil. Und mit Kenntniss der Syntax auch easy nutzbar. Mit den Shorts gibts dann hoffenltich nen gute WAF.
Was noch fehlt ist das der Bot nach einem Befehl von einer Rolladen-Fahrt den Positionswert zurückmeldet. Das bekomme ich einfach nicht hin.
ER meldet nur
TelegramBot FHEM - Manne Befehl:set MQTT2_Rolladen_EG_Kueche_A50221 pct 60: - Ergebnis:
OK
Einer ne Idee wie ich das hin bekomme? maximal fährt der Rolladen in dem Fall 13 sekunden, man müsste also nen notify nach 15 sekunden über die Position als folge des doit befehls auslösen.
Gruß Manne
keiner ne Idee? :(
Zitat von: mannebk am 26 Mai 2021, 02:48:06
keiner ne Idee? :(
Ideen vielleicht schon, aber:
Für jeden Aktor(-typ) müsste dann eine passende "Rückmelde-Logik" entwickelt werden, die dann auch berücksichtigt, über welchen Bot und von welchem Kommunikationspartner die Anfrage kam, usw....
Für einen ZWave-Rollladenaktor (mit Strommessung) könnte man z.B. ein sleep anlegen, das auf "Strom ist 0" reagiert. Aber es müßte dann eben irgendwo hinterlegt sein, und zwar möglichst "generalisiert", so dass man nicht für jedes Gerät nochmal einen separaten Eventhandler nur für diesen Teil benötigt...
ABER: Warum sollte man überhaupt so eine Überprüfung implementieren?
Wenn man (halbwegs) zuverlässige bidirektionale Komponenten einsetzt, darf man davon ausgehen, dass die angewiesene Aktion auch ausgeführt wird - jedenfalls bei mir paßt das soweit und es würde mich nerven, wenn dann noch zusätzliche Meldungen via Telegram kommen. Das ist für wichtigere Infos beschränkt, und den Rest sollte man m.e. eher über Logfile-Analyse etc. überprüfen bzw. andere (allgemeinere, nicht an Telegram gebundene) "ich bin noch da"-Methoden implementieren, um ausgefallene Hardware zu erkennen.
Just my2ct.
Ich stimme da deiner Einschätzung durchaus zu.
Aktuell meldet der Bot ja direkt das er den Befehl bekommen hat.
Was ich gern hätte wäre, das er statt den Befehl erst nach Ausführung mit nem Statusbericht quitiert.
Z.B. doit set MQTT_Rolladen_Küche Sonnenschutz (oder eben den Favoriten)
Bot wenn abgeschlossen: Küchenrolladen wie gewünscht auf 33%
Dann weiß ich der Aktor hat oder hat kein feedback gegeben und wo der Rolladen theoretisch jetzt steht, ob der Motor das gemacht hat, weiß ich eh nicht, außer ich hätte nen Analogwertgeber oder enlagenerkennung
Zitat von: mannebk am 27 Mai 2021, 13:51:14
Aktuell meldet der Bot ja direkt das er den Befehl bekommen hat.
Nach meinem Verständnis ist es etwas mehr, nämlich: der Befehl wurde ohne Fehlermeldung durch FHEM auch ausgeführt. Das bedeutet zwar immer noch nicht, dass der Aktor ihn empfangen hat, aber eben auch etwas mehr wie "der Bot hat's erhalten".
MW. läßt sich dieses Verhalten auch nicht einfach so ändern (ich habe mich damit aber auch noch nicht intensiver befasst, mir reicht das so).
Zitat
Was ich gern hätte wäre, das er statt den Befehl erst nach Ausführung mit nem Statusbericht quitiert.
Das hatte ich auch so verstanden, setzt aber eben voraus, dass "die Logik" wüßte, wie man den Status prüfen kann. Aber genau das ist bei jedem Aktortyp unterschiedlich, und dann noch teils von der jeweiligen Konfiguration abhängig.
ZitatZ.B. doit set MQTT_Rolladen_Küche Sonnenschutz (oder eben den Favoriten)
[OT: jetzt weiß ich wenigstens, wo das komische "doit"-Wort herkommt...]
Da du zumindest davon ausgehen kannst, dass das FHEM-Device den Befehl "angenommen" hat, müßtest du für eine "wenn abgeschlossen"-Meldung auswerten, was nach dem Eingang beim "MQTT_Rolladen_Küche" passiert, Events (und Readings) als Anknüpfungspunkt (am Aktor und am Bot) sind ja da. Aber hier sind wir mAn. wieder bei einem eher allgemeinen Thema, nämlich: Rückmeldung, wenn ein Aktor nicht auf Befehle reagiert (unabhängig von der Quelle der Anweisung). Beispiel: bei MQTT2_DEVICE kann man setStateList setzten, so dass Anweisungen von FHEM aus erst mal mit einem "set_"-Präfix im Reading-Wert gekennzeichnet werden und erst dann durch "bessere Werte" ersetzt werden, wenn die Rückmeldung via MQTT kommt, was gemacht wurde (z.B. ein neuer Prozentsatz für "pct" gemeldet wird).
Für sowas gibt es dann spezielle oder generalisierte Module, z.B. watchdog und (afaik) ReadingsWatcher.