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

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

  •  
  •   est 天前 1469 次点击

    起因:闹钟没响迟到了。

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

    比如 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  
       1 天前
    米家 APP 创建自动化,触发条件是你手机,离开/连接 wifi ?

    感觉还是多冗余几个闹钟方便,手机+手表
    villivateur
        16
    villivateur  
       1 天前
    我觉得倒不如搞个人体传感器,早上发现你还在床上就报警。或者监控电子门锁的开关记录,早上没开门就报警。
    opengps
        17
    opengps  
       1 天前
    旧手机让家里当备份闹钟
    szdosar
        18
    szdosar  
       1 天前
    有必要这么麻烦吗?订个物理闹钟,闹钟离床头有 2 米,人必须起来才能关掉闹钟。
    pagxir
        19
    pagxir  
       1 天前 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     4178 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:09 PVG 08:09 LAX 16:09 JFK 19:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86