Rather large security update, might have finally cracked this #83

This commit is contained in:
2023-11-18 23:10:29 -05:00
parent aab01b46f4
commit 534fb68055
5 changed files with 126 additions and 60 deletions

View File

@ -1429,10 +1429,12 @@
data:
title: Lockdown Issue
notification_id: lockdown_issue
message: '{% set extdoors = expand(''binary_sensor.exterior_doors'') | selectattr(''state'',''eq'',''on'')
| map(attribute=''name'') | list | join('', '') %} {% set windows = expand(''binary_sensor.windows'')
message: 'I fucked up this notification, will fix later, but you still gotta
issue, okbyeeeee {% set extdoors = expand(''binary_sensor.exterior_doors'')
| selectattr(''state'',''eq'',''on'') | map(attribute=''name'') | list | join('',
'') %} A lockdown issue has been caused by the following sensors:
'') %} {% set windows = expand(''binary_sensor.windows'') | selectattr(''state'',''eq'',''on'')
| map(attribute=''name'') | list | join('', '') %} A lockdown issue has been
caused by the following sensors:
Doors:{% if is_state(''binary_sensor.exterior_doors'',''on'') %} {{ extdoors
}} {% else %} None {% endif %} Windows:{% if is_state(''binary_sensor.windows'',''on'')
@ -1444,10 +1446,12 @@
%}\n tony\n{% else %}\n parents\n{% endif %}"
title: Security Not Armed!
tag: lockdown-issue
message: '{% set extdoors = expand(''binary_sensor.exterior_doors'') | selectattr(''state'',''eq'',''on'')
| map(attribute=''name'') | list | join('', '') %} {% set windows = expand(''binary_sensor.windows'')
message: 'I fucked up this notification, will fix later, but you still gotta
issue, okbyeeeee {% set extdoors = expand(''binary_sensor.exterior_doors'')
| selectattr(''state'',''eq'',''on'') | map(attribute=''name'') | list | join('',
'') %} A lockdown issue has been caused by the following sensors:
'') %} {% set windows = expand(''binary_sensor.windows'') | selectattr(''state'',''eq'',''on'')
| map(attribute=''name'') | list | join('', '') %} A lockdown issue has been
caused by the following sensors:
Doors:{% if is_state(''binary_sensor.exterior_doors'',''on'') %} {{ extdoors
}} {% else %} None {% endif %} Windows:{% if is_state(''binary_sensor.windows'',''on'')

View File

@ -123,6 +123,7 @@ recorder:
- sensor.mariadb_database_size
- sensor.internet_time
- sensor.random_joke
- sensor.bypassed_sensors
include:
entities:
- media_player.living_room_tv
@ -246,6 +247,7 @@ influxdb:
- sensor.mosquitto*
- sensor.*illuminance
- sensor.*temp_change
- sensor.*_faults
entities:
- media_player.living_room_tv
- media_player.basement_tv
@ -295,6 +297,7 @@ influxdb:
- sensor.aircons_running
- sensor.fans_running
- sensor.climate_devices_running
- sensor.bypassed_sensors
logbook:
include:
@ -399,6 +402,7 @@ prometheus:
- sensor.mosquitto*
- sensor.*illuminance
- sensor.*temp_change
- sensor.*_faults
include_entities:
- media_player.living_room_tv
- media_player.basement_tv
@ -448,3 +452,4 @@ prometheus:
- sensor.aircons_running
- sensor.fans_running
- sensor.climate_devices_running
- sensor.bypassed_sensors

View File

@ -66,10 +66,10 @@
{% macro airLeaks(type,method) %}
{% set windows = states('sensor.windows_open') %}
{% set doors = states('sensor.doors_open') %}
{% if states('sensor.total_faults') > '0' %}
{% if states('sensor.air_leaks') > '0' %}
{% if method == 'tts' %}
{% if type == 'full' %}
{% if states('sensor.total_faults') > '0' %}
{% if states('sensor.air_leaks') > '0' %}
"Additionally, "
{% if windows > '0' and doors > '0' %}
"There are currently {{ states('sensor.windows_open') }} {% if windows == '1' %}window {% else %}windows {% endif %}and {{ states('sensor.doors_open') }} {% if doors == '1' %}door {% else %}doors {% endif %}open. "

View File

@ -148,30 +148,97 @@ template:
map(attribute='attributes.friendly_name') |
list %}
{{ windows_open }}
- name: Security Faults
unique_id: fe4e7867-6abb-43c5-adde-67971b64cc08
device_class: problem
state: >
{% set faults = states('sensor.total_faults') | int %}
{{ faults > 0 }}
- sensor:
- name: "Bypassed Sensors"
unique_id: 612f1314-494b-40f8-8c20-d5310aa17ab4
state: >-
{{ states.select |
selectattr('state','in',['Faulted','Always']) |
map(attribute='entity_id') |
map('device_id') |
list }}
- name: "Window Faults"
unique_id: 79b8ffe8-3f7c-4d4e-9809-b2023da1d497
unit_of_measurement: 'faults'
state: >-
{% set bypass = states('sensor.bypassed_sensors') %}
{% set window_sensors = states.binary_sensor |
selectattr('attributes.device_class','eq','window') |
selectattr('attributes.entity_id','eq',null) |
rejectattr('entity_id','search','windows') |
list %}
{% set windows_open = window_sensors |
selectattr('state','eq','on') |
map(attribute='entity_id') |
map('device_id') |
list %}
{% set id = namespace(devices=[]) %}
{% for device_id in windows_open %}
{% if device_id in bypass %}
{% set id.devices = id.devices + [device_id] %}
{% endif %}
{% endfor %}
{% set window_faults = windows_open |
reject('in',id.devices) |
list |
count %}
{{ window_faults }}
icon: >-
{% if states('sensor.window_faults') | int > 0 %}
mdi:window-open
{% else %}
mdi:window-closed
{% endif %}
- name: "Door Faults"
unique_id: 22421a5a-e650-409d-8ec7-53ca06ca8c0c
unit_of_measurement: faults
state: >-
{% set bypass = states('sensor.bypassed_sensors') %}
{% set door_sensors = states.binary_sensor |
selectattr('attributes.device_class','eq','door') |
selectattr('attributes.entity_id','eq',null) |
rejectattr('entity_id','search','doors') |
list %}
{% set doors_open = door_sensors |
selectattr('state','eq','on') |
map(attribute='entity_id') |
map('device_id') |
list %}
{% set id = namespace(devices=[]) %}
{% for device_id in doors_open %}
{% if device_id in bypass %}
{% set id.devices = id.devices + [device_id] %}
{% endif %}
{% endfor %}
{% set door_faults = doors_open |
reject('in',id.devices) |
list |
count %}
{{ door_faults }}
icon: >-
{% if states('sensor.door_faults') | int > 0 %}
mdi:door-open
{% else %}
mdi:door-closed
{% endif %}
- name: "Windows Open"
unique_id: 780770d2-8b5a-4c96-aee4-459281cc3471
unit_of_measurement: 'open'
state: >-
{% set windows = [
states.binary_sensor.front_window_1,
states.binary_sensor.front_window_2,
states.binary_sensor.kitchen_big_window,
states.binary_sensor.mud_room_window,
states.binary_sensor.stairway_window_lower,
] %}
{% set windows = states.binary_sensor |
selectattr('attributes.device_class','eq','window') |
selectattr('attributes.entity_id','eq',null) |
rejectattr('entity_id','search','windows') %}
{% set windows_open = windows | selectattr('state','eq','on') | list | count %}
{{ windows_open }}
icon: >-
{% set windows = [
states.binary_sensor.front_window_1,
states.binary_sensor.front_window_2,
states.binary_sensor.kitchen_big_window,
states.binary_sensor.mud_room_window,
states.binary_sensor.stairway_window_lower,
] %}
{% set windows_open = windows | selectattr('state','eq','on') | list | count %}
{% if windows_open == 0 %}
{% if states('sensor.windows_open') | int == 0 %}
mdi:window-closed
{% else %}
mdi:window-open
@ -187,12 +254,7 @@ template:
{% set windows_open = windows | selectattr('state','eq','on') | list | count %}
{{ windows_open }}
icon: >-
{% set windows = [
states.binary_sensor.front_window_1,
states.binary_sensor.front_window_2
] %}
{% set windows_open = windows | selectattr('state','eq','on') | list | count %}
{% if windows_open == 0 %}
{% if states('sensor.front_windows_open') | int == 0 %}
mdi:window-closed
{% else %}
mdi:window-open
@ -209,13 +271,7 @@ template:
list | count %}
{{ windows_open }}
icon: >
{% set windows_open = states.binary_sensor |
selectattr('entity_id','in',area_entities('living_room')) |
selectattr('attributes.device_class','eq','window') |
selectattr('state','eq','on') |
map(attribute='entity_id') |
list | count %}
{% if windows_open == 0 %}
{% if states('sensor.living_room_windows_open') | int == 0 %}
mdi:window-closed
{% else %}
mdi:window-open
@ -231,12 +287,7 @@ template:
{% set doors_open = doors | selectattr('state','eq','on') | list | count %}
{{ doors_open }}
icon: >-
{% set doors = [
states.binary_sensor.front_door,
states.binary_sensor.back_door,
] %}
{% set doors_open = doors | selectattr('state','eq','on') | list | count %}
{% if doors_open == 0 %}
{% if states('sensor.doors_open') | int == 0 %}
mdi:door-closed
{% else %}
mdi:door-open
@ -251,28 +302,34 @@ template:
{% set doors_open = doors | selectattr('state','eq','on') | list | count %}
{{ doors_open }}
icon: >-
{% set doors = [
states.binary_sensor.basement_studio_door
] %}
{% set doors_open = doors | selectattr('state','eq','on') | list | count %}
{% if doors_open == 0 %}
{% if states('sensor.interior_doors_open') | int == 0 %}
mdi:door-closed
{% else %}
mdi:door-open
{% endif %}
- name: Faults
unique_id: 1629a83a-a46c-4041-9e49-8e54c5195388
unit_of_measurement: 'faults'
state: >-
{% set window_faults = states('sensor.window_faults') | int %}
{% set door_faults = states('sensor.door_faults') | int %}
{{ door_faults + window_faults }}
icon: >-
{% if states('sensor.total_faults') | int == 0 %}
mdi:shield-home
{% else %}
mdi:shield-off
{% endif %}
- name: Air Leaks
unique_id: e0a7b343-1d67-447c-a543-85a4b93d3d93
unit_of_measurement: 'open'
state: >-
{% set windows_open = states('sensor.windows_open') | int %}
{% set doors_open = states('sensor.doors_open') | int %}
{{ doors_open + windows_open }}
icon: >-
{% set windows_open = states('sensor.windows_open') | int %}
{% set doors_open = states('sensor.doors_open') | int %}
{% set faults = ( doors_open + windows_open ) %}
{% if faults == 0 %}
mdi:shield-home
{% if states('sensor.air_leaks') | int == 0 %}
mdi:leak-off
{% else %}
mdi:shield-off
{% endif %}
mdi:leak
{% endif %}

View File

@ -87,17 +87,17 @@
</p>
<p>
{% set windows = states('sensor.windows_open') %}
{% set doors = states('sensor.doors_open') %}
{% set windows = states('sensor.window_faults') %}
{% set doors = states('sensor.door_faults') %}
{% if states('sensor.total_faults') > '0' %}
{% if windows > '0' and doors > '0' %}
"There are currently {{ states('sensor.windows_open') }} {% if windows == '1' %}window {% else %}windows {% endif %}and {{ states('sensor.doors_open') }} {% if doors == '1' %}door {% else %}doors {% endif %}open. "
"There are currently {{ states('sensor.window_faults') }} {% if windows == '1' %}window {% else %}windows {% endif %}and {{ states('sensor.door_faults') }} {% if doors == '1' %}door {% else %}doors {% endif %}open. "
{% else %}
{% if windows > '0' %}
"There {% if windows == '1' %}is {% else %}are {% endif %}currently {{ states('sensor.windows_open') }} {% if windows == '1' %}window {% else %}windows {% endif %}open. "
"There {% if windows == '1' %}is {% else %}are {% endif %}currently {{ states('sensor.window_faults') }} {% if windows == '1' %}window {% else %}windows {% endif %}open. "
{% endif %}
{% if doors > '0' %}
"There {% if doors == '1' %}is {% else %}are {% endif %}currently {{ states('sensor.doors_open') }} {% if doors == '1' %}door {% else %}doors {% endif %}open. "
"There {% if doors == '1' %}is {% else %}are {% endif %}currently {{ states('sensor.door_faults') }} {% if doors == '1' %}door {% else %}doors {% endif %}open. "
{% endif %}
{% endif %}
"You will want to close these before the security system is armed for the night. "