Files
OpenMQTT-Gateway/docs/integrate/home_assistant.md
T
Stephen Littman 2693f291a8 added room presence yaml to docs (#869)
* added room presence yaml to docs

Found how to set this up in the issues, so I figured I'd add it to the docs because it works great for me
2021-02-13 12:16:12 -06:00

5.3 KiB

Integrate Home Assistant

Auto discovery

Home Assistant discovery is enabled by default on all binaries and platformio configurations except for UNO. With Arduino IDE please read the advanced configuration section of the documentation.

Once done, enable discovery on your MQTT integration definition in HASS.

So as to create the MQTT username and password, you have to create a new user(recommended) into Home Assistant->Configuration->Users (available in admin mode) or use an existing username/pwd combination (not recommended). This user doesn't need to be an administrator.

::: warning Note The max size of the username is 30 and 60 for the password. :::

OMG will use the auto discovery functionality of home assistant to create sensors and gateways into your HASS instance automaticaly.

::: tip The gateway device will be available into Configuration->Devices section of Home Assistant. :::

Manual integration examples

From @123, @finity, @denniz03, @jrockstad, @anarchking

Door sensor

binary_sensor:
  - platform: mqtt
    name: "test"
    state_topic: "home/OpenMQTTGateway/433toMQTT"
    value_template: >-
      {% if value_json.value == '7821834' %}
        {{'ON'}}
      {% elif value_json.value == '7821838' %}
        {{'OFF'}}
      {% else %}
        {{states('binary_sensor.test') | upper}}
      {% endif %}
    qos: 0
    device_class: opening
binary_sensor:
  - platform: mqtt
    name: doorbell
    state_topic: 'home/OpenMQTTGateway/SRFBtoMQTT'
    #value_template: "{{ value_json.raw }}"
    value_template: >- 
      {% if value_json.value == '14163857' %}
        {{'ON'}}
      {% else %}
        {{states('binary_sensor.doorbell') | upper}}
      {% endif %}
    off_delay: 30
    device_class: 'sound'
  - binary_sensor:
    platform: mqtt
    name: light_back_sensor
    state_topic: 'home/OpenMQTTGateway/SRFBtoMQTT'
    #value_template: '{{ value_jason.value }}'
    value_template: >- 
      {% if value_json.value == '1213858' %}
        {{'ON'}}
      {% else %}
        {{states('binary_sensor.light_back_sensor') | upper}}
      {% endif %}
    off_delay: 5
  - binary_sensor:
    platform: mqtt
    name: rf_outlet_sensor
    state_topic: 'home/OpenMQTTGateway/SRFBtoMQTT'
    value_template: >- 
      {% if value_json.value == '16766303' %}
        {{'ON'}}
      {% else %} 
        {{states('binary_sensor.rf_outlet_sensor') | upper}}
      {% endif %}

Motion sensor

binary_sensor:
      - platform: mqtt
        name: "Bewegung_Schlafzimmer"
        #device_class: motion
        state_topic: "home/OpenMQTTGateway1/HCSR501toMQTT"
        value_template: '{{ value_json["presence"] }}'
        payload_on: "true"
        payload_off: "false"

Switches

#switches
switch:
  - platform: mqtt
    name: Plug1
    state_topic: "home/OpenMQTTGateway/SRFBtoMQTT"
    command_topic: "home/OpenMQTTGateway/commands/MQTTtoSRFB"
    value_template: "{{ value_json.value }}"
    payload_on: '{"value":4546575}'
    payload_off: '{"value":4546572}'
    state_on: 4546575
    state_off: 4546572
    qos: "0"
    retain: true

Mijia Thermometer BLE

Sensor:
- platform: mqtt
  state_topic: 'home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA' # MQTT topic, check MQTT messages; replace AA... with id (BLE MAC) of your device
  name: "mijia_thermometer_temperature"
  unit_of_measurement: '°C'
  value_template: '{{ value_json.tem | is_defined }}'
  expire_after: 21600 # 6 hours
- platform: mqtt
  state_topic: 'home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA'
  name: "mijia_thermometer_humidity"
  unit_of_measurement: '%'
  value_template: '{{ value_json.hum | is_defined }}'
  expire_after: 21600 # 6 hours
- platform: mqtt
  state_topic: 'home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA'
  name: "mijia_thermometer_battery"
  unit_of_measurement: '%'
  value_template: '{{ value_json.batt | is_defined }}'
  expire_after: 21600 # 6 hours

Xiaomi Mi Scale V2 BLE (XMTZC05HM)

sensor:
  - platform: mqtt
    name: "Weight"
    state_topic: "home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA" # replace your mqtt topic here
    value_template: '{{ value_json["weight"] }}'
    unit_of_measurement: "kg"
    icon: mdi:weight-kilogram
    
  - platform: mqtt
    name: "Impedance"
    state_topic: "home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA" # replace your mqtt topic here also
    value_template: '{{ value_json["impedance"] }}'
    unit_of_measurement: "Ohm"
    icon: mdi:omega
    
  - platform: template
    sensors:
      body_mass_index:
        friendly_name: 'Body Mass Index'
        value_template: >-
          {% set HEIGHT = (1.76)|float %} # replace your height in meters
          {% set WEIGHT = states('sensor.xmtzc05hm_weight')|float %}
          {{- (WEIGHT/(HEIGHT*HEIGHT))|float|round(1) -}}
        icon_template: >
          {{ 'mdi:human' }}

MQTT Room Presence

sensor:
  - platform: mqtt_room
    device_id: XX:XX:XX:XX:XX:XX   #Mac Address of device wanting to track
    name: you_are_in    # home assistant will show a sensor named (you are in) with its value being the name you gave the gateway
    state_topic: "home/home_presence"
    #timeout:
    #away_timeout: