Hite Pro devices

There are a sufficient number of switches from Hite Pro. It just so happens that there are quite a lot of them. I have four-channel relays on the dinreka.

I really want to link them to the Home Assistant/

I use the switch command line. It turns on, but does not confirm the status and the slider moves back. The light remains on at the same time. To turn it off, you need to tap twice, the first time - so that the slider turns on and the second stage transmits the shutdown command.

- platform: command_line
  switches:
    light_nad_rakovinoi:
      command_on: "/usr/bin/curl -X PUT -u 'login:password' http://hitepro.local/rest/devices/65/1"
      command_off: "/usr/bin/curl -X PUT -u 'login:password' http://hitepro.local/rest/devices/65/2"
      command_state: "/usr/bin/curl -X GET -u 'login:password' http://hitepro.local/rest/devices/65/"
      value_template: '{{value == "true"}}'
      friendly_name: Над раковиной

At the request of the status arrives JSON: {“id”:“65”,“status”:false} if state is off, {“id”:“65”,“status”:true} is state is on.

What’s wrong?

You can also use webhooks - the status of all four channels arrives there after changing the status of any of the channels. But in automation I can’t select this switch to change its status. It is not in the list of devices. The reason is probably in this message: “This object (switch.light_nad_rakovinoi) does not have a unique identifier, so its settings cannot be controlled from the user interface.”

Who will tell you how to win?

Managed to integrate hite pro ?
I have a similar situation so I’m looking for information

Hello! I am a dealer of this product and am currently exploring the possibility of expanding integrations.

Currently, I managed to connect a relay via MQTT, designed for integration with WirenBoard.

Unfortunately, not all topics are known yet, but some have already been found. The manufacturer also promised to write documentation for manual integration.

You need to configure a broker in Home Assistant and configure integration with WirenBoard in Gateway, but use the Home Assistant broker instead of the WirenBoard server.

After that, after transferring data from Gateway to the broker, you can see them in MQTT-Explorer.

/homeassistant/configuration.yaml

mqtt: !include hitepro.yaml

/homeassistant/hitepro.yaml

switch:

- unique_id: "Relay-4M_5830B037_1"
  name: "Relay-4M_5830B037_1"
  state_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_1"
  command_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_1/on"
  payload_on: "1"
  payload_off: "0"
  state_on: "1"
  state_off: "0"
  optimistic: false
  qos: 0
  retain: true

- unique_id: "Relay-4M_5830B037_2"
  name: "Relay-4M_5830B037_2"
  state_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_2"
  command_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_2/on"
  payload_on: "1"
  payload_off: "0"
  state_on: "1"
  state_off: "0"
  optimistic: false
  qos: 0
  retain: true

- unique_id: "Relay-4M_5830B037_3"
  name: "Relay-4M_5830B037_3"
  state_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_3"
  command_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_3/on"
  payload_on: "1"
  payload_off: "0"
  state_on: "1"
  state_off: "0"
  optimistic: false
  qos: 0
  retain: true

- unique_id: "Relay-4M_5830B037_4"
  name: "Relay-4M_5830B037_4"
  state_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_4"
  command_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_4/on"
  payload_on: "1"
  payload_off: "0"
  state_on: "1"
  state_off: "0"
  optimistic: false
  qos: 0
  retain: true

light:

- unique_id: "Relay-F2_C49D815E_1"
  name: "Relay-F2_C49D815E_1"
  state_topic: "/devices/hite-pro/controls/Relay-F2_C49D815E_1"
  command_topic: "/devices/hite-pro/controls/Relay-F2_C49D815E_1/on"
  payload_on: "1"
  payload_off: "0"
  #state_on: "1"
  #state_off: "0"
  optimistic: false
  qos: 0
  retain: true

- unique_id: "Relay-F2_C49D815E_2"
  name: "Relay-F2_C49D815E_2"
  state_topic: "/devices/hite-pro/controls/Relay-F2_C49D815E_2"
  command_topic: "/devices/hite-pro/controls/Relay-F2_C49D815E_2/on"
  payload_on: "1"
  payload_off: "0"
  #state_on: "1"
  #state_off: "0"
  optimistic: false
  qos: 0
  retain: true

Managed to add a couple more devices: Relay-RGBW and Smart Motion.

hitepro.yaml

sensor:

- unique_id: "Smart-Motion_9A93A9A9_illumination"
  name: "Smart-Motion_9A93A9A9_illumination"
  state_topic: "/devices/hite-pro/controls/Smart-Motion_9A93A9A9_illumination"
  device_class: "illuminance"
  unit_of_measurement: "%"
  force_update: True
  value_template: "{{ value|regex_replace(find='%', replace='', ignorecase=False) }}"
  qos: "0"

binary_sensor:

- unique_id: "Smart-Motion_9A93A9A9_motion"
  name: "Smart-Motion_9A93A9A9_motion"
  state_topic: "/devices/hite-pro/controls/Smart-Motion_9A93A9A9_motion"
  payload_on: "1"
  payload_off: "0"
  device_class: motion
  qos: 0

Hello!
In configuration i use this


command_line:
  - switch:
      command_on: "curl -u "user:password" -X PUT http://host/rest/devices/16/1"
      command_off: "curl -u "user:password" -X PUT http://host/rest/devices/16/2"
      command_state: "curl -u "user:password" -X GET http://host/rest/devices/16"
      value_template: '{{value_json.status }}'
      unique_id: SwitchLivingRoom
      name: LivingRoom

Hitepro return json like
{"id":16,"status":true}
therefore, you need to access the variable “status”

I use MQTT rather than API because the software is currently changing and the vendor did not recommend using the current API because they do not guarantee future compatibility.

Gateway does not send data to the “status” topic. The broker sees everything the server sends, but I do not yet know all the topics it monitors. I am waiting for documentation from the vendor, which the developers promised me (I have direct contact with them).

1 Like

@Const-NW thanks for the tip with MQTT/Wirenboard! Does switching works fine for you? I’ve discovered all my devices, added them in configuration.yaml but getting strange behavior on toggling one switch at a time. All four channels on Relay begin to flash like a christmass tree generating dozens of MQTT messages (on/off) resulting in unexpected results.

Looks like this:

I don’t see this happening. Show me the config.

Looks like this:

switch:

- unique_id: "HITE_PRO_RELAY_1_1"
  name: "HITE_PRO_RELAY_1_1"
  state_topic: "/devices/hite-pro/controls/Relay-4S_06D2D4B3"
  command_topic: "/devices/hite-pro/controls/Relay-4S_06D2D4B3_1/on"
  payload_on: "1"
  payload_off: "0"
  state_on: "1"
  state_off: "0"
  optimistic: false
  qos: 0
  retain: true

- unique_id: "HITE_PRO_RELAY_1_2"
  name: "HITE_PRO_RELAY_1_2"
  state_topic: "/devices/hite-pro/controls/Relay-4S_06D2D4B3_2"
  command_topic: "/devices/hite-pro/controls/Relay-4S_06D2D4B3_2/on"
  payload_on: "1"
  payload_off: "0"
  state_on: "1"
  state_off: "0"
  optimistic: false
  qos: 0
  retain: true

Also found that after you setup wirenboard integration in mobile app - it gives you a link to config file that includes all information about relays ID’s,names,channel, etc. All in human readable format (JSON).

Everything seems to be the same as mine. Perhaps HA is waiting for changes on the broker too quickly. I also noticed this when I switch it quickly.

Yes, there is a file, but there is no topic information for it, only device names. I don’t have a WirenBoard to check how this file is interpreted. I’m dealing with “Reload” right now.

I think I figured that strange behavior. Firstly I’ve deployed my standalone MQTT broker for HA docker installation. Now I’ve redeployed it to VM as HAOS and a built-in MQTT broker. It seems that after I’ve changed a broker in integration, it still attached to previous broker as well. Bringing down an old broker stopped this thing from happening.

Still after publishing a change state to /on topic - broker shows that all other channels repeatedly updates their current state. I can’t post another screenshot here but it’s about 8 updates on each channel.

Topics format seems to be pretty straightforward. So if you know how the topic looks for a device type you can make a config using data from WirenBoard config without listening topics in MQTT broker and guessing which device which. Of course - if you have everything already labeled on gateway.

For the reload part - not sure what it does and how to trigger it to see in MQTT topics.

The fact of the matter is that there is no information about which topics Gateway listens to yet.

For example, initially I tried to change the value of “/devices/white-pro/controls/Button_10892E17_1”, but it didn’t work.

I contacted the developers, and it coincided with a general failure in MQTT, after they reported that everything was fixed, it didn’t work for me, and in the developer’s screenshot in the WirenBoard magazine, I saw “/devices/hite-pro/controls/Button_10892E17_1/on”.

Then I realized that the commands needed to be set in a different topic and requested information. They promised to write documentation as soon as I have it, I will share it immediately.

I would very appreciate it as is for now it seems a bit of a black box :slight_smile:

Hope they will come up with some discrete documentation on this. Some years ago I ran in to an absence of an API documentation. After I’ve approached them - they sent it to me. So - hope they will come up with it soon :crossed_fingers:

We are currently working very closely with the manufacturer on this and they are very responsive.

We can try to invite them to create a Telegram group to communicate with them directly on these issues. Contact me: Telegram: Contact @KonstantineMalinin

I also figured out how to make objects into devices.

Right now my hitepro.yaml looks like this:

button:

- unique_id: "Reload"
  name: "Reload"
  command_topic: "/devices/hite-pro/controls/Reload/on"
  payload_press: "1"
  device_class: update
  entity_category: "config"
  qos: "0"
  retain: false
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Gateway"
    manufacturer: "HiTE-PRO"
    model: "Gateway"
    name: "Gateway"
    #serial_number: "XXXXXXX"

switch:

- unique_id: "Relay-4M_5830B037_1"
  name: "Relay-4M_5830B037_1"
  state_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_1"
  command_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_1/on"
  payload_on: "1"
  payload_off: "0"
  state_on: "1"
  state_off: "0"
  optimistic: false
  qos: "0"
  retain: true
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Relay-4M_5830B037_1"
    manufacturer: "HiTE-PRO"
    model: "Relay-4M"
    name: "Relay-4M"
    serial_number: "5830B037"

- unique_id: "Relay-4M_5830B037_2"
  name: "Relay-4M_5830B037_2"
  state_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_2"
  command_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_2/on"
  payload_on: "1"
  payload_off: "0"
  state_on: "1"
  state_off: "0"
  optimistic: false
  qos: "0"
  retain: true
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Relay-4M_5830B037_2"
    manufacturer: "HiTE-PRO"
    model: "Relay-4M"
    name: "Relay-4M"
    serial_number: "5830B037"
    
- unique_id: "Relay-4M_5830B037_3"
  name: "Relay-4M_5830B037_3"
  state_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_3"
  command_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_3/on"
  payload_on: "1"
  payload_off: "0"
  state_on: "1"
  state_off: "0"
  optimistic: false
  qos: "0"
  retain: true
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Relay-4M_5830B037_3"
    manufacturer: "HiTE-PRO"
    model: "Relay-4M"
    name: "Relay-4M"
    serial_number: "5830B037"

- unique_id: "Relay-4M_5830B037_4"
  name: "Relay-4M_5830B037_4"
  state_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_4"
  command_topic: "/devices/hite-pro/controls/Relay-4M_5830B037_4/on"
  payload_on: "1"
  payload_off: "0"
  state_on: "1"
  state_off: "0"
  optimistic: false
  qos: "0"
  retain: true
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Relay-4M_5830B037_4"
    manufacturer: "HiTE-PRO"
    model: "Relay-4M"
    name: "Relay-4M"
    serial_number: "5830B037"
  
- unique_id: "Relay-1_20B0FD98_1"
  name: "Relay-1_20B0FD98_1"
  state_topic: "/devices/hite-pro/controls/Relay-1_20B0FD98_1"
  command_topic: "/devices/hite-pro/controls/Relay-1_20B0FD98_1/on"
  payload_on: "1"
  payload_off: "0"
  state_on: "1"
  state_off: "0"
  optimistic: false
  qos: "0"
  retain: true
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Relay-1_20B0FD98_1"
    manufacturer: "HiTE-PRO"
    model: "Relay-1"
    name: "Relay-1"
    serial_number: "20B0FD98"

light:

- unique_id: "Relay-F2_C49D815E_1"
  name: "Relay-F2_C49D815E_1"
  state_topic: "/devices/hite-pro/controls/Relay-F2_C49D815E_1"
  command_topic: "/devices/hite-pro/controls/Relay-F2_C49D815E_1/on"
  payload_on: 1
  payload_off: "0"
  optimistic: false
  qos: "0"
  retain: true
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Relay-F2_C49D815E_1"
    manufacturer: "HiTE-PRO"
    model: "Relay-F2"
    name: "Relay-F2"
    serial_number: "C49D815E"

- unique_id: "Relay-F2_C49D815E_2"
  name: "Relay-F2_C49D815E_2"
  state_topic: "/devices/hite-pro/controls/Relay-F2_C49D815E_2"
  command_topic: "/devices/hite-pro/controls/Relay-F2_C49D815E_2/on"
  payload_on: "1"
  payload_off: "0"
  optimistic: false
  qos: "0"
  retain: true
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Relay-F2_C49D815E_2"
    manufacturer: "HiTE-PRO"
    model: "Relay-F2"
    name: "Relay-F2"
    serial_number: "C49D815E"

sensor:

- unique_id: "Smart-Motion_9A93A9A9_illumination"
  name: "Smart-Motion_9A93A9A9_illumination"
  state_topic: "/devices/hite-pro/controls/Smart-Motion_9A93A9A9_illumination"
  device_class: "illuminance"
  unit_of_measurement: "%"
  force_update: True
  value_template: "{{ value|regex_replace(find='%', replace='', ignorecase=False) }}"
  qos: "0"
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Smart-Motion_9A93A9A9_illumination"
    manufacturer: "HiTE-PRO"
    model: "Smart-Motion"
    name: "Smart-Motion"
    serial_number: "9A93A9A9"

binary_sensor:

- unique_id: "Smart-Motion_9A93A9A9_motion"
  name: "Smart-Motion_9A93A9A9_motion"
  state_topic: "/devices/hite-pro/controls/Smart-Motion_9A93A9A9_motion"
  payload_on: "1"
  payload_off: "0"
  device_class: motion
  qos: "0"
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Smart-Motion_9A93A9A9_motion"
    manufacturer: "HiTE-PRO"
    model: "Smart-Motion"
    name: "Smart-Motion"
    serial_number: "9A93A9A9"

I did everything that is available without the help of the manufacturer’s developers. RGBW does not work as it should, misunderstands the color, and also does not adjust the brightness.

hitepro.yaml

1 Like

New configuration for SmartMotion with battery state:


- unique_id: "Smart-Motion_9A93A9A9_illumination"
  name: "Освещенность"
  state_topic: "/devices/hite-pro/controls/Smart-Motion_9A93A9A9_illumination"
  device_class: "illuminance"
  unit_of_measurement: "%"
  force_update: True
  value_template: "{{ value|regex_replace(find='%', replace='', ignorecase=False) }}"
  qos: "0"
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Smart-Motion_9A93A9A9"
    manufacturer: "HiTE-PRO"
    model: "Smart-Motion"
    name: "Smart-Motion"
    serial_number: "9A93A9A9"

- unique_id: "Smart-Motion_9A93A9A9_illumination_battery"
  name: "Напряжение"
  state_topic: "/devices/hite-pro/controls/Smart-Motion_9A93A9A9_illumination_battery"
  device_class: "voltage"
  unit_of_measurement: "V"
  force_update: True
  qos: "0"
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Smart-Motion_9A93A9A9"
    manufacturer: "HiTE-PRO"
    model: "Smart-Motion"
    name: "Smart-Motion"
    serial_number: "9A93A9A9"

- unique_id: "Smart-Motion_9A93A9A9_motion_battery_percent"
  name: "Батарея"
  state_topic: "/devices/hite-pro/controls/Smart-Motion_9A93A9A9_motion_battery"
  device_class: "battery"
  unit_of_measurement: "%"
  value_template: >
    {% set voltage = value | float %}
    {% set minValue = 2.6 %}
    {% set maxValue = 3.0 %}
    {% if voltage > maxValue %}
      {{ 100.0 }}
    {% elif voltage < minValue %}
      {{ 0 }}
    {% else %}
      {{ ((voltage - minValue ) / (maxValue - minValue) * 100) | round(1) }}
    {% endif %}
  force_update: True
  qos: "0"
  device:
    configuration_url: "http://hitepro.local/"
    identifiers: "Smart-Motion_9A93A9A9"
    manufacturer: "HiTE-PRO"
    model: "Smart-Motion"
    name: "Smart-Motion"
    serial_number: "9A93A9A9"