Honeywell T6 Thermostat with HomeKit

How to configure Homebridge to support thte T6 Thermostat and ZWave

Posted by Greg Stephens on December 02, 2022 · 4 mins read

This post describes how to configure Homebridge with Apple Home to manage the Honeywell T6 ZWave Thermostat.

This is an MQTT based integration. It does not use Home Assistant nor does it require you to connect your Thermostat to the Honeywell Home cloud.

It uses the following components:

Z-Wave JS

Z-Wave JS should be installed and you should have your T6 Thermostat paired with the ZWave stick. The Z-Wave JS UI Control Panel should show your thermostat. When you pair your thermostat, you’ll give it a Name and Location which will be used as the MQTT topic in the events that are sent.

As you make changes on the Thermostat or the control panel, you should confirm that you see MQTT events. MQTT Explorer is a nice MQTT client tool to monitor the events being sent to your MQTT server. Here’s an example event when the thermostat is set to heat:

home/zwave/Living_Room/Thermostat/64/0/mode {"time":1670035751102,"value":1,"nodeName":"Thermostat","nodeLocation":"Living Room"}

MQTT-Thing Configuration for T6

We can now add the configuration to control the Thermostat from Homebridge and Apple Home by adding this configuration to the accessories section of the Homebridge config.

{
    "accessory": "mqttthing",
    "type": "thermostat",
    "name": "Honeywell T6",
    "url": "mqtt://myserver.com:1883",
    "username": "user",
    "password": "password",
    "logMqtt": true,
    "topics": {
        "getCurrentHeatingCoolingState": "home/zwave/Living_Room/Thermostat/66/0/state$.value",
        "getTargetHeatingCoolingState": "home/zwave/Living_Room/Thermostat/64/0/mode$.value",
        "setTargetHeatingCoolingState": {
            "topic": "home/zwave/Living_Room/Thermostat/64/0/mode/set",
            "apply": "return message;"
        },
        "getCurrentTemperature": {
            "topic": "home/zwave/Living_Room/Thermostat/49/0/Air_temperature$.value",
            "apply": "return Math.round( (message - 32) * 0.5556 );"
        },
        "setTargetTemperature": {
            "topic": "home/zwave/Living_Room/Thermostat/67/0/setpoint/1/set",
            "apply": "return Math.round( message * 1.8 + 32 );"
        },
        "getTargetTemperature": {
            "topic": "home/zwave/Living_Room/Thermostat/67/0/setpoint/1$.value",
            "apply": "return Math.round( (message - 32) * 0.5556 );"
        },
        "getCurrentRelativeHumidity": "home/zwave/Living_Room/Thermostat/49/0/Humidity$.value",
        "getBatteryLevel": "home/zwave/Living_Room/Thermostat/128/0/level$.value",
        "getStatusLowBattery": "home/zwave/Living_Room/Thermostat/128/0/isLow$.value"
    },
    "heatingCoolingStateValues": [
        0,
        1,
        2,
        3
    ],
    "restrictHeatingCoolingState": [
        0,
        1,
        3
    ]
},

Thermostat View