[Gelöst]Simulation eines Userreading value ohne Wert z. Verkürzung v. Testzyklen

Begonnen von Obi-Wan, 23 Januar 2020, 20:33:24

Vorheriges Thema - Nächstes Thema

Obi-Wan

Hallo zusammen,

ich versuche gerade die Testzyklen zu folgendem Thread zu verkürzen um DS_Starter schneller eine Rückmeldung geben zu können.
Mein Geschirrspüler ist per HTTPMOD an FHEM angebunden. Bei einem der Readings wird unter bestimmten Bedingungen ein leerer Wert
als Value für ein Reading zurückgegeben und erfolgreich!! in FHEM gespeichert. Dies führt dann zu den im Thread https://forum.fhem.de/index.php/topic,106769.0.html beschriebenen Problemen
im Modul DBLog. Da ich zum Test nun nicht jedesmal warten möchte bis der Geschirrspüler voll und gelaufen ist wollte ich das per Dummy nachstellen, leider bislang ohne erfolg:

defmod Mieledummy dummy
attr Mieledummy userReadings phase

Um das Problem nun nachstellen zu können müsste der value des Readings phase nun z.B. vom Wert "Trocknen" auf null bzw. einen Leerstring "" geändert werden.
Der Befehl "setreading Mieledummy phase"  führt zur erwarteten Fehlermeldung "Usage: setreading <name> <reading> <value>".

Gibt es hier eine einfache Möglichkeit das zu realisieren?

Danke für eine Prüfung und Rückmeldung


amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Obi-Wan

Hallo amenomade,


setreading <name> <reading> ""

führt leider zu 2 Anführungszeichen im value und nicht zu einem leeren value (siehe Anhang reading1).

Ich konnte das Problem nun durch Simulation der Geschirrspüler Meldungen wie folgt lösen:

Auf einem Webserver der Wahl (Ich hab auf die schnelle den HFS HTTP-Fileserver genommen) die beiden files "ein" und "aus" mit folgendem Inhalt veröffentlichen:

ein:

{"phase":"ein","state":"Betrieb"}


aus:

{"phase":"","state":"Aus"}

Dann in FHEM ein HTTPMOD-Device wie folgt definieren:

defmod Testdummy HTTPMOD none 0
attr Testdummy userattr get01Name get01TextArg:0,1 get01URL reading01JSON reading01Name reading02JSON reading02Name set01TextArg:ein,aus
attr Testdummy enableControlSet 1
attr Testdummy event-on-change-reading .*
attr Testdummy get01Name Phase
attr Testdummy get01TextArg ein
attr Testdummy get01URL http://IP_des_Webservers:Port_des_Webservers/$val
attr Testdummy reading01JSON state
attr Testdummy reading01Name state
attr Testdummy reading02JSON phase
attr Testdummy reading02Name phase
attr Testdummy room tools


Nun lässt sich prima mit

get Testdummy Phase ein

und

get Testdummy Phase aus


das Reading phase füllen und wieder leeren (siehe Anhang reading2).

Ist zwar nicht so einfach wie zuerst gedacht und verwunderlich das 2 Anführungszeichen über HTTPMOD zu einem leeren value führen, wärend bei direktem setreading genau die 2 Anführungszeichen als value gesetzt werden - aber ich muss ja nicht alles verstehen  :) und es funktioniert ja nun prima....

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Obi-Wan

Das war die eingangs gedachte einfache Lösung, danke.

{CommandSetReading(undef,'<device> <reading> ')}

funktioniert prima.

Für mich war es dennoch eine gute Übung um mit HTTPMOD etwas vertrauter zu werden - hier sehe ich für mich nämlich noch Potential für Erweiterungen.....