Oref Alert 集成:实现警报位置距离显示与通知优化
项目背景
Oref Alert 是一个用于以色列民防警报系统的 Home Assistant 集成项目。在真实警报场景中,用户经常面临一个实际问题:当警报显示不熟悉的地点名称时,难以快速判断该地点与自身的距离关系。本文介绍如何通过 Oref Alert 集成实现警报位置距离显示,并优化通知体验。
技术实现方案
核心功能原理
Oref Alert 集成通过创建 geo_location 实体来跟踪每个警报位置。这些实体包含以下关键属性:
friendly_name: 警报位置名称distance: 距离家庭区域(zone.home)的公里数category: 警报类型分类title: 警报类型描述
从 v2.14.0 版本开始,这些实体提供了更丰富的属性,使得距离信息可以直接用于通知和界面展示。
距离显示实现
在 Lovelace 界面中,可以通过自定义卡片展示警报及其距离信息。以下是一个典型配置示例:
type: custom:auto-entities
sort:
method: state
numeric: true
filter:
include:
- entity_id: /geo_location.oref_alert_location_*/
card:
type: custom:flex-table-card
columns:
- data: date
name: 日期
- data: state
name: 距离
modify: x + " km"
- data: friendly_name
name: 位置
通知优化方案
更实用的方案是在移动通知中直接显示距离信息。从 v2.17.0 版本开始,可以通过事件触发器实现:
alias: 近距离警报通知
trigger:
- platform: event
event_type: oref_alert_new_geo_location
condition:
- "{{ trigger.event.data.distance < 30 }}"
action:
- service: notify.mobile_app_设备名称
data:
title: "民防警报 (近距离)"
message: "{{ trigger.event.data.friendly_name }} ({{ trigger.event.data.distance }} 公里)"
data:
push:
sound:
critical: 1
此自动化会在警报位置距离家庭区域小于30公里时,发送带有紧急提示音的通知。
高级应用技巧
分类图标展示
通过模板条件,可以为不同类型的警报添加相应的表情符号图标:
title: >-
{% if trigger.event.data.category == 1 %}
🚀 {{ trigger.event.data.title }}
{% elif trigger.event.data.category == 2 %}
🛩️ {{ trigger.event.data.title }}
{% elif ... %}
...
{% endif %}
地图标记定制
可以通过以下方式统一修改地图上的警报标记图标:
- 将自定义图标放入
/www/目录 - 在
customize_glob中添加:
"geo_location.oref_alert_location*":
entity_picture: /local/自定义图标.png
- 在地图卡片中添加样式覆盖:
card_mod:
style:
ha-map $ ha-entity-marker $: |
.marker {
border: none !important;
background-color: transparent !important;
}
实际应用建议
-
分级通知:根据距离设置不同级别的通知,如小于30公里使用紧急提示音,大于30公里使用普通通知。
-
历史记录:结合Flex Table Card创建警报历史记录面板,包含时间、位置、距离和类型等信息。
-
多设备支持:为家庭不同成员设置不同的距离阈值通知。
-
可视化优化:使用不同颜色标记地图上的警报点,根据距离或类型进行区分。
注意事项
-
确保Home Assistant中正确设置了家庭区域(zone.home)位置。
-
定期检查集成更新,新版本可能带来性能优化或功能改进。
-
对于未知警报区域,集成会记录日志,这些信息可反馈给当地民防部门。
通过以上方法,Oref Alert集成可以显著提升警报信息的实用性和及时性,帮助用户在紧急情况下更快做出正确判断。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



