[gelöst] MQTT2_DEVICE: Attribut bridgeRegexp nach deleteattr weiterhin aktiv?

Begonnen von krikan, 09 September 2021, 19:54:46

Vorheriges Thema - Nächstes Thema

krikan

Hallo!

Experimentiere gerade nach 2 Jahren MQTT-Pause mal wieder mit MQTT und "stolpere" dabei über das Verhalten von MQTT2_DEVICE beim Löschen des Attrbuts bridgeRegexp.

Wenn ich das Attribut über den "deleteattr"-Link im Device lösche, bleibt der gelöschte Attributwert weiterhin aktiv.
"Save config" habe ich (bewusst) nicht ausgeführt, da ich testen möchte.

Ist das Verhalten gewollt bzw. von anderen nachvollziehbar?

Gruß, Christian

rudolfkoenig

deleteattr sollte funktionieren: $modules{MQTT2_DEVICE}{defptr}{bridge} wird nach Setzen/Loeschen des Attributes oder Definieren/Loeschen/Umbenennen einer MQTT2_DEVICE Instanz von Grund auf neu aufgebaut:
fhem> attr m2d bridgeRegexp .* BLA
fhem> { $modules{MQTT2_DEVICE}{defptr}{bridge} }
HASH(0x55875cc01008)
fhem> deleteattr m2d bridgeRegexp
fhem> { $modules{MQTT2_DEVICE}{defptr}{bridge} }
fhem>



Kannst Du bitte was zum Nachstellen zeigen?

krikan

Das ist mein Ausgangsdevice:
defmod MQTT2_ZWAVE_GATEWAY_zwavejs2mqtt MQTT2_DEVICE ZWAVE_GATEWAY_zwavejs2mqtt
attr MQTT2_ZWAVE_GATEWAY_zwavejs2mqtt bridgeRegexp zwave/(nodeID_\d+)[/]?.*:.* "zwave_$1"
attr MQTT2_ZWAVE_GATEWAY_zwavejs2mqtt readingList ZWAVE_GATEWAY_zwavejs2mqtt:zwave/_CLIENTS/ZWAVE_GATEWAY-zwavejs2mqtt/status:.* { json2nameValue($EVENT, 'status_', $JSONMAP) }\
ZWAVE_GATEWAY_zwavejs2mqtt:zwave/_CLIENTS/ZWAVE_GATEWAY-zwavejs2mqtt/version:.* { json2nameValue($EVENT, 'version_', $JSONMAP) }
attr MQTT2_ZWAVE_GATEWAY_zwavejs2mqtt room MQTT2_DEVICE

setstate MQTT2_ZWAVE_GATEWAY_zwavejs2mqtt 2021-09-09 20:47:13 IODev fhemMqtt
setstate MQTT2_ZWAVE_GATEWAY_zwavejs2mqtt 2021-09-09 20:47:16 status_time 1631213236231
setstate MQTT2_ZWAVE_GATEWAY_zwavejs2mqtt 2021-09-09 20:47:16 status_value true
setstate MQTT2_ZWAVE_GATEWAY_zwavejs2mqtt 2021-09-09 20:47:16 version_time 1631213236231
setstate MQTT2_ZWAVE_GATEWAY_zwavejs2mqtt 2021-09-09 20:47:16 version_value 5.5.3


Die Nachrichten für die jeweiligen nodeIDs werden an die jeweiligen MQTT2_zwave_nodeID_NN weitergeleitet.

Nach dem Löschen vom Attribut bridgeRegexp ergibt sich:
defmod MQTT2_ZWAVE_GATEWAY_zwavejs2mqtt MQTT2_DEVICE ZWAVE_GATEWAY_zwavejs2mqtt
attr MQTT2_ZWAVE_GATEWAY_zwavejs2mqtt room MQTT2_DEVICE


Wenn jetzt Nachrichten kommen, wird das vorherige Attribut readingList wiederhergestellt. Die Nachrichten die auf die gelöschte bridgeRegexp matchen, werden weiterhin an die "alten" vereinzelten Devices MQTT2_zwave_nodeID_NN weitergeleitet.

Bin unsicher was Du noch brauchst.

Eventuell habe ich ja auch nur ein Verständnisproblem mit MQTT und es liegt nicht an FHEM.


Beta-User

Es wird bei MQTT2_DEVICE immer zuerst geschaut, ob (irgendwo) ein readingList-Eintrag matcht. Alles andere (bridgeRegexp, originale CID) kommt erst später zum tragen, wenn der autocreate-Mechanismus ins Spiel kommt.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

krikan

Zitat von: Beta-User am 09 September 2021, 21:19:46
Es wird bei MQTT2_DEVICE immer zuerst geschaut, ob (irgendwo) ein readingList-Eintrag matcht. Alles andere (bridgeRegexp, originale CID) kommt erst später zum tragen, wenn der autocreate-Mechanismus ins Spiel kommt.
Danke, dann ist das Verhalten nachvollziehbar. Ich habe die bereits angelegten vereinzelten Devices bzw. deren Attribut readingList nicht gelöscht. Das wollte ich gerade nicht; aber die Folge nicht gekannt.