只能远程控制的不叫智能家居 篇一:等了米家几年,还得自己动手实现自动离家回家场景。
从技术上本应可实现的自动化功能,但是因为种种原因没有,那能叫什么智能家居呢?是傻傻的遥控智障家居。
实际上几年前的小米路由器第一代R1D和博联合作的时候,就已经有在路由器上通过MAC地址的连接断开来实现场景条件的判断。可是小米开始做米家后,这个功能就再也没有出现过。陆陆续续米家的智能设备增加到80多个,对于一个70来平的小房子来说几乎是带电的设备都改了。很多自动化场景却跑不起来,连基本的安防功能都一直是摆设。虽然我在门口通过一个无线开关来实现离家回家场景的执行,家里人除了我从没有人用。
从小米路由器R1D、R2D一直等到现在的HD都没见到重新增加这个功能,最近小米手机开发版MIUI到是新增了“手机进入或离开wifi”这个测试功能,可是太弱了。必须要小米手机还得是开发版,而且只能单纯的实现自己一个人特定的场景,最基础的所有人离家、任何人回家执行场景都做不到。
等了这么多年有点心灰意冷,突然看见绿米网关局域网通信协议(懒癌间歇性好转),正好可以自己动手丰衣足食了。先看看执行效果吧。
大概操作原理,通过路由器设备连接列表的MAC地址来识别家人手机是否在线。
{"cmd":"get_id_list"}
先通过这个命令,用UDP发送到网关的9898端口,然后网关会返回此网关的连接设备sid号码、随机token到请求设备的9898端口,这个token有效期只有15秒左右。发送控制命令需要它和网关密码来生成key。
{"cmd":"read","sid":"158d0000"}
这个命令,我们可以读取对应zigbee子设备的信息,如model类型、当前状态、电池电压等等。
{"cmd":"write","model":"switch","sid":"158d0000c","data":"{"status":"click","key":"0E988A7E92F8A719D1881C8D52E5BDA4"}"}
这是绿米控制设备的命令。注意这个key需要网关密码、和随机token来生成,具体加密方法绿米官网通信协议中有详细说明。下图是vb.net生成key的代码。
这样我们就能操作绿米的无线开关单击双击来实现场景的执行(注意这个场景必须是本地场景才能执行成功)。为什么不直接控制设备呢?1是没看见绿米公开操作网关警戒模式命令,2是设备多了做兼容痛苦啊(有的米家设备也没公开通讯协议),直接通过米家添加智能场景比较方便随意。
因为弄这个需要一定的编程基础,我自己的代码又没做路由器适配(仅仅兼容自己的路由器型号),即使直接放软件拿去也没用。以后懒癌又间歇好转的时候看看能不能改改软件做个通用版吧。当然如果有了解的open wrt的朋友能做个插件才是最完美的方案。
姑苏韵律
校验提示文案
值友6960079828
校验提示文案
DONG92
校验提示文案
DONG92
校验提示文案
值友6960079828
校验提示文案
姑苏韵律
校验提示文案