Integración externa - Tuya v1.11.0

Parecía que… :innocent:

Me habías anunciado que este distribuidor debía exponer.
Tu F14-W debería entonces exponer:
• Distribuir — un botón que da una porción (utilizable en una escena,
por ejemplo todos los días a las 8h)
• Última cantidad distribuida
• Distribución lenta
• Indicador
• Batería
Creo que no has visto mi respuesta.
El distribuidor no expone todo lo que debería, solo el botón de distribución.

Por lo que me pediste, encontré esto.

[2026-08-05T18:08:07.095Z] [INFO] [tuya] [Tuya][poll][local] device=bf15bc151aba2c

¡Hola!

Tengo un problema con la acción ‹ sonnette sonne ›.

La acción aparece bien, bien detectada pero la escena no se activa…

Sin embargo, ¡funcionó!

Nada especial en los registros. Tengo la impresión de que es más del lado del núcleo…

[2026-09-03T16:26:54.376Z] [INFO] [tuya] [Tuya][push] device=bf8a5bf8acc4540a41rere local push published 1 change(s)
[2026-09-03T16:26:54.414Z] [INFO] [tuya] [Tuya][push] device=bf8a5bf8acc4540a41rere local push published 1 change(s)
[2026-09-03T16:26:54.520Z] [INFO] [tuya] [Tuya][push] device=bf8a5bf8acc4540a41rere local push published 1 change(s)
[2026-09-03T16:26:54.718Z] [INFO] [tuya] [Tuya][push] device=bf8a5bf8acc4540a41rere local push published 1 change(s)
[2026-09-03T16:26:55.913Z] [INFO] [tuya] [Tuya][media] doorbell_pic event fired (device=ext:ext-terdious-gladys-tuya:device:bf0e59548489fcb4ea62of)
[2026-09-03T16:26:57.110Z] [INFO] [tuya] [Tuya][media] doorbell_pic snapshot published (device=ext:ext-terdious-gladys-tuya:device:bf0e59548489fcb4ea62of)

Edición:

2026-09-03T18:26:54+0200 <error> device.poll.js:30 (DeviceManager.poll) There was an error while polling device production-solaire-bf8a5bf8acc4540a41rere
2026-09-03T18:26:54+0200 <error> device.poll.js:31 (DeviceManager.poll) ExternalIntegrationUnavailableError: EXTERNAL_INTEGRATION_COMMAND_TIMEOUT
    at Timeout._onTimeout (/src/server/lib/external-integration/externalIntegration.sendCommand.js:32:14)
    at listOnTimeout (node:internal/timers:685:17)
    at processTimers (node:internal/timers:618:7)
2026-09-03T18:26:55+0200 <warn> scene.executeActions.js:47 (executeAction) ExternalIntegrationUnavailableError: No Tuya snapshot available yet (it updates on a ring or a motion event)
    at ExternalIntegration.handleCommandResult (/src/server/lib/external-integration/externalIntegration.handleCommandResult.js:29:7)
    at WebSocket.<anonymous> (/src/server/api/websockets/index.js:161:45)
    at WebSocket.emit (node:events:514:28)
    at Receiver.receiverOnMessage (/src/server/node_modules/ws/lib/websocket.js:807:20)
    at Receiver.emit (node:events:514:28)
    at Receiver.dataMessage (/src/server/node_modules/ws/lib/receiver.js:448:14)
    at Receiver.getData (/src/server/node_modules/ws/lib/receiver.js:377:17)
    at Receiver.startLoop (/src/server/node_modules/ws/lib/receiver.js:158:22)
    at Receiver._write (/src/server/node_modules/ws/lib/receiver.js:94:10)
    at writeOrBuffer (node:internal/streams/writable:574:12)
    at _write (node:internal/streams/writable:503:10)
    at Receiver.Writable.write (node:internal/streams/writable:512:10)
    at Socket.socketOnData (/src/server/node_modules/ws/lib/websocket.js:882:35)
    at Socket.emit (node:events:514:28)
    at addChunk (node:internal/streams/readable:567:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:518:3)
    at Socket.Readable.push (node:internal/streams/readable:398:5)
    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)
2026-09-03T18:26:55+0200 <warn> scene.executeActions.js:47 (executeAction) ExternalIntegrationUnavailableError: No Tuya snapshot available yet (it updates on a ring or a motion event)
    at ExternalIntegration.handleCommandResult (/src/server/lib/external-integration/externalIntegration.handleCommandResult.js:29:7)
    at WebSocket.<anonymous> (/src/server/api/websockets/index.js:161:45)
    at WebSocket.emit (node:events:514:28)
    at Receiver.receiverOnMessage (/src/server/node_modules/ws/lib/websocket.js:807:20)
    at Receiver.emit (node:events:514:28)
    at Receiver.dataMessage (/src/server/node_modules/ws/lib/receiver.js:448:14)
    at Receiver.getData (/src/server/node_modules/ws/lib/receiver.js:377:17)
    at Receiver.startLoop (/src/server/node_modules/ws/lib/receiver.js:158:22)
    at Receiver._write (/src/server/node_modules/ws/lib/receiver.js:94:10)
    at writeOrBuffer (node:internal/streams/writable:574:12)
    at _write (node:internal/streams/writable:503:10)
    at Receiver.Writable.write (node:internal/streams/writable:512:10)
    at Socket.socketOnData (/src/server/node_modules/ws/lib/websocket.js:882:35)
    at Socket.emit (node:events:514:28)
    at addChunk (node:internal/streams/readable:567:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:518:3)
    at Socket.Readable.push (node:internal/streams/readable:398:5)
    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)
2026-09-03T18:26:55+0200 <warn> scene.executeActions.js:47 (executeAction) ExternalIntegrationUnavailableError: No Tuya snapshot available yet (it updates on a ring or a motion event)
    at ExternalIntegration.handleCommandResult (/src/server/lib/external-integration/externalIntegration.handleCommandResult.js:29:7)
    at WebSocket.<anonymous> (/src/server/api/websockets/index.js:161:45)
    at WebSocket.emit (node:events:514:28)
    at Receiver.receiverOnMessage (/src/server/node_modules/ws/lib/websocket.js:807:20)
    at Receiver.emit (node:events:514:28)
    at Receiver.dataMessage (/src/server/node_modules/ws/lib/receiver.js:448:14)
    at Receiver.getData (/src/server/node_modules/ws/lib/receiver.js:377:17)
    at Receiver.startLoop (/src/server/node_modules/ws/lib/receiver.js:158:22)
    at Receiver._write (/src/server/node_modules/ws/lib/receiver.js:94:10)
    at writeOrBuffer (node:internal/streams/writable:574:12)
    at _write (node:internal/streams/writable:503:10)
    at Receiver.Writable.write (node:internal/streams/writable:512:10)
    at Socket.socketOnData (/src/server/node_modules/ws/lib/websocket.js:882:35)
    at Socket.emit (node:events:514:28)
    at addChunk (node:internal/streams/readable:567:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:518:3)
    at Socket.Readable.push (node:internal/streams/readable:398:5)
    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)

Por lo tanto, sí, en los registros hay el hecho de que envío tres veces el instantánea y que no existe… Bueno, ¿todavía no?

Edición 2: Soy tonto… Configuré la integración externa de Telegram y no se modificó en la escena que enviaba el mensaje a través de una voz/vía inexistente…

Hola @elfedagger, disculpa por la demora.
De hecho no vi tu respuesta anterior.

Tu distribuidor probablemente no expone los mismos códigos Tuya que el modelo en el que me basé. Esperaba que fuera mejor que esto, lo siento.

La versión 1.13.1 se lanzó esta mañana (actualiza desde la tienda en una hora), pero no creará características adicionales por sí misma. Para que yo corrija el mapeo para tu modelo, necesito dos líneas de registro de la integración, después de una actualización y luego un escaneo en Descubrimiento:
la línea que comienza con [Tuya][discovery] « F14-W » (indica features=1 y la lista UNMANAGED=[…] de los códigos que aún no manejo);
la línea completa [Tuya][poll][local] device=… DPS snapshot: … (la que enviaste está cortada después del identificador).

Envíalas sin la clave local ni tu IP si aparecen al lado. Con eso intentaré sacar una versión corregida de inmediato.

Hola @GBoulvin,

¡Vaya! Lo siento, entonces me sorprende el desvarío, Claude intenta algo, pero no estoy seguro de que lo arregle… te transmito su mensaje :sweat_smile:

Gracias por los registros, lo dicen todo, y no, no es del lado del núcleo.
La escena se activa correctamente (tu captura « Sonido: hace unos segundos » lo confirma). Lo que falla son tus tres acciones « enviar la imagen »: la integración tiraba del sonido antes de terminar de descargar la foto (1,2 segundos de diferencia en tus registros). La escena, por lo tanto, pedía la imagen demasiado pronto. Antes, en realidad recuperabas la foto del timbre anterior sin darte cuenta; la actualización de esta mañana reinició el contenedor, borró la caché y el error se hizo visible.
Corregido en la 1.13.2 (disponible en la tienda en una hora): la foto se publica primero, el sonido después, y una solicitud de imagen durante la descarga espera en lugar de fallar. Después de la actualización, pulsa el timbre una primera vez para iniciar, luego la escena debe enviar la foto correcta del visitante.

Lo he recuperado.

[2026-09-03T22:31:25.479Z] [INFO] [tuya] [Tuya][discovery] "F14-W" id=************** type=pet-feeder product_id=*************** category=cwwsq features=1 UNMANAGED=[meal_plan_num, battery_val, meal_plan2, feed_record, vip_alarm, battery_alarm]
[2026-09-03T22:31:25.480Z] [WARN] [tuya] Tuya function with "basic_indicator" code is not managed
[2026-09-03T22:31:25.481Z] [WARN] [tuya] Tuya function with "motion_record" code is not managed
[2026-09-03T22:31:25.481Z] [WARN] [tuya] Tuya function with "motion_interval" code is not managed
[2026-09-03T22:31:25.481Z] [WARN] [tuya] Tuya function with "record_switch1" code is not managed
[2026-09-03T22:31:25.482Z] [WARN] [tuya] Tuya function with "decibel_upload" code is not managed
[2026-09-03T22:31:25.482Z] [WARN] [tuya] Tuya function with "ipc_mute_record" code is not managed
[2026-09-03T22:31:25.482Z] [WARN] [tuya] Tuya function with "ipc_detection_area" code is not managed
[2026-09-03T22:31:25.482Z] [WARN] [tuya] Tuya function with "multi_motion_area" code is not managed
[2026-09-03T22:31:21.250Z] [INFO] [tuya] [Tuya][poll][local] device=************** DPS snapshot: 4="standby" (UNMAPPED) | 106=2957 (UNMAPPED) | 108="7f0800317f143021" (UNMAPPED) | 112="{"value":2,"type":2}" (UNMAPPED) | 113=0 (UNMAPPED) | 114=0 (UNMAPPED)

Gracias, es exactamente lo que necesitaba. Tu distribuidor es una variante: no expone los códigos estándar sobre los que construí el soporte (feed_report, slow_feed, battery_percentage…) sino otros (feed_record, battery_val, battery_alarm…). Solo el botón de distribución es común, por lo que solo hay una funcionalidad.

Prefiero no mapear a ciegas (mostrar una batería al « 2957 % » no te ayudaría). Acabo de lanzar la 1.13.3 que añade la última información faltante: actualiza desde la tienda en una hora, espera un minuto y luego envíame por mensaje privado la línea que contiene [Tuya][poll][cloud] y status snapshot para tu distribuidor (solo aparece una vez, en la primera lectura después del reinicio). Con eso, sacaré el soporte de tu modelo de inmediato: última comida, batería, alarmas.

Las líneas basic_indicator / motion_record que copiaste provienen de una cámara, no del distribuidor, puedes ignorarlas.