Thermostat recognized as a light

Hi folks

I’m in the process of switching from my dying 14 year old Vera 1 to some other Zwave controller. Tried Hubitat, but it’s unstable (hangs every few days).

So now trying Home Assistant with ZST39 and Zwave JS UI.

Tried adding my dinosaur Wayne Dalton thermostat:

It was recognized as a light switch :frowning:
Perhaps not surprisingly, since it’s quite an old device.

Now, Hubitat had the same problem, but gave me an option of treating it as a “generic thermostat” and that worked. Most of the commands I needed to control it (switch cool/heat mode, set cool/heat point, etc) worked.

I was wondering if there is a similar “override” mechanism in HA?

Thank you in advance

It should appear as a climate entity. Post the device diagnostic file, available from the Device page → … menu.

Please see below.

{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2024.4.4",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.12.2",
    "docker": true,
    "arch": "aarch64",
    "timezone": "America/Los_Angeles",
    "os_name": "Linux",
    "os_version": "6.6.25-haos",
    "supervisor": "2024.04.4",
    "host_os": "Home Assistant OS 12.2",
    "docker_version": "25.0.5",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {},
  "integration_manifest": {
    "domain": "zwave_js",
    "name": "Z-Wave",
    "codeowners": [
      "@home-assistant/z-wave"
    ],
    "config_flow": true,
    "dependencies": [
      "http",
      "repairs",
      "usb",
      "websocket_api"
    ],
    "documentation": "https://www.home-assistant.io/integrations/zwave_js",
    "integration_type": "hub",
    "iot_class": "local_push",
    "loggers": [
      "zwave_js_server"
    ],
    "quality_scale": "platinum",
    "requirements": [
      "pyserial==3.5",
      "zwave-js-server-python==0.55.3"
    ],
    "usb": [
      {
        "vid": "0658",
        "pid": "0200",
        "known_devices": [
          "Aeotec Z-Stick Gen5+",
          "Z-WaveMe UZB"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*z-wave*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      }
    ],
    "zeroconf": [
      "_zwave-js-server._tcp.local."
    ],
    "is_built_in": true
  },
  "data": {
    "versionInfo": {
      "driverVersion": "12.5.5",
      "serverVersion": "1.35.0-beta.1",
      "minSchemaVersion": 0,
      "maxSchemaVersion": 35
    },
    "entities": [
      {
        "domain": "light",
        "entity_id": "light.thermostat_basic",
        "original_name": "Basic",
        "original_device_class": null,
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": null,
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "4-32-0-currentValue",
        "primary_value": {
          "command_class": 32,
          "command_class_name": "Basic",
          "endpoint": 0,
          "property": "currentValue",
          "property_name": "currentValue",
          "property_key": null,
          "property_key_name": null
        }
      }
    ],
    "state": {
      "nodeId": 4,
      "index": 0,
      "status": 4,
      "ready": true,
      "isListening": true,
      "isRouting": true,
      "isSecure": false,
      "manufacturerId": 8,
      "productId": 32,
      "productType": 7,
      "firmwareVersion": "0.8",
      "name": "Thermostat",
      "deviceConfig": {
        "filename": "/data/db/devices/0x0008/wdtc-20.json",
        "isEmbedded": true,
        "manufacturer": "Wayne Dalton",
        "manufacturerId": 8,
        "label": "WDTC-20",
        "description": "Thermostat",
        "devices": [
          {
            "productType": 7,
            "productId": 32
          }
        ],
        "firmwareVersion": {
          "min": "0.0",
          "max": "255.255"
        },
        "preferred": false
      },
      "label": "WDTC-20",
      "interviewAttempts": 0,
      "isFrequentListening": false,
      "maxDataRate": 40000,
      "supportedDataRates": [
        40000
      ],
      "protocolVersion": 2,
      "supportsBeaming": true,
      "supportsSecurity": false,
      "nodeType": 1,
      "deviceClass": {
        "basic": {
          "key": 4,
          "label": "Routing Slave"
        },
        "generic": {
          "key": 8,
          "label": "Thermostat"
        },
        "specific": {
          "key": 6,
          "label": "General Thermostat V2"
        },
        "mandatorySupportedCCs": [
          32,
          114,
          64,
          67,
          134
        ],
        "mandatoryControlledCCs": []
      },
      "interviewStage": "Complete",
      "deviceDatabaseUrl": "https://devices.zwave-js.io/?jumpTo=0x0008:0x0007:0x0020:0.8",
      "statistics": {
        "commandsTX": 1,
        "commandsRX": 0,
        "commandsDroppedRX": 0,
        "commandsDroppedTX": 0,
        "timeoutResponse": 0,
        "rtt": 350.1,
        "lastSeen": "2024-05-06T16:18:21.950Z",
        "rssi": -80,
        "lwr": {
          "protocolDataRate": 2,
          "repeaters": [],
          "rssi": -80,
          "repeaterRSSI": []
        }
      },
      "highestSecurityClass": -1,
      "isControllerNode": false,
      "keepAwake": false,
      "lastSeen": "2024-05-06T16:18:21.950Z",
      "values": {
        "4-32-0-currentValue": {
          "endpoint": 0,
          "commandClass": 32,
          "commandClassName": "Basic",
          "property": "currentValue",
          "propertyName": "currentValue",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Current value",
            "min": 0,
            "max": 99,
            "stateful": true,
            "secret": false
          },
          "value": 0
        },
        "4-32-0-targetValue": {
          "endpoint": 0,
          "commandClass": 32,
          "commandClassName": "Basic",
          "property": "targetValue",
          "propertyName": "targetValue",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "Target value",
            "min": 0,
            "max": 255,
            "stateful": true,
            "secret": false
          },
          "value": 0
        },
        "4-32-0-duration": {
          "endpoint": 0,
          "commandClass": 32,
          "commandClassName": "Basic",
          "property": "duration",
          "propertyName": "duration",
          "ccVersion": 1,
          "metadata": {
            "type": "duration",
            "readable": true,
            "writeable": false,
            "label": "Remaining duration",
            "stateful": true,
            "secret": false
          }
        },
        "4-32-0-restorePrevious": {
          "endpoint": 0,
          "commandClass": 32,
          "commandClassName": "Basic",
          "property": "restorePrevious",
          "propertyName": "restorePrevious",
          "ccVersion": 1,
          "metadata": {
            "type": "boolean",
            "readable": false,
            "writeable": true,
            "label": "Restore previous value",
            "states": {
              "true": "Restore"
            },
            "stateful": true,
            "secret": false
          }
        },
        "4-114-0-manufacturerId": {
          "endpoint": 0,
          "commandClass": 114,
          "commandClassName": "Manufacturer Specific",
          "property": "manufacturerId",
          "propertyName": "manufacturerId",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Manufacturer ID",
            "min": 0,
            "max": 65535,
            "stateful": true,
            "secret": false
          },
          "value": 8
        },
        "4-114-0-productType": {
          "endpoint": 0,
          "commandClass": 114,
          "commandClassName": "Manufacturer Specific",
          "property": "productType",
          "propertyName": "productType",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Product type",
            "min": 0,
            "max": 65535,
            "stateful": true,
            "secret": false
          },
          "value": 7
        },
        "4-114-0-productId": {
          "endpoint": 0,
          "commandClass": 114,
          "commandClassName": "Manufacturer Specific",
          "property": "productId",
          "propertyName": "productId",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Product ID",
            "min": 0,
            "max": 65535,
            "stateful": true,
            "secret": false
          },
          "value": 32
        },
        "4-134-0-libraryType": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "libraryType",
          "propertyName": "libraryType",
          "ccVersion": 1,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Library type",
            "states": {
              "0": "Unknown",
              "1": "Static Controller",
              "2": "Controller",
              "3": "Enhanced Slave",
              "4": "Slave",
              "5": "Installer",
              "6": "Routing Slave",
              "7": "Bridge Controller",
              "8": "Device under Test",
              "9": "N/A",
              "10": "AV Remote",
              "11": "AV Device"
            },
            "stateful": true,
            "secret": false
          },
          "value": 6
        },
        "4-134-0-protocolVersion": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "protocolVersion",
          "propertyName": "protocolVersion",
          "ccVersion": 1,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "Z-Wave protocol version",
            "stateful": true,
            "secret": false
          },
          "value": "2.78"
        },
        "4-134-0-firmwareVersions": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "firmwareVersions",
          "propertyName": "firmwareVersions",
          "ccVersion": 1,
          "metadata": {
            "type": "string[]",
            "readable": true,
            "writeable": false,
            "label": "Z-Wave chip firmware versions",
            "stateful": true,
            "secret": false
          },
          "value": [
            "0.8"
          ]
        }
      },
      "endpoints": {
        "0": {
          "nodeId": 4,
          "index": 0,
          "deviceClass": {
            "basic": {
              "key": 4,
              "label": "Routing Slave"
            },
            "generic": {
              "key": 8,
              "label": "Thermostat"
            },
            "specific": {
              "key": 6,
              "label": "General Thermostat V2"
            },
            "mandatorySupportedCCs": [
              32,
              114,
              64,
              67,
              134
            ],
            "mandatoryControlledCCs": []
          },
          "commandClasses": [
            {
              "id": 32,
              "name": "Basic",
              "version": 1,
              "isSecure": false
            },
            {
              "id": 114,
              "name": "Manufacturer Specific",
              "version": 1,
              "isSecure": false
            },
            {
              "id": 134,
              "name": "Version",
              "version": 1,
              "isSecure": false
            }
          ]
        }
      }
    }
  }
}

In this current state the device cannot be used in HA. Z-Wave JS is not providing the information necessary to use it. I would do the following:

  1. Turn on driver debug logging (debug level and driver, not application). See https://zwave-js.github.io/zwave-js-ui/#/troubleshooting/generating-logs?id=driver-logs
  2. Re-interview the device. Either this will fix the problem, or you’ll generate logs that can help to fix it.
  3. If after the re-interview see if you now have a climate entity. If you don’t, report a new issue at node-zwave-js.

If you have to submit an issue, you should include the driver log with the re-interview. You could also include the device diagnostic.

The problem is either a failed interview, or the device is old or buggy and doesn’t report it’s capabilities correctly. For the latter case that needs to be fixed by Z-Wave JS in order to be usable in HA. You can see in the OpenHAB database that it supposedly supports the necessary command classes (COMMAND_CLASS_THERMOSTAT_MODE_V3, etc), which are missing from your diagnostic.

Thank you. Created

Looking at the logs, the node reports supporting all these commands:

2024-05-07T16:57:45.094Z CNTRLR « [Node 004] node info received
                                  supported CCs:
                                  · Manufacturer Specific
                                  · Thermostat Mode
                                  · Thermostat Setpoint
                                  · Version
                                  · Multilevel Sensor
                                  · Thermostat Operating State
                                  · Indicator
                                  · Binary Switch

But reports version 0 for each command and driver interprets it as unsupported?

2024-05-07T16:57:45.435Z DRIVER » [Node 004] [REQ] [SendDataBridge]
                                  │ source node id:   1
                                  │ transmit options: 0x25
                                  │ callback id:      7
                                  └─[VersionCCCommandClassGet]
                                      CC: Thermostat Mode
...
2024-05-07T16:57:45.483Z DRIVER « [Node 004] [REQ] [BridgeApplicationCommand]
                                  │ RSSI: -80 dBm
                                  └─[VersionCCCommandClassReport]
                                      CC:      Thermostat Mode
                                      version: 0
2024-05-07T16:57:45.484Z CNTRLR   [Node 004]   does NOT support CC Thermostat Mode (0x40)
1 Like

It already got fixed! Thank you for all your help.

1 Like