Sending an arbitrary command to a z-wave thing (thermostat)

My thermostat is a Honeywell T6 Pro Z-Wave (TH6320ZW2003)

It supports Z-Wave Command Class Basic V1, not Basic V2

The TH6320ZW2007 version of the T6 Pro does support Basic V2, which it seems would solve my issue. I’d rather not buy a new thermostat if my current one can work.

I want to toggle my current T6 Pro thermostat between “Home” and “Away” modes based of presence detection in OH.

Awhile ago this post had some details about my thermostat

I used this to ask ChatGTP how to send it

It said to look for a channel I cannot find

@chris or @apella12 you seem to have the most expertise, you thoughts would be helpful

code section of thermostat thing

UID: zwave:device:f9f2e9f6c7:node21
label: TH6320ZW T6 Pro Z-Wave Programmable Thermostat
thingTypeUID: zwave:honeywell_th6320zw_00_000
configuration:
  config_41_1: 1
  config_1_1: 1
  config_2_1: 0
  config_11_1: 0
  config_10_1: 0
  config_40_1: 0
  config_28_1: 50
  config_29_1: 90
  config_12_1: 1
  group_1:
    - controller
  node_id: 21
bridgeUID: zwave:serial_zstick:f9f2e9f6c7
channels:
  - id: sensor_temperature
    channelTypeUID: zwave:sensor_temperature
    label: Sensor (temperature)
    description: Indicates the current temperature
    configuration: {}
  - id: sensor_relhumidity
    channelTypeUID: zwave:sensor_relhumidity
    label: Sensor (relative humidity)
    description: Indicates the current relative humidity
    configuration: {}
  - id: thermostat_mode
    channelTypeUID: zwave:honeywell_th6320zw_00_000_thermostat_mode
    label: Thermostat mode
    description: Sets the thermostat mode
    configuration: {}
  - id: thermostat_state
    channelTypeUID: zwave:thermostat_state
    label: Thermostat Operating State
    description: Sets the thermostat operating state
    configuration: {}
  - id: thermostat_setpoint_furnace
    channelTypeUID: zwave:thermostat_setpoint
    label: Setpoint (furnace)
    description: Sets the thermostat setpoint
    configuration: {}
  - id: thermostat_setpoint_heating
    channelTypeUID: zwave:thermostat_setpoint
    label: Setpoint (heating)
    description: Sets the thermostat setpoint
    configuration: {}
  - id: thermostat_setpoint_cooling
    channelTypeUID: zwave:thermostat_setpoint
    label: Setpoint (cooling)
    description: Sets the thermostat setpoint
    configuration: {}
  - id: thermostat_setpoint_dry_air
    channelTypeUID: zwave:thermostat_setpoint
    label: Setpoint (dry air)
    description: Sets the thermostat setpoint
    configuration: {}
  - id: thermostat_fanmode
    channelTypeUID: zwave:honeywell_th6320zw_00_000_thermostat_fanmode
    label: Thermostat fan mode
    description: Sets the thermostat fan mode
    configuration: {}
  - id: thermostat_fanstate
    channelTypeUID: zwave:honeywell_th6320zw_00_000_thermostat_fanstate
    label: Thermostat fan state
    description: Sets the thermostat fan state
    configuration: {}
  - id: config_decimal_param28
    channelTypeUID: zwave:config_decimal
    label: Minimum Cool Setpoint
    description: Generic class for configuration parameter
    configuration: {}
  - id: config_decimal_param29
    channelTypeUID: zwave:config_decimal
    label: Maximum Heat Setpoint
    description: Generic class for configuration parameter
    configuration: {}
  - id: alarm_power
    channelTypeUID: zwave:alarm_power
    label: Alarm (power)
    description: Indicates if a power alarm is triggered
    configuration: {}
  - id: battery-level
    channelTypeUID: system:battery-level
    label: Battery Level
    description: Battery level as a percentage (0-100%)
    configuration: {}
  - id: time_offset
    channelTypeUID: zwave:time_offset
    label: Clock Time Offset
    description: Provides the current time difference for the devices time
    configuration:
      config_offset: 60

It seems like a z-wave database update for the thermostat may expose this?

To my knowledge, you cannot send a random command with the OH ZW binding. A quick look at the manual, it might be possible by changing parameter 1, but that would need to be modified in the ZW DB first (like parameters 28 and 29 already are). I don’t think the chatGPT answer is right, but that would require an additional channel on the basic CC in the ZW DB also. The parameter 1 option is a better bet IMO. BTW, if you use Zwave-js parameter 1 can be manipulated by a rule via MQTT

How can we go about this?
I do not currently see anything on the Open Smart Home website and have never been approved to log in, despite several attempts

33-00347.pdf (90.6 KB)

Page 2 here seems to support enabling Basic would work

Basic V1 (TH6320ZW2003) V2 (TH6320ZW2007) (basic set

command implementation):

• Value 0x00 Device goes to Energy saving setting (AWAY mode)

• Values 0x01-0x63 and 0xFF Device goes to Comfort setting (HOME mode)

The ZW DB blog explains the process

The site had a denial-of-service issue, so a new registration site was setup. After registering open a ticket for write access.

After you have write access, add a channel to the basic CC on the Endpoints page. Then on the overview page “mark for Review”

I seem to have managed to get myself banned.

I initially was able to bring up the hidden registration site.
I tried to create a profile using credentials I had saved in my password manager
It reported that a profile already exists and I should request a password reset via the link
The pw reset page didn’t really respond to the 2 email addresses I have tried and now, except for the blog, Open Smart House refuses connection

Will this ban time out?

No idea. Possibly @chris can clear it?

@apella12 @chris
Would it be a good idea to have 2 versions for the T6 Pro?
TH6320ZW2003
and
TH6320ZW2007

Based on this from the manual, I would say no. The OH ZW binding doesn’t support SmartStart

Model TH6320ZW2007: Same as TH6320ZW2003 but 
TH6320ZW2007 has SmartStart.

The 2007

NOTES

Indicator V3: (TH6320ZW2007)

• The thermostat supports indicator (ID 0x50). To trigger this feature, use your

Z-Wave Gateway identification function.

• When node identification is triggered by the Controller, the thermostat

screen will blink.

Basic V1 (TH6320ZW2003) V2 (TH6320ZW2007) (basic set

command implementation):

• Value 0x00 Device goes to Energy saving setting (AWAY mode)

• Values 0x01-0x63 and 0xFF Device goes to Comfort setting (HOME mode)

Notification V3:

• Notification V3 is enabled by default (Power management alarm handling).

Notification Type: Power Management (0x08). Notification Events: AC mains

disconnected (0x02), AC mains re-connected (0x03).

Security:

• All supported Z-Wave Command classes are supported securely, except

Transport Service V2, Security 2 V1 and Z-Wave Plus Info V2

Association V2:

• Group ID: 1; Maximum Nodes: 1; Description: Z-Wave Plus Lifeline.

• Group 1 notifies an associated device of a change occurring in the

thermostat. The changes include status of the sensors, operating modes,

state of the thermostat, etc.

• Command Classes reported: Multilevel Sensor, Thermostat Setpoint,

Thermostat Mode, Thermostat Fan Mode, Thermostat Operating State,

Thermostat Fan State, Battery, Device Reset, and Notification.

If you have the …2007 you could add it via the OH XML when you get your write access. I’m just anti clutter, but it is a community DB and there is already clutter (IMO). Also note there is already that version, but under a different mfg.

I will reach out to Residio Monday to see if there are any firmware updates available
I’m not hopeful as Residio has told me before to pound sand as the T6 Pro is ONLY supported through a Pro Installer

This is the XML OH generated from my T6 Pro 2003

ZC10-17115832.XML (69.5 KB)

Same old story

It’s been over 36 hours. I know @chris is busy, is there a time frame where my ticket gets approved or denied?

With open source and volunteer SW there are no SLAs.

If you got a ticket open, you must have solved you ZW DB login problem?

Also I noticed that the only basic channel (basic_number) is read only in the binding, so you will probably need to propose to modify that with a PR.

For unsolicited advice :wink: If “Away” is just a different setpoint, that could be accomplished with rules. I don’t have a thermostat with preprogramed schedules, but use rules related to my house mode. (DSL example)

rule "Vacation Setting Cool Main Floor"
when
    Item Downstairs_Mode changed
then
    val mode = Downstairs_Mode.state
    var mainmode = MainThermostat14_ThermostatMode.state as Number
    var mainsetpointnow = (MainThermostat14_SetpointCooling.state as QuantityType<Temperature>).toUnit("°F")
    if( mainmode == 2 && mode == 'Vacation' && mainsetpointnow != 78|°F) {
        Main_Floor_Thermostat_Temperature_Variance.sendCommand(4)
        MainThermostat14_SetpointCooling.sendCommand(78)
    }
    if( mainmode == 2 && mode == 'Normal' && mainsetpointnow != 75|°F) {
        Main_Floor_Thermostat_Temperature_Variance.sendCommand(2)
        MainThermostat14_SetpointCooling.sendCommand(75)
    }
end

Also have my own schedules setup with crons

rule "Go to bed Main Cool"
when
    Time cron "0 0 21 ? * * *"
then
    val mode = Downstairs_Mode.state
    var mainmode = MainThermostat14_ThermostatMode.state as Number
    var mainsetpointnow = (MainThermostat14_SetpointCooling.state as QuantityType<Temperature>).toUnit("°F")
    if( mainmode == 2 && mode != 'Vacation' && mainsetpointnow != 75|°F) {
        MainThermostat14_SetpointCooling.sendCommand(75)
    }
end

I did

The binding itself would need to be updated? not just the ZW DB?

I appreciate that is a valid approach, my goal is that the thermostat is fully functional with schedules and setpoints without needing OH

I believe so, but once you submit the PR Chris might have another idea. It is in the channels.xml, so no java needed.

    <channel-type id="basic_number">
        <item-type>Number</item-type>
        <label>Basic channel as number</label>
        <description>
        </description>
        <state readOnly="true">
        </state>
    </channel-type>

Now that the z-wave database has been updated
I have to wait for a z-wave binding snapshot?

It will be an OH5 snapshot. Could also follow this guide.

If you have a compressed file editor, some folks have been successful editing in the new file. If you do have that option, try to change the readOnly in the channels file. I don’t think you will get a switch on your item linked to that channel (but I could be wrong) XML files can be edited, java files not.