FTUI - Multistatebutton für Wandthermostat - Tastensperre ein/aus

Begonnen von FHEm2005, 22 Juni 2015, 17:30:08

Vorheriges Thema - Nächstes Thema

FHEm2005

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
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

nesges

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

FHEm2005

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
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

nesges

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.

FHEm2005

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

Mal sehen was die sagen.

Viele Grüße
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

FHEm2005

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
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

stromer-12

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.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

FHEm2005

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
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

stromer-12

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
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

FHEm2005

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 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
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

stromer-12

Ich habe hier auch die V1.2 auf meinen Wandthermostaten drauf.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

FHEm2005

@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
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

martinp876

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

FHEm2005

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
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM