Zigbee - Actualización del controlador ezsp a ember

¡Genial, muchas gracias!

Por cierto, si entiendo bien, esto solo funciona para un usuario existente que quiera cambiar a Ember, ¿verdad?

Un nuevo usuario que seleccione Ember con una clave en un firmware antiguo no tendrá esta advertencia, porque Zigbee2mqtt nunca llegará a iniciarse, ¿no?

Sí, tienes razón. Voy a explorar la pista de los registros para detectar y mostrar el mensaje.

Así cubriremos todos los escenarios.

¡En mi opinión, si solo detectamos este tipo de registros, se puede hacer bastante fácilmente!

A largo plazo, incluso podríamos detectar los errores que vemos con más frecuencia en este foro, para brindar aún más transparencia al usuario.

Hola,

He implementado la lectura de los registros (como durante las actualizaciones) y he construido una imagen.
No puedo probar nuestro caso específico (ya que mi dongle está actualizado), pero voy a hacer algunas pruebas con otros patrones en los registros.

La revisión de IA ha dado algunos comentarios sobre reinicios faltantes y creo que la cobertura de pruebas no es perfecta. Lo estoy revisando.

¿Quieres esperar a que la PR esté completa o ya entregar la primera parte (sin los registros)?

Me parece bien (cobertura y comentarios de PR). Queda por probar :thinking:

¡Gracias @cicoub13, lo voy a probar!

Pregunta rápida:

Tengo un dongle Sonoff que nunca se ha actualizado. ¿En qué orden debo hacerlo?

@cicoub13 Lo probé hace un momento y no veo mensajes en la interfaz :confused:

El estado de la llamada API devuelve :

{
    "usbConfigured": true,
    "mqttExist": true,
    "mqttRunning": true,
    "zigbee2mqttExist": true,
    "zigbee2mqttRunning": true,
    "gladysConnected": false,
    "zigbee2mqttConnected": false,
    "z2mEnabled": true,
    "dockerBased": true,
    "networkModeValid": true,
    "coordinatorFirmware": {
        "maintrel": "1 ",
        "majorrel": "7",
        "minorrel": "3",
        "product": 12,
        "revision": "7.3.1.0 build 176",
        "type": "EZSP v12"
    },
    "z2mContainerError": null
}

Los registros de Zigbee2mqtt:

Starting Zigbee2MQTT without watchdog.
[2026-02-24 17:19:21] info: 	z2m: Logging to console, file (filename: log.log)
[2026-02-24 17:19:21] info: 	z2m: Starting Zigbee2MQTT version 2.7.1 (commit #6d30fa156cf208189edbbd7db8422a6fc657fb9e
)
[2026-02-24 17:19:21] info: 	z2m: Starting zigbee-herdsman (7.0.4)
[2026-02-24 17:19:21] info: 	zh:ember: Using default stack config.
[2026-02-24 17:19:21] info: 	zh:ember: ======== Ember Adapter Starting ========
[2026-02-24 17:19:21] info: 	zh:ember:ezsp: ======== EZSP starting ========
[2026-02-24 17:19:21] info: 	zh:ember:uart:ash: ======== ASH Adapter reset ========
[2026-02-24 17:19:21] info: 	zh:ember:uart:ash: RTS/CTS config is off, enabling software flow control.
[2026-02-24 17:19:21] info: 	zh:ember:uart:ash: Serial port opened
[2026-02-24 17:19:21] info: 	zh:ember:uart:ash: ======== ASH starting ========
[2026-02-24 17:19:22] info: 	zh:ember:uart:ash: ======== ASH connected ========
[2026-02-24 17:19:22] info: 	zh:ember:uart:ash: ======== ASH started ========
[2026-02-24 17:19:22] info: 	zh:ember:ezsp: ======== EZSP started ========
[2026-02-24 17:19:22] error: 	z2m: Error while starting zigbee-herdsman
[2026-02-24 17:19:22] error: 	z2m: Failed to start zigbee-herdsman
[2026-02-24 17:19:22] error: 	z2m: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start_crashes-runtime.html for possible solutions
[2026-02-24 17:19:22] error: 	z2m: Exiting...
[2026-02-24 17:19:22] error: 	z2m: Error: Adapter EZSP protocol version (12) is not supported by Host [13-18].
    at EmberAdapter.emberVersion (/app/node_modules/.pnpm/zigbee-herdsman@7.0.4/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:1408:19)
    at EmberAdapter.initEzsp (/app/node_modules/.pnpm/zigbee-herdsman@7.0.4/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:670:9)
    at EmberAdapter.start (/app/node_modules/.pnpm/zigbee-herdsman@7.0.4/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:1539:24)
    at Controller.start (/app/node_modules/.pnpm/zigbee-herdsman@7.0.4/node_modules/zigbee-herdsman/src/controller/controller.ts:143:29)
    at Zigbee.start (/app/lib/zigbee.ts:70:27)
    at Controller.start (/app/lib/controller.ts:101:13)
    at start (/app/index.js:149:5)

Lógico, he añadido readZ2mContainerLogs solo en la instalación del contenedor :man_facepalming:

Lo añado en otro lugar

La actualización de Gladys no rompe las instalaciones existentes, pero si quieres migrar al nuevo controlador:

  • actualización del firmware del dongle
  • selección del dongle sin (legacy ezsp) en Gladys

@cicoub13 por cierto, si el error es desconocido, creo que incluso podemos mostrar el error « crudo » en la interfaz, así evitaremos pedir a los principiantes que revisen los registros :grin:

Lo miro esta noche

Vale, disponible esta noche para hacer pruebas si es necesario

He subido una nueva imagen que gestiona tanto los errores conocidos como los desconocidos
También he modificado la lectura de los logs para que sea en modo stream
Creo que el archivo readZ2mContainerLogs merece una buena revisión con la mente despejada.
Lo probaré mañana en RPI

@cicoub13 Acabo de hacer una prueba y tengo esto en los registros:

2026-02-25T08:33:23+0100 <warn> readZ2mContainerLogs.js:97 (Zigbee2mqttManager.readZ2mContainerLogs) Zigbee2mqtt: no se pudo leer los registros del contenedor: stream.on no es una función

He actualizado y probado esta mañana en RPI. Parece que funciona :slight_smile:
Ahora escucho de forma asíncrona durante 30 segundos en forward:true
Si se encuentra un error conocido (el del firmware ember), se detiene la escucha y se informa del error. De lo contrario, se espera a que terminen los 30 segundos y se informa del último error en bruto en el front.

No he podido probar el caso específico del firmware ember, pero he generado otros errores.
:warning: Solo funciona durante un cambio de configuración o al activar el servicio (pero creo que es lo que queremos).

Podríamos considerar informar del primer error para mayor reactividad, pero no es muy significativo :thinking:

Para el bloque

[2026-02-25 10:31:08] error: 	z2m: Error al iniciar zigbee-herdsman
[2026-02-25 10:31:08] error: 	z2m: No se pudo iniciar zigbee-herdsman
[2026-02-25 10:31:08] error: 	z2m: Consulte https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start_crashes-runtime.html para posibles soluciones
[2026-02-25 10:31:08] error: 	z2m: Salida...
[2026-02-25 10:31:08] error: 	z2m: Error: No se pudo iniciar la capa EZSP con estado=HOST_FATAL_ERROR.
    at EmberAdapter.initEzsp (/app/node_modules/.pnpm/zigbee-herdsman@7.0.4/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:666:19)
    at EmberAdapter.start (/app/node_modules/.pnpm/zigbee-herdsman@7.0.4/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:1539:24)
    at Controller.start (/app/node_modules/.pnpm/zigbee-herdsman@7.0.4/node_modules/zigbee-herdsman/src/controller/controller.ts:143:29)
    at Zigbee.start (/app/lib/zigbee.ts:70:27)
    at Controller.start (/app/lib/controller.ts:101:13)
    at start (/app/index.js:149:5)

¡Gracias @cicoub13, es realmente genial!

Lo probé hace un momento y funciona perfectamente:

Creo que esto realmente ayudará a los nuevos en Gladys, más allá del aspecto de Ember :slight_smile: ¡Bravo :clap:!

Solo una observación, ¿no podría mejorarse el mensaje de error para indicar las diferentes opciones: actualizar el firmware de la llave o seleccionar el controlador legado ezsp?

Por lo demás, probé algo y no entiendo por qué ocurre esto, si hago un rollback a « ezsp » (selecciono el controlador antiguo + hago clic en guardar), obtengo esto:

Solo si hago clic en el interruptor « desactivar » + « activar » vuelvo a ver los servicios en verde.

¿Alguna idea?

Al cambiar el Dongle, el contenedor Z2M se reinicia (con el nuevo archivo de configuración) y no se recrea.
Por lo tanto, los registros aún contienen los errores anteriores y los contenedores están en un estado inestable.

He realizado un commit y una imagen de Docker para recrear el contenedor en caso de cambio de Dongle. Creo que es más limpio. No he podido probarlo en la práctica y no podré revisarlo mañana (jueves).

Sí, lo he cambiado para esto: “Atención: El firmware de su coordinador Ember está obsoleto. Se requiere la versión 7.4.x o superior. Puede seguir esta guía para actualizarlo. En caso contrario, seleccione el dongle (legacy ezsp) en la configuración.”

¡Gracias!

¡Genial! :slight_smile:

Acabo de probar, tengo un error diferente ahora :smiley:

La única manera de pasar de un dongle a otro es desactivarlo y volver a activarlo entre cada cambio de dongle.

Creo que ya es el comportamiento actual. Haré pruebas el viernes para mejorar.