216 lines
6.8 KiB
YAML
216 lines
6.8 KiB
YAML
---
|
|
|
|
input_boolean:
|
|
guest_mode:
|
|
name: guest_mode
|
|
icon: mdi:account
|
|
guest_mode_bedroom:
|
|
name: guest_mode_bedroom
|
|
icon: mdi:account
|
|
|
|
sensor:
|
|
- name: esphome_ble_tracker_rasi_max
|
|
platform: statistics
|
|
entity_id: sensor.esphome_ble_tracker_rasi
|
|
state_characteristic: value_max
|
|
max_age:
|
|
minutes: 5
|
|
|
|
template:
|
|
- binary_sensor:
|
|
- name: door_entrance
|
|
device_class: door
|
|
icon: |
|
|
{% if is_state(this.entity_id, "on") %}
|
|
mdi:door-open
|
|
{% else %}
|
|
mdi:door-closed
|
|
{% endif %}
|
|
availability: >-
|
|
{{
|
|
has_value("binary_sensor.door_hallway_entrance_1")
|
|
or has_value("binary_sensor.door_hallway_entrance_2")
|
|
}}
|
|
state: >-
|
|
{# off == closed #}
|
|
{% set open1 = is_state("binary_sensor.door_hallway_entrance_1", "on") %}
|
|
{% set open2 = is_state("binary_sensor.door_hallway_entrance_2", "on") %}
|
|
{{
|
|
open1 or open2
|
|
}}
|
|
attributes:
|
|
door_hallway_entrance_1: ABUS, left side.
|
|
door_hallway_entrance_2: Eurotronic, on top of door, same corner.
|
|
|
|
- sensor:
|
|
- name: esphome_ble_tracker_rasi
|
|
unit_of_measurement: dBm
|
|
device_class: signal_strength
|
|
state_class: measurement
|
|
availability: >-
|
|
{{
|
|
has_value("sensor.esphome_bleproxy_json_ble_scanner")
|
|
and not is_state("sensor.esphome_bleproxy_json_ble_scanner", "unknown")
|
|
}}
|
|
state: >-
|
|
{% set s = states("sensor.esphome_bleproxy_json_ble_scanner") %}
|
|
{% if s.startswith("{") and s.endswith("}") and '":"' in s %}
|
|
{% set j = s | from_json %}
|
|
{% if is_number(j.rssi) %}
|
|
{{ j.rssi|int }}
|
|
{% else %}
|
|
{{ states("sensor.esphome_ble_tracker_rasi") or -100 }}
|
|
{% endif %}
|
|
{% else %}
|
|
{{ states("sensor.esphome_ble_tracker_rasi") or -100 }}
|
|
{% endif %}
|
|
# attributes:
|
|
# {{ states("sensor.esphome_bleproxy_json_ble_scanner") }}
|
|
|
|
- name: esphome_ble_tracker_rasi_signal
|
|
unit_of_measurement: "%"
|
|
state_class: measurement
|
|
device_class: "power_factor"
|
|
availability: >-
|
|
{{
|
|
has_value("sensor.esphome_ble_tracker_rasi_max")
|
|
and is_number(states("sensor.esphome_ble_tracker_rasi_max"))
|
|
}}
|
|
state: >-
|
|
{% set rssi_max = states("sensor.esphome_ble_tracker_rasi_max") | round(0) %}
|
|
{{ min(max(2 * (rssi_max + 100.0), 0.0) | round(1), 100.0) | round(0) }}
|
|
|
|
- name: esphome_ble_tracker_namei
|
|
unique_id: esphome_ble_tracker_namei
|
|
state: >-
|
|
{% set s = states("sensor.esphome_bleproxy_json_ble_scanner") %}
|
|
{% set last = states("sensor.esphome_ble_tracker_namei") or "" %}
|
|
{% if s.startswith("{") and s.endswith("}") and '":"' in s %}
|
|
{% set j = s|from_json %}
|
|
{{ j.name|default(last) }}
|
|
{% else %}
|
|
{{ last }}
|
|
{% endif %}
|
|
|
|
#- name: battery_level_phone_ben
|
|
# availability: >-
|
|
# {{
|
|
# states('sensor.companion_battery_level_phone_ben') is defined
|
|
# and is_number(states('sensor.companion_battery_level_phone_ben'))
|
|
# }}
|
|
# device_class: "battery"
|
|
# unit_of_measurement: "%"
|
|
# state_class: measurement
|
|
# state: >-
|
|
# {{ states('sensor.companion_battery_level_phone_ben') | round(0) | int }}
|
|
|
|
|
|
- binary_sensor:
|
|
#- name: esphome_ble_headset
|
|
# device_class: connectivity
|
|
# delay_off: "00:30:00"
|
|
# icon: |
|
|
# {% if is_state(this.entity_id, "on") %}
|
|
# mdi:headset
|
|
# {% else %}
|
|
# mdi:headset-off
|
|
# {% endif %}
|
|
# state: >-
|
|
# {% set s = states("sensor.esphome_bleproxy_json_ble_scanner") %}
|
|
# {% if s.startswith("{") and s.endswith("}") and '":"' in s %}
|
|
# {% set j = s | from_json %}
|
|
# {% set n = j.name | default("") | string %}
|
|
# {% set a = j.address | default("") | string %}
|
|
# {{
|
|
# "OpenComm2" in n
|
|
# or "OpenComm2" in s
|
|
# or j.address == "C0:86:B3:90:82:3E"
|
|
# or j.address == "5B:C6:F0:EC:32:8B"
|
|
# }}
|
|
# {% else %}
|
|
# false
|
|
# {% endif %}
|
|
# attributes:
|
|
# delay_off: 30m
|
|
|
|
- name: zwave_traffic_high
|
|
device_class: problem
|
|
availability: >-
|
|
{{ is_number(states("sensor.ok_rx_per_min_controller")) }}
|
|
state: >-
|
|
{% set rx_rate = states("sensor.ok_rx_per_min_controller") %}
|
|
{{ rx_rate|float > 4 }}
|
|
|
|
- name: home_problems_need_attention
|
|
device_class: problem
|
|
availability: >-
|
|
{{ state_attr(this.entity_id, "problems") is defined }}
|
|
state: >-
|
|
{% set p = state_attr(this.entity_id, "problems") or [] %}
|
|
{{ p | length > 0 }}
|
|
attributes:
|
|
# "binary_sensor.mold_livingroom"
|
|
problems: >-
|
|
{% set entity_ids = [
|
|
"binary_sensor.smoke_hallway",
|
|
"binary_sensor.smoke_bedroom",
|
|
"binary_sensor.door_left_open",
|
|
"binary_sensor.dead_smoke_detectors",
|
|
] %}
|
|
{% set private_entity_ids = state_attr("private_problems", "entity_ids") or [] %}
|
|
{% set l = entity_ids + private_entity_ids|list %}
|
|
{{ l | reject("is_state", "off") | list }}
|
|
|
|
- name: home_guest_mode
|
|
icon: >-
|
|
{% if is_state(this.entity_id, 'off') or false %}
|
|
mdi:account-circle-outline
|
|
{% else %}
|
|
mdi:account-circle
|
|
{% endif %}
|
|
availability: >-
|
|
{{ state_attr("sensor.home", "guests_home") is defined }}
|
|
state: >-
|
|
{{ is_state_attr("sensor.home", "guests_home", true) }}
|
|
attributes:
|
|
source_entity_id: "sensor.home"
|
|
|
|
|
|
homeassistant:
|
|
customize:
|
|
|
|
binary_sensor.door_entrance:
|
|
friendly_name: "Entrance door"
|
|
templated: true
|
|
package: "home"
|
|
|
|
#sensor.battery_level_phone_ben:
|
|
# friendly_name: "Battery level"
|
|
# templated: true
|
|
# package: "home"
|
|
binary_sensor.zwave_traffic_high:
|
|
friendly_name: "Z-Wave traffic"
|
|
templated: true
|
|
package: "home"
|
|
|
|
binary_sensor.home_problems_need_attention:
|
|
friendly_name: "Problems need attention"
|
|
comment: work in progress
|
|
templated: true
|
|
package: "home"
|
|
|
|
binary_sensor.home_guest_mode:
|
|
friendly_name: "Guest mode"
|
|
templated: true
|
|
package: "home"
|
|
|
|
# input bools for guest_mode
|
|
input_boolean.guest_mode:
|
|
friendly_name: "Guest mode (manual set)"
|
|
templated: true
|
|
package: "home"
|
|
input_boolean.guest_mode_bedroom:
|
|
friendly_name: "Bedroom occupied by a guest"
|
|
templated: true
|
|
package: "home"
|