Migration des Netzwerks von Aeotec Gen5 zu 10 Pro

Begonnen von fireball, 23 August 2025, 12:48:47

Vorheriges Thema - Nächstes Thema

krikan

Zitat von: rudolfkoenig am 01 September 2025, 19:38:38Wir koennten das auch in die Initialisierung des Controlles aufnehmen.
Ich muesste nur wissen, woran ich erkenne, dass der Controller das kann.
Was passiert, wenn einfach die Initaliserung auf 8bit immer ausgeführt wird?
Mein Controller, der einen 500 Chip hat und das nicht unterstützt liefert:
2025.09.01 21:03:40.461 5: ZWDongle_Write 000B8001 ()
2025.09.01 21:03:40.462 5: DevIo_SimpleWrite ZWDongle: 0105000B800170
2025.09.01 21:03:40.463 4: ZWDongle_ReadAnswer arg:raw regexp:^010B
2025.09.01 21:03:40.463 5: ACK received, removing 0105000B800170 from dongle sendstack
2025.09.01 21:03:40.463 4: ZWDongle_Read ZWDongle: rcvd 010b0080 (answer SERIAL_API_SETUP), sending ACK
2025.09.01 21:03:40.463 5: DevIo_SimpleWrite ZWDongle: 06
2025.09.01 21:03:40.465 5: ZWDongle: dispatch 010b0080
2025.09.01 21:03:40.465 4: ZWDongle unhandled ANSWER: SERIAL_API_SETUP 0080
2025.09.01 21:03:41.466 5: ZWDongle_ReadAnswer: select timeout
Bei den Controllern, die den Befehl unterstützen, wird das eben auf 8bit gesetzt mit der Rückmeldung entsprechend Logs laut @fireball.

Anregung gezogen aus: https://github.com/openhab/org.openhab.binding.zwave/commit/29b031b2dad73bb767fc0876905b3fb74323849a

Zwar nicht die "feine" Art, aber relativ simpel; zwingt ZWaveJs nicht auch die 16bit auf?

krikan

Der Befehl "Set Node ID Base Type" wurde mit der Serial API version 9 (>=SDK 7.14.x) eingeführt. Mit "get <controller> caps" bzw. "get <controller> version" kann man dazu Hinweise bekommen und müsste nicht immer den Befehl absetzen.

Eigentlich sollte man doch auch über caps ermitteln können, welche SERIAL_API_SETUP-Funktionen der Controller unterstützt. Fündig bin ich aber noch nicht geworden. 

Damu



ZitatPOE_ZW_Prim_OG caps => Vers:7 Rev:42 ManufID:0147 ProductType:0401 ProductID:0101 SERIAL_API_GET_INIT_DATA SERIAL_API_APPL_NODE_INFORMATION APPLICATION_COMMAND_HANDLER 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_WRITE_LONG_BUFFER NVM_EXT_READ_LONG_BYTE NVM_EXT_WRITE_LONG_BYTE UNKNOWN_2e ZW_CLEAR_TX_TIMERS ZW_GET_TX_TIMERS CLEAR_NETWORK_STATS GET_NETWORK_STATS GET_BACKGROUND_RSSI UNKNOWN_3c REMOVE_NODEID_FROM_NETWORK ZW_GET_NODE_PROTOCOL_INFO ZW_SET_DEFAULT ZW_REPLICATION_COMMAND_COMPLETE ZW_REPLICATION_SEND_DATA 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 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 ZW_TYPE_LIBRARY ZW_SEND_TEST_FRAME ZW_GET_PROTOCOL_STATUS ZW_SET_PROMISCUOUS_MODE PROMISCUOUS_COMMAND_HANDLER 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 ZME_FREQ_CHANGE ZME_BOOTLOADER_FLASH ZME_CAPABILITIES UNKNOWN_f8 UNKNOWN_fd UNKNOWN_fe

ZitatPOE_ZW_Prim_OG version => Z-Wave 7.21 STATIC_CONTROLLER

Hab noch einen Reserve Controller.

Gibt es Raw Befehle für die umschaltungen?

Damu

ZitatZ-Wave 7.23 BRIDGE_CONTROLLER

Kanst du nicht auf "Static Controller" umschalten?
Weis nicht ob FHEM das schon beherscht.
Welche Node IDs werden dir für den Controller angezeigt?

fireball

Moinsen, habe gestern nochmal mit CoPilot über die Dinge hier gesprochen:

Zu den Controllern:

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.

Entscheidungshilfe
Einsatzbereich                   Empfohlener Controller
Smart Home Gateway           Static Controller
Entwicklung & Test           Bridge Controller
Virtuelle Geräteverwaltung   Bridge Controller
Stabile Netzwerkstruktur   Static Controller


Viell. hat ZwaveUI JS neben den 16bit NodeID auch den BRIDGE Mode gesetzt?!

Umschalten kann man wohl über:

ZitatModuswechsel über Z-Way

1. Z-Way stoppen 
  Beende den Z-Way-Dienst, damit er den Modus nicht automatisch zurücksetzt.

2. Modus setzen 
  Verwende folgenden API-Befehl:
  `javascript
  /JS/Run/zway.ZMESerialAPIOptionsStaticAPISet(false)
  `
  Dieser Befehl schaltet den Controller in den Bridge-Modus.

3. Controller stromlos machen 
  Trenne den Controller physisch vom Strom (z. B. USB-Stecker ziehen), damit die Änderung übernommen wird.

4. Z-Way neu starten 
  Starte Z-Way nicht sofort, da es den Modus sonst wieder auf Static zurücksetzt. Du kannst den Controller nun in einem anderen System oder Modus verwenden.


Was ich jetzt aber rausgelesen habe, BRIDGE ist zwar der kompliziertere Modus und eigentlich @Home nicht notwendig, aber er läßt wohl parallele Zugriffe von unterschiedlicher Software zu.

@rudolfkoenig
1. Damit könnte der Bridge-Mode für meinen parallelen Betrieb von ZWaveUI JS und FHEM ja doch funzen!?
Ansonsten wäre es denkbar, den Gen5 Stick an (m)einem anderen Rechner als SecondaryNode mit ZwaveUI-JS zu betreiben?!
2. Ich hatte den 10pro ja unter HA+ZwaveUI-JS auch mit 16 bit NodeID laufen (erinnerst du dich an die Kuriosität?! wo ich mit zwei Systemen und Sticks die Geräte schalten konnte... also die Geräte hatten da auch kein Problem mit LongRange Setup.


Anonsten hier mal die get caps - Ausdruck von mir:
ZWDongle_0 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

Letzte Frage, wenn ich in FHEM ein Rename des Controllernames mache, muss ich den DevIO Eintrag in den Geräten manuell ändern?!




rudolfkoenig

Zitat1. Damit könnte der Bridge-Mode für meinen parallelen Betrieb von ZWaveUI JS und FHEM ja doch funzen!?
Ich bezweifle es. Womoeglich habe ich aber eine falsche Vorstellung davon, wie das zusammengeschaltet ist.

ZitatLetzte Frage, wenn ich in FHEM ein Rename des Controllernames mache, muss ich den DevIO Eintrag in den Geräten manuell ändern?!
Ja, FHEM Befehl siehe Beitrag #4

krikan

#36
Anderer (vermutlich sauberer) Ansatz für den NodeId-baseType bei Controller-Intialisierung:
Wenn Controller FUNC_ID_SERIAL_API_SETUP aus https://docs.silabs.com/d/zwave-api/7.22.0/func-id# unterstützt:
Ermittlung mit "4.3.15.1 Z-Wave API Setup Get Supported Commands Sub Command" aus https://zwave.cc/assets/doc/2024A%20Specification%20Package/Z-Wave%20Stack%20Specifications/Z-Wave%20Host%20API%20Specification.pdf, ob Controller SERIAL_API_SETUP_CMD_NODEID_BASETYPE_SET unterstützt.
get <controller> RAW 0B01 ??

Falls ja, SERIAL_API_SETUP_CMD_NODEID_BASETYPE_SET auf 8bit setzen.
get <controller> raw 0B8001
Immer Setzen von NODEID_BASETYPE, da ich kein GET-Command für NODEID_BASETYPE finden kann.

Damu

Wenn ich ein:
"POE_ZW_Res version => Z-Wave 7.21 STATIC_CONTROLLER" habe und:
Zitatget Controller raw F8040100
mache.
hab ich ein:
"POE_ZW_Res version => Z-Wave 7.21 BRIDGE_CONTROLLER"

Das bleibt auch so nach einem "reopen" und nach einem "sotfReset".

Wieder zurück geht es mit:
Zitatget Controller raw F8040101
"POE_ZW_Res version => Z-Wave 7.21 STATIC_CONTROLLER"


fireball

@Damu

bei mir hat die Umstellung auf STATIC Controller nicht funktioniert mit
get Controller raw F8040101:(

VG
René

krikan

Das hier auftauchende Thema Bridge- oder Static-Modus beim Controller ist mMn deutlich abzugrenzen von der NodeID-BASETYPE-Thematik. Letzteres sollte FHEM wohl (automatisch) lösen. Zum Ersten:

Zitat von: Damu am 02 September 2025, 19:05:04get Controller raw F8040101"POE_ZW_Res version => Z-Wave 7.21 STATIC_CONTROLLER"
Die FUNC_ID F8 im raw-Befehl ist eine proprietäre Kommando. Also vermutlich nur für zwave-me 700er bzw. 800er Controller.
@fireball: deshalb wird es bei AEOTEC nicht funktionieren

Grundsätzlich frage ich mich, welche relevanten Vorteile der Bride-Modus haben soll!?
Die KI-Antwort oben ist so "lala" und Internetrecherche führt mich nicht wirklich ans Ziel; siehe bspw. https://forum.z-wave.me/viewtopic.php?p=93978#p93978.
In FHEM werden die zusätzlichen Funktionen des Bridge-Modus nicht unterstützt. Ist Nutzung und ggfs. Einbau überhaupt sinnvoll? Ob ZWaveJS das unterstützt ist mir unklar.

fireball

@kirkan, danke für den Hinweis.
Ich kann mich bei dem Thema leider nur mit der KI unterhalten und da kommt auch immer komische Sachen raus.
Die letzten Fragen die ich gestellt habe untermauerten Rudolfs Meinung, dass zwei Programme nicht auf einen Stick zugreifen können, auch wenn man im BRIDGE Mode ist, es sei dann man nutzt ein Programm wie ZWAVEUI JS und hat dann ne API gegen diese Software.

Das will ich aber jetzt gar nicht, denn dann muss ich alles in FHEM umbauen. Daher wollte ich jetzt den Stick auf STATIC stellen.
Wieso bei der Migration über ZWAVEUI JS mein Stick als BRIGE eingerichtet wurde... keine Ahnung, läuft zwar, aber ich würde gern zurück zu Static, weil aus den Dokus die ich bisher gelesen hatte auch immer hervorgeht, dass Static = Primary ist.

Ich lese aber auch, dass eigentlich bei der Einrichtung des Sticks der Modus festgelegt wird. Jetzt komme ich ja über ne Migration.

Alle sehr komisch.

rudolfkoenig

ZitatAnderer (vermutlich sauberer) Ansatz für den NodeId-baseType bei Controller-Intialisierung: [...]

Folgendes eingebaut:
- supportedCmds get Befehl (falls SERIAL_API_SETUP in caps)
- nodeIdBaseType set Befehl (falls supportedCmds SET_NODEID_BASE_TYPE meldet)
- die beiden Befehle werden bei der Initialisierung ausgefuehrt (nodeIdBaseType mit 1).

Mein Controller unterstuetzt zwar SERIAL_API_SETUP, aber kein SET_NODEID_BASE_TYPE, insofern ist das Ganze nur halb getestet
=> Bitte um Feedback.

ZitatDas hier auftauchende Thema Bridge- oder Static-Modus beim Controller ist mMn deutlich abzugrenzen von der NodeID-BASETYPE-Thematik.
Bitte fuer das Bridge-Modus-Problem eine separate Diskussion starten.

fireball

Hi Rudolf,

ich habe jetzt folgenden Test nochmal gemacht, beginnend vom Gen5.
1. Gen5 Backup auf Gen5+ restored
2. Gen5+ Backup über ZWaveUI JS auf 10pro restored
3. Fhem update vom 00_ZWDongle.pm => unglücklicherweise hab ich hier ein restart verpasst
daher:
4. beim Anlegen eines neuen ZWAVE Controllers lief wieder alles auf den gleichen Fehler, ich musste dann manuell auf  0B8001 umstellen, dann waren die Fehler weg...
Aber auch dann musste ich erst restarten, damit alles schaltbar war.

Dann nochmal...
- ZwaveController gelöscht, Stick nochmal an ZwaveUI JS damit wieder die 16bit gesetzt werden
- Fhem war ja dann schon restartet
- Stick wieder angesteckt
- neuen ZwaveController eingrichtet
- Reboot war notwendig
- dann gings ohne weitere Settings.

VG
René

rudolfkoenig

Zitat3. Fhem update vom 00_ZWDongle.pm => unglücklicherweise hab ich hier ein restart verpasst
Ist damit ein update Befehl in FHEM gemeint, oder die Version aus SVN geholt?
Die heutigen Aenderungen sind erst morgen ab 8:00 per FHEM update verfuegbar.

Falls das Experiment mit der heutigen Version stattfand
# $Id: 00_ZWDongle.pm 30246 2025-09-03 08:55:08Z rudolfkoenig $
und nicht funktionierte:
ich brauche ein "attr ZWDongle verbose 5" Log-Mitschnitt beim FHEM Neustart.

fireball

Sry Rudi, da war ich wohl zu schnell: ich habe mit { Svn_GetFile('FHEM/00_ZWDongle.pm', 'FHEM/00_ZWDongle.pm') } ein Update aus dem SVN geholt.

und ich meine es geht jetzt ohne den Befehl: get <controllerName> raw 0B8001