diff --git a/config/lovelace/advanced_dashboard/10_system.yaml b/config/lovelace/advanced_dashboard/10_system.yaml index 8496bef..9fdf3c0 100644 --- a/config/lovelace/advanced_dashboard/10_system.yaml +++ b/config/lovelace/advanced_dashboard/10_system.yaml @@ -1,6 +1,6 @@ title: Batteries path: batteries -icon: "mdi:battery-50" +icon: "mdi:z-wave" panel: true cards: - type: custom:mod-card @@ -42,21 +42,27 @@ cards: title: Aqara sensors entities: - type: custom:battery-entity - entity: sensor.front_door_power + entity: sensor.front_door_battery - type: custom:battery-entity entity: sensor.living_room_right_window_power - type: divider - type: custom:battery-entity - entity: sensor.bedroom_door_power + entity: sensor.bedroom_door_battery - type: custom:battery-entity - entity: sensor.bedroom_left_window_power + entity: sensor.bedroom_left_window_battery - type: custom:battery-entity - entity: sensor.bedroom_right_window_power + entity: sensor.bedroom_right_window_battery - type: custom:battery-entity - entity: sensor.bedroom_weather_power + entity: sensor.bedroom_weather_battery - type: divider - type: custom:battery-entity - entity: sensor.kitchen_window_power + entity: sensor.kitchen_window_battery + - type: custom:battery-entity + entity: sensor.kitchen_weather_battery + - type: custom:battery-entity + entity: sensor.bathroom_weather_battery + - type: custom:battery-entity + entity: sensor.hallway_weather_battery - type: custom:battery-entity entity: sensor.motion_1_power - type: custom:battery-entity @@ -65,12 +71,36 @@ cards: title: Aqara Devices entities: - type: custom:battery-entity - entity: sensor.desk_switch_power + entity: sensor.desk_switch_battery - type: custom:battery-entity entity: sensor.master_bedroom_bedside_switch_power - type: custom:battery-entity entity: sensor.bathroom_switch_power - type: custom:battery-entity entity: sensor.cube_power - - + - type: vertical-stack + cards: + - type: entities + title: Zigbee2MQTT link quality + entities: + - sensor.front_door_lqi + - sensor.desk_switch_lqi + - type: divider + - sensor.bedroom_door_lqi + - sensor.bedroom_left_window_lqi + - sensor.bedroom_right_window_lqi + - sensor.bedroom_weather_lqi + - type: divider + - sensor.kitchen_window_lqi + - sensor.kitchen_weather_lqi + - type: divider + - sensor.bathroom_weather_lqi + - sensor.hallway_weather_lqi + - type: custom:vertical-stack-in-card + cards: + - type: entities + entities: + - sensor.zigbee2mqtt_devices_count + - script.zigbee2mqtt_get_device_count + - type: custom:zigbee2mqtt-networkmap + entity: sensor.zigbee2mqtt_networkmap diff --git a/config/lovelace/resources.yaml b/config/lovelace/resources.yaml index 7bc9b12..6de843e 100644 --- a/config/lovelace/resources.yaml +++ b/config/lovelace/resources.yaml @@ -48,6 +48,9 @@ url: /hacsfiles/vertical-stack-in-card/vertical-stack-in-card.js - type: module url: /hacsfiles/weather-card/weather-card.js +- type: module + url: /hacsfiles/zigbee2mqtt-networkmap/zigbee2mqtt-networkmap.js + - type: module url: /hacsfiles/lovelace-folder-card/folder-card.js diff --git a/config/packages/devices/living_room/desk_switch.yaml b/config/packages/devices/living_room/desk_switch.yaml index 6c64cac..2174d92 100644 --- a/config/packages/devices/living_room/desk_switch.yaml +++ b/config/packages/devices/living_room/desk_switch.yaml @@ -1,12 +1,46 @@ +sensor: + - platform: mqtt + name: "Desk switch click" + state_topic: "zigbee2mqtt/desk_switch" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:toggle-switch" + value_template: "{{ value_json.click }}" + - platform: mqtt + name: "Desk switch battery" + state_topic: "zigbee2mqtt/desk_switch" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "battery" + value_template: "{{ value_json.battery }}" + - platform: mqtt + name: "Desk switch action" + state_topic: "zigbee2mqtt/desk_switch" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:gesture-double-tap" + value_template: "{{ value_json.action }}" + - platform: mqtt + name: "Desk switch LQI" + state_topic: "zigbee2mqtt/desk_switch" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:signal" + unit_of_measurement: "lqi" + value_template: "{{ value_json.linkquality }}" + + automation: - alias: Lighting · Living Room · Toggle ceiling lights on desk switch single click trigger: - platform: event - event_type: zha_event - event_data: - device_ieee: !secret desk_switch_ieee - command: single + platform: mqtt + topic: "zigbee2mqtt/desk_switch" + condition: + - condition: state + entity_id: sensor.desk_switch_click + state: 'single' action: + - service: logbook.log + data: + name: "Debug · " + message: "Desk switch single click toggled" - service: light.toggle data_template: entity_id: light.living_room_ceiling @@ -20,11 +54,12 @@ automation: - alias: Lighting · Living Room · Toggle ambient lights on desk switch double click trigger: - platform: event - event_type: zha_event - event_data: - device_ieee: !secret desk_switch_ieee - command: double + platform: mqtt + topic: "zigbee2mqtt/desk_switch" + condition: + - condition: state + entity_id: sensor.desk_switch_click + state: 'double' action: - service: light.toggle data_template: @@ -39,11 +74,9 @@ automation: - alias: Music · Living Room · Play pause on desk switch hold trigger: - platform: event - event_type: zha_event - event_data: - device_ieee: !secret desk_switch_ieee - command: hold + platform: state + entity_id: sensor.desk_switch_action + to: 'hold' action: - service: media_player.media_play_pause entity_id: media_player.living_room diff --git a/config/packages/modules/climate/climate.yaml b/config/packages/modules/climate/climate.yaml index c79579d..a374e63 100644 --- a/config/packages/modules/climate/climate.yaml +++ b/config/packages/modules/climate/climate.yaml @@ -21,20 +21,152 @@ sensor: - sensor.hallway_weather_humidity - sensor.guest_bedroom_weather_humidity -# -# ─── CUSTOMIZATION ────────────────────────────────────────────────────────────── -# -homeassistant: - customize: - sensor.bedroom_weather_power: - friendly_name: Bedroom weather battery +sensor: + # Bedroom weather sensor + - platform: mqtt + name: "Bedroom weather temperature" + state_topic: "zigbee2mqtt/bedroom_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "°C" + device_class: "temperature" + value_template: "{{ value_json.temperature }}" + - platform: mqtt + name: "Bedroom weather humidity" + state_topic: "zigbee2mqtt/bedroom_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "humidity" + value_template: "{{ value_json.humidity }}" + - platform: mqtt + name: "Bedroom weather pressure" + state_topic: "zigbee2mqtt/bedroom_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "hPa" + device_class: "pressure" + value_template: "{{ value_json.pressure }}" + - platform: mqtt + name: "Bedroom weather battery" + state_topic: "zigbee2mqtt/bedroom_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "battery" + value_template: "{{ value_json.battery }}" + - platform: mqtt + name: "Bedroom weather LQI" + state_topic: "zigbee2mqtt/bedroom_weather" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:signal" + unit_of_measurement: "lqi" + value_template: "{{ value_json.linkquality }}" - sensor.bedroom_weather_temperature: - friendly_name: Temperature + # Kitchen weather sensor + - platform: mqtt + name: "Kitchen weather temperature" + state_topic: "zigbee2mqtt/kitchen_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "°C" + device_class: "temperature" + value_template: "{{ value_json.temperature }}" + - platform: mqtt + name: "Kitchen weather humidity" + state_topic: "zigbee2mqtt/kitchen_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "humidity" + value_template: "{{ value_json.humidity }}" + - platform: mqtt + name: "Kitchen weather pressure" + state_topic: "zigbee2mqtt/kitchen_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "hPa" + device_class: "pressure" + value_template: "{{ value_json.pressure }}" + - platform: mqtt + name: "Kitchen weather battery" + state_topic: "zigbee2mqtt/kitchen_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "battery" + value_template: "{{ value_json.battery }}" + - platform: mqtt + name: "Kitchen weather LQI" + state_topic: "zigbee2mqtt/kitchen_weather" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:signal" + unit_of_measurement: "lqi" + value_template: "{{ value_json.linkquality }}" - sensor.bedroom_weather_pressure: - friendly_name: Pressure + # Bathroom weather sensor + - platform: mqtt + name: "Bathroom weather temperature" + state_topic: "zigbee2mqtt/bathroom_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "°C" + device_class: "temperature" + value_template: "{{ value_json.temperature }}" + - platform: mqtt + name: "Bathroom weather humidity" + state_topic: "zigbee2mqtt/bathroom_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "humidity" + value_template: "{{ value_json.humidity }}" + - platform: mqtt + name: "Bathroom weather pressure" + state_topic: "zigbee2mqtt/bathroom_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "hPa" + device_class: "pressure" + value_template: "{{ value_json.pressure }}" + - platform: mqtt + name: "Bathroom weather battery" + state_topic: "zigbee2mqtt/bathroom_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "battery" + value_template: "{{ value_json.battery }}" + - platform: mqtt + name: "Bathroom weather LQI" + state_topic: "zigbee2mqtt/bathroom_weather" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:signal" + unit_of_measurement: "lqi" + value_template: "{{ value_json.linkquality }}" - sensor.bedroom_weather_humidity: - friendly_name: Humidity + # Hallway weather sensor + - platform: mqtt + name: "Hallway weather temperature" + state_topic: "zigbee2mqtt/hallway_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "°C" + device_class: "temperature" + value_template: "{{ value_json.temperature }}" + - platform: mqtt + name: "Hallway weather humidity" + state_topic: "zigbee2mqtt/hallway_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "humidity" + value_template: "{{ value_json.humidity }}" + - platform: mqtt + name: "Hallway weather pressure" + state_topic: "zigbee2mqtt/hallway_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "hPa" + device_class: "pressure" + value_template: "{{ value_json.pressure }}" + - platform: mqtt + name: "Hallway weather battery" + state_topic: "zigbee2mqtt/hallway_weather" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "battery" + value_template: "{{ value_json.battery }}" + - platform: mqtt + name: "Hallway weather LQI" + state_topic: "zigbee2mqtt/hallway_weather" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:signal" + unit_of_measurement: "lqi" + value_template: "{{ value_json.linkquality }}" diff --git a/config/packages/modules/climate/windows.yaml b/config/packages/modules/climate/windows.yaml index e05196a..1af3cf5 100644 --- a/config/packages/modules/climate/windows.yaml +++ b/config/packages/modules/climate/windows.yaml @@ -8,6 +8,34 @@ group: - binary_sensor.kitchen_window binary_sensor: + - platform: mqtt + name: "Bedroom left window" + state_topic: "zigbee2mqtt/bedroom_left_window" + availability_topic: "zigbee2mqtt/bridge/state" + payload_on: false + payload_off: true + value_template: "{{ value_json.contact }}" + device_class: "window" + + - platform: mqtt + name: "Bedroom right window" + state_topic: "zigbee2mqtt/bedroom_right_window" + availability_topic: "zigbee2mqtt/bridge/state" + payload_on: false + payload_off: true + value_template: "{{ value_json.contact }}" + device_class: "window" + + - platform: mqtt + name: "Kitchen window" + state_topic: "zigbee2mqtt/kitchen_window" + availability_topic: "zigbee2mqtt/bridge/state" + payload_on: false + payload_off: true + value_template: "{{ value_json.contact }}" + device_class: "window" + + - platform: template sensors: living_room_right_window: @@ -20,38 +48,55 @@ binary_sensor: {% else %} mdi:window-closed-variant {% endif %} - bedroom_right_window: - friendly_name: Bedroom right window - device_class: window - value_template: "{{ is_state('binary_sensor.bedroom_right_window_on_off', 'on') }}" - entity_id: binary_sensor.bedroom_right_window_on_off - icon_template: > - {% if is_state('binary_sensor.bedroom_right_window_on_off', 'on') %} mdi:window-open-variant - {% else %} mdi:window-closed-variant - {% endif %} - - bedroom_left_window: - friendly_name: Bedroom left window - device_class: window - value_template: "{{ is_state('binary_sensor.bedroom_left_window_raw', 'on') }}" - entity_id: binary_sensor.bedroom_left_window_raw - icon_template: > - {% if is_state('binary_sensor.bedroom_left_window_raw', 'on') %} mdi:window-open-variant - {% else %} mdi:window-closed-variant - {% endif %} - - kitchen_window: - friendly_name: Kitchen window - device_class: window - value_template: "{{ is_state('binary_sensor.kitchen_window_raw', 'on') }}" - entity_id: binary_sensor.kitchen_window_raw - icon_template: > - {% if is_state('binary_sensor.kitchen_window_raw', 'on') %} mdi:window-open-variant - {% else %} mdi:window-closed-variant - {% endif %} - - sensor: + - platform: mqtt + name: "Bedroom left window battery" + state_topic: "zigbee2mqtt/bedroom_left_window" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "battery" + value_template: "{{ value_json.battery }}" + + - platform: mqtt + name: "Bedroom left window LQI" + state_topic: "zigbee2mqtt/bedroom_left_window" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:signal" + unit_of_measurement: "lqi" + value_template: "{{ value_json.linkquality }}" + + - platform: mqtt + name: "Bedroom right window battery" + state_topic: "zigbee2mqtt/bedroom_right_window" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "battery" + value_template: "{{ value_json.battery }}" + + - platform: mqtt + name: "Bedroom right window LQI" + state_topic: "zigbee2mqtt/bedroom_right_window" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:signal" + unit_of_measurement: "lqi" + value_template: "{{ value_json.linkquality }}" + + - platform: mqtt + name: "Kitchen window battery" + state_topic: "zigbee2mqtt/kitchen_window" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "battery" + value_template: "{{ value_json.battery }}" + + - platform: mqtt + name: "Kitchen window LQI" + state_topic: "zigbee2mqtt/kitchen_window" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:signal" + unit_of_measurement: "lqi" + value_template: "{{ value_json.linkquality }}" + - platform: template sensors: open_window_count: @@ -73,11 +118,5 @@ homeassistant: sensor.living_room_right_window_power: friendly_name: Living room window battery - sensor.bedroom_left_window_power: - friendly_name: Bedroom left window battery - - sensor.bedroom_right_window_power: - friendly_name: Bedroom right window battery - sensor.kitchen_window_power: friendly_name: Kitchen window battery diff --git a/config/packages/modules/network.yaml b/config/packages/modules/network.yaml index 7095216..d176df9 100644 --- a/config/packages/modules/network.yaml +++ b/config/packages/modules/network.yaml @@ -109,6 +109,30 @@ binary_sensor: payload_off: "disabled" value_template: '{{ value_json.status }}' +sensor: + - platform: mqtt + name: "Zigbee2MQTT Networkmap" + # if you change base_topic of Zigbee2mqtt, change state_topic accordingly + state_topic: "zigbee2mqtt/bridge/networkmap/raw" + value_template: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}" + # again, if you change base_topic of Zigbee2mqtt, change json_attributes_topic accordingly + json_attributes_topic: zigbee2mqtt/bridge/networkmap/raw + - platform: mqtt + name: "Zigbee2MQTT Devices count" + availability_topic: "zigbee2mqtt/bridge/state" + state_topic: "zigbee2mqtt/bridge/config/devices" + value_template: "{{ value_json | count }}" + icon: "mdi:counter" + +script: + zigbee2mqtt_get_device_count: + alias: "Network · Zigbee2MQTT · Get device count" + icon: "mdi:reload" + sequence: + service: mqtt.publish + data: + topic: "zigbee2mqtt/bridge/config/devices/get" + homeassistant: customize: switch.pihole_temp_disable: diff --git a/config/packages/sensors/doors.yaml b/config/packages/sensors/doors.yaml index f635ed6..c950d33 100644 --- a/config/packages/sensors/doors.yaml +++ b/config/packages/sensors/doors.yaml @@ -1,34 +1,50 @@ +sensor: + - platform: mqtt + name: "Bedroom door battery" + state_topic: "zigbee2mqtt/bedroom_door" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "battery" + value_template: "{{ value_json.battery }}" + + - platform: mqtt + name: "Bedroom door LQI" + state_topic: "zigbee2mqtt/bedroom_door" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:signal" + unit_of_measurement: "lqi" + value_template: "{{ value_json.linkquality }}" + + - platform: mqtt + name: "Front door battery" + state_topic: "zigbee2mqtt/front_door" + availability_topic: "zigbee2mqtt/bridge/state" + unit_of_measurement: "%" + device_class: "battery" + value_template: "{{ value_json.battery }}" + + - platform: mqtt + name: "Front door LQI" + state_topic: "zigbee2mqtt/front_door" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:signal" + unit_of_measurement: "lqi" + value_template: "{{ value_json.linkquality }}" + binary_sensor: - - platform: template - sensors: - front_door: - friendly_name: Front door - device_class: door - value_template: "{{ is_state('binary_sensor.front_door_on_off', 'on') }}" - entity_id: binary_sensor.front_door_on_off - icon_template: > - {% if is_state('binary_sensor.front_door_on_off', 'on') %} mdi:door-open - {% else %} mdi:door-closed - {% endif %} - - bedroom_door: - friendly_name: Bedroom door - device_class: door - value_template: "{{ is_state('binary_sensor.bedroom_door_raw', 'on') }}" - entity_id: binary_sensor.bedroom_door_raw - icon_template: > - {% if is_state('binary_sensor.bedroom_door_raw', 'on') %} mdi:door-open - {% else %} mdi:door-closed - {% endif %} - -# -# ─── CUSTOMIZATION ────────────────────────────────────────────────────────────── -# - -homeassistant: - customize: - sensor.front_door_power: - friendly_name: Front door battery - - sensor.bedroom_door_power: - friendly_name: Bedroom door battery + - platform: mqtt + name: "Bedroom door" + state_topic: "zigbee2mqtt/bedroom_door" + availability_topic: "zigbee2mqtt/bridge/state" + payload_on: false + payload_off: true + value_template: "{{ value_json.contact }}" + device_class: "door" + - platform: mqtt + name: "Front door" + state_topic: "zigbee2mqtt/front_door" + availability_topic: "zigbee2mqtt/bridge/state" + payload_on: false + payload_off: true + value_template: "{{ value_json.contact }}" + device_class: "door"