V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
est
V2EX  ›  OpenWrt

openwrt / 米家 能否在某设备 加入 / 离开 wifi 触发一个通知之类的?

  •  
  •   est · 2 天前 · 1471 次点击

    起因:闹钟没响迟到了。

    当时为啥没响还是响了没听见不重要了,如何想个办法,防范这种问题再出现?

    比如 openwrt 上写个 crontab 定时去 ping 一个 ip 是否在线。在线说明还没出门,触发一个通知之类的。

    但是 dhcp 可能换别的 ip ,那么问题又是如何根据 hostname 去找到对应的 ip ?

    大家有更好的办法吗?

    40 条回复    2026-01-07 20:48:55 +08:00
    gainsurier
        1
    gainsurier  
       2 天前 via iPhone
    说明你的闹钟没有做主备冗余哈哈
    x86
        2
    x86  
       2 天前
    既然是家里,你给你设备分配一个静态 IP 不就行了
    cwxiaos
        3
    cwxiaos  
       2 天前 via iPhone
    Openwrt 可以分配静态 ip, ios 用 bark call, android 应该也有类似的

    另外手机在设置 dhcp 那里,可以设置固定 ip

    最稳妥的还是搞个闹钟,ios 那个问题真不好说,订阅错日历了,不小心没充电,都容易出事
    jaysonmac
        4
    jaysonmac  
       2 天前
    闹钟持续响铃听不见,几秒钟的通知音就能听见?
    怕自己错过闹钟,就多设置几个。
    est
        5
    est  
    OP
       2 天前
    @gainsurier 这不现在就在想办法冗余么。
    @x86 @cwxiaos 呃,也算是个办法。但是总感觉不太通用
    @cwxiaos 你真准。。一下子就猜到 iOS 了。。。
    @jaysonmac 这个通知只是个 demo ,真要搞感觉可以联动一下其他设备。
    hefish
        6
    hefish  
       2 天前
    可以给 hostapd 开个日志吧,然后定时监控 hostapd 的日志,这样来看某个固定 mac 的设备连上来了,就触发某个操作。
    busier
        7
    busier  
       2 天前 via Android
    不是有 mdns 吗
    est
        8
    est  
    OP
       2 天前
    @busier 这玩意得一直监听 broadcast ?还是可以直接 lookup 设备会回复?

    问了下 ai

    dig @224.0.0.251 -p 5353 iPhone.local +short

    这样似乎没效果。。。
    xixiv5
        9
    xixiv5  
       2 天前
    ping 不够优雅 hostapd_cli 可以在设备上下线时回调

    hostapd_cli -i global -a bash.sh
    lloovve
        10
    lloovve  
       2 天前 via iPhone
    研究过,wifi mac 地址会变,ip 地址也会变,最好的方法就是蓝牙广播了
    est
        11
    est  
    OP
       2 天前
    @lloovve 对的。iPhone 有个特性就是 mac 地址随机化。防止跟踪保护隐私的。

    而且 2.4G 和 5G 是两个 mac 地址。。。
    pingdog
        12
    pingdog  
       2 天前
    iOS 用 shortcuts 取得 wifi 名放音乐就够,在加个 Automation ,自己也可以搓个调休的 api 写个判断今天放不放歌

    简单写个 wifi 的 https://www.icloud.com/shortcuts/7901bf5ac2f747ec8d213ff057f9860b
    oisadfo
        13
    oisadfo  
       2 天前
    @x86 不想硬编码
    guiys
        14
    guiys  
       2 天前 via Android
    物理闹钟。
    智能开关接收音机。
    heybwei
        15
    heybwei  
       2 天前
    米家 APP 创建自动化,触发条件是你手机,离开/连接 wifi ?

    感觉还是多冗余几个闹钟方便,手机+手表
    villivateur
        16
    villivateur  
       2 天前
    我觉得倒不如搞个人体传感器,早上发现你还在床上就报警。或者监控电子门锁的开关记录,早上没开门就报警。
    opengps
        17
    opengps  
       2 天前
    旧手机让家里当备份闹钟
    szdosar
        18
    szdosar  
       2 天前
    有必要这么麻烦吗?订个物理闹钟,闹钟离床头有 2 米,人必须起来才能关掉闹钟。
    pagxir
        19
    pagxir  
       2 天前 via Android
    一般 Mac 地址不会变,openwrt 可以通过 Mac 查询 IP
    bfdh
        20
    bfdh  
       1 天前
    这功能我们之前还真做过。

    先说随机 mac 的问题,默认情况下不少设备在 SSID 不变,且没有执行“忘记网络”然后重新“加入网络”操作的情况下,mac 地址是不会变的(不确定现在情况是否有变化),不过一般的手机、笔记本都可以设置是否使用随机 mac 。所以靠 mac 唯一确定设备也算基本可行。

    wifi 连接由于稳定性、低功耗、漫游等原因,随时都可能会自动断开,然后过一段时间又重连,于是你就会收到大量的“离开”、“加入”事件。为了处理这种情况,就不得不加入延时,一段时间之后没有新的事件产生才推送最后一个事件,但是一段时间到底取多长,又是一个新的问题,短了效果不好,长了实时性太差。

    再说“离开”这个事件,大多数“离开”是设备逐渐远离路由器,信号逐渐变弱,直到最后没法通信,因此路由器根本无法从通信协议层面感知“离开”这个事情,只能等超时,这个超时一般是 5 分钟(好像是 wifi 规范规定的?),甚至有的 wifi 驱动有 bug ,设备离开之后会永远在线。

    至于用 ping 的话,也有不靠谱的地方,笔记本可能防火墙禁 ping (这个倒是可以自己设置); iOS 设备熄屏期间也不能 ping 通(这个没看到设置的地方,不过我也没专门去找过)。
    fadaixiaohai
        21
    fadaixiaohai  
       1 天前
    太折腾了,几十块钱搞一个小米音箱或者天猫精灵
    强制起床
    duanxianze
        22
    duanxianze  
       1 天前
    手机是支持这个功能的,还有车可以检测地理位置,别的应该不太行
    gdfsjunjun
        23
    gdfsjunjun  
       1 天前
    米家不是已经有吗?设置自动化 触发条件 个人设备 到达离开某地、连接断开 WiFi 都可以设置啊
    est
        24
    est  
    OP
       1 天前
    @szdosar 物理闹钟没法跳过节假日
    @heybwei @gdfsjunjun @duanxianze 米家我试了。。我觉得差一点就成功了

    触发条件 1: 起床时间+法定工作日
    触发条件 2:小米路由器 -> 指定设备连接

    执行动作:唤醒小爱音响+自定义指令+指令上一个闹钟马上响

    现在唯一的问题就是 触发条件 1 和 2 是 OR 关系。不是 AND 关系。

    而且 指定设备连接 貌似是 刚连上 这一个事件,不是 当前一直连上 这个状态持续检查。

    还是行不通。。

    话说米家能不能自定义事件?
    Kirkcong
        25
    Kirkcong  
       1 天前
    @est #11 可以设置统一 wifi 下使用相同的 mac,之后就可以 arp 看设备了。不过有个问题哦,有看过 ios 的休眠策略么?并不一定时时刻刻都在连接着设备吧?这样会导致经常误判的。
    zhjh0521
        26
    zhjh0521  
       1 天前
    @x86 怎么分配静态 ip ?根据 mac 地址嘛,现在的设备都会定期调整 mac 地址
    x86
        27
    x86  
       1 天前
    @zhjh0521 #26 家里 WIFI 的话,设置-WIFI 里把轮替改成固定就行了
    duanxianze
        28
    duanxianze  
       1 天前
    @est #24 那你只能通过 home assistant 写脚本了
    yidev
        29
    yidev  
       1 天前
    @zhjh0521 wifi 连接那可以指定不用随机 MAC, 也可以直接设置固定 IP.
    yinmin
        30
    yinmin  
       1 天前 via iPhone
    @est 晕。iphone 手机上可以直接设置 ip 地址的。

    ios 设置 - 无线局域网 - 点击自家 wifi 等信息图标 - ipv4 配置 ip/配置 dns

    你在 dhcp 服务器的动态 ip 地址段里,留出一段给手动 ip 地址,例如:dhcp 配置动态 ip 地址段为 192.168.1.100-192.168.1.249 ,然后 192.168.1.2-192.168.1.99 都可以用做手动 ip
    Linho1219
        31
    Linho1219  
       1 天前 via Android
    我用的接入米家的 Ainice 电子围栏,可以走 WiFi/蓝牙连接/蓝牙广播探测设备,支持设置离线时长判定阈值,支持多围栏组网,最多追踪 14 个设备,可以定义一个设备群(群内任意设备在线则判定为群在线)。玩法很多,毕竟米家还能接 HA ,我 ¥85 入的感觉不亏。楼主这场景配这个电子围栏,一个米家自动化就解决了。
    另:DHCP 在路由器端可以配置一直给同一个设备分配同一个 IP 的
    Linho1219
        32
    Linho1219  
       1 天前 via Android
    @est 米家虚拟事件我知道的是小米中枢网关有,¥300 ,其他中枢有没有下放我就不懂了。可以走米家自动化、米家自动化极客版,或者从 HA 触发
    zhjh0521
        33
    zhjh0521  
       1 天前
    @yidev 是说在手机或者 ipad 上的配置嘛
    JiMuChan
        34
    JiMuChan  
       1 天前
    感觉。。。会不会有点简单的事情复杂化,直接买个物理闹钟放里床 2 米外。。。。
    linguoan33333
        35
    linguoan33333  
       1 天前
    我都是设置定时开启灯光和闹钟的,买个小爱同学音响
    est
        36
    est  
    OP
       1 天前
    @JiMuChan
    @linguoan33333

    其实还有个问题就是如何不吵到别人。再买一个小爱音响当然能解决问题,但是如果已经起床离开了,这个备份闹钟响了,谁来关闭呢。。。
    Greenm
        37
    Greenm  
       1 天前
    我自己的路由是 UBNT ,官方有接口,可以通过接口获取在线的设备,然后通过脚本定时执行并发送通知到手机上解决,还可以顺便做了其他的自动化联动等。

    IP 地址随机化的问题是通过关掉 MAC 随机化固定 IP 地址解决的。

    不过我的原始需求是防陌生人入侵和防蹭网的,警报的频率很低,只有陌生设备第一次接入才触发,跟你的需求可能不太一致。
    kenpuluma
        38
    kenpuluma  
       1 天前
    Nmap 比较适合做这个事。不过感觉有点简单问题复杂化,多定几个闹钟就是了。
    pulutom40
        39
    pulutom40  
       1 天前   ❤️ 1
    米家极客版可以

    est
        40
    est  
    OP
       1 天前
    @pulutom40 wow 这也太 6 了。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   4657 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:08 · PVG 09:08 · LAX 17:08 · JFK 20:08
    ♥ Do have faith in what you're doing.