so, hier meine finale (erst mal) version mit der es läuft: (Für Sonoff basic und S20)
define Sonoff_S20_01 MQTT_DEVICE
attr Sonoff_S20_01 IODev MQTTBroker
attr Sonoff_S20_01 devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON Offline:rc_BLUE:OFF
attr Sonoff_S20_01 publishSet On Off cmnd/S20_01/POWER
attr Sonoff_S20_01 subscribeReading_state stat/s20_01/POWER
attr Sonoff_S20_01 subscribeReading_presence tele/s20_01/LWT
attr Sonoff_S20_01 qos at-least-once
attr Sonoff_S20_01 retain 1
attr Sonoff_S20_01 room MQTT
attr Sonoff_S20_01 stateFormat {ReadingsVal($name,"presence","") eq "Offline" ? "Offline" : ReadingsVal($name,"state","")
attr Sonoff_S20_01 webCmd On:Off
devStateIcon, retain, qos, room sind nicht zwingend nötig.
Genauso das SubscribeReading auf LWT. Damit kann man sehen ob das Device noch aktiv mit dem Broker kommuniziert / erreichbar ist. Durch stateFormate und devStateIcon wird das Icon bei nicht Erreichbarkeit blau
IODev wird automatisch hinzugefügt. Es erschließt sich mir nicht warum als Attribut. Hab das mal gelöscht. Kam nicht wieder und hat alles noch funktioniert.
Was mit auch fehlt ist eine clear readings funktion. Vom rumbasteln sind viele Readings da. Die kann ich nicht löschen.
Evlt. könnte man global definieren, dass man überall retain und qos setzen möchte. das spart tipp arbeit.
Auch könnte man evlt. automatisch vom publishset ein subscribe reading auf state erstellen.