Devices in zigbee2mqtt von FHEM aus disablen

Begonnen von matze1999, 02 Januar 2025, 17:07:02

Vorheriges Thema - Nächstes Thema

matze1999

Hallo,

ich habe einige Devices, die ich nur zu bestimmten Zeiten in zigbee2mqtt enable und sonst disable (z.B. Boden Feuchtigkeitsmesser werden nur im Sommer benötigt oder Deko Beleuchtung nur zu Weihnachten).

Also wenn diese Devices nicht benötigt werden nutze ich immer "disable" in zigbee2mqtt.

Ist es möglich, aus FHEM heraus, Devices in zigbee2mqtt zu enablen oder disablen? Ich würde das gern automatisieren.

matze

TomLee

#1
Hallo,

https://www.zigbee2mqtt.io/guide/usage/mqtt_topics_and_messages.html#zigbee2mqtt-bridge-request-device-options

Im Bridge-Device gibts den setter x_device_options, der wie ich es verstehe gar nicht mehr tut?

Dem kann man die nötigen Parameter zum disablen übergeben, wenn man den setList-Eintrag so anpasst:

x_device_options:textField $DEVICETOPIC/bridge/request/device/options {"id":"$EVTPART1","options": {"$EVTPART2": $EVTPART3}}
ungetestet

Dann brächte man noch einen setter zum neu starten von z2m, weil disablen das erfordert, am besten wohl auch gleich in der Bridge:
restart:noArg $DEVICETOPIC/bridge/request/restart
Gruß Thomas

Beta-User

Das scheint nicht an die Bridge (direkt) zu gehen, sondern an den jeweiligen Geräte-topic.

Payload ist unklar, würde auf true/false in Klartext tippen.

Ist schwer generalisierbar und dann ggf. eher was fürs Wiki.

Wenn ihr nicht schneller seid, teste ich bei Gelegenheit selbst...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

TomLee

ZitatDas scheint nicht an die Bridge (direkt) zu gehen, sondern an den jeweiligen Geräte-topic.

Kommt unter dem Topic:

zigbee2mqtt/bridge/response/device/options {"data":{"from":{"disabled":true},"id":"0x00158d0002fde5ce","restart_required":true,"to":{"disabled":true}},"status":"ok"}
Payload ist unklar, würde auf true/false in Klartext tippen.
payload ist nicht unklar, true oder false.

ZitatIst schwer generalisierbar und dann ggf. eher was fürs Wiki.

Ja, verstehe denk ich. War halt der erste Gedanke mit dem settter. Darum musst ich nach dem schreiben auch gleich editieren, um die Anführungszeichen um $EVTPART3 zu entfernen. Mit, wäre die .yaml syntaktisch falsch und z2m würde nicht mehr starten.

Beta-User

Zitat von: TomLee am 02 Januar 2025, 19:49:39payload ist nicht unklar, true oder false.
Danke für die Klarstellung, irgendwie war ich da wohl auf dem falschen Pferd, sorry!

Habe das jetzt zum Anlass genommen, mal den latest-dev-Container anzuwerfen, weil die Changelist doch länger ist, und anscheinend auch diese bridge-configure-Dingens geändert werden: https://github.com/Koenkk/zigbee2mqtt/discussions/24198.

Und schon klappt mein aktueller "availability"-Code nicht mehr...

Zum eigentlichen Thema: Das geht wohl bis auf weiteres über das z2m-Frontend deutlich schneller, zumal es keinen (m.E.) "vernünftigen" Rückweg zum Device gibt.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

TomLee

Hey matze1999,

nix für jedermann, aber vlt. reichts dir als Lösung.

Ein setter, den man in jedem Device, ohne Änderungen einfach ergänzen kann:

disable:true,false {my @dt=split('/',$DEVICETOPIC);my $zbridge=(devspec2array('a:model=zigbee2mqtt_bridge'))[0];fhem("sleep 1;set $zbridge restart");return qq($dt[0]/bridge/request/device/options {"id":"$dt[1]","options": {"disabled": $EVTPART1}})}
Setzt den in #1 genannten restart-setter im Bridge-Device voraus.
Wie schon erwähnt, ohne weiteres "Gebastel" keine Rückmeldung.

matze1999

Hallo,

vielen Dank, werde ich bei Gelegenheit mal testen und.

matze1999