# Router IP address (default: 192.168.3.1)
ROUTER_HOST=192.168.3.1
ROUTER_PASSWORD=<PASSWORD>
LOG_DIR=./logs
# These devices get individual HA sensors
TRACKED_DEVICES=AA:BB:CC:DD:EE:FF=DEVICE_1,11:22:33:44:55:EB=DEVICE_2
# HA base URL
HA_URL=http://192.168.3.2:8123
HA_TOKEN=ey**************
# Consecutive successful observations required before changing tracked-device
ONLINE_CONFIRMATIONS=1
OFFLINE_CONFIRMATIONS=3
# Collection interval in minutes
MONITOR_INTERVAL=1
STATE_FILE=./data/device-state.json
# Optional: configure the router firmware's native daily PPPoE reconnect.
# Standard 5-field cron is accepted, but this firmware supports one daily time
# only, so day/month/weekday must be '*'. Example: every day at 05:00.
# ROUTER_REDIAL_CRON=0 5 * * *
# Set to "off" to explicitly disable the router's existing timed redial.
ROUTER_REDIAL_CRON=30 3 * * *
引入
之前一直使用UptimeKuma 的Ping来监控家里设备的在线情况,但是随着设备换代,新的手机采用了更激进的休眠策略,拒绝回答ICMP ping 请求。目前来看无法通过设备是否响应ping请求来判对设备是否在线,只有路由器后台后台的在线设备列表是准确的。
在之前的文章中通过Playwright模拟浏览器完成登录来自动化控制路由器,现在找到了一个新项目可以完成SCRAM-SHA-256认证,获取完整设备列表,并推送到 Home Assistant。
本文记录对该项目进行魔改并实现以下功能:
并修复并优化了原项目的一些问题
开始
更改文件
魔改 device-minitor.js
创建 container-healthcheck.js
启动容器
配置环境变量
设置自动化
启动容器后可在HA后台看见以下实体,包括每个设备的传感器和总体状态的传感器:
现在设置自动化脚本,当一个设备的在线状态改变时推送Gotify通知到手机
需先在 `configuration.yaml` 中设置Gotify发送信道
总结
总体流程:
验收
如图: