The last step is to tell Home Assistant how to interact with our new MQTT devices. Even though we only used one microcontroller, the HUZZAH Feather, the MQTT feeds will allow us to separate out control over all of our devices and sensors. Thankfully Home Assistant has an extensive lineup of different device types formatted for MQTT. There is one for an MQTT Lock, MQTT Binary Sensor, and even a special one for MQTT RGB Lights. Templates exist for all of these and unless you changed any of the Arduino code in the HuzzahCrickitIOT.ino file relating to the Feed names, you can just use the code below.

You will want to copy the following code and use it to replace all of the code in the configuration.yaml file using the Home Assistant Configurator tool.

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
# http:
#   base_url: example.duckdns.org:8123

# Text to speech
tts:
  - platform: google_translate

sensor:
  # Weather prediction
  - platform: yr
  - platform: mqtt
    name: "Light Sensor"
    state_topic: "house/lux"
    unit_of_measurement: 'Lux'
    icon: mdi:brightness-6
  - platform: mqtt
    name: "Door Sensor"
    state_topic: "house/door"
    icon: mdi:door
  - platform: mqtt
    name: "Motion Sensor"
    state_topic: "house/motion"
    icon: mdi:motion-sensor
  
fan:
  - platform: mqtt
    name: "Fan"
    state_topic: "house/fan"
    command_topic: "house/fan"
    speed_state_topic: "house/fan/speed"
    speed_command_topic: "house/fan/speed"
    qos: 0
    payload_on: "ON"
    payload_off: "OFF"
    payload_low_speed: "low"
    payload_medium_speed: "medium"
    payload_high_speed: "high"
    speeds:
      - low
      - medium
      - high
 
light:
  - platform: group
    name: All Lights
    entities:
      - light.light_1
      - light.light_2
      - light.light_3
      - light.light_4
      - light.light_5
  - platform: mqtt
    name: "Light 1"
    state_topic: "house/led/one"
    command_topic: "house/led/one"
    brightness_state_topic: "house/led/one/brightness"
    brightness_command_topic: "house/led/one/brightness"
    rgb_state_topic: "house/led/one/color"
    rgb_command_topic: "house/led/one/color"
    on_command_type: first
    state_value_template: "{{ value_json.state }}"
    brightness_value_template: "{{ value_json.brightness }}"
    rgb_value_template: "{{ value_json.rgb | join(',') }}"
    qos: 0
    payload_on: "ON"
    payload_off: "OFF"
    optimistic: false
  - platform: mqtt
    name: "Light 2"
    state_topic: "house/led/two"
    command_topic: "house/led/two"
    brightness_state_topic: "house/led/two/brightness"
    brightness_command_topic: "house/led/two/brightness"
    rgb_state_topic: "house/led/two/color"
    rgb_command_topic: "house/led/two/color"
    on_command_type: first
    state_value_template: "{{ value_json.state }}"
    brightness_value_template: "{{ value_json.brightness }}"
    rgb_value_template: "{{ value_json.rgb | join(',') }}"
    qos: 0
    payload_on: "ON"
    payload_off: "OFF"
    optimistic: false
  - platform: mqtt
    name: "Light 3"
    state_topic: "house/led/three"
    command_topic: "house/led/three"
    brightness_state_topic: "house/led/three/brightness"
    brightness_command_topic: "house/led/three/brightness"
    rgb_state_topic: "house/led/three/color"
    rgb_command_topic: "house/led/three/color"
    on_command_type: first
    state_value_template: "{{ value_json.state }}"
    brightness_value_template: "{{ value_json.brightness }}"
    rgb_value_template: "{{ value_json.rgb | join(',') }}"
    qos: 0
    payload_on: "ON"
    payload_off: "OFF"
    optimistic: false
  - platform: mqtt
    name: "Light 4"
    state_topic: "house/led/four"
    command_topic: "house/led/four"
    brightness_state_topic: "house/led/four/brightness"
    brightness_command_topic: "house/led/four/brightness"
    rgb_state_topic: "house/led/four/color"
    rgb_command_topic: "house/led/four/color"
    on_command_type: first
    state_value_template: "{{ value_json.state }}"
    brightness_value_template: "{{ value_json.brightness }}"
    rgb_value_template: "{{ value_json.rgb | join(',') }}"
    qos: 0
    payload_on: "ON"
    payload_off: "OFF"
    optimistic: false
  - platform: mqtt
    name: "Light 5"
    state_topic: "house/led/five"
    command_topic: "house/led/five"
    brightness_state_topic: "house/led/five/brightness"
    brightness_command_topic: "house/led/five/brightness"
    rgb_state_topic: "house/led/five/color"
    rgb_command_topic: "house/led/five/color"
    on_command_type: first
    state_value_template: "{{ value_json.state }}"
    brightness_value_template: "{{ value_json.brightness }}"
    rgb_value_template: "{{ value_json.rgb | join(',') }}"
    qos: 0
    payload_on: "ON"
    payload_off: "OFF"
    optimistic: false
 
lock:
  - platform: mqtt
    name: Frontdoor
    state_topic: "house/lock"
    command_topic: "house/lock"
    payload_lock: "LOCK"
    payload_unlock: "UNLOCK"
    optimistic: true
    qos: 1
    #retain: true
    value_template: '{{ value.x }}'

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml

If there are no code errors, restart Home Assistant using the Server Control from the Configuration menu to update with these new devices.

This guide was first published on Oct 02, 2019. It was last updated on Mar 18, 2024.

This page (YAML Code) was last updated on Mar 08, 2024.

Text editor powered by tinymce.