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
setreading <name> <reading> ""
?
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....
{CommandSetReading(undef,'<device> <reading> ')}
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.....