Installation Zigbee2mqtt (serveur Debian - KVM) : Passerelle Conbee II non reconnue

Bonjour,

J’ai un problème au démarrage de zigbee2mqtt
J’ai fais une install d’un Home assistant Supervised sur un serveur Debian.
Lorsque je tente de démarrer le module zigbee2mqtt j’ai une erreur :

|[2024-09-09 22:53:50] info: |z2m: Starting Zigbee2MQTT version 1.40.1 (commit #unknown)
|[2024-09-09 22:53:50] info: |z2m: Starting zigbee-herdsman (0.57.3)|
|[2024-09-09 22:53:50] info: |zh:zstack:znp: Opening SerialPort with {path:/dev/ttyACM0,baudRate:115200,rtscts:false,autoOpen:false}|
|[2024-09-09 22:53:50] info: |zh:zstack:znp: Serialport opened|
|[2024-09-09 22:53:51] info: |zh:zstack:znp: Writing CC2530/CC2531 skip bootloader payload|
|[2024-09-09 22:53:52] info: |zh:zstack:znp: Skip bootloader for CC2652/CC1352|
[2024-09-09 22:53:52] error: 	z2m: Error while starting zigbee-herdsman
[2024-09-09 22:53:52] error: 	z2m: Failed to start zigbee
[2024-09-09 22:53:52] error: 	z2m: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
[2024-09-09 22:53:52] error: 	z2m: Exiting...
[2024-09-09 22:53:52] error: 	z2m: Error: Error: Not supported, cannot set

/app/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:264
  var er = new ERR_STREAM_WRITE_AFTER_END();
           ^
Error: write after end
    at writeAfterEnd (/app/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:264:12)
    at DerivedLogger.Writable.write (/app/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:300:21)
    at DerivedLogger.log (/app/node_modules/winston/lib/winston/logger.js:231:12)
    at Logger.log (/app/lib/util/logger.ts:189:25)
    at Logger.info (/app/lib/util/logger.ts:202:14)
    at Znp.onPortClose (/app/node_modules/zigbee-herdsman/src/adapter/z-stack/znp/znp.ts:108:16)
    at Object.onceWrapper (node:events:632:26)
    at SerialPort.emit (node:events:529:35)
    at port.close.then.closing (/app/node_modules/@serialport/stream/dist/index.js:242:18)

Mon brocker Mosquito, lui est bien installé/lancé avec un utilisateur créé sous home assistant pour accéder aux différents services. Ma clé Conbee est bien reconnue et fonctionnelle (j’ai pu tester une intégration sans passer par zigbee2mqtt). Je me dis que ça viens peut-être du conteneur docker zigbee2mqtt qui n’arrive pas à communiquer avec le conteneur docker mosquitto mais sans certitude…

Si quelqu’un a une idée, je suis preneur

Ma configuration


System Information

version core-2024.9.1
installation_type Home Assistant Supervised
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.4
os_name Linux
os_version 6.1.0-25-amd64
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Debian GNU/Linux 12 (bookworm)
update_channel stable
supervisor_version supervisor-2024.08.0
agent_version 1.6.0
docker_version 27.2.0
disk_total 467.0 GB
disk_used 8.8 GB
healthy true
supported failed to load: Unsupported
host_connectivity true
supervisor_connectivity true
ntp_synchronized false
virtualization
supervisor_api ok
version_api ok
installed_addons Duck DNS (1.18.0), File editor (5.8.0), Mosquitto broker (6.4.1), Zigbee2MQTT (1.40.1-1)
Dashboards
dashboards 2
resources 0
views 1
mode storage
Recorder
oldest_recorder_run 4 septembre 2024 à 13:00
current_recorder_run 9 septembre 2024 à 23:07
estimated_db_size 8.46 MiB
database_engine sqlite
database_version 3.45.3

N’aurait tu pas l’intégration zha qui vient te faire des noises ?
Il faut absolument désactiver ZHA dans la liste des intégrations
Si elle est déjà active il faut la supprimer puis redémarrer totalement puis la désactiver

Bonjour,
J’ai eu ce pb suite à une maj de HA.
J’ai du supprimé l’addon z2m puis le réinstaller.
A faire si cela fonctionnait avant bien entendu

Non pas d’intégration ZHA en parallèle. J’ai pu, cependant avancer dans mon diag en faisant pas mal de tests.
Le problème semble provenir du binding de port USB vers ma VM (pas de certitudes).
Je passe donc par une distri linux Debian net/minimal avec une VM KVM. Sous mon home assistant j’ai mis zigbee2mqtt en DEBUG et concrètement ça plante sur un timeout (envoi de paquet vers la clé Conbee II) :

[21:21:43] INFO: Preparing to start...
	[21:21:43] INFO: Socat not enabled
	[21:21:44] INFO: Starting Zigbee2MQTT...
	Starting Zigbee2MQTT without watchdog.
	[2024-09-11 21:21:46] info: 	z2m: Logging to console, file (filename: log.log)
	[2024-09-11 21:21:46] debug: 	z2m: Loaded state from file /config/zigbee2mqtt/state.json
	[2024-09-11 21:21:46] info: 	z2m: Starting Zigbee2MQTT version 1.40.1 (commit #unknown)
	[2024-09-11 21:21:46] info: 	z2m: Starting zigbee-herdsman (0.57.3)
	[2024-09-11 21:21:46] debug: 	z2m: Using zigbee-herdsman with settings: '"{\"network\":{\"panID\":50535,\"extendedPanID\":[210,233,117,204,121,253,32,159],\"channelList\":[11],\"networkKey\":\"HIDDEN\"},\"databasePath\":\"/config/zigbee2mqtt/database.db\",\"databaseBackupPath\":\"/config/zigbee2mqtt/database.db.backup\",\"backupPath\":\"/config/zigbee2mqtt/coordinator_backup.json\",\"serialPort\":{\"path\":\"/dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2487865-if00\",\"adapter\":\"deconz\"},\"adapter\":{\"concurrent\":null,\"delay\":null,\"disableLED\":false}}"'
	[2024-09-11 21:21:46] debug: 	zh:adapter: Failed to validate path: 'Error: spawn udevadm ENOENT'
	[2024-09-11 21:21:46] debug: 	zh:deconz:driver: Set delay to 0
	[2024-09-11 21:21:46] debug: 	zh:controller: Starting with options '{"network":{"networkKeyDistribute":false,"networkKey":"HIDDEN","panID":50535,"extendedPanID":[210,233,117,204,121,253,32,159],"channelList":[11]},"serialPort":{"path":"/dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2487865-if00","adapter":"deconz"},"adapter":{"disableLED":false,"concurrent":null,"delay":null},"databasePath":"/config/zigbee2mqtt/database.db","databaseBackupPath":"/config/zigbee2mqtt/database.db.backup","backupPath":"/config/zigbee2mqtt/coordinator_backup.json"}'
	[2024-09-11 21:21:46] debug: 	zh:deconz:driver: Opening with /dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2487865-if00
	[2024-09-11 21:21:46] debug: 	zh:deconz:driver: Serialport opened
	[2024-09-11 21:21:46] debug: 	zh:deconz:driver: send read parameter request from queue. seqNr: 1 paramId: 5
	[2024-09-11 21:21:49] debug: 	zh:deconz: checking coordinator simple descriptor
	[2024-09-11 21:21:49] debug: 	zh:deconz:driver: DATA_REQUEST - destAddr: 0x0 EP:0 SeqNr. 2 request id: 1
	**[2024-09-11 21:21:56] debug: 	zh:deconz:driver: Timeout for request - CMD: 0xa seqNr: 1**
	[2024-09-11 21:21:56] error: 	z2m: Error while starting zigbee-herdsman
	[2024-09-11 21:21:56] error: 	z2m: Failed to start zigbee
	[2024-09-11 21:21:56] error: 	z2m: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions
	[2024-09-11 21:21:56] error: 	z2m: Exiting...
	[2024-09-11 21:21:56] error: 	z2m: undefined

	/app/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:264
	  var er = new ERR_STREAM_WRITE_AFTER_END();
			   ^
	Error: write after end
		at writeAfterEnd (/app/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:264:12)
		at DerivedLogger.Writable.write (/app/node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js:300:21)
		at DerivedLogger.log (/app/node_modules/winston/lib/winston/logger.js:231:12)
		at Logger.log (/app/lib/util/logger.ts:189:25)
		at Logger.debug (/app/lib/util/logger.ts:210:14)
		at Driver.processQueue (/app/node_modules/zigbee-herdsman/src/adapter/deconz/driver/driver.ts:483:28)
		at Timeout._onTimeout (/app/node_modules/zigbee-herdsman/src/adapter/deconz/driver/driver.ts:163:22)
		at listOnTimeout (node:internal/timers:569:17)

J’ai fait pas mal de choses sans succès :

  • Flash de ma clé sur firmware le + récent & un plus ancien réputé stable
  • Réinstallation de la VM
  • Révision de la conf zigbee2mqtt : /dev/ttyACM0 et /dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2487865-if00 avec adapter : deconz
  • Tentative de configuration de la clé avec ZHA (sans succès non plus)
  • Test de tous les ports USB avec et sans rallonge
  • Positionnement des droits users sur /dev/ttyACM0 (sudo chmod 666)

Au final, j’ai installé un windows 11 sur lequel j’ai installé une image VM sous Virtual Box. Et là, ma clé (une fois bindé) est bien reconnu sur la VM. Ça ressemble vraiment à un problème de paramétrage de port USB.
Pour faire le bind sur ma VM je passe par un xml que je charge en persistent :

lsusb 
Bus 001 Device 002: ID 1cf1:0030 Dresden Elektronik ZigBee gateway [ConBee II]
sudo virsh attach-device haos /etc/libvirt/qemu/usb_conbee2.xml --persistent
<hostdev mode='subsystem' type='usb' managed='yes'>
  <source>
	<vendor id='0x1cf1'/>
	<product id='0x0030'/>
  </source>
</hostdev>

Ça ne m’arrange pas de rester sur Windows 11… Si quelqu’un a de bonnes pistes pour régler ce problème je suis plus que preneur…

Information importante : je suis aussi passé d’une install Home Assistant Supervised vers un Home assistant sous KVM (les symptômes sont les mêmes)

Pourquoi ne pas utiliser HAos ?

J’utilise mon serveur pour d’autres besoins également. Un HAOS me limite trop dans mes possibilités.

Pour ceux qui pourrait rencontrer le problème à l’avenir, j’ai trouvé une solution. C’est bien le binding du port usb qui ne se faisait pas correctement. Je déclare le mapping dans la configuration de la VM directement (il ne faut pas attacher le périphérique avec une commande
virsh attach-device) :

###Bind clé usb conbeeII (brancher la clé usb)
		ls -l /dev/serial/by-id/
			*prendre le nom de la clé usb : "usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2487865-if00"
		sudo virsh edit haos #(ou sudo nano /etc/libvirt/qemu/haos.xml) puis ajouter : 	
			 <serial type='dev'>
			  <source path='/dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2487865-if00'/>
			  <target type='usb-serial' port='4'>
				<model name='usb-serial'/>
			  </target>
			  <address type='usb' bus='0' port='4'/>
			</serial>
		sudo reboot	

tu utilises une VM alors pourquoi ne pas utiliser HAos ??? il faut quand même éviter d’utiliser une machine Ha a tout faire

Je ne comprends pas bien… Mon home assistant qui tourne sur ma VM est un HAOS. C’est juste que mon serveur tourne sur du linux debian de base. Je ne peux pas installer HAOS en OS principal sur ma machine.

1 « J'aime »