Static_Controller vs Bridge_Controller in ZWAVE-Network

Begonnen von fireball, 03 September 2025, 15:54:44

Vorheriges Thema - Nächstes Thema

fireball

Hi, ich würde gern die abgedriftete Diskussion aus der MigrationsFred hier kurz weiterführen.

Kurze Zusammenfassung von den Infos aus dem anderen Thread:
- Bei der Migration von Aeotec Gen5 hin zum 10pro Stick ist mir aufgefallen, dass FHEM jetzt anstatt einem StATIC_Controller einen BRIDGE_Controller anzeigt.

Das hier lieferte CoPilot zu dem Thema:
ZitatSTATIC_CONTROLLER
- Typisch für Standard-Z-Wave Gateways wie Z-Way, OpenZWave, OpenHAB usw.
- Der Controller ist fest im Netzwerk verankert und übernimmt zentrale Aufgaben wie das Routing und die Verwaltung der Node-Informationen.
- Unterstützt keine Virtualisierung oder dynamische Netzwerkverbindungen.
- Network-Wide Inclusion (NWI): Unterstützt das Hinzufügen von Geräten über das gesamte Netzwerk hinweg.
- Wird bei jedem Neustart von Z-Way automatisch aktiviert.
- Ideal für normale Heimautomatisierungssysteme, bei denen ein einzelner Controller dauerhaft aktiv ist.

BRIDGE_CONTROLLER
- Ermöglicht virtuelle Controller-Instanzen und dynamische Netzwerkverbindungen.
- Unterstützt Virtual Learn Mode, was besonders bei komplexen Setups oder bei der Integration mehrerer Netzwerke hilfreich ist.
- Wird von neuerer Software wie bestimmten Silicon Labs SDKs oder Z/IP-Architekturen verwendet.
- Kann manuell aktiviert werden, z. B. über ZMESerialAPIOptionsStaticAPISet(false) in Z-Way.
- Nützlich für Entwickler, Testumgebungen oder fortgeschrittene Installationen mit mehreren Controllern.

Zwischendurch hatte ich auch Antworten, dass bei einem BRIDGE_Controller gleichzeitige Zugriff von mehreren Programmen möglich wären, aber Rudolf und weitere Suche haben das auch widerlegt.

Was ich noch weiter gelesen habe, ist, dass der ControllerTyp bei dem Anlegen einen Netzwerks automatisch eingerichtet wird und
- nur bei einigen Sticks scheinbar geändert werden kann oder
- nur wieder durch Reseten... was bei einer Migration ja dämlich ist, dann ist ja alles wieder weg.

FHEM zeigt aktuell meinen neuen 10pro als Bridge_Controller an.
Mittlerweile weiß ich aber gar nicht, ob das nur ein Anzeigeproblem ist?!

Zitatalter Gen5 Aeotec - Stick:
- HomeId:ec4154d2 CtrlNodeIdHex:01
- version Z-Wave 3.95 STATIC_CONTROLLER

Migration von Gen5 via Aeotec BackupTool auf
"neuen" Gen5+ Aeotec - Stick:
- HomeId:ec4154d2 CtrlNodeIdHex:01
- version Z-Wave 6.07 STATIC_CONTROLLER

Migration von Gen5+ via ZWaveUI JS Backup/Restore auf
"nagelneuen" 10 Pro Aeotec - Stick
- HomeId:ec4154d2 CtrlNodeIdHex:01
- version Z-Wave 7.23 BRIDGE_CONTROLLER

Wenn ich den Stick mit dem PC Controller Software von Silicon Labs auswerte, dann steht da zum einen
- NetworkRole: RealPrimary
- und in zwei Klassen: STATIC_Controller

Also wo FHEM das BRIDGE rausließt, was bei GEN5/GEN5+ immer als STATIC angezeigt wurde bei get version, ist mir noch nicht klar.

Viell. kriegen wir das noch raus oder können auch entsprechend klären, welcher Controller primär zum Einsatz kommen sollte.

Zweiter Punkt der mitschwingt, wenn der STATIC_CONTROLLER ein PRIMARY_CONTROLLER ist, kann ich, wenn ich den 10pro jetzt als PRIMARY laufen lasse, den alten Gen5 noch als Secondary_Controller mit einer anderen Software nutzen, nur um das Netzwerk visuell besser auslesen zu lassen, als in FHEM?! ZwaveUI JS bietet da zum Bsp tolle Übersichten...

VG+Danke
René




rudolfkoenig

ZitatAlso wo FHEM das BRIDGE rausließt, was bei GEN5/GEN5+ immer als STATIC angezeigt wurde bei get version, ist mir noch nicht klar.
Das kommt als Teil des Antwortes beim "get zwd version".
Byte beim Offset 14 kann dekodiert werden zu STATIC_CONTROLLER CONTROLLER ENHANCED_SLAVE SLAVE INSTALLER NO_INTELLIGENT_LIFE BRIDGE_CONTROLLER.

Bridge Controller senden die Daten in einem "Umschlag", das konnte man bei deinem Log auch sehen: 00a8<id><length>..., a8 == ZW_APPLICATION_COMMAND_HANLDER_BRIDGE

krikan

Die Abfrage "get <controller> version" liefert den Library Type zurück. Die bereits von Rudi angeführten Rückgaben sind näher in Table 4.36 des Doks https://zwave.cc/assets/doc/2024A%20Specification%20Package/Z-Wave%20Stack%20Specifications/Z-Wave%20Host%20API%20Specification.pdf beschrieben. Auch das Bridge Library.

Die im Screenshot gezeigten BASIC und GENERIC DEVICE CLASS mit "static controller" sind ein anderes Thema; siehe Festlegung in https://products.z-wavealliance.org/wp-content/uploads/products/80557/EngineeringSpec-AeotecZ-Stick10Pro.pdf . Das könnte Dir FHEM auch so anzeigen, wenn man die passende Routine in den Code einbaut. Die DEVICE CLASS ist für FHEM nicht relevant.

Die für mich bisher verständlichste Erläuterung von Bridge Controller habe ich in https://www.silabs.com/documents/public/user-guides/INS10244-Z-Wave-Node-Type-Overview-Network-Installation-Guide.pdf aus 2018 (!) gefunden:
ZitatThe Bridge Controller is essentially a Static Controller node, which has the additional capability
of representing devices from other network types like X10 or TCP/IP as virtual nodes in a
Z-Wave network. This enables control of Z-Wave nodes from e.g. an X10 controller or vice
versa.

Die zusätzlichen Möglichkeiten über den "normalen" static controller sind demnach wohl etwas, was FHEM sowieso schon immer kann: Verknüpfung von Geräten verschiedenster Protokolle.

Gibt es den irgendwelche Probleme mit dem Controller im Bridge-Modus? Oder läuft alles ohne erkennbare Schwierigkeiten?

fireball

Hi Christian,

also ich versuch gerade für mich durch euer Fachwissen nur rauszufinden, was die genauen Bedeutungen sind, da die KI da doch unterschiedliche Dinge ausspuckt. Auch das der BRIDGE_Controller nur für "für Entwickler, Testumgebungen oder fortgeschrittene Installationen mit mehreren Controllern." geeignet ist macht mich dann ein wenig stutzig.

Letztendlich will ich ein stabiles System. Mein ZWAVE Stick, lief dank euere Implementierungen, seit gut 10 Jahren stabil.
Jetzt mal auf nen neuen Stick gehen und gleichzeitig auch mal ein Backup gemacht zu haben, fühlt sich gut an, soll aber auch weiter so stabil bleiben. :)

Aktuell habe ich keine Einschränkungen feststellen können.
Ich habe sogar den alten Gen5 Stick gestern als SecondaryController in FHEM anlernen können. Er hatte erst ne Default HomeID, jetzt hat er die alte bekommen und ne NodeID 58 aus dem bestehenden Netz.
Der läuft jetzt an meiner TEST-HA-ZWAVEUIJS Büchse und soll einfach nur mit lauschen.

Wenn die Anzeige BRIDGE sogesehen nur ne Auffälligkeit meinerseits war... dann ist ja alles gut.
Der 10Pro wird jetzt so angezeigt:
Internals:
   CallbackNr 0
   Clients    :ZWave:
   DEF        /dev/serial/by-id/usb-Silicon_Labs_CP2105_Dual_USB_to_UART_Bridge_Controller_00C3805E-if01-port0@115200
   DeviceName /dev/serial/by-id/usb-Silicon_Labs_CP2105_Dual_USB_to_UART_Bridge_Controller_00C3805E-if01-port0@115200
   FD         32
   FUUID      68b842a1-f33f-0804-00d5-8b926c37e45fb786
   MaxSendRetries 3
   NAME       ZWDongle_0
   NR         726
   PARTIAL   
   RAWMSG     00a800012b0631050422000400ab
   ReadTime   1756965428.78533
   STATE      Initialized
   SendRetries 0
   SendTime   1756965249.69139
   TYPE       ZWDongle
   WaitForAck 0
   ZWDongle_0_MSGCNT 1065
   ZWDongle_0_TIME 2025-09-04 07:57:08
   devioNoSTATE 1
   eventCount 1
   homeId     ec4154d2
   nodeIdHex  01
   nrNAck     0
   MatchList:
     1:ZWave    .*
   READINGS:
     2025-09-04 07:20:32   caps            Vers:7 Rev:23 ManufID:0371 ProductType:0004 ProductID:003c SERIAL_API_GET_INIT_DATA SERIAL_API_APPL_NODE_INFORMATION ZW_GET_CONTROLLER_CAPABILITIES SERIAL_API_SET_TIMEOUTS SERIAL_API_GET_CAPABILITIES SERIAL_API_SOFT_RESET UNKNOWN_09 UNKNOWN_0a SERIAL_API_SETUP ZW_SET_R_F_RECEIVE_MODE ZW_SEND_NODE_INFORMATION ZW_SEND_DATA ZW_SEND_DATA_MULTI ZW_GET_VERSION ZW_SEND_DATA_ABORT ZW_GET_RANDOM MEMORY_GET_ID MEMORY_GET_BYTE MEMORY_PUT_BYTE MEMORY_GET_BUFFER MEMORY_PUT_BUFFER FLASH_AUTO_PROG_SET ZW_NVR_GET_VALUE NVM_GET_ID NVM_EXT_READ_LONG_BUFFER NVM_EXT_READ_LONG_BYTE UNKNOWN_2e ZW_CLEAR_TX_TIMERS ZW_GET_TX_TIMERS CLEAR_NETWORK_STATS GET_NETWORK_STATS GET_BACKGROUND_RSSI UNKNOWN_3c UNKNOWN_3d REMOVE_NODEID_FROM_NETWORK ZW_GET_NODE_PROTOCOL_INFO ZW_SET_DEFAULT ZW_ASSIGN_RETURN_ROUTE ZW_DELETE_RETURN_ROUTE ZW_REQUEST_NODE_NEIGHBOR_UPDATE ZW_APPLICATION_UPDATE ZW_ADD_NODE_TO_NETWORK ZW_REMOVE_NODE_FROM_NETWORK ZW_CONTROLLER_CHANGE ZW_ASSIGN_PRIORITY_RETURN_ROUTE ZW_SET_LEARN_MODE ZW_ASSIGN_SUC_RETURN_ROUTE ZW_REQUEST_NETWORK_UPDATE ZW_SET_SUC_NODE_ID ZW_DELETE_SUC_RETURN_ROUTE ZW_GET_SUC_NODE_ID ZW_SEND_SUC_ID ZW_ASSIGN_PRIORITY_SUC_RETURN_ROUTE ZW_EXPLORE_REQUEST_INCLUSION ZW_EXPLORE_REQUEST_EXCLUSION ZW_REQUEST_NODE_INFO ZW_REMOVE_FAILED_NODE_ID ZW_IS_FAILED_NODE ZW_REPLACE_FAILED_NODE UNKNOWN_65 UNKNOWN_68 UNKNOWN_69 UNKNOWN_6a UNKNOWN_6b UNKNOWN_6c GET_ROUTING_TABLE_LINE LOCK_ROUTE_RESPONSE ZW_GET_PRIORITY_ROUTE ZW_SET_PRIORITY_ROUTE UNKNOWN_98 SERIAL_API_SLAVE_NODE_INFO ZW_SEND_SLAVE_NODE_INFO ZW_SET_SLAVE_LEARN_MODE ZW_GET_VIRTUAL_NODES ZW_IS_VIRTUAL_NODE ZW_APPLICATION_COMMAND_HANLDER_BRIDGE ZW_SEND_DATA_BRIDGE ZW_SEND_DATA_MULTI_BRIDGE UNKNOWN_ac ZW_TYPE_LIBRARY ZW_SEND_TEST_FRAME ZW_GET_PROTOCOL_STATUS WATCHDOG_START WATCHDOG_STOP ZW_SET_ROUTING_MAX UNKNOWN_d6 UNKNOWN_d7 UNKNOWN_d8 UNKNOWN_d9 UNKNOWN_da UNKNOWN_db UNKNOWN_dc UNKNOWN_dd UNKNOWN_de UNKNOWN_df UNKNOWN_e7 UNKNOWN_e8
     2025-09-04 07:20:32   ctrlCaps        PRIMARY
     2025-09-04 07:20:32   homeId          HomeId:ec4154d2 CtrlNodeIdHex:01
     2025-09-04 07:20:32   random          821a6489b1e80621a73af0d77a6e7fe8f473a5984b5d14fecda7119d6818dfdd
     2025-09-04 07:20:32   state           Initialized
     2025-09-04 07:20:32   sucNodeId       no
     2025-09-04 07:20:32   supportedCmds   GET_SUPPORTED_COMMANDS SET_TX_STATUS_REPORT SET_POWERLEVEL GET_POWERLEVEL GET_MAXIMUM_PAYLOAD_SIZE GET_RF_REGION SET_RF_REGION SET_NODEID_BASE_TYPE UNKNOWN_8 UNKNOWN_9 UNKNOWN_10 UNKNOWN_11 UNKNOWN_12 UNKNOWN_15 UNKNOWN_23 UNKNOWN_24 UNKNOWN_25 UNKNOWN_26 UNKNOWN_28 UNKNOWN_29 UNKNOWN_39 UNKNOWN_71 UNKNOWN_135
   SendStack:
Attributes:
   homeId     ec4154d2
   icon       cul_868
   room       SYSTEM,ZWave
   verbose    5

der Gen5 so:
Internals:
   DEF        ec4154d2 58
   FUUID      68b88d82-f33f-0804-1f1d-dfa80d1e4e2936c6
   IODev      ZWDongle_0
   NAME       ZWave_GENERIC_CONTROLLER_58
   NR         727
   STATE      associationAdd 1 1
   TYPE       ZWave
   ZWaveSubDevice no
   homeId     ec4154d2
   nodeIdHex  3a
   READINGS:
     2025-09-04 07:20:33   IODev           ZWDongle_0
     2025-09-03 20:51:31   model           AEON Labs ZW090 Z-Stick Gen5 EU
     2025-09-03 20:51:31   modelConfig     aeotec/zw090.xml
     2025-09-03 20:51:31   modelId         0086-0001-005a
     2025-09-03 20:52:13   powerlvl        current 0 remain 0
     2025-09-03 20:49:07   state           associationAdd 1 1
     2025-09-03 20:52:13   timeToAck       0.076
     2025-09-03 20:52:13   transmit        OK
     2025-09-03 20:49:39   versionClass_108 2
     2025-09-03 20:49:38   versionClass_114 2
     2025-09-03 20:49:39   versionClass_115 1
     2025-09-03 20:49:39   versionClass_138 2
     2025-09-03 20:49:39   versionClass_152 1
     2025-09-03 20:49:39   versionClass_159 2
     2025-09-03 20:49:40   versionClass_85 2
     2025-09-03 20:49:48   zwavePlusInfo   version:02 role:CentralStaticController node:Z-Wave+Node installerIcon:0000 userIcon:0000
Attributes:
   classes    ZWAVEPLUS_INFO APPLICATION_STATUS ASSOCIATION CONFIGURATION CRC_16_ENCAP FIRMWARE_UPDATE_MD MANUFACTURER_SPECIFIC POWERLEVEL TIME TRANSPORT_SERVICE VERSION ASSOCIATION_GRP_INFO DEVICE_RESET_LOCALLY SUPERVISION INCLUSION_CONTROLLER SECURITY SECURITY_S2
   room       ZWave

Cool wäre noch, wenn man sehen würde, welcher Controller Primary und welcher Secondary ist.
Beim 10Pro steht in den ctrlCaps PRIMARY.

VG
René

fireball

kleines Update vom Aeotec-Support:

ZitatUnfortunately it may be related to just the new hardware and firmware of Z-Wave, only Series 500 Z-Wave and under will use Static Controller firmware.

Series 700 and Series 800 will all use bridge controller firmware and cannot be set to Static - this is just the new standard in Z-Wave controllers.

You will need to utilize ZWaveJS which supports bridge controllers such as the Z-Stick 7 or Z-Stick 10 Pro.

krikan

Möglich, dass 700 und 800 keine static controller Firmware mehr haben. Bei Razberry und AEOTEC ist in den technischen Datenblätter für die 700er bzw. 800er die Nutzung der Bridge Library hinterlegt.
Jedoch kann beim Razberry doch laut Doku (https://z-wave.me/support/serial-api-commands/) und @Damu im anderen Thema doch auf Static Mode umgeschaltet werden. Steht also irgendwie im Widerspruch zum AEOTEC-Support.
Zumindest ist jetzt klar: AEOTEC-Sticks können nicht auf den Static Mode wechseln.

Die Nutzung von ZWaveJS ist nach unseren Erkenntnissen aber doch nicht zwingend, solange man im Standard ZWave-Mesh Modus bleibt (8Bit NodeId BaseType). FHEM unterstützt das jetzt auch dank Deinem Einsatz. openhab kann das mit dem ursprünglichen ZWvve-Binding (https://www.openhab.org/addons/bindings/zwave/#supported-things) seit einigen Monaten ebenfalls.
Aber man verliert nach meinem derzeitigen Verständnis (gerne verbessern!) bei FHEM und openhab-ZWave-Bindung die Möglichkeit der Nutzung des Long-Range-Modus, da der nur über die zusätzlichen Funktionen des Bridge-Modus läuft. Long-Range würde zudem Security S2 und SmartStart erfordern. Beides kann FHEM bisher nicht. openhab-zwave-Bindung kann es derzeit ebenfalls nicht und wird es zumindest laut älteren Aussagen des Entwicklers nicht unterstützen. Bleibt wohl derzeit im opensourse-Bereich nur ZWavejs, wenn man Long-Range nutzen möchte. Vorteil von Long-Range ist mir im normalen Wohnungs- und EFH-Bereich mit genug Geräten zur Mesh-Nutzung noch nicht klar. Wundere mich eher, dass Mesh-Geräte wohl nicht direkt mit Long-Range-Geräten kommunizieren können.

ZWavejs kann man per MQTT auch in FHEM integrieren. Ich habe damit mal experimentiert. Das ist hier im Forum (irgendwo) dokumentiert.

Mein derzeitiges Fazit zum Thema Controller Bridge- versus Static-Mode: Bridge-Mode hat mehr Funktionen als Static-Mode, aber man braucht die nicht zwingend. Bridge-Controller funktionieren (jetzt) problemlos in FHEM, wenn man die Zusatzfunktionen des Bridgemodus nicht benötigt.

Randnotiz: Nervend finde ich mal wieder die Doku-Situation von ZWave; teilweise nicht frei zugänglich sowie verstreut. Warum muss man sich bspw. für so was registrieren: https://z-wavealliance.org/why-z-wave-long-range-ebook/ !?