Nach tagelangem Rumprobieren und Studium der lückenhaften API-Doku habe ich es geschafft den Bewässerungs-Controller per MQTT einzubinden.
Vielleicht ist meine Definition nicht elegant oder effizient, aber vielleicht für den Einen oder Anderen trotzdem hilfreich.
defmod bewaesserung_zone0 MQTT2_DEVICE shellies/bewaesserung
attr bewaesserung_zone0 IODev MQTT2_Broker_shelly
attr bewaesserung_zone0 devStateIcon true:sani_sprinkling@blue false:sani_sprinkling@red
attr bewaesserung_zone0 devicetopic shellies/bewaesserung
attr bewaesserung_zone0 readingList $DEVICETOPIC/status/boolean_200:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/status/object_200:.* { { 'duration' => json2nameValue($EVENT)->{'value_zone0_duration'} } }\
$DEVICETOPIC/status/object_200:.* { my $ts = json2nameValue($EVENT)->{'value_zone0_started_at'};;;; return if !$ts;;;; my (undef,$m,$h,$s) = localtime(int($ts/1000));;;; return { 'started_at' => sprintf("%02d:%02d:%02d", $h, $m, $s) } }\
\
attr bewaesserung_zone0 setList on:noArg $DEVICETOPIC/rpc {"id":200, "src":"rpc", "method":"Boolean.Set", "params":{"id":200,"value":true}}\
off:noArg $DEVICETOPIC/rpc {"id":200, "src":"rpc", "method":"Boolean.Set", "params":{"id":200,"value":false}}\
attr bewaesserung_zone0 stateFormat value
LG
Oli