External integration - Tuya v1.11.0

I thought so… :innocent:

You told me this distributor should expose what I needed.
Your F14-W should then expose:
• Distribute — a button that gives a portion (usable in a scene,
for example every day at 8:00 a.m.)
• Last distributed quantity
• Slow distribution
• Indicator light
• Battery
I think you didn’t see my feedback.
The distributor doesn’t expose everything it should, only the distribution button.

For what you asked me, I found this.

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

Hello!

I have an issue with the ‹ doorbell rings › action.

The action appears correctly, well detected but the scene does not trigger…

Yet, it worked!

Nothing special in the logs. I have the impression that it’s rather on the core side…

[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)

Edit:

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)

Hi @elfedagger, sorry for the delay.
I didn’t see your previous feedback.

Your distributor probably doesn’t expose the same Tuya codes as the model I based it on. I hoped it would be better than that, sorry.

Version 1.13.1 was released this morning (update from the store in about an hour), but it won’t add any features by itself. For me to fix the mapping for your model, I need two lines of integration logs, after an update and then a scan in Discovery:
the line starting with [Tuya][discovery] « F14-W » (it indicates features=1 and the UNMANAGED=[…] list of codes I don’t handle yet);
the full [Tuya][poll][local] device=… DPS snapshot: … line (the one you sent is cut off after the identifier).

Send them without the local key or your IP if they appear next to it. With that, I’ll try to release a corrected version right away.

Hi @GBoulvin,

Oh damn! Sorry, so I’m surprised by the mess. Claude is trying something, but I’m not sure it will help… I’ll forward his message to you :sweat_smile:

Thanks for the logs, they say it all, and no, it’s not on the core side.
The scene is indeed triggered (your capture « Ring: a few seconds ago » confirms it). What fails are your three actions « send the image »: the integration was pulling the ring before finishing downloading the photo (1.2s difference in your logs). The scene therefore requested the image too early. Before, you actually retrieved the photo from the previous ring without noticing; this morning’s update restarted the container, cleared the cache, and the error became visible.
Fixed in 1.13.2 (available in the store in about an hour): the photo is published first, the ring second, and an image request during download waits instead of failing. After the update, press the doorbell once to prime it, then the scene should send the correct photo of the visitor.

I retrieved this.

[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

Thanks, that’s exactly what was needed. Your dispenser is a variant: it doesn’t expose the standard codes I built the support for (feed_report, slow_feed, battery_percentage…) but others (feed_record, battery_val, battery_alarm…). Only the dispensing button is common, hence a single functionality.

I prefer not to blindly map (displaying a battery at « 2957 % » wouldn’t help you). I just released 1.13.3 which adds the last missing info: update from the store within an hour, wait a minute, then send me in a PM the line containing [Tuya][poll][cloud] and status snapshot for your dispenser (it only appears once, on the first reading after the restart). With that, I’ll release the support for your model right away: last meal, battery, alarms.

The basic_indicator / motion_record lines you copied come from a camera, not the dispenser, you can ignore them.