devStateIcon dem Schaltzustand anpassen

Begonnen von Dr.McKay, 17 März 2023, 20:58:37

Vorheriges Thema - Nächstes Thema

Dr.McKay

Hallo liebe Gemeinde,

ich möchte gerne bei einem TASMOTA Schalter, der über MQTT2 angebunden ist dass das devStateIcon den tatsächlichen Schaltzustand anzeigt, den das Gerät gerade hat, aber auch dass ich über das Icon das Gerät ein/ausschalten kann. Irgendwie finde ich keine verständliche Beschreibung wie das zu machen ist. Der Hintergrund ist, dass es einen Taster am Gerät gibt, der es schalten kann, aber dann wird es in FHEM nicht aktualisiert. Ich werde leider aus sämtl. Forenbeiträgen und Wiki-Anleitungen nicht schlau. Kann mir irgendwer weiterhelfen?

Danke

TomLee

Wie sieht die Einbindung über MQTT2 denn bisher aus, zeig mal bitte ein list -r <devicename>

Dr.McKay

Hallo TomLee

define MQTT2_DVES_12AD05 MQTT2_DEVICE DVES_12AD05
attr MQTT2_DVES_12AD05 IODev MQTTServer
attr MQTT2_DVES_12AD05 alias Stehlampe
attr MQTT2_DVES_12AD05 devStateIcon ON:switch_on:OFF OFF:switch_off:ON
attr MQTT2_DVES_12AD05 readingList DVES_12AD05:tele/Stehlampe/STATE:.* { json2nameValue($EVENT) }\
DVES_12AD05:tele/Stehlampe/LWT:.* LWT\
DVES_12AD05:tele/Stehlampe/UPTIME:.* { json2nameValue($EVENT) }\
DVES_12AD05:tele/Stehlampe/SENSOR:.* { json2nameValue($EVENT) }\
DVES_12AD05:tele/Stehlampe/INFO1:.* { json2nameValue($EVENT) }\
DVES_12AD05:tele/Stehlampe/INFO2:.* { json2nameValue($EVENT) }\
DVES_12AD05:tele/Stehlampe/INFO3:.* { json2nameValue($EVENT) }\
DVES_12AD05:stat/Stehlampe/RESULT:.* { json2nameValue($EVENT) }\
DVES_12AD05:stat/Stehlampe/STATE:.* { json2nameValue($EVENT) }\
DVES_12AD05:cmnd/Stehlampe/POWER:.* STATE\
DVES_12AD05:stat/Stehlampe/POWER:.* STATE\
DVES_12AD05:tasmota/discovery/ECFABC12AD05/config:.* { json2nameValue($EVENT) }\
DVES_12AD05:tasmota/discovery/ECFABC12AD05/sensors:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_12AD05 room Wohnzimmer
attr MQTT2_DVES_12AD05 setList ON cmnd/Stehlampe/POWER ON\
OFF cmnd/Stehlampe/POWER OFF\
reboot cmnd/Stehlampe/Restart 1
attr MQTT2_DVES_12AD05 webCmd ON:OFF:reboot

Ich habe es aber mittlerweile über einen readingsProxy lösen können

define StehlampeProxy readingsProxy MQTT2_DVES_12AD05:STATE
attr StehlampeProxy devStateIcon ON:switch_on:toggle OFF:switch_off:toggle
attr StehlampeProxy fp_STATUS 223,1454,0,StehlampeProxy,
attr StehlampeProxy fp_WOHNZIMMER 230,1440,0,
attr StehlampeProxy room Wohnzimmer
attr StehlampeProxy setList toggle

setstate StehlampeProxy OFF
setstate StehlampeProxy 2023-03-22 03:15:07 lastCmd toggle
setstate StehlampeProxy 2023-03-22 11:06:41 state OFF

Jetzt wird das Icon tatsächlich aus dem Zustand des Tasmota-Schalters ausgelesen. Ohne den readingsProxy hat mir das Icon das angezeigt, was ich über die Fhem Oberfläche gesetzt hatte, unabhängig des tatsächlichen Schaltzustandes.

Was würde es denn für Möglichkeiten ohne readingsProxy geben?

Danke im Voraus

TomLee

Das ist kein list -r <devicename>

Meine Vermutung:

Einfach ein set MQTT2_DVES_12AD05 attrTemplate tasmota_basic ausführen.

Damit wird auch auf Kleinschreibung in Tasmota umgestellt und du brauchst gar kein devstateIcon-Attribut mehr.

Das der cmnd und tasmota/discovery Zweig in der readingList landet ist überflüssig. Um das zu verhindern /das Device etwas ordentlicher zu bekommen, würd ich noch empfehlen am IO das ignoreRegexp-Attribut wie folgt zu setzen:

attr MQTTServer ignoreRegexp shellies/[^:"]+/command|shellies/[^:"]+/command|cmnd/[^:"]+:|homeassistant/[^:"]+/config|tasmota/discovery/[^/:]+/(config|sensors)