两种向Homekit和米家添加雨量传感器以实现自动化关窗的方法

2021-09-15 20:15:58 82点赞 398收藏 53评论

创作立场声明:原创,禁止转载

追加修改(2021-09-16 21:07:10):
上面的代码有点小问题,shell中的if只能比较整数,而API返回的降水强度是小数,修改如下。按照彩云API的定义,雷达回波强度大于0.031表示有雨。 !/bin/sh export LOCATION=经纬度坐标 PAGESOURCE=$(curl "https://api.caiyunapp.com/v2.5/xxxxxxxx/$LOCATION/weather?lang=zh_CN&dailystart=-1&hourlysteps=1&dailysteps=3&alert=true") REALTIME=$(echo $PAGESOURCE | jq -r '.result.realtime.precipitation.local.intensity') FORCAST=$(echo $PAGESOURCE | jq -r '.result.minutely.precipitation[10]') NEAREST=$(echo $PAGESOURCE | jq -r '.result.realtime.precipitation.nearest.distance') if [ `expr $REALTIME > 0.031` -eq 1 ] then echo "It's raining" curl "http://192.168.2.188:51828/?accessoryId=sensor1&value=1" elif [ `expr $FORCAST > 0.031` -eq 1 ] || [ `expr $FORCAST_QWEATHER > 0.031` -eq 1 ] then echo "It will rain in 10 minutes" curl "http://192.168.2.188:51828/?accessoryId=sensor1&value=1" else echo "It's not raining! Nearest raining area is ${NEAREST}km away" curl "http://192.168.2.188:51828/?accessoryId=sensor1&value=0" fi 另外很多人问开窗器的问题,我单独写了一篇文章,链接

分享目前唯一可以接入米家和Homekit的电动推拉窗开窗器创作立场声明:自购,无利益相关,无返利链接目前市面上的电动开窗器不多,大多为平开的窗户设计,推拉窗或推拉门能用的很少,接入米家的目前就只发现一款。云仪平移开窗器小米米家推窗器智能门窗推拉器自动关门器防盗报警云仪平移开窗器小米米家推窗器智能门窗推拉器自动关门器防盗报警......值友4606144511| 5 评论0 收藏11查看详情

前不久把家中的推拉窗都装上了电动平移开窗器,接入了米家和homekit。为了实现下雨自动关窗的联动还需要一个雨水传感器,但目前还没有有接入米家和homekit的商业产品,需要自己DIY。

两种思路

第一种方法

利用小米或者Aqara的水浸传感器,淘宝买一块雨量传感器的板子,几块到十几块包邮,像这样,使用导线把PCB板的两极分别接到水浸传感器底部的两颗螺丝上。板子想办法固定到雨水能淋到的地方,水浸传感器可以直接固定到旁边,IP67防水的,但浸泡久了还是难免进水,我的已经泡坏掉一个了,最好还是用长导线延长到有遮蔽的地方。

淘宝有整体成品卖,比较贵,自己DIY板子几乎不要钱。

两种向Homekit和米家添加雨量传感器以实现自动化关窗的方法

实测效果还是非常不错的,但也有缺点:

  1. 高层室外不好固定,甚至有坠落伤人的风险

  2. 雨小的话传感器报警有延迟,要等PCB板收集到足够的雨水

  3. 雨停后解除报警需要等很久,因为要等PCB板上的雨水蒸发干,我有时需要等上半天。板子斜着固定有一定的改善作用。有常通电的板子甚至带加热功能。

  4. 需要钱

第二种方法

利用彩云天气或和风天气的基于经纬度坐标和雷达回波的实时雨量API以及分钟级降水预报API,在homebridge或homeassistant中创建一个虚拟的水浸传感器,传感器就可以被添加到Homekit。利用crontab定时访问天气API并根据结果调整虚拟传感器的状态,水浸传感器只有泄露和未泄漏两种状态。

彩云的实时雨量API需要收费,还挺贵,但是数据最精准。和风天气的5分钟降水预报API对个人开发者免费,每天可以调取16700次,足够了,相当于每分钟可以调取11次,而数据是五分钟更新一次。和风天气的分钟级降水预报API文档:dev.qweather.com

我选择抓包彩云天气iOS App的API白嫖,过程就不写了。

homebridge可以使用homebridge-http-webhooks,homeassistant可以使用RESTful Binary Sensor API创建虚拟的水浸传感器。传感器可以通过http request设置状态,比如我用的homebridge插件,只需要curl "http://192.168.2.188:51828/?accessoryId=sensor1&value=1"就可以设置为下雨的状态,value改为0就是未下雨。

我的定时脚本,在OpenWrt下运行没问题:

#!/bin/sh

export LOCATION=精确的经纬度坐标,可以通过地图软件获取

PAGESOURCE=$(curl "https://api.caiyunapp.com/xxxxxx/$LOCATION/weather?lang=zh_CN&dailystart=-1&hourlysteps=1&dailysteps=3&alert=true")

REALTIME=$(echo $PAGESOURCE | jq -r '.result.realtime.precipitation.local.intensity')

FORCAST=$(echo $PAGESOURCE | jq -r '.result.minutely.precipitation_2h[10]')

NEAREST=$(echo $PAGESOURCE | jq -r '.result.realtime.precipitation.nearest.distance')

if [ $REALTIME -gt 0 ]

then

#echo "It's raining!"

curl "http://192.168.2.188:51828/?accessoryId=sensor1&value=1"

elseif [ $FORCAST -gt 0 ]

#echo "It will rain in 10 minutes!"

curl "http://192.168.2.188:51828/?accessoryId=sensor1&value=1"

else

#echo "It's not raining! nearest rainfall is ${NEAREST}km away"

curl "http://192.168.2.188:51828/?accessoryId=sensor1&value=0"

fi

值得买没法添加代码,排版有问题,自己调整下。放到crontab,每分钟运行一次,彩云的API如果返回正在下雨或10分钟后会下雨就设置虚拟传感器的状态为1,然后homekit或HA自动化就可以执行关窗的动作,否则就设置状态为0。

此种方法的优点:

  1. 不要钱

  2. 可以在下雨前提前关窗

  3. 状态解除较及时

缺点:

  1. 传感器精度依赖彩云或和风天气的准确度,但使用这么久的彩云天气,其结果还是蛮准确的,背后可是几百几千万的气象雷达和超算在为你服务。

  2. 需要服务器运行脚本

我目前两种方法都在用,结合一起最准确,不会让窗台被淋湿。

两种向Homekit和米家添加雨量传感器以实现自动化关窗的方法

未经授权,不得转载
展开 收起

MIJIA 米家 MJGJDO1YL 显示器屏幕挂灯 黑色

MIJIA 米家 MJGJDO1YL 显示器屏幕挂灯 黑色

149元起

MIJIA 米家 米家台灯1S LED智能台灯 白色

MIJIA 米家 米家台灯1S LED智能台灯 白色

139.9元起

MIJIA 米家 AI01ZM 小爱智能闹钟 灰色

MIJIA 米家 AI01ZM 小爱智能闹钟 灰色

114元起

MI 小米 MJSXJO9CM 1296P智能云台摄像头 300万像素 红外

MI 小米 MJSXJO9CM 1296P智能云台摄像头 300万像素 红外

132元起

MI 小米 ZNDMWG03LM 多模智能网关

MI 小米 ZNDMWG03LM 多模智能网关

109元起

MI 小米 升级版 米家多功能网关

MI 小米 升级版 米家多功能网关

129元起

MI 小米 MJSXJ06CM 2K智能云台摄像头 300万像素 红外 白色

MI 小米 MJSXJ06CM 2K智能云台摄像头 300万像素 红外 白色

219元起

MIJIA 米家 智能插座 ZigBee版

MIJIA 米家 智能插座 ZigBee版

52.8元起

MI 小米 LYWSDO2MMC 蓝牙温湿度计 白色

MI 小米 LYWSDO2MMC 蓝牙温湿度计 白色

69元起

MIJIA 米家 WXKGO1LM 智能开关 白色

MIJIA 米家 WXKGO1LM 智能开关 白色

42.33元起

MIJIA 米家 MJYDOAYL 自动感应夜灯 白色

MIJIA 米家 MJYDOAYL 自动感应夜灯 白色

16.57元起

MI 小米 米家夜灯2 红外人体感应夜灯

MI 小米 米家夜灯2 红外人体感应夜灯

36.98元起

MIJIA 米家 LYWSD02MMC 电子温湿度计

MIJIA 米家 LYWSD02MMC 电子温湿度计

66元起

MIJIA 米家 空调伴侣

MIJIA 米家 空调伴侣

153元起

MIJIA 米家 人体传感器

MIJIA 米家 人体传感器

59元起

MIJIA 米家 天然气报警器 智能传感器 白色

MIJIA 米家 天然气报警器 智能传感器 白色

169元起
53评论

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
398
扫一下,分享更方便,购买更轻松