MarianRychtecky / ha-hardwario

Hardwario USB radio gateway support for Home Assistant
5 stars 4 forks source link

MQTT Discovery #1

Closed jiberan closed 1 year ago

jiberan commented 1 year ago

Hi, did you manage to get MQTT Discovery working?

Thanks

MarianRychtecky commented 1 year ago

Yes, it is working for me. It depends on the naming convention you have used in HA for the particular sensor.

My example Settings - Scripts - Add Script (Single) Call Service - MQTT Publish

Topic: homeassistant/sensor/air-quality-monitor0-co2/monitor1/config Payload: { "name": "CO2 Climate monitor 1", "device_class": "carbon_dioxide", "state_topic": "node/air-quality-monitor:0/co2-meter/-/concentration", "unique_id": "air-quality-monitor0-co2", "unit_of_measurement": "ppm" }

Retain: checked

Repeat for all your monitors in your sensor

You must match state_topic EXACTLY as defined in your HA; unique_id must be unique.

Full dump of my script for Clime XL sensor:

sequence:
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/air-quality-monitor0-co2/monitor1/config
      payload: "  {    \"name\": \"CO2 Climate monitor 1\",    \"device_class\": \"carbon_dioxide\",    \"state_topic\": \"node/air-quality-monitor:0/co2-meter/-/concentration\",    \"unique_id\": \"air-quality-monitor0-co2\",    \"unit_of_measurement\": \"ppm\"   }"
      retain: true
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/air-quality-monitor0-temperature/monitor1/config
      payload: "  {    \"name\": \"Temperature Climate monitor 1\",    \"device_class\": \"temperature\",    \"state_topic\": \"node/air-quality-monitor:0/thermometer/0:1/temperature\",    \"unique_id\": \"air-quality-monitor0-temperature\",    \"unit_of_measurement\": \"°C\"   }"
      retain: true
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/air-quality-monitor0-humidity/monitor1/config
      payload: "  {    \"name\": \"Humidity Climate monitor 1\",    \"device_class\": \"humidity\",    \"state_topic\": \"node/air-quality-monitor:0/hygrometer/0:4/relative-humidity\",    \"unique_id\": \"air-quality-monitor0-humidity\",    \"unit_of_measurement\": \"%\"   }"
      retain: true
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/air-quality-monitor0-pressure/monitor1/config
      payload: "  {    \"name\": \"Air pressure Climate monitor 1\",    \"device_class\": \"pressure\",    \"state_topic\": \"node/air-quality-monitor:0/barometer/0:0/pressure\",    \"unique_id\": \"air-quality-monitor0-air-pressure\",    \"unit_of_measurement\": \"Pa\"   }"
      retain: true
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/air-quality-monitor0-tvoc/monitor1/config
      payload: "  {    \"name\": \"TVOC Climate monitor 1\",    \"device_class\": \"volatile_organic_compounds\",    \"state_topic\": \"node/air-quality-monitor:0/voc-lp-sensor/0:0/tvoc\",    \"unique_id\": \"air-quality-monitor0-tvoc\",    \"unit_of_measurement\": \"ppb\"   }"
      retain: true
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/air-quality-monitor0-voltage/monitor1/config
      payload: " {    \"name\": \"Battery voltage monitor 1\",    \"device_class\": \"voltage\",    \"state_topic\": \"node/air-quality-monitor:0/battery/-/voltage\",    \"unique_id\": \"air-quality-monitor0-voltage\",    \"unit_of_measurement\": \"V\"   }"
      retain: true
mode: single
icon: mdi:monitor-small

And for Clime sensor:

sequence:
  - service: mqtt.publish
    data:
      payload: >-
        {"name": "Altitude monitor 2", "device_class": "altitude",
        "state_topic":
        "node/climate-monitor:0/barometer/0:0/altitude","unique_id":
        "climate-monitor-2-altitude", "unit_of_measurement": "m"}
      topic: homeassistant/sensor/climate-monitor-altitude/monitor2/config
  - service: mqtt.publish
    data:
      payload: >-
        {"name": "Pressure monitor 2",    "device_class": "pressure",
        "state_topic": "node/climate-monitor:0/barometer/0:0/pressure",
        "unique_id": "climate-monitor-2-pressure",    "unit_of_measurement":
        "Pa"}
      topic: homeassistant/sensor/climate-monitor-pressure/monitor2/config
  - service: mqtt.publish
    data:
      payload: >-
        {"name": "Illuminance monitor 2",    "device_class": "illuminance",
        "state_topic": "node/climate-monitor:0/lux-meter/0:0/illuminance",
        "unique_id": "climate-monitor-2-illuminance",    "unit_of_measurement":
        "lx"}
      topic: homeassistant/sensor/climate-monitor-illuminance/monitor2/config
  - service: mqtt.publish
    data:
      payload: >-
        {"name": "Relative humidity monitor 2",    "device_class":"humidity",
        "state_topic":   
        "node/climate-monitor:0/hygrometer/0:4/relative-humidity", "unique_id":
        "climate-monitor-2-humidity",    "unit_of_measurement": "%"}
      topic: homeassistant/sensor/climate-monitor-relative-humidity/monitor2/config
  - service: mqtt.publish
    data:
      payload: >-
        {"name": "Temerature monitor 2",    "device_class":"temperature",
        "state_topic":    "node/climate-monitor:0/thermometer/0:0/temperature",
        "unique_id": "climate-monitor-2-temperature",    "unit_of_measurement":
        "°C"}
      topic: homeassistant/sensor/climate-monitor-temperature/monitor2/config
mode: single
icon: mdi:home-thermometer-outline
jiberan commented 1 year ago

At first, I was thinking that this add-on will send a discovery message on its own based on hardwario nodes.

Now, it makes sense :-) Thank you.

MarianRychtecky commented 1 year ago

That's not possible, unfortunately, because we cannot download paired sensor topic names from the USB receiver. I asked for that support from the vendor.