FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: betateilchen am 27 Mai 2023, 18:43:42

Titel: MQTT2_DEVICE - hyperaktivität behandeln
Beitrag von: betateilchen am 27 Mai 2023, 18:43:42
Moin,

gegeben ist folgendes device:

defmod ub1 MQTT2_DEVICE
attr ub1 readingList ub1/state:.* state
attr ub1 setList mode fhemhome/ub1/mode:r

Funktioniert grundsätzlich super.

Aber: kann das device nicht einfach das reading "state" in Ruhe lassen? Jedesmal, wenn ich per set eine neuen Modus setze, wird mir das reading "state" verhunzt. Dort soll nach meiner Konzeption grundsätzlich eine Information drinstehen, die vom gesteuerten device selbst kommt und nichts mit dem set Befehl zu tun hat.

Die Doku zu setStateList habe ich gelesen, das hilft aber nicht weiter. Damit kann ich maximal erreichen, dass dann statt des Verhunzens von "state" ein zusätzliches reading erzeugt wird, das ich nicht haben will.

Wenn es nicht mit vorhandenen Mitteln (vielleicht übersehe ich was?) lösbar ist, wünsche ich mir für setStateList die Möglichkeit, "ignore" angeben zu können, damit MQTT2_DEVICE dann einfach das reading "state" in Ruhe lässt und auch sonst nix tut, was ich nicht "in Auftrag gegeben" habe.
Titel: Aw: MQTT2_DEVICE - hyperaktivität behandeln
Beitrag von: betateilchen am 27 Mai 2023, 23:28:44
Zitat von: fhem-hm-knecht am 27 Mai 2023, 21:44:00schreibe mal inactive ins state
danach geht nicht mal mehr deine setList auch wird state nicht mehr aktualisiert

Und was soll mir dieser schwachsinnige* unqualifizierte* Vorschlag helfen?

Zitat von: fhem-hm-knecht am 27 Mai 2023, 21:44:00state wird bei mir generel abgeändert

Genau das ist ja das Problem.
Und ich brauche das reading state, nicht das internal STATE.
Deshalb hilft auch Dein Vorschlag mit stateFormat absolut nix.


* Auf Wunsch von Rudi geändert, ohne dass damit eine Meinungsänderung meinerseits verbunden wäre.
Titel: Aw: MQTT2_DEVICE - hyperaktivität behandeln
Beitrag von: rudolfkoenig am 28 Mai 2023, 14:51:23
ZitatAber: kann das device nicht einfach das reading "state" in Ruhe lassen?
Das geht (als Seiteneffekt), wenn man setStateList (https://fhem.de/commandref_modular.html#MQTT2_DEVICE-attr-setStateList) setzt:
attr ub1 setStateList X X
X X ist ein Workaround, nach einem update reicht auch ein einfaches X oder Y :)



ZitatUnd was soll mir dieser schwachsinnige Vorschlag helfen?
Das kann man bitte hoeflicher ausdruecken, und falls bis 10 Zaehlen nicht reicht, dann laenger warten.
Titel: Aw: MQTT2_DEVICE - hyperaktivität behandeln
Beitrag von: betateilchen am 28 Mai 2023, 16:37:06
Zitat von: rudolfkoenig am 28 Mai 2023, 14:51:23und falls bis 10 Zaehlen nicht reicht, dann laenger warten.

Vor meinem Kommentar hatte ich schon bis 150 gezählt, ich hätte wohl auch bis 1000 zählen können, ohne auf eine andere Einschätzung des Vorschlags zu kommen.
Titel: Aw: MQTT2_DEVICE - hyperaktivität behandeln
Beitrag von: betateilchen am 28 Mai 2023, 16:50:11
Zitat von: rudolfkoenig am 28 Mai 2023, 14:51:23Das geht (als Seiteneffekt), wenn man setStateList setzt:
attr ub1 setStateList X X
X X ist ein Workaround, nach einem update reicht auch ein einfaches X oder Y :)

Danke für den Hinweis. Aber Du hattest schon gelesen, dass ich das vor meiner Frage probiert hatte und ebenfalls nicht das gewünschte Verhalten des device erreicht hatte?

Zitat von: betateilchen am 27 Mai 2023, 18:43:42Die Doku zu setStateList habe ich gelesen, das hilft aber nicht weiter. Damit kann ich maximal erreichen, dass dann statt des Verhunzens von "state" ein zusätzliches reading erzeugt wird, das ich nicht haben will.

defmod ub1 MQTT2_DEVICE
attr ub1 setList mode fhemhome/ub2/mode
attr ub1 setStateList X

setstate ub1 2023-05-28 16:40:17 IODev mqtt2
setstate ub1 2023-05-28 16:42:58 mode set 6

Es wird ein reading namens "mode" erzeugt, in dem dann "set 6" steht.
Das reading ist nicht erwünscht und der Inhalt wenig hilfreich (und nicht benötigt).

Mein gewünschtes Ergebnis ist, dass das MQTT2_DEVICE einfach nur den set-Befehl ausführt und sonst gar nichts tut.

Titel: Aw: MQTT2_DEVICE - hyperaktivität behandeln
Beitrag von: betateilchen am 28 Mai 2023, 17:20:32
Zitat von: betateilchen am 27 Mai 2023, 18:43:42Wenn es nicht mit vorhandenen Mitteln (vielleicht übersehe ich was?) lösbar ist, wünsche ich mir für setStateList die Möglichkeit, "ignore" angeben zu können, damit MQTT2_DEVICE dann einfach das reading "state" in Ruhe lässt und auch sonst nix tut, was ich nicht "in Auftrag gegeben" habe.

Index: 10_MQTT2_DEVICE.pm
===================================================================
--- 10_MQTT2_DEVICE.pm  (revision 27624)
+++ 10_MQTT2_DEVICE.pm  (working copy)
@@ -422,6 +422,8 @@
       $hash->{skipStateFormat} = 1;
       readingsSingleUpdate($hash, "state", "set_$cmdSE", 1);
       delete($hash->{skipStateFormat});
+    } elsif ($ssl =~m/^ignore$/i) {
+      # do nothing
     } else {
       unshift(@a, "set");
       readingsSingleUpdate($hash, $cmdName, join(" ",@a), 1);
@@ -1140,6 +1142,8 @@
       will be set to on (probably with the help of stateFormat). Commands not
       in the list will set a reading named after the command, with the word set
       and the command parameters as its value.<br><br>
+      If this attribute is set to "ignore", a set command will not affect any
+      reading in the device.
       If this attribute is not defined, then a set command will set the state
       reading to the name of the command.
       </li><br>
Titel: Aw: MQTT2_DEVICE - hyperaktivität behandeln
Beitrag von: rudolfkoenig am 29 Mai 2023, 10:47:50
Hab dein Vorschlag uebernommen und eingecheckt.


ZitatVor meinem Kommentar hatte ich schon bis 150 gezählt, ich hätte wohl auch bis 1000 zählen können, ohne auf eine andere Einschätzung des Vorschlags zu kommen.
Dann entweder weiterzaehlen, bis sie Forumstauglich wird, oder auf die Einschaetzung verzichten.
Titel: Aw: MQTT2_DEVICE - hyperaktivität behandeln
Beitrag von: betateilchen am 29 Mai 2023, 11:36:08
Zitat von: rudolfkoenig am 29 Mai 2023, 10:47:50Hab dein Vorschlag uebernommen und eingecheckt.

Danke.
Titel: Aw: MQTT2_DEVICE - hyperaktivität behandeln
Beitrag von: betateilchen am 29 Mai 2023, 11:43:43
Zitat von: rudolfkoenig am 29 Mai 2023, 10:47:50Dann entweder weiterzaehlen, bis sie Forumstauglich wird, oder auf die Einschaetzung verzichten.

Laut Enzyklopädie der Wortbedeutungen hat das Adjektiv "schwachsinnig" zwei Bedeutungen.


Da ich den Vorschlag "inactive per setreading zu setzen", immer noch für "unsinnig, dumm, sinnlos" halte, weiß ich wirklich nicht, was an meiner Wortwahl tatsächlich so schlimm ist. Das Adjektiv wurde definitiv bezogen auf die Antwort (also eine Sache) verwendet.

Hält irgendjemand (vielleicht außer dem Autor des Vorschlags) diesen Vorschlag tatsächlich für intelligent, bezogen auf das Thema des Threads und mein konkrekt formuliertes Anliegen? Das kann ich mir kaum vorstellen.

Diese Diskussion ist müssig. Wenn ich etwas für "unsinnig, dumm, sinnlos" halte, möchte ich auch einen Begriff aus meiner Muttersprache verwenden dürfen, der dafür vorgesehen ist, ohne mich dafür rechtfertigen zu müssen.

Schönen Feiertag!