HS-WD200+ Integration into HA

Okay, so I’m another Homeseer Refugee looking for a replacement for a trust and venerable software package that has just lost my confidence and lost its way. I’ve been a HS user FOREVER, almost 16 years in total… I know there are probably refugees that have come aboard that are from HS1 or HS2 days, but 16 years might as well be 160 in home automation years.

With Homeseer I had my devices split between two separate Zwave networks (individual Z-NETs) to improve performance. I’ve been able to replicate this to some degree by employing a pair of MeLE 2Q NUCs with with Zooz 700 and Sonoff Zigbee 3.0 dongles as my wireless devices. So far, I’m fairly happy with the performance of things and the flexibility of Zwave JS UI and Zigbee2MQTT.

I have a sizable investment in Homeseer Zwave dimmers, switches and fan controllers. I’ve relied on being able to control the Status LEDs inside of Homeseer of the WD200+ and FC200+ to give visual indicators of different system element statuses throughout the house. Now that I’ve started down the Home Assistant road, the lack of this ability is killing me. The best option I think I’ve found to address this directly is to be able to publish to the correct MQTT topic to trigger the necessary results on the WD/FC200 devices. The issue is I’m a relative neophyte with JSON / YAML structures and have no idea how to publish the topic correctly to achieve my desired result.

If I want to toggle the LEDs from Indicator mode (what is happening on the switch) to Status mode, I need to change the value of the topic below from “value”:0 to “value”:1

zwave/Master_Suite/Fan_Speed/112/0/13

{"time":1679250081405,"value":0}

Now I’m able to make a MQTT publish call but I’m struggling with the format to make this happen correctly.

service: mqtt.publish
data:
  qos: 0
  retain: false
  topic: zwave/nodeID_9/Fan_Speed/112/0/13
  payload: "{\"time\":1679251813705,\"value\":1}"

### NOT SURE WHERE THE '\' ARE COMING FROM IN PAYLOAD, THEY DON'T SHOW THAT WAY IN GUI 

I need to insert a UNIX time stamp in for time: and ideally I’d like the value to be a variable that I can define somewhere else (sensor maybe). Right now, I’d settle for just inserting single values and tackle variables later.

Ideally what I’d like to be able to build a package to allow me to make calls to do this across all the switches, but that is a TOMORROW issue (similar to this implementation that uses Zwave JS but with MQTT)

I don’t understand what you’re asking here. Correct me if I’m wrong you have two problems that you want to solve. You want to control the LEDs of your homeseer switch and you want to control another device that’s on another Z-Wave Network?

Sorry if I was unclear. I have killed my old Z-NET networks from Homeseer and transitioned to Home Assistant (so not trying to talk to another automation platform). I have 2 Zwave JS UI networks running in the house, both connected to a single MQTT broker (Mosquitto Add-On).

I’m not trying to communicate between networks i.e. Zwave to Zwave network. I know this is not possible. I’m using MQTT to collate everything from the 2 Zwave and 2 Zigbee networks I’m running. And then sending / receiving commands from a single Home Assistant OS VM sitting in Proxmox.

What I am trying to do is control the Status LEDs on the HS-WD200+ that I have installed. And since I am using MQTT instead of Zwave JS where I could just call zwave_js.set_config_parameter to set the required elements. I am looking for an MQTT solution to achieve the same result.

After playing with it for a bit I think I have it working in a script. Although it is not pretty. I figured that if I used the ‘set’ command at the end of the MQTT topic it might work and amazingly enough it did without the time: being inserted in the MQTT call.

Basically brute forcing it at the moment by reading what is happening in MQTT Explorer and then basically doing the same in HA. I need to clean it up a lot to make it functional for all the status indicators I was doing, but this gets me 50% there… i.e. my wife knowing that when she looks at the LEDs that the alarm is on.

Any feedback on how to clean up the scripts would be welcome though.

alias: SetStatus - PointeM1 Arming MQTT
sequence:
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Master_Suite/Overhead/112/0/13/set
      payload: "{\"value\":1}"
    alias: Change Master Suite Overhead to LED Status
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Master_Suite/Overhead/112/0/27/set
      payload: "{\"value\":1}"
    alias: Set Master Suite Overhead to LED Red
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Master_Suite/Overhead/112/0/30/set
      payload: "{\"value\":3}"
    alias: Set Master Suite Overhead to LED Blink Speed
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Master_Suite/Overhead/112/0/31/set
      payload: "{\"value\":64}"
    alias: Set Master Suite Overhead to LED Blinking
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Master_Bath/Chadelier/112/0/13/set
      payload: "{\"value\":1}"
    alias: Change Master Bath to LED Status
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Master_Bath/Chadelier/112/0/27/set
      payload: "{\"value\":1}"
    alias: Set Master Bath to LED 7 Red
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Master_Bath/Chadelier/112/0/30/set
      payload: "{\"value\":3}"
    alias: Set Master Bath to LED Blink Speed
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Master_Bath/Chadelier/112/0/31/set
      payload: "{\"value\":64}"
    alias: Set Master Bath Chandelier to LED Blinking
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Foyer/Chandelier/112/0/13/set
      payload: "{\"value\":1}"
    alias: Change Foyer to LED Status
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Foyer/Chandelier/112/0/27/set
      payload: "{\"value\":1}"
    alias: Set Foyer to LED 7 Red
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Foyer/Chandelier/112/0/30/set
      payload: "{\"value\":3}"
    alias: Set Foyer to LED Blink Speed
  - service: mqtt.publish
    data:
      qos: 0
      retain: true
      topic: zwave/Foyer/Chandelier/112/0/31/set
      payload: "{\"value\":64}"
    alias: Set Foyer to LED Blinking
mode: restart
icon: mdi:alarm-light

It is possible to communicate between two Z-Wave networks. The technical term for a device that can do this is called a Bridge Controller. Devices like this have two chips to communicate with each network.

You can control multiple Z-Wave networks from a single Home Assistant Instance using ZWaveJSUI. You simply go into settings then enable the WebSocket Server option. Once that is enabled you can connect multiple ZWave JS Integrations. As you can see I have multiple networks setup. I even have automations setup where devices in my House network can trigger an action in my Garage network. This would be an easier route than using mqtt.