Migration des Netzwerks von Aeotec Gen5 zu 10 Pro

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

Vorheriges Thema - Nächstes Thema

fireball

#15
kleines AddOn, weiß nicht obs von Bedeutung ist, so hat FHEM einmal den Stick neu angelegt, hatte das Device aber dann wieder gelöscht.

2025.08.30 19:55:23 3: Opening ZWDongle_1 device /dev/serial/by-id/usb-Silicon_Labs_CP2105_Dual_USB_to_UART_Bridge_Controller_00C3805E-if01-port0
2025.08.30 19:55:23 3: Setting ZWDongle_1 serial parameters to 115200,8,N,1
2025.08.30 19:55:26 3: ZWDongle_1 device opened
2025.08.30 19:55:28 1: /dev/serial/by-id/usb-Silicon_Labs_CP2105_Dual_USB_to_UART_Bridge_Controller_00C3805E-if01-port0 disconnected, waiting to reappear (ZWDongle_1)
2025.08.30 19:55:28 3: Setting ZWDongle_1 serial parameters to 115200,8,N,1
2025.08.30 19:55:28 1: /dev/serial/by-id/usb-Silicon_Labs_CP2105_Dual_USB_to_UART_Bridge_Controller_00C3805E-if01-port0 disconnected, waiting to reappear (ZWDongle_1)
2025.08.30 19:55:28 1: ZWDongle_ReadAnswer: no data read
2025.08.30 19:55:28 1: /dev/serial/by-id/usb-Silicon_Labs_CP2105_Dual_USB_to_UART_Bridge_Controller_00C3805E-if01-port0 reappeared (ZWDongle_1)

So zeigt ZWaveUI JS die Konfig an des 10pro an:
{
  "id": 1,
  "name": "",
  "loc": "",
  "values": [],
  "groups": [],
  "neighbors": [],
  "ready": true,
  "available": true,
  "hassDevices": {},
  "failed": false,
  "inited": true,
  "eventsQueue": [
    {
      "time": "2025-08-30T19:21:50.510Z",
      "event": "alive",
      "args": [
        0
      ]
    },
    {
      "time": "2025-08-30T19:21:50.560Z",
      "event": "ready",
      "args": []
    },
    {
      "time": "2025-08-30T19:21:50.560Z",
      "event": "ready",
      "args": []
    }
  ],
  "status": "Alive",
  "interviewStage": "Complete",
  "priorityReturnRoute": {},
  "customReturnRoute": {},
  "customSUCReturnRoutes": [],
  "applicationRoute": false,
  "hexId": "0x0371 0x0004-0x003c",
  "dbLink": "https://devices.zwave-js.io/?jumpTo=0x0371:0x0004:0x003c:7.23.2",
  "manufacturerId": 881,
  "productId": 60,
  "productType": 4,
  "deviceConfig": {
    "filename": "/usr/src/app/store/.config-db/devices/0x0371/zwa060.json",
    "isEmbedded": true,
    "manufacturer": "Aeotec Ltd.",
    "manufacturerId": 881,
    "label": "ZWA060",
    "description": "Z-Stick 10 Pro",
    "devices": [
      {
        "productType": 4,
        "productId": 60
      }
    ],
    "firmwareVersion": {
      "min": "0.0",
      "max": "255.255"
    },
    "preferred": false
  },
  "productLabel": "ZWA060",
  "productDescription": "Z-Stick 10 Pro",
  "manufacturer": "Aeotec Ltd.",
  "firmwareVersion": "7.23.2",
  "sdkVersion": "7.23.2",
  "protocolVersion": 3,
  "endpointsCount": 0,
  "endpoints": [
    {
      "index": 0,
      "label": "Root Endpoint",
      "deviceClass": {
        "basic": 2,
        "generic": 2,
        "specific": 1
      }
    }
  ],
  "supportsSecurity": false,
  "supportsBeaming": true,
  "isControllerNode": true,
  "isListening": true,
  "isFrequentListening": false,
  "isRouting": true,
  "keepAwake": false,
  "maxDataRate": 100000,
  "deviceClass": {
    "basic": 2,
    "generic": 2,
    "specific": 1
  },
  "lastActive": 1756581722034,
  "firmwareCapabilities": {
    "firmwareUpgradable": false
  },
  "protocol": 0,
  "deviceId": "881-60-4",
  "hasDeviceConfigChanged": false,
  "rfRegions": [
    {
      "value": 2,
      "title": "Australia/New Zealand",
      "disabled": false
    },
    {
      "value": 8,
      "title": "China",
      "disabled": false
    },
    {
      "value": 11,
      "title": "Europe (Long Range)",
      "disabled": false
    },
    {
      "value": 3,
      "title": "Hong Kong",
      "disabled": false
    },
    {
      "value": 5,
      "title": "India",
      "disabled": false
    },
    {
      "value": 6,
      "title": "Israel",
      "disabled": false
    },
    {
      "value": 32,
      "title": "Japan",
      "disabled": false
    },
    {
      "value": 33,
      "title": "Korea",
      "disabled": false
    },
    {
      "value": 7,
      "title": "Russia",
      "disabled": false
    },
    {
      "value": 9,
      "title": "USA (Long Range)",
      "disabled": false
    }
  ],
  "supportsLongRange": true,
  "supportsTime": false,
  "_name": "NodeID_1",
  "statistics": {
    "messagesTX": 45,
    "messagesRX": 90,
    "messagesDroppedRX": 7,
    "NAK": 0,
    "CAN": 0,
    "timeoutACK": 0,
    "timeoutResponse": 0,
    "timeoutCallback": 0,
    "messagesDroppedTX": 0
  },
  "prioritySUCReturnRoute": false,
  "lastReceive": 1756581722034,
  "lastTransmit": 1756581722034,
  "errorReceive": false,
  "errorTransmit": false,
  "powerlevel": -11.6,
  "measured0dBm": -0.1,
  "RFRegion": 11,
  "maxLongRangePowerlevel": 14
}

letztes Update für heute:

Kann es sein, dass die FHEM die ZWAVE API nicht richtig implementiert?!
Wenn ich mir diese Zeile im Log anschaue:
2025.08.30 20:13:36 4: ZWDongle_ReadAnswer for homeId: 0120ec4154d20001
dann sehe ich nach der 0120 die HomeID:ec4154d und dann kommt die NodeID: 0001

Wie die 0001 jetzt interpretiert wird ist mir nicht klar, aber mit nem Hex-Umrechner komme ich auf ne 1.

VG
René

rudolfkoenig

Zitat2025.08.30 20:13:36 4: ZWDongle_ReadAnswer for homeId: 0120ec4154d20001
Dieses Format ist fuer mich (und das Modul) neu: nodeIdHex ist hier 4-stellig, bekannt war 2-stellig.
Ich habe das Modul angepasst, FHEM-Update ist morgen ab 8 verfuegbar, bis dahin bitte direkt aus SVN holen.

Ich muss noch ueberlegen was ich mache, falls die ID auch in anderen Nachrichten 4-stellig ist.

Ist jemandem eine aktuelle Dokumentation der Controller Schnittstelle bekannt?

fireball

#17
Hi Rudolf,

da haben wir ja den Ursache gefunden. Super. Ich teste das morgen Vormittag dann.

Bzgl Dokumentation... ich hatte dir die API verlinkt, oder was meinst du genau?!
Ansonsten ist hier der Chip
Hier die API
Hier noch ein Datenblatt zur Architektur
Hier ein Link zur Doku zur 800ter Serie bei Silicon Labs, schau mal unter "Developer's Guides (4)" da gibts eine Connect Stack API und mehr.

Wenn du noch was anderes brauchst, ich habe noch mein Ticket bei Aeotec offen, der Typ ist echt hilfsbereit... ich könnte den auch direkt fragen.

VG
René

PS: ok ich hatte keine Ruhe, ich habs direkt ausprobiert:
1. Der Stick wird jetzt richtig erkannt, get version, nodeList, homeID funzen und es gibt die korrekte Ausgaben:
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      68b33db3-f33f-0804-05cd-b051d618f8ab19b1
   MaxSendRetries 3
   NAME       ZWDongle_0
   NR         724
   PARTIAL   
   RAWMSG     00a8000001002b0631050422000400a7007f7f
   ReadTime   1756634162.06488
   STATE      Initialized
   SendRetries 0
   SendTime   1756634089.59257
   TYPE       ZWDongle
   WaitForAck 0
   ZWDongle_0_MSGCNT 85
   ZWDongle_0_TIME 2025-08-31 11:56:02
   devioNoSTATE 1
   eventCount 1
   homeId     ec4154d2
   nodeIdHex  01
   nrNAck     0
   MatchList:
     1:ZWave    .*
   READINGS:
     2025-08-31 11:48:47   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-08-31 11:48:47   ctrlCaps        PRIMARY
     2025-08-31 11:54:05   homeId          HomeId:ec4154d2 CtrlNodeIdHex:01
     2025-08-31 11:53:52   nodeList        ZWDongle_0 FIBARO_RGB_1 WallPlug_Kuehlschrank Aussenlicht_Modul_1 Innenlicht_Modul_1 FSensor_EG_BAD_N FSensor_OG_BAD_N FSensor_EG_WZ_T_S FSensor_OG_GZ_S FSensor_OG_KZ_N TSensor_GARAGE_HWR FSensor_EG_WZ_2_W Alarm_Sirene Aussenlicht_vorn_Garage UNKNOWN_26 FSensor_OG_SZ_1_S FSensor_EG_WZ_1_W FSensor_EG_WZ_K_S FSensor_EG_BUERO_S TSensor_GARAGE FSensor_OG_SZ_2_S TSensor_GARAGENTOR Alarm_Wassersensor BM_EG_Flur BM_OG_Flur Gartenhaus_Master_Switch AEON_MultiSensor Gartenhaus_Garagentor SmokeSensor_WZ WallPlug_Waschmaschiene WallPlug_Gefrierschrank WallPlug_Weichwasseranlage WallPlug_Geschirrspueler SmokeSensor_HWR SmokeSensor_Garage FIBARO_RGB_2 UNKNOWN_51 LAD7_PV_MODE Deckenlicht_Wohnzimmer Wohnzimmer_Taster Aussenlicht_Modul_2 Wohnzimmer_Taster_2 TV_Wand_Modul
     2025-08-31 11:48:47   random          f0d6e4ade4259c109f73f1185d347b36e9f485413a99f17d3282e1ca33575e58
     2025-08-31 11:52:52   state           Initialized
     2025-08-31 11:48:47   sucNodeId       no
     2025-08-31 11:54:13   version         Z-Wave 7.23 BRIDGE_CONTROLLER
   SendStack:
Attributes:
   homeId     ec4154d2
   room       ZWave
   verbose    0

2. ABER es lassen sich keine Geräte schalten...
habe mal ein paar Geräte an und ausgeschalter mit verbose 5 :
025.08.31 11:58:39 2: ZWave: No ACK from Innenlicht_Modul_1 after 5s for sentset:130a07600d00022501FF2507
2025.08.31 11:58:39 5: ZWDongle_Write 00130a07600d00022501002508 (ec4154d2)
2025.08.31 11:58:39 5: DevIo_SimpleWrite ZWDongle_0: 010e00130a07600d0002250100250889
2025.08.31 11:58:39 5: ACK received, WaitForAck=>2 for 010e00130a07600d0002250100250889
2025.08.31 11:58:39 4: ZWDongle_Read ZWDongle_0: rcvd 011301 (answer ZW_SEND_DATA), sending ACK
2025.08.31 11:58:39 5: DevIo_SimpleWrite ZWDongle_0: 06
2025.08.31 11:58:39 5: ZWDongle_0: dispatch 011301
2025.08.31 11:58:40 4: ZWDongle_Read ZWDongle_0: rcvd 00a8000001002b0631050422000600a7007f7f (request ZW_APPLICATION_COMMAND_HANLDER_BRIDGE), sending ACK
2025.08.31 11:58:40 5: DevIo_SimpleWrite ZWDongle_0: 06
2025.08.31 11:58:40 5: ZWDongle_0: dispatch 00a8000001002b0631050422000600a7007f7f
2025.08.31 11:58:40 4: CMD:ZW_APPLICATION_COMMAND_HANLDER_BRIDGE ID:00 ARG:01002b0631050422000600a7007f7f CB:00
2025.08.31 11:58:40 4: ZWave: unknown message 00a8000001002b0631050422000600a7007f7f for ID 01
2025.08.31 11:58:42 4: no response from device, removing 010e00130a07600d0002250100250889 from dongle sendstack
2025.08.31 11:58:44 3: ZWave set BM_EG_Flur01 on
2025.08.31 11:58:44 5: ZWDongle_Write 00132307600d00012501FF250b (ec4154d2)
2025.08.31 11:58:44 5: DevIo_SimpleWrite ZWDongle_0: 010e00132307600d00012501FF250b5f
2025.08.31 11:58:44 5: ACK received, WaitForAck=>2 for 010e00132307600d00012501FF250b5f
2025.08.31 11:58:44 4: ZWDongle_Read ZWDongle_0: rcvd 011301 (answer ZW_SEND_DATA), sending ACK
2025.08.31 11:58:44 5: DevIo_SimpleWrite ZWDongle_0: 06
2025.08.31 11:58:44 5: ZWDongle_0: dispatch 011301
2025.08.31 11:58:44 2: ZWave: No ACK from Innenlicht_Modul_1 after 5s for sentset:130a07600d00022501002508
2025.08.31 11:58:44 5: ZWDongle_Write 00130a07600d00012501FF2509 (ec4154d2)
2025.08.31 11:58:45 3: ZWave set BM_EG_Flur01 off
2025.08.31 11:58:46 4: no response from device, removing 010e00132307600d00012501FF250b5f from dongle sendstack
2025.08.31 11:58:46 5: DevIo_SimpleWrite ZWDongle_0: 010e00130a07600d00012501FF250974
2025.08.31 11:58:46 5: ACK received, WaitForAck=>2 for 010e00130a07600d00012501FF250974
2025.08.31 11:58:46 4: ZWDongle_Read ZWDongle_0: rcvd 011301 (answer ZW_SEND_DATA), sending ACK
2025.08.31 11:58:46 5: DevIo_SimpleWrite ZWDongle_0: 06
2025.08.31 11:58:46 5: ZWDongle_0: dispatch 011301
2025.08.31 11:58:48 4: ZWDongle_Read ZWDongle_0: rcvd 00a800000100280631050422000000a6007f7f (request ZW_APPLICATION_COMMAND_HANLDER_BRIDGE), sending ACK
2025.08.31 11:58:48 5: DevIo_SimpleWrite ZWDongle_0: 06
2025.08.31 11:58:48 5: ZWDongle_0: dispatch 00a800000100280631050422000000a6007f7f
2025.08.31 11:58:48 4: CMD:ZW_APPLICATION_COMMAND_HANLDER_BRIDGE ID:00 ARG:0100280631050422000000a6007f7f CB:00
2025.08.31 11:58:48 4: ZWave: unknown message 00a800000100280631050422000000a6007f7f for ID 01
2025.08.31 11:58:49 4: ZWDongle_Read ZWDongle_0: rcvd 00a814000100280631050422000000b3000000 (request ZW_APPLICATION_COMMAND_HANLDER_BRIDGE), sending ACK
2025.08.31 11:58:49 5: DevIo_SimpleWrite ZWDongle_0: 06
2025.08.31 11:58:49 5: ZWDongle_0: dispatch 00a814000100280631050422000000b3000000
2025.08.31 11:58:49 4: CMD:ZW_APPLICATION_COMMAND_HANLDER_BRIDGE ID:00 ARG:0100280631050422000000b3000000 CB:14
2025.08.31 11:58:49 4: ZWave: unknown message 00a814000100280631050422000000b3000000 for ID 01
2025.08.31 11:58:49 4: no response from device, removing 010e00130a07600d00012501FF250974 from dongle sendstack
2025.08.31 11:58:49 2: ZWave: No ACK from BM_EG_Flur after 5s for sentset:132307600d00012501FF250b
2025.08.31 11:58:49 5: ZWDongle_Write 00132307600d0001250100250c (ec4154d2)
2025.08.31 11:58:49 5: DevIo_SimpleWrite ZWDongle_0: 010e00132307600d0001250100250ca7
2025.08.31 11:58:49 5: ACK received, WaitForAck=>2 for 010e00132307600d0001250100250ca7
2025.08.31 11:58:49 4: ZWDongle_Read ZWDongle_0: rcvd 011301 (answer ZW_SEND_DATA), sending ACK
2025.08.31 11:58:49 5: DevIo_SimpleWrite ZWDongle_0: 06
2025.08.31 11:58:49 5: ZWDongle_0: dispatch 011301

rudolfkoenig

Wenn ich mich recht erinnere, hatten wir die Kommunikationsschnittstelle durch "beobachten" von anderen Programmen "gelernt".

Eine Doku (Z-Wave 400 Series Appl. Prg. Guide v6.01.01) habe ich viel spaeter entdeckt, diese aber nicht mehr durchgearbeitet.
In diesem Dokument schaut getHomeId in etwa so aus:
void MemoryGetID(BYTE *pHomeID, BYTE *pNodeID )
Macro: ZW_MEMORY_GET_ID(homeID, nodeID)
The MemoryGetID function copy the Home-ID and Node-ID from the non-volatile memory to the
specified RAM addresses.
NOTE: A NULL pointer can be given as the pHomeID parameter if the application is only interested in
reading the Node ID.
Defined in: ZW_mem_api.h
Parameters:
pHomeID OUT Home-ID pointer
pNodeID OUT Node-ID pointer
Serial API:
HOST->ZW: REQ | 0x20
ZW->HOST: RES | 0x20 | HomeId(4 bytes) | NodeId

Fuer mich ist nur der Abschnitt Serial API relevant.
Nachtraeglich zu lesen ist es interessant, dass bei NodeId keine Laenge angegeben wurde.
Da das Dokument aus 2011 ist, bin ich nicht sicher, ob es sich lohnt, nochmal durchzuarbeiten.


Die verlinkten Dokus beschreiben eine Bibliothek, was in FHEM nicht verwendet wird, und ich habe keine Hinweise auf Beschreibungen auf Byte-Ebene (s.o.) gefunden.

krikan

Nach https://www.silabs.com/documents/public/user-guides/INS12350-Serial-API-Host-Appl.-Prg.-Guide.pdf unter "7.14 Set Node ID Base Type" kann man die Länge der genutzten NodeId-Länge wieder auf 8 Bits setzen. Das müsste wohl getestet werden.

krikan

Nach https://zwave.cc/assets/doc/2024A%20Specification%20Package/Z-Wave%20Stack%20Specifications/Z-Wave%20Host%20API%20Specification.pdf könnte/sollte folgender Befehl die verwendete NodeId-Länge auf 8 Bits setzen:
get <controllerName> raw 0B8001Der Befehl ändert das nicht dauerhaft. Nach Stromlosmachen des Controllers sollte der vorherige Zustand kommen.

Leider kann ich das nicht eigenständig testen. Also garantiere ich für nichts. Kann zwar aus den Docs keine problematischen Seiteneffekte erlesen, aber....

@Rene:
Wenn Du den Mut hast das zu probieren, dann bitte verbose 5 am Controller setzen, obigen raw-Befehl absetzen, Aktoren mal schalten und berichten sowie das Log gerne posten.