Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ZWave light service calls never timeout when entities go to Unavailable with turn_off service #98491

Closed
iDontWantAUsername opened this issue Aug 16, 2023 · 20 comments

Comments

@iDontWantAUsername
Copy link

The problem

If an automation or script issues a turn_off e.g. light turn_off, switch.turn_off and the target entity doesn't go to off but goes to Unavailable then the script/automation hangs in a running state. A script can only be stopped by a script.turn_off or a change and automation can only be reset but a reload or updating the automation.

What version of Home Assistant Core has the issue?

2023.8.2

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant Container

Integration causing the issue

Automations/Scripts

Link to integration documentation on our website

No response

Diagnostics information

No response

Example YAML snippet

alias: "[Auto Driveway lights] Driveway Lights Auto"
description: ""
trigger:
  - platform: state
    entity_id: binary_sensor.front_door_motion_sensor_state
    to: "on"
  - platform: state
    entity_id: binary_sensor.front_door_sensor
    to: "on"
    from: "off"
  - platform: state
    entity_id: switch.driveway_lights_switch
    to: "on"
  - platform: state
    entity_id: binary_sensor.driveway_motion_sensor_state
    to: "on"
    from: "off"
condition: []
action:
  - choose:
      - conditions:
          - condition: sun
            after: sunset
            after_offset: "+00:15:00"
          - condition: time
            before: "23:00"
        sequence:
          - service: switch.turn_on
            data: {}
            entity_id: switch.driveway_lights_switch
      - conditions:
          - condition: or
            conditions:
              - condition: time
                after: "23:00"
              - condition: sun
                before: sunrise
        sequence:
          - type: turn_on
            device_id: ceec3e04c9a70826d58041326465331b
            entity_id: switch.outside_wall_lights_switch
            domain: switch
          - delay: >-
              00:{{ states('input_number.driveway_lights_on_minutes') | int
              }}:00
          - type: turn_off
            device_id: ceec3e04c9a70826d58041326465331b
            entity_id: switch.outside_wall_lights_switch
            domain: switch
    default: []
  - delay: 00:{{ states('input_number.driveway_lights_on_minutes') | int }}:00
  - service: switch.turn_off
    data: {}
    entity_id: switch.driveway_lights_switch
  - if:
      - condition: sun
        after: sunrise
      - condition: sun
        before: sunset
        before_offset: "-5:00"
    then:
      - type: turn_off
        device_id: ceec3e04c9a70826d58041326465331b
        entity_id: switch.outside_wall_lights_switch
        domain: switch
mode: restart

Anything in the logs that might be useful for us?

Going to traces for the automation/script for the failed run shows it still running and for the subsequent runs show them not starting because the script is already running.

If the entity goes to Unavailable then th script/automation.

Additional information

I don't have any hard evidence of this but I believe this was working pre 2023.5/6 the zwave light that goes to Unavailable has done this for a while and I have other lights which are WiFi on switches which get accidentally turned off and I haven't had an issue with a Good Night script or the driveway lights automation above freezing up until around 2023.7

See some screenshots of the case when a script is stuck and the next case can't run(this is for my good night script):
Screenshot_20230812-171507
Screenshot_20230812-171546

@allenporter
Copy link
Contributor

Thank you for the excellent issue report. I think this is a duplicate of #98073 so we can track there, and we may have a root cause identified.

@allenporter allenporter reopened this Aug 18, 2023
@allenporter allenporter changed the title Script/Automation freezes when entities go to Unavailable with turn_off service ZWave light service calls never timeout when entities go to Unavailable with turn_off service Aug 18, 2023
@home-assistant
Copy link

Hey there @home-assistant/z-wave, mind taking a look at this issue as it has been labeled with an integration (zwave_js) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of zwave_js can trigger bot actions by commenting:

  • @home-assistant close Closes the issue.
  • @home-assistant rename Awesome new title Renames the issue.
  • @home-assistant reopen Reopen the issue.
  • @home-assistant unassign zwave_js Removes the current integration label and assignees on the issue, add the integration domain after the command.

(message by CodeOwnersMention)


zwave_js documentation
zwave_js source
(message by IssueLinks)

@allenporter
Copy link
Contributor

Some context in #98073 (comment) and PR #98501

@allenporter
Copy link
Contributor

@iDontWantAUsername can you confirm a couple things:

  • do you have information in the logs, or can you turn up debug information, about the specific devices that are timing out?
  • Can you confirm that the error message "Stopped because only a single execution..." is at a later time? I want to confirm that the automation isn't interrupting or restarting its current run, but just that it is in fact cancelling some other old stuck run.

@allenporter
Copy link
Contributor

@raman325 i know you were asking for cases related to z-wave so thought I would flag to you. i asked for some detail about, but feel free to correct me if that isn't the right set of detail.

@iDontWantAUsername
Copy link
Author

I've been away and am going away again but have turned on extra logging and will see if I can see a case happen. It doesn't happen often and is sporadic.

@iDontWantAUsername
Copy link
Author

iDontWantAUsername commented Aug 26, 2023

Documenting my testing with a test script which turns off a ZWave light and then sends me a notification. I did one case which resulted in a test script stalling, however i didn't have full logging on then.
On a recent attempt i did get this error, with the node going Unavailable temporarily:
HA Script Trace

{
  "trace": {
    "last_step": "sequence/0",
    "run_id": "7362b2b917fb8cfd449b74a9656125ca",
    "state": "stopped",
    "script_execution": "error",
    "timestamp": {
      "start": "2023-08-26T06:53:19.049488+00:00",
      "finish": "2023-08-26T06:53:21.611404+00:00"
    },
    "domain": "script",
    "item_id": "test_turn_off_wifi_light",
    "error": "",
    "trace": {
      "sequence/0": [
        {
          "path": "sequence/0",
          "timestamp": "2023-08-26T06:53:19.056871+00:00",
          "changed_variables": {
            "this": {
              "entity_id": "script.test_turn_off_wifi_light",
              "state": "off",
              "attributes": {
                "last_triggered": "2023-08-26T06:53:11.577502+00:00",
                "mode": "single",
                "current": 0,
                "friendly_name": "[Test] Turn off Outside Wall light"
              },
              "last_changed": "2023-08-26T06:53:12.334097+00:00",
              "last_updated": "2023-08-26T06:53:12.334097+00:00",
              "context": {
                "id": "01H8R9WFGS0KG7ZZHCH3QK40G5",
                "parent_id": null,
                "user_id": "34038577c88e4b8286a7b7319facedaf"
              }
            },
            "context": {
              "id": "01H8R9WPT9979RWR7T7WXS6WM8",
              "parent_id": null,
              "user_id": "34038577c88e4b8286a7b7319facedaf"
            }
          },
          "error": "",
          "result": {
            "params": {
              "domain": "switch",
              "service": "turn_off",
              "service_data": {},
              "target": {
                "device_id": [
                  "ceec3e04c9a70826d58041326465331b"
                ]
              }
            },
            "running_script": false
          }
        }
      ]
    },
    "config": {
      "alias": "[Test] Turn off Outside Wall light",
      "sequence": [
        {
          "service": "switch.turn_off",
          "data": {},
          "target": {
            "device_id": "ceec3e04c9a70826d58041326465331b"
          }
        },
        {
          "service": "notify.mobile_app_richards_phone",
          "data": {
            "message": "Script ran",
            "title": "Light turned off"
          }
        }
      ],
      "mode": "single"
    },
    "blueprint_inputs": null,
    "context": {
      "id": "01H8R9WPT9979RWR7T7WXS6WM8",
      "parent_id": null,
      "user_id": "34038577c88e4b8286a7b7319facedaf"
    }
  },
  "logbookEntries": [
    {
      "when": 1693032799.049758,
      "state": "on",
      "entity_id": "script.test_turn_off_wifi_light",
      "context_user_id": "34038577c88e4b8286a7b7319facedaf"
    },
    {
      "when": 1693032800.963936,
      "state": "unavailable",
      "entity_id": "switch.front_outside_lights_switch",
      "icon": "mdi:outdoor-lamp",
      "context_user_id": "34038577c88e4b8286a7b7319facedaf",
      "context_state": "on",
      "context_entity_id": "script.test_turn_off_wifi_light"
    },
    {
      "when": 1693032800.974022,
      "state": "unavailable",
      "entity_id": "switch.driveway_lights_switch",
      "icon": "mdi:track-light",
      "context_user_id": "34038577c88e4b8286a7b7319facedaf",
      "context_state": "on",
      "context_entity_id": "script.test_turn_off_wifi_light"
    },
    {
      "when": 1693032800.985455,
      "state": "unavailable",
      "entity_id": "switch.outside_wall_lights_switch",
      "icon": "mdi:coach-lamp",
      "context_user_id": "34038577c88e4b8286a7b7319facedaf",
      "context_state": "on",
      "context_entity_id": "script.test_turn_off_wifi_light"
    },
    {
      "when": 1693032801.609269,
      "state": "off",
      "entity_id": "script.test_turn_off_wifi_light",
      "context_user_id": "34038577c88e4b8286a7b7319facedaf",
      "context_state": "on",
      "context_entity_id": "script.test_turn_off_wifi_light"
    }
  ]
}

Then in ZWaveJS logs:

2023-08-26 16:53:18.864 INFO Z-WAVE: [Node 018] Value updated: 37-0-currentValue false => false
2023-08-26 16:53:19.281 INFO Z-WAVE: [Node 016] Metadata updated: 49-0-Air temperature
2023-08-26 16:53:19.285 INFO Z-WAVE: [Node 016] Value updated: 49-0-Air temperature 14.8 => 14.2
2023-08-26 16:53:20.951 INFO Z-WAVE: [Node 018] Is now dead
2023-08-26 16:53:20.964 ERROR Z-WAVE-SERVER: The node did not respond after 1 attempts, it is presumed dead (ZW0202)
ZWaveError: The node did not respond after 1 attempts, it is presumed dead (ZW0202)
at Driver.sendMessage (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:4768:23)
at Driver.sendCommandInternal (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:4965:28)
at Driver.sendCommand (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:5076:15)
at Proxy.set (/usr/src/app/node_modules/@zwave-js/cc/src/cc/BinarySwitchCC.ts:132:24)
at Proxy.<anonymous> (/usr/src/app/node_modules/@zwave-js/cc/src/cc/BinarySwitchCC.ts:154:16)
at ZWaveNode.setValue (/usr/src/app/node_modules/zwave-js/src/lib/node/Node.ts:1123:39)
at NodeMessageHandler.handle (/usr/src/app/node_modules/@zwave-js/server/dist/lib/node/message_handler.js:20:43)
at Object.node (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:42:96)
at Client.receiveMessage (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:107:99)
at WebSocket.<anonymous> (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:51:45)
2023-08-26 16:53:20.970 ERROR Z-WAVE-SERVER: The node did not respond after 1 attempts, it is presumed dead (ZW0202)
ZWaveError: The node did not respond after 1 attempts, it is presumed dead (ZW0202)
at Driver.sendMessage (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:4768:23)
at Driver.sendCommandInternal (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:4965:28)
at Driver.sendCommand (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:5076:15)
at Proxy.set (/usr/src/app/node_modules/@zwave-js/cc/src/cc/BinarySwitchCC.ts:132:24)
at Proxy.<anonymous> (/usr/src/app/node_modules/@zwave-js/cc/src/cc/BinarySwitchCC.ts:154:16)
at ZWaveNode.setValue (/usr/src/app/node_modules/zwave-js/src/lib/node/Node.ts:1123:39)
at NodeMessageHandler.handle (/usr/src/app/node_modules/@zwave-js/server/dist/lib/node/message_handler.js:20:43)
at Object.node (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:42:96)
at Client.receiveMessage (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:107:99)
at WebSocket.<anonymous> (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:51:45)
2023-08-26 16:53:20.973 ERROR Z-WAVE-SERVER: The node did not respond after 1 attempts, it is presumed dead (ZW0202)
ZWaveError: The node did not respond after 1 attempts, it is presumed dead (ZW0202)
at Driver.sendMessage (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:4768:23)
at Driver.sendCommandInternal (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:4965:28)
at Driver.sendCommand (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:5076:15)
at Proxy.set (/usr/src/app/node_modules/@zwave-js/cc/src/cc/BinarySwitchCC.ts:132:24)
at Proxy.<anonymous> (/usr/src/app/node_modules/@zwave-js/cc/src/cc/BinarySwitchCC.ts:154:16)
at ZWaveNode.setValue (/usr/src/app/node_modules/zwave-js/src/lib/node/Node.ts:1123:39)
at NodeMessageHandler.handle (/usr/src/app/node_modules/@zwave-js/server/dist/lib/node/message_handler.js:20:43)
at Object.node (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:42:96)
at Client.receiveMessage (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:107:99)
at WebSocket.<anonymous> (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:51:45)

I haven't seen this error before - it seems like it is semi handled in HA on this occasion - with the script stopping, i assume in this case if i had Continue on Error then my notification may also have been sent as the script should have continued. I will keep trying this same test case and see if i can get the script hanging with logging on

ZWaveJS:
zwave-js-ui: 8.23.0.73606d4
zwave-js: 11.12.0

HA: 2023.8.2

@iDontWantAUsername
Copy link
Author

iDontWantAUsername commented Aug 26, 2023

I got a few more cases of the above error so then I turned OFF ZwaveJS debug logging and now i have seen an instance of the error where the node goes Dead BUT ZWaveJS does not respond with a handled error as above, the script is still stuck running 30 minutes later even though the ZWave node is alive again):

{
  "trace": {
    "last_step": "sequence/0",
    "run_id": "e5cc0c1b9b794bc7301e05010c85b06b",
    "state": "running",
    "script_execution": null,
    "timestamp": {
      "start": "2023-08-26T07:19:42.156522+00:00",
      "finish": null
    },
    "domain": "script",
    "item_id": "test_turn_off_wifi_light",
    "trace": {
      "sequence/0": [
        {
          "path": "sequence/0",
          "timestamp": "2023-08-26T07:19:42.162505+00:00",
          "changed_variables": {
            "this": {
              "entity_id": "script.test_turn_off_wifi_light",
              "state": "off",
              "attributes": {
                "last_triggered": "2023-08-26T07:19:37.458279+00:00",
                "mode": "single",
                "current": 0,
                "friendly_name": "[Test] Turn off Outside Wall light"
              },
              "last_changed": "2023-08-26T07:19:37.980995+00:00",
              "last_updated": "2023-08-26T07:19:37.980995+00:00",
              "context": {
                "id": "01H8RBCW7HMVA44Z1ZBFWE1DZB",
                "parent_id": null,
                "user_id": "34038577c88e4b8286a7b7319facedaf"
              }
            },
            "context": {
              "id": "01H8RBD0TC5TT4J8WQHT1TZMNC",
              "parent_id": null,
              "user_id": "34038577c88e4b8286a7b7319facedaf"
            }
          },
          "result": {
            "params": {
              "domain": "switch",
              "service": "turn_off",
              "service_data": {},
              "target": {
                "device_id": [
                  "ceec3e04c9a70826d58041326465331b"
                ]
              }
            },
            "running_script": false
          }
        }
      ]
    },
    "config": {
      "alias": "[Test] Turn off Outside Wall light",
      "sequence": [
        {
          "service": "switch.turn_off",
          "data": {},
          "target": {
            "device_id": "ceec3e04c9a70826d58041326465331b"
          }
        },
        {
          "service": "notify.mobile_app_richards_phone",
          "data": {
            "message": "Script ran",
            "title": "Light turned off"
          }
        }
      ],
      "mode": "single"
    },
    "blueprint_inputs": null,
    "context": {
      "id": "01H8RBD0TC5TT4J8WQHT1TZMNC",
      "parent_id": null,
      "user_id": "34038577c88e4b8286a7b7319facedaf"
    }
  },
  "logbookEntries": [
    {
      "when": 1693034382.156846,
      "state": "on",
      "entity_id": "script.test_turn_off_wifi_light",
      "context_user_id": "34038577c88e4b8286a7b7319facedaf"
    }
  ]
}

EDIT: For competness here is a subsequent trace showing that the script it stuck in a running state:

{
  "trace": {
    "last_step": null,
    "run_id": "90f8d9bf75551e773c5de11994ea5c73",
    "state": "stopped",
    "script_execution": "failed_single",
    "timestamp": {
      "start": "2023-08-26T07:41:02.587243+00:00",
      "finish": "2023-08-26T07:41:02.590208+00:00"
    },
    "domain": "script",
    "item_id": "test_turn_off_wifi_light",
    "trace": {},
    "config": {
      "alias": "[Test] Turn off Outside Wall light",
      "sequence": [
        {
          "service": "switch.turn_off",
          "data": {},
          "target": {
            "device_id": "ceec3e04c9a70826d58041326465331b"
          }
        },
        {
          "service": "notify.mobile_app_richards_phone",
          "data": {
            "message": "Script ran",
            "title": "Light turned off"
          }
        }
      ],
      "mode": "single"
    },
    "blueprint_inputs": null,
    "context": {
      "id": "01H8RCM37T4R50VCZ8EMDVBKMS",
      "parent_id": null,
      "user_id": "34038577c88e4b8286a7b7319facedaf"
    }
  },
  "logbookEntries": []
}

I haven't tested with Automations but i am going to assume the same applies as they are just automatically run script which can't be stopped with another service.


It looks like there is a a defect where with DebugLogging ON the error with a node going to Unavailable is handled but when DebugLogging is OFF the error is not handled correctly.

The HA logbook shows the status of the node changing although i am not sure how accurate the granularity of this is:
Front Outside Lights Node status changed to alive
17:19:40 - 4 minutes ago
Front Outside Lights Node status changed to dead
17:17:51 - 5 minutes ago
Front Outside Lights Node status changed to alive
17:05:20 - 18 minutes ago

In the HA logs i saw instances of this with ZWaveJS Debug logging on, however none of these errors (including the Script error) pulled through to HA when the ZWaveJS debug Logging was turned off.

Does this help at all? Are there any other specific logs that would help which might not interfere with the error that is happening?

@iDontWantAUsername
Copy link
Author

@raman325
Copy link
Contributor

thanks for putting this together! I am still reviewing everything but it's extremely helpful to have a thread that's just focused on Z-Wave. And yes, this is helpful!

@raman325
Copy link
Contributor

raman325 commented Aug 28, 2023

So, some questions (editing but sharing there are more coming in case you are attempting to respond):

  1. When you say that you are turning debug logging on and off, what is it that you are doing that to? and how? What you are showing me is the addon/server logs, but there's nothing here that indicates to me it's in debug mode. So I am wondering if we are talking about two different things re: debug.

It looks like there is a a defect where with DebugLogging ON the error with a node going to Unavailable is handled but when DebugLogging is OFF the error is not handled correctly.

  1. I am not quite sure what you mean by this. What error is handled/how is it handled? Do you mean that service call fails when debug logging is off? or that you don't see an error in the logs anymore?

@iDontWantAUsername
Copy link
Author

  1. When you say that you are turning debug logging on and off, what is it that you are doing that to? and how? What you are showing me is the addon/server logs, but there's nothing here that indicates to me it's in debug mode. So I am wondering if we are talking about two different things re: debug.

I was turning Debug Logging on an off via the ZWaveJS server: Using Start and Stop here:
image

This seemed to result in more logging in the HA logs as well as in the logging window here.

It looks like there is a a defect where with DebugLogging ON the error with a node going to Unavailable is handled but when DebugLogging is OFF the error is not handled correctly.

  1. I am not quite sure what you mean by this. What error is handled/how is it handled? Do you mean that service call fails when debug logging is off? or that you don't see an error in the logs anymore?

When DebugLogging is ON (as above) i get a handled error in the Script trace, i.e.

{
  "trace": {
    "last_step": "sequence/0",
    "run_id": "7362b2b917fb8cfd449b74a9656125ca",
    "state": "stopped",
    "script_execution": "error",
    "timestamp": {
      "start": "2023-08-26T06:53:19.049488+00:00",
      "finish": "2023-08-26T06:53:21.611404+00:00"
    },

...

  "logbookEntries": [
    {
      "when": 1693032799.049758,
      "state": "on",
      "entity_id": "script.test_turn_off_wifi_light",
      "context_user_id": "34038577c88e4b8286a7b7319facedaf"
    },
    {
      "when": 1693032800.963936,
      "state": "unavailable",
      "entity_id": "switch.front_outside_lights_switch",
      "icon": "mdi:outdoor-lamp",
      "context_user_id": "34038577c88e4b8286a7b7319facedaf",
      "context_state": "on",
      "context_entity_id": "script.test_turn_off_wifi_light"
    },
    {
      "when": 1693032800.974022,
      "state": "unavailable",
      "entity_id": "switch.driveway_lights_switch",
      "icon": "mdi:track-light",
      "context_user_id": "34038577c88e4b8286a7b7319facedaf",
      "context_state": "on",
      "context_entity_id": "script.test_turn_off_wifi_light"
    },
    {
      "when": 1693032800.985455,
      "state": "unavailable",
      "entity_id": "switch.outside_wall_lights_switch",
      "icon": "mdi:coach-lamp",
      "context_user_id": "34038577c88e4b8286a7b7319facedaf",
      "context_state": "on",
      "context_entity_id": "script.test_turn_off_wifi_light"
    },

In this (first) trace with DebugLogging ON the trace shows that it stopped and went to an errored state due to the state going to unavailable.

However when i had DebugLogging OFF (i.e. no logs in ZWaveJS server) the Script just hung in a running state.

I hope that is clearer - i can't test now as the lights are in use and probably won't be able to test for a weeks or so as i will be away.

@raman325
Copy link
Contributor

yes that helps clarify what your intent was. That's odd but that may also be the root cause for some of this I guess?

@iDontWantAUsername
Copy link
Author

It seems to be a cause perhaps not the whole issue though.
In Summary:
When the extra DebugLogging is ON then the state of a ZWave light going to unavailable is treated as a handled error in the Script/Automation, however in the normal case with the DebugLogging OFF the state going to unavailable causes a hang whilst HA seems to wait for a response which is never sent.

@AlCalzone
Copy link

I was turning Debug Logging on an off via the ZWaveJS server: Using Start and Stop here:

I checked the Z-Wave JS UI source code, and if I'm not mistaken, all that does is change a variable in the frontend, whether log events should be added to that textbox or not.

Does your issue reproduce if you have logging to file enabled? If so, you can trigger the problem and then share the logfile.

@iDontWantAUsername
Copy link
Author

Does your issue reproduce if you have logging to file enabled? If so, you can trigger the problem and then share the logfile.

With log to file enabled the Script in HA hangs, here is the output from the zwaveJS log file

2023-08-29T00:55:43.759Z CNTRLR   [Node 018] [setValue] calling SET_VALUE API BinarySwitchCCAPI:
                                    property:     targetValue
                                    property key: undefined
                                    optimistic:   true
2023-08-29T00:55:43.763Z DRIVER   all queues busy
2023-08-29T00:55:43.766Z SERIAL » 0x010a001312032501002514e2                                          (12 bytes)
2023-08-29T00:55:43.769Z DRIVER » [Node 018] [REQ] [SendData]
                                  │ transmit options: 0x25
                                  │ callback id:      20
                                  └─[BinarySwitchCCSet]
                                      target value: false
2023-08-29T00:55:43.771Z CNTRLR   [Node 018] [setValue] calling SET_VALUE API BinarySwitchCCAPI:
                                    property:     targetValue
                                    property key: undefined
                                    optimistic:   true
2023-08-29T00:55:43.778Z CNTRLR   [Node 018] [setValue] calling SET_VALUE API BinarySwitchCCAPI:
                                    property:     targetValue
                                    property key: undefined
                                    optimistic:   true
2023-08-29T00:55:43.783Z SERIAL « 0x0110000400280a32022174000000000000ac                              (18 bytes)
2023-08-29T00:55:43.784Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:43.789Z CNTRLR   [Node 040] [translateValueEvent: metadata updated]
                                    commandClass: Meter
                                    endpoint:     0
                                    property:     value
                                    propertyKey:  66049
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:43.790Z CNTRLR   [Node 040] [Meter] value[66049]: metadata updated                 [Endpoint 0]
2023-08-29T00:55:43.790Z CNTRLR   [Node 040] [translateValueEvent: metadata updated]
                                    is root endpoint:        true
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:43.794Z CNTRLR   [Node 040] [translateValueEvent: value updated]
                                    commandClass: Meter
                                    endpoint:     0
                                    property:     value
                                    propertyKey:  66049
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:43.794Z CNTRLR   [Node 040] [~] [Meter] value[66049]: 0 => 0                       [Endpoint 0]
2023-08-29T00:55:43.794Z CNTRLR   [Node 040] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:43.797Z DRIVER « [Node 040] [REQ] [ApplicationCommand]
                                  └─[MeterCCReport]
                                      type:       Electric
                                      scale:      W
                                      rate type:  Consumed
                                      value:      0
                                      time delta: 0 seconds
2023-08-29T00:55:43.802Z SERIAL « [CAN]                                                                   (0x18)
2023-08-29T00:55:43.804Z CNTRLR   Failed to execute controller command after 1/3 attempts. Scheduling next try i
                                  n 100 ms.
2023-08-29T00:55:43.906Z DRIVER » [Node 018] [REQ] [SendData]
                                  │ transmit options: 0x25
                                  │ callback id:      20
                                  └─[BinarySwitchCCSet]
                                      target value: false
2023-08-29T00:55:43.907Z SERIAL » 0x010a001312032501002514e2                                          (12 bytes)
2023-08-29T00:55:43.909Z SERIAL « [ACK]                                                                   (0x06)
2023-08-29T00:55:43.915Z SERIAL « 0x0104011301e8                                                       (6 bytes)
2023-08-29T00:55:43.916Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:43.917Z DRIVER « [RES] [SendData]
                                    was sent: true
2023-08-29T00:55:43.978Z SERIAL « 0x0107001314000006f9                                                 (9 bytes)
2023-08-29T00:55:43.979Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:43.980Z DRIVER « [REQ] [SendData]
                                    callback id:     20
                                    transmit status: OK
2023-08-29T00:55:43.983Z CNTRLR   [Node 018] [setValue] result of SET_VALUE API call for BinarySwitchCCAPI: unde
                                  fined
2023-08-29T00:55:43.983Z CNTRLR   [Node 018] [setValue] updating value with event
2023-08-29T00:55:43.984Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    commandClass: Binary Switch
                                    endpoint:     0
                                    property:     targetValue
                                    propertyKey:  undefined
                                    internal:     false
                                    secret:       false
                                    event source: driver
2023-08-29T00:55:43.984Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:43.988Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    commandClass: Binary Switch
                                    endpoint:     0
                                    property:     currentValue
                                    propertyKey:  undefined
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:43.988Z CNTRLR   [Node 018] [~] [Binary Switch] currentValue: false => false       [Endpoint 0]
2023-08-29T00:55:43.988Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:43.996Z SERIAL » 0x010e00131207600d000225010025158c                                  (16 bytes)
2023-08-29T00:55:43.997Z DRIVER » [Node 018] [REQ] [SendData]
                                  │ transmit options: 0x25
                                  │ callback id:      21
                                  └─[MultiChannelCCCommandEncapsulation]
                                    │ source:      0
                                    │ destination: 2
                                    └─[BinarySwitchCCSet]
                                        target value: false
2023-08-29T00:55:44.004Z SERIAL « [ACK]                                                                   (0x06)
2023-08-29T00:55:44.006Z SERIAL « 0x0104011301e8                                                       (6 bytes)
2023-08-29T00:55:44.007Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:44.008Z DRIVER « [RES] [SendData]
                                    was sent: true
2023-08-29T00:55:44.136Z SERIAL « 0x0114000400210e32022164000023d9001e000023d9ab                      (22 bytes)
2023-08-29T00:55:44.138Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:44.141Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    commandClass: Meter
                                    endpoint:     0
                                    property:     value
                                    propertyKey:  65537
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:44.141Z CNTRLR   [Node 033] [Meter] value[65537]: metadata updated                 [Endpoint 0]
2023-08-29T00:55:44.141Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    is root endpoint:        true
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:44.144Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    commandClass: Meter
                                    endpoint:     0
                                    property:     value
                                    propertyKey:  65537
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:44.145Z CNTRLR   [Node 033] [~] [Meter] value[65537]: 9.177 => 9.177               [Endpoint 0]
2023-08-29T00:55:44.145Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:44.148Z DRIVER « [Node 033] [REQ] [ApplicationCommand]
                                  └─[MeterCCReport]
                                      type:        Electric
                                      scale:       kWh
                                      rate type:   Consumed
                                      value:       9.177
                                      time delta:  30 seconds
                                      prev. value: 9.177
2023-08-29T00:55:49.524Z SERIAL « 0x01180004002112600d01003202216400001e70001e00001e70d7              (26 bytes)
2023-08-29T00:55:49.529Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:49.533Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    commandClass: Meter
                                    endpoint:     1
                                    property:     value
                                    propertyKey:  65537
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:49.534Z CNTRLR   [Node 033] [Meter] value[65537]: metadata updated                 [Endpoint 1]
2023-08-29T00:55:49.534Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    is root endpoint:        false
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:49.538Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    commandClass: Meter
                                    endpoint:     1
                                    property:     value
                                    propertyKey:  65537
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:49.539Z CNTRLR   [Node 033] [~] [Meter] value[65537]: 7.792 => 7.792               [Endpoint 1]
2023-08-29T00:55:49.539Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    is root endpoint:        false
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:49.542Z DRIVER « [Node 033] [REQ] [ApplicationCommand]
                                  └─[MultiChannelCCCommandEncapsulation]
                                    │ source:      1
                                    │ destination: 0
                                    └─[MeterCCReport]
                                        type:        Electric
                                        scale:       kWh
                                        rate type:   Consumed
                                        value:       7.792
                                        time delta:  30 seconds
                                        prev. value: 7.792
2023-08-29T00:55:49.619Z SERIAL « 0x01180004002112600d02003202216400000569001e00000569d4              (26 bytes)
2023-08-29T00:55:49.620Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:49.621Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    commandClass: Meter
                                    endpoint:     2
                                    property:     value
                                    propertyKey:  65537
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:49.621Z CNTRLR   [Node 033] [Meter] value[65537]: metadata updated                 [Endpoint 2]
2023-08-29T00:55:49.622Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    is root endpoint:        false
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:49.624Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    commandClass: Meter
                                    endpoint:     2
                                    property:     value
                                    propertyKey:  65537
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:49.625Z CNTRLR   [Node 033] [~] [Meter] value[65537]: 1.385 => 1.385               [Endpoint 2]
2023-08-29T00:55:49.625Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    is root endpoint:        false
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:49.628Z DRIVER « [Node 033] [REQ] [ApplicationCommand]
                                  └─[MultiChannelCCCommandEncapsulation]
                                    │ source:      2
                                    │ destination: 0
                                    └─[MeterCCReport]
                                        type:        Electric
                                        scale:       kWh
                                        rate type:   Consumed
                                        value:       1.385
                                        time delta:  30 seconds
                                        prev. value: 1.385
2023-08-29T00:55:49.711Z SERIAL « 0x0110000400210a32022174000000000000a5                              (18 bytes)
2023-08-29T00:55:49.712Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:49.714Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    commandClass: Meter
                                    endpoint:     0
                                    property:     value
                                    propertyKey:  66049
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:49.714Z CNTRLR   [Node 033] [Meter] value[66049]: metadata updated                 [Endpoint 0]
2023-08-29T00:55:49.714Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    is root endpoint:        true
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:49.717Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    commandClass: Meter
                                    endpoint:     0
                                    property:     value
                                    propertyKey:  66049
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:49.717Z CNTRLR   [Node 033] [~] [Meter] value[66049]: 0 => 0                       [Endpoint 0]
2023-08-29T00:55:49.718Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:49.720Z DRIVER « [Node 033] [REQ] [ApplicationCommand]
                                  └─[MeterCCReport]
                                      type:       Electric
                                      scale:      W
                                      rate type:  Consumed
                                      value:      0
                                      time delta: 0 seconds
2023-08-29T00:55:49.803Z SERIAL « 0x0114000400210e600d010032022174000000000000c9                      (22 bytes)
2023-08-29T00:55:49.805Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:49.806Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    commandClass: Meter
                                    endpoint:     1
                                    property:     value
                                    propertyKey:  66049
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:49.807Z CNTRLR   [Node 033] [Meter] value[66049]: metadata updated                 [Endpoint 1]
2023-08-29T00:55:49.807Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    is root endpoint:        false
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:49.810Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    commandClass: Meter
                                    endpoint:     1
                                    property:     value
                                    propertyKey:  66049
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:49.810Z CNTRLR   [Node 033] [~] [Meter] value[66049]: 0 => 0                       [Endpoint 1]
2023-08-29T00:55:49.810Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    is root endpoint:        false
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:49.813Z DRIVER « [Node 033] [REQ] [ApplicationCommand]
                                  └─[MultiChannelCCCommandEncapsulation]
                                    │ source:      1
                                    │ destination: 0
                                    └─[MeterCCReport]
                                        type:       Electric
                                        scale:      W
                                        rate type:  Consumed
                                        value:      0
                                        time delta: 0 seconds
2023-08-29T00:55:49.896Z SERIAL « 0x0114000400210e600d020032022174000000000000ca                      (22 bytes)
2023-08-29T00:55:49.897Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:49.898Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    commandClass: Meter
                                    endpoint:     2
                                    property:     value
                                    propertyKey:  66049
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:49.899Z CNTRLR   [Node 033] [Meter] value[66049]: metadata updated                 [Endpoint 2]
2023-08-29T00:55:49.899Z CNTRLR   [Node 033] [translateValueEvent: metadata updated]
                                    is root endpoint:        false
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:49.902Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    commandClass: Meter
                                    endpoint:     2
                                    property:     value
                                    propertyKey:  66049
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:49.902Z CNTRLR   [Node 033] [~] [Meter] value[66049]: 0 => 0                       [Endpoint 2]
2023-08-29T00:55:49.902Z CNTRLR   [Node 033] [translateValueEvent: value updated]
                                    is root endpoint:        false
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:49.905Z DRIVER « [Node 033] [REQ] [ApplicationCommand]
                                  └─[MultiChannelCCCommandEncapsulation]
                                    │ source:      2
                                    │ destination: 0
                                    └─[MeterCCReport]
                                        type:       Electric
                                        scale:      W
                                        rate type:  Consumed
                                        value:      0
                                        time delta: 0 seconds
2023-08-29T00:55:53.042Z SERIAL « 0x010700131501038874                                                 (9 bytes)
2023-08-29T00:55:53.044Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:53.047Z DRIVER « [REQ] [SendData]
                                    callback id:     21
                                    transmit status: NoAck
2023-08-29T00:55:53.062Z SERIAL » 0x010e00131207600d000225010025158c                                  (16 bytes)
2023-08-29T00:55:53.064Z DRIVER » [Node 018] [REQ] [SendData]
                                  │ transmit options: 0x25
                                  │ callback id:      21
                                  └─[MultiChannelCCCommandEncapsulation]
                                    │ source:      0
                                    │ destination: 2
                                    └─[BinarySwitchCCSet]
                                        target value: false
2023-08-29T00:55:53.067Z SERIAL « [ACK]                                                                   (0x06)
2023-08-29T00:55:53.201Z SERIAL « 0x0104011301e8                                                       (6 bytes)
2023-08-29T00:55:53.202Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:53.203Z DRIVER « [RES] [SendData]
                                    was sent: true
2023-08-29T00:55:54.150Z SERIAL « 0x010700131500006d93                                                 (9 bytes)
2023-08-29T00:55:54.153Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:54.155Z DRIVER « [REQ] [SendData]
                                    callback id:     21
                                    transmit status: OK
2023-08-29T00:55:54.159Z SERIAL » 0x010e00131207600d000125010025168c                                  (16 bytes)
2023-08-29T00:55:54.160Z DRIVER » [Node 018] [REQ] [SendData]
                                  │ transmit options: 0x25
                                  │ callback id:      22
                                  └─[MultiChannelCCCommandEncapsulation]
                                    │ source:      0
                                    │ destination: 1
                                    └─[BinarySwitchCCSet]
                                        target value: false
2023-08-29T00:55:54.162Z SERIAL « [ACK]                                                                   (0x06)
2023-08-29T00:55:54.168Z SERIAL « 0x0104011301e8                                                       (6 bytes)
2023-08-29T00:55:54.168Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:54.169Z DRIVER « [RES] [SendData]
                                    was sent: true
2023-08-29T00:55:54.273Z SERIAL « 0x010700131600000bf6                                                 (9 bytes)
2023-08-29T00:55:54.273Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:54.274Z DRIVER « [REQ] [SendData]
                                    callback id:     22
                                    transmit status: OK
2023-08-29T00:55:54.277Z CNTRLR   [Node 018] [setValue] result of SET_VALUE API call for BinarySwitchCCAPI: unde
                                  fined
2023-08-29T00:55:54.278Z CNTRLR   [Node 018] [setValue] updating value with event
2023-08-29T00:55:54.279Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    commandClass: Binary Switch
                                    endpoint:     1
                                    property:     targetValue
                                    propertyKey:  undefined
                                    internal:     false
                                    secret:       false
                                    event source: driver
2023-08-29T00:55:54.279Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    is root endpoint:        false
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:54.283Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    commandClass: Binary Switch
                                    endpoint:     1
                                    property:     currentValue
                                    propertyKey:  undefined
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:54.283Z CNTRLR   [Node 018] [~] [Binary Switch] currentValue: false => false       [Endpoint 1]
2023-08-29T00:55:54.284Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    is root endpoint:        false
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:54.289Z SERIAL » 0x01090013120225022517e0                                            (11 bytes)
2023-08-29T00:55:54.290Z DRIVER » [Node 018] [REQ] [SendData]
                                  │ transmit options: 0x25
                                  │ callback id:      23
                                  └─[BinarySwitchCCGet]
2023-08-29T00:55:54.298Z SERIAL « [ACK]                                                                   (0x06)
2023-08-29T00:55:54.302Z SERIAL « 0x0104011301e8                                                       (6 bytes)
2023-08-29T00:55:54.303Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:54.304Z DRIVER « [RES] [SendData]
                                    was sent: true
2023-08-29T00:55:54.373Z SERIAL « 0x0107001317000008f4                                                 (9 bytes)
2023-08-29T00:55:54.374Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:54.375Z DRIVER « [REQ] [SendData]
                                    callback id:     23
                                    transmit status: OK
2023-08-29T00:55:54.448Z SERIAL « 0x01090004001203250300c5                                            (11 bytes)
2023-08-29T00:55:54.449Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:54.450Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    commandClass: Binary Switch
                                    endpoint:     0
                                    property:     currentValue
                                    propertyKey:  undefined
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:54.450Z CNTRLR   [Node 018] [~] [Binary Switch] currentValue: false => false       [Endpoint 0]
2023-08-29T00:55:54.451Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    is root endpoint:        true
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:54.454Z DRIVER « [Node 018] [REQ] [ApplicationCommand]
                                  └─[BinarySwitchCCReport]
                                      current value: false
2023-08-29T00:55:54.457Z DRIVER   all queues idle
2023-08-29T00:55:55.289Z DRIVER   all queues busy
2023-08-29T00:55:55.291Z SERIAL » 0x010d00131206600d00012502251883                                    (15 bytes)
2023-08-29T00:55:55.292Z DRIVER » [Node 018] [REQ] [SendData]
                                  │ transmit options: 0x25
                                  │ callback id:      24
                                  └─[MultiChannelCCCommandEncapsulation]
                                    │ source:      0
                                    │ destination: 1
                                    └─[BinarySwitchCCGet]
2023-08-29T00:55:55.294Z SERIAL « [ACK]                                                                   (0x06)
2023-08-29T00:55:55.300Z SERIAL « 0x0104011301e8                                                       (6 bytes)
2023-08-29T00:55:55.301Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:55.303Z DRIVER « [RES] [SendData]
                                    was sent: true
2023-08-29T00:55:55.363Z SERIAL « 0x0107001318000007f4                                                 (9 bytes)
2023-08-29T00:55:55.364Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:55.364Z DRIVER « [REQ] [SendData]
                                    callback id:     24
                                    transmit status: OK
2023-08-29T00:55:55.439Z SERIAL « 0x010d0004001207600d0100250300a9                                    (15 bytes)
2023-08-29T00:55:55.441Z SERIAL » [ACK]                                                                   (0x06)
2023-08-29T00:55:55.442Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    commandClass: Binary Switch
                                    endpoint:     1
                                    property:     currentValue
                                    propertyKey:  undefined
                                    internal:     false
                                    secret:       false
                                    event source: undefined
2023-08-29T00:55:55.443Z CNTRLR   [Node 018] [~] [Binary Switch] currentValue: false => false       [Endpoint 1]
2023-08-29T00:55:55.443Z CNTRLR   [Node 018] [translateValueEvent: value updated]
                                    is root endpoint:        false
                                    is application CC:       true
                                    should hide root values: false
2023-08-29T00:55:55.447Z DRIVER « [Node 018] [REQ] [ApplicationCommand]
                                  └─[MultiChannelCCCommandEncapsulation]
                                    │ source:      1
                                    │ destination: 0
                                    └─[BinarySwitchCCReport]
                                        current value: false
2023-08-29T00:55:55.449Z DRIVER   all queues idle

Node 018 is the one the script runs on, the HA trace has a timestamp of 00:55:43Z and is stuck in a still running state.

I am not able to replicate the handled Script error i saw when the node went to Unavailable now - this may have just been a red-herring or perhaps having Debug Logging ON caused a slight delay in processing on my server which allowed the Unavailable response to be returned to the script. The server has had a reboot and update since then with all docker containers restarted so it could have sped things up slightly.

It looks like a fix has been committed - unfortunately i won't be able to test this promptly as i won't be home for a bit.

@AlCalzone
Copy link

Some observations from that log:

  1. setValue for Node 18's targetValue is called 3 times, once for the root endpoint, and once each for endpoints 1 and 2. Not sure if that's intended, lots of multi-channel switches control both outlets at once using the root endpoint, which would make the 2 additional calls unnecessary.
  2. The command to endpoint 2 fails at first, but is then retried and succeeds. The logs indicate that the setValue call doesn't complete though. This might be the issue you're experiencing, and this might be fixed by fix: don't abort transaction while still retrying zwave-js/node-zwave-js#6219 (included in yesterday's v11.13.1). I'll have to verify though.
  3. The first failure coincides with a couple of power reports from node 33 - 6 reports in 5 seconds. I've seen much worse, but this might be something to keep an eye on. If you haven't already, check out these links:

@AlCalzone
Copy link

Update: I can reproduce in a test case. The good news is that zwave-js/node-zwave-js#6219 does fix this issue, so it's just a matter of updating now.

@iDontWantAUsername
Copy link
Author

Thank you. I'll update to 11.13.1+ as soon as possible

For point 3; thanks for pointing this out, the node was set to update all reports every 30 seconds. I've corrected this to 5 minutes for a subset like the rest of my devices.

I'll test this properly when I return in just over a week. If you are happy we can probably close this ticket as the underlying issue should be fixed.

@iDontWantAUsername
Copy link
Author

I have been able to test on 11.14.0, it seems that the handled error because the node goes to Unavailable is working and the Automation/Script does not get stuck in a running state. The Script is stopped due to the ZwaveJS returning the error as expected.

Using continue_on_error: true in the YAML allows the Script to continue even if the zwave node does return an error.

Thanks for your help with this.

@github-actions github-actions bot locked and limited conversation to collaborators Oct 9, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants