-
Notifications
You must be signed in to change notification settings - Fork 2
Создаем сенсор, который показывает свой или чужой
Сенсор DeepStack image_processing.detect_face_..... выводит имена. DeepStack может распознать несколько лиц, но также может вывести в сенсоре опознанные имена и неопознанные. К примеру сделали автоматизацию, которая срабатывает на конкретные лица, но что будет, если конкретных лиц окажется неизвестное лицо? Как сделать так, чтобы автоматизация правильно работала и система понимала, что это свой человек или среди своих есть чужой? Ниже сенсор позволит определить "Все свои" или "Есть чужое лицо". Если в списке имен не будет unknown, значит "Все свои", если в списке имен среди опознанных имен будет присутствовать unknown, значит есть "Есть чужое лицо".
Первый сенсор, который выводит имена
Пояснение
- image_processing.detect_face_eufy_camera - это ваш сенсор, который вы создали для интеграции VISION-FACE
- input_number.deepstack_confidence_face - вспомогательный элемент число. Вы можете назвать его как угодно, это служит для указания уверенности
sensor:
- platform: template
sensors:
persons_names_hall:
friendly_name: 'Коридор: Имена идентифицированных лиц'
icon_template: mdi:face-recognition
value_template: >
{% set detect_face = state_attr('image_processing.detect_face_eufy_camera','faces') | selectattr('faces','!=','name')| map(attribute='name') | join(', ') %}
{% set confidence_face = state_attr('image_processing.detect_face_eufy_camera','faces') | selectattr('faces','!=','confidence')| map(attribute='confidence') | join(', ') %}
{% set set_confidence = states('input_number.deepstack_confidence_face')%}
{% if detect_face and confidence_face >= set_confidence %}
{{ state_attr('image_processing.detect_face_eufy_camera','faces') | selectattr('faces','!=','name')| map(attribute='name') | join(', ') }}
{% elif detect_face and confidence_face <= set_confidence %} unknown
{% endif %}
attribute_templates:
faces: "{{ state_attr('image_processing.detect_face_eufy_camera','faces') }}"
total_faces: "{{ state_attr('image_processing.detect_face_eufy_camera','total_faces') }}"
total_matched_faces: "{{ state_attr('image_processing.detect_face_eufy_camera','total_matched_faces') }}"
matched_faces: "{{ state_attr('image_processing.detect_face_eufy_camera','matched_faces') }}"
last_detection: "{{ state_attr('image_processing.detect_face_eufy_camera','last_detection') }}"
friendly_name: "{{ state_attr('image_processing.detect_face_eufy_camera','friendly_name') }}"
device_class: "{{ state_attr('image_processing.detect_face_eufy_camera','device_class') }}"
Второй сенсор, который использует первый сенсор sensor.persons_names_hall
и использует сенсор распознавания лиц
image_processing.detect_face_eufy_camera
Важно! Ваши сенсоры могут называться по другому
sensor:
- platform: template
sensors:
identified_person_owner_of_the_house_hall:
friendly_name: 'Коридор: Опознанное лицо является ли хозяином дома?'
icon_template: mdi:face-recognition
value_template: >
{% set persons = "sensor.persons_names_hall" %} #указываем свой сенсор
{% set detect_face = states("image_processing.detect_face_eufy_camera") %} #указываем свой сенсор
{% set whitelist = ["Ольга", "Петр", "Борис", "Маша"]|join('|') %} #указываем имена своих домочадцев
{% set blacklist = ['unknown']|join('|') %} #оставляем как есть
{% set authorized_persons = states("sensor.persons_names_hall")|string is search(find=whitelist, ignorecase=True) %} #указываем свой сенсор
{% set unauthorized_persons = states("sensor.persons_names_hall")|string is search(find=blacklist, ignorecase=True) %} #указываем свой сенсор
{% if detect_face != "unknown" and authorized_persons == True and unauthorized_persons == False %} Все свои
{% elif detect_face != "unknown" and authorized_persons == True and unauthorized_persons == True %} Есть чужое лицо
{% elif detect_face == "unknown" %} off
{% endif %}