스마트폰 (Mobile)
홈 어시스턴트 IoT 기기 센서값 최종 업데이트 시간 템플릿 구성
날으는물고기
2024. 7. 26. 00:42
Home Assistant에서 하나의 기기에 여러 센서가 있는 경우, 해당 기기의 가장 마지막 업데이트 시간을 템플릿 센서를 통해 확인할 수 있습니다. 아래 템플릿 코드를 configuration.yaml
파일에 추가하면 됩니다.
template:
- sensor:
- name: "Device Last Updated"
state: >
{% set device_entities = [
'sensor.device_sensor_1',
'sensor.device_sensor_2',
'sensor.device_sensor_3',
# 추가 센서들
] %}
{% set last_updated = device_entities | map('states') | map('as_timestamp') | max %}
{{ last_updated | timestamp_local }}
여기서 device_entities
리스트에 해당 기기의 모든 센서 엔티티 ID를 추가해줍니다. 이 템플릿은 모든 센서의 상태 업데이트 시간을 비교하여 가장 최근의 시간을 표시합니다. 이제 Home Assistant에서 sensor.device_last_updated
라는 새 센서가 생성되어 해당 기기의 가장 최근 업데이트 시간을 표시하게 됩니다.
device*
형태의 규칙에 따라 모든 센서를 체크하려면 template
센서를 정의할 때 Jinja 템플릿 언어를 사용하여 규칙에 맞는 모든 센서를 자동으로 찾도록 해야 합니다. 이를 위해 Home Assistant의 states
객체를 활용할 수 있습니다. 아래와 같이 configuration.yaml
파일에 추가해 보세요.
template:
- sensor:
- name: "Device Last Updated"
state: >
{% set namespace = namespace(last_updated = none) %}
{% for state in states.sensor %}
{% if state.entity_id.startswith('sensor.device') %}
{% if namespace.last_updated == none or state.last_updated > namespace.last_updated %}
{% set namespace.last_updated = state.last_updated %}
{% endif %}
{% endif %}
{% endfor %}
{{ namespace.last_updated }}
이 템플릿은 다음과 같이 작동합니다.
states.sensor
에서 모든 센서를 순회합니다.- 각 센서의
entity_id
가sensor.device
로 시작하는지 확인합니다. - 각 센서의
last_updated
속성을 비교하여 가장 최근의 업데이트 시간을 추적합니다. - 가장 최근의
last_updated
값을 반환합니다.
이 템플릿 코드를 사용하면 sensor.device*
형태의 모든 센서를 자동으로 탐색하고, 가장 최근의 업데이트 시간을 sensor.device_last_updated
센서에 표시합니다.
728x90