Der HomeMatic-Wandthermostat hat drei Register für Tastensperre: btnLock, modusBtnLock und globalBtnLock.
Anfangen wollte ich mit der einfachen Variante btnLock. Leider funktioniert es überhaupt nicht. Hier erst einmal der Html-Code:
<div class="left">
<div data-type="multistatebutton"
data-device="Th_Wz_Ez"
data-get="regVal btnLock"
data-get-on='["on","off"]'
data-set='["regSet btnLock on","regSet btnLock off"]'
data-icons='["fa-lock","fa-unlock"]'
data-background-icon="fa-square-o"
data-on-background-color="#145084"
data-off-background-color="#145084"
data-on-color="#1ca6e5;"
style="color:#1ca6e5;"
class="cell small">
</div>
<div data-type="label"
class="small narrow">
Tastensperre
</div>
</div>
Folgende Fehler sind vorhanden: Die data-icons werden nicht angezeigt, dafür das Symbol "fa-power-off" scheint wohl ein Default Symbol zu sein.
Der erste und alle folgenden Drücken des Buttons lösen den Befehl "set Th_Wz_Ez regSet btnLock on" aus. Damit steht der Status "set_on" im Register. Das steht aber nicht in "data-get-on"-Werteliste. Selbst wenn ich als Wert "set_on" eintrage, erkennt er irgendwie den Status nicht richtig.
Wer hat einen Tipp für mich?
Gruß Eberhard
Mit
data-get-on='["on","off"]'
data-set='["regSet btnLock on","regSet btnLock off"]'
Mappst du den Status "on" auf "regSet btnLock on" und "off" auf "regSet btnLock off" - soll das nicht eher umgekehrt sein? Zudem scheint der richtige Status nicht "on", sondern "set_on" zu sein. Ins get-on Array gehört der Status, nicht der Befehl der zum Status führt. Ich kenne das Device nicht, aber von deiner Beschreibung würde ich vermuten, dass die beiden Zeilen folgendermassen lauten müssten:
data-get-on='["set_on","set_off"]'
data-set='["regSet btnLock off","regSet btnLock on"]'
Wenn das nicht zum Ziel führt, müsstest du einmal genau beobachten wie die Status aussehen und was im Eventmonitor passiert, wenn sich der Status ändert. Siehe auch FAQ: Das UI zeigt Statusänderungen gar nicht an (http://www.fhemwiki.de/wiki/FHEM_Tablet_UI/FAQ#Das_UI_zeigt_Status.C3.A4nderungen_gar_nicht_an)
Die Zeile data-set... ist richtig und führt auch zu der gewünschten Ausgabe und Reaktion im Event Monitor. Das Problem ist die Abfrage. Den Zustand des Registers frage ich in der Kommandozeile mit "get <device> regVal btnLock" ab. Das zurückgegebene Ergebnis entspricht dem Wert, der unter Readings verzeichnet ist.
Kann es sein, dass die Werteabfrage für diesen Fall nicht korrekt ist? Normalerweise frage ich Readings mit "param <READING>" ab, aber hier mit "regVal <Register>".
Mein Vorschlag: In data-get die Variante: data-get="regVal btnLock"
zulassen. Als default-wert wird "param" hinzugefügt.
Hier existiert eine zweite Besonderheit: Wenn ich das Register über FHEM ändere, steht "set_on" bzw "set_off" darin. Ändere ich die Tastatursperre am Gerät, enthält das Register entweder "on" oder "off". Kann ich in "data-get-on" ein Regex eingeben, und wenn ja, wie müsste er lauten, um beide Varianten abzudecken?
Viele Grüße
Eberhard
In data-get-on können ausschliesslich Werte angegeben werden, die mit dem in data-get bezeichneten Reading verglichen werden. Eine aktive Abfrage per get-Befehl ist in FTUI nicht möglich, d.h. die Zeile
data-get="regVal btnLock"
müsste auf ein Reading bzw. STATE umgestellt werden.
"Register" sagt mir in dem Zusammenhang übrigens nichts, ist wahrscheinlich eine HomeMatic Besonderheit. FTUI geht es dabei aber genauso, es kennt nur Readings und den InternalValue STATE.
Ich habe im HomeMatic-Bereich mal eine Anfrage gestellt.
BTW: Alle drei Button-Locks stehen in den Readings. Sie sind also Readings.
Hier der von mir im HomMatic gestartete Thread:
http://forum.fhem.de/index.php/topic,38428.0.html (http://forum.fhem.de/index.php/topic,38428.0.html)
Mal sehen was die sagen.
Viele Grüße
Eberhard
So - da bin ich wieder. Das momentane Verhalten ist offensichtlich völlig normal. Das Register muss den anstehenden Wert set_on bzw. set_off mit dem zusätzlichen Befehl "set <device> getConfig" danach 'verinnerlichen'.
Wie bekomme ich in meiner FTUI den Befehl "set <device> getConfig" direkt nach dem on/off abgesetzt?
Gruß Eberhard
Das sollte eigentlich automatisch passieren, wenn das Device die Änderungen in Empfang genommen hat.
Bei mir kommt das getconfig innerhalb von 10 Sekunden nach dem regSet Befehl.
Als Interimslösung habe ich dem Multistate-Button vier mögliche Stellungen gegeben: on,off,set_on,set_off
on und off sind bestätigte Zustände und set_on/off unbestätigte Zustände. Entsprechend haben die Zustände unterschiedliche Symbolfarben. Bestätigt: blau und unbestätigt: rot. Die rote Farbe ist der Hinweis, dass durch erneutes Klicken der Wert bestätigt werden muss.
Hier der Code:
<div data-type="multistatebutton"
data-device="Th_Wz_Ez"
data-get="R-btnLock"
data-get-on='["on","off","set_on","set_off"]'
data-set='["regSet btnLock off","regSet btnLock on","getConfig","getConfig"]'
data-icons='["fa-lock","fa-unlock","fa-lock","fa-unlock"]'
data-background-icon="fa-square-o"
data-on-background-color='["#145084","#145084","#FF0000","#FF0000"]'
data-off-background-color="#145084"
data-colors='["#1ca6e5","#1ca6e5","#FF0000","#FF0000"]'
class="cell small">
</div>
Eine Lösung ohne den Zwischenschritt wäre schon erheblich eleganter. Hat jemand einen Tipp?
Gruß
Eberhard
Was sagt den dein Thermostat im Eventmonitor wenn du den Befehl wegschickst?
Bei mir kommt:
fhem> inform timer ^EG_VE_WT
2015-06-27 18:25:41 CUL_HM EG_VE_WT R-btnLock: set_on
2015-06-27 18:25:41 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:41 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:41 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:43 CUL_HM EG_VE_WT CMDs_done
2015-06-27 18:25:45 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:45 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:46 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:46 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:46 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:46 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:46 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:46 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:46 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:46 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:46 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:46 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:46 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:47 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:48 CUL_HM EG_VE_WT CMDs_pending
2015-06-27 18:25:48 CUL_HM EG_VE_WT R-btnLock: on
2015-06-27 18:26:05 CUL_HM EG_VE_WT CMDs_done
Zitat von: stromer-12 am 27 Juni 2015, 17:26:14
Das sollte eigentlich automatisch passieren, wenn das Device die Änderungen in Empfang genommen hat.
Bei mir kommt das getconfig innerhalb von 10 Sekunden nach dem regSet Befehl.
Hallo stromer-12,
bei welchem Device hast Du Dein beschriebenes Verhalten? Ich habe hier ein HM-TC-IT-WM-W-EU mit Firmware 1.2.
Aus dem korrespandierenden Thread im Homatic-Forum http://forum.fhem.de/index.php/topic,38428.0.html (http://forum.fhem.de/index.php/topic,38428.0.html) geht meine Konfiguration hervor. An sich ist für mich mit dem beschriebenen Workaround das Thema erledigt. Man/frau ändert ja nicht alle 5 min die Tastensperre.
Hier der Eventmonitor von meinem Device. Allerdings greift hier der Vorzeigeeffekt, Bestätigung bereits nach ca. 45 Sek.
Events (Filter:.*):
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:45 CUL_HM Th_Wz_Ez CMDs_pending
2015-06-27 18:35:46 CUL_HM Th_Wz_Ez R-btnLock: off
2015-06-27 18:36:31 CUL_HM Th_Wz_Ez CMDs_done
Gruß Eberhard
Ich habe hier auch die V1.2 auf meinen Wandthermostaten drauf.
@stromer-12,
gestern abend hatte ich den Befehl set <device> regSet btnLock off abgesetzt und heute morgen war im Reading immer noch set_off zu lesen. Lassen wir es gut sein, Der Aufwand den Du für mich hast, rechtfertigt nicht das Ergebnis; zumal ich ja den Workaround habe, der mir immer den Status anzeigt ob set_off oder off in Reading, liegt
Gruß
Eberhard
set_off wird durch "off" ersetzt, wenn die Register gelesen wurden. Das passiert manuell - oder automatisch, wenn man autoReadReg nutzt. Macht man das nicht bleibt es ewig stehen.
man kann einen refresh im Browser machen um zu sehen, ob es aktualisiert wird. Sollte das der Fall sein liegt es am Browser-refresh. Sollte es immer noch "set_" sein wurde kein getConfig ausgeführt - dann sind die Einstellungen zu prüfen
autoReadReg: welche der Möglichkeiten wäre in diesem Falle am sinvollsten: 3_onChange, 4_reqStatus, 5_readMissing oder 8_stateOnly ?
Ist auf 4_reqStatus eingestellt.
In der Konfiguration ist eine Zeile automatisch beim Pairing eingetragen worden, die ich nicht bewerten kann.
attr <device> webCmd getConfig:clear msgEvents
Gruß Eberhard