用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统
本文目录:
事情的起因
入手花花草草
花花草草的局限
选购配件,搭建硬件
Home Assistant的配置
之后的故事
事情的起因
智能家居是个坑,一旦跳进去就无法自拔。特别是接触了Home Assistant这个开源的家庭自动化平台之后,感觉好像开辟了一个崭新的世界,各种设备、各种玩法,玩得不亦乐乎。
兵分两路,话说两头。前些日子太太找来了几株薄荷,打算在家里花盆种植,说平时用薄荷叶泡水喝,可以解毒去火,对她的慢性咽炎有辅助治疗效果。
种花我俩都是外行,家里种的几盆花基本处于无人照料、自生自灭的状态。不过既然薄荷有药用价值,倒不妨认真对待一次,若能治好太太的咽炎也算大有收获。但能否把它养活养好,太太心里没底,我倒是胸有成竹。理工男嘛,解决问题是我的强项。
玩了这么久智能家居,第一时间就想到了小米生态链产品“花花草草植物监测仪”。
入手花花草草
“花花草草监测仪可以替植物说话,帮你准确传达家里的每盆花各自需要什么样的照顾,正确获取她们现在的水分养分是否足够、光照温度是否充足,从此养花可以轻松又简单。”——摘自小米商城产品介绍
下单两个花花草草监测仪加强版,转天到手。
在米家APP中配对后,要在植物数据库中选择植物种类。用“薄荷”关键字搜索,居然给我列出来20个不同的薄荷品种。好在APP中有详细的识别指导,可根据植物叶子的详细特征逐步筛选,最终确定我家这个薄荷品种是“胡椒薄荷”。
除了庞大又专业的植物参数数据库,APP中也给出了简明扼要的养护方法,对我们这些外行来说极有指导意义。
花花草草的局限
实时监测有了,养殖方法也知道了,不过实操起来还是有一些问题需要解决。
我们面临的最大问题是,根据养殖指导,胡椒薄荷这种植物不耐旱,夏季需要每天浇水。这对于两个上班族来说颇有难度。倒不是没时间,而是下班回家后根本想不起它来。
理想的解决方案是做一套自动化系统,根据花花草草检测到的土壤湿度实现自动按需浇水。
问题是花花草草监测仪为了低功耗,采用了蓝牙连接方式,当时家里还没有蓝牙网关设备,不能将其接入网络,只有拿着手机靠近它时才能看到检测出来的土壤参数。这就意味着无法实现与其它智能设备的联动,自动灌溉也就无从谈起。
米家不行,还有Home Assistant。查了Home Assistant主页,还真有花花草草的接入方案,这就好办了。
不过,后来的事实证明,当时有点过于乐观了,这里面的坑还真不少。
选购配件,搭建硬件
花花草草监测仪的传输采用了BT4.0 BLE低功耗模式,而我的Home Assistant服务器跑在一个老掉牙的笔记本上,有蓝牙但不支持4.0,所以需要购入一个支持BLE的USB蓝牙适配器。我用的是这款:
浇水需要水泵。最便宜的是养鱼用的潜水泵,虽然能用,但把220V交流供电的水泵长期泡在水里我总觉得不踏实。经过搜索,在老马家发现了一个产品叫蠕动泵,其特点是水电完全分离,不用泡在水中。搭配他家的硅胶软管,虽然价格上稍贵一点,但买个心安。电源适配器没买,家里有闲置的12V电源转换头。
至于水泵电源控制,家里就有现成的小米智能插座,不用再买。
东西到齐后,需要给水泵焊上电源线,正负极倒是无关紧要,水泵正转和反转的区别,不会烧毁。
蓄水桶利用了一个直筒形状的玻璃花瓶,摆在阳台倒也不难看。找了个大小合适的小药瓶,用热熔胶粘在花瓶外沿,把水泵放在里面,防尘又防水,需要维修或改造时可以把水泵拿出来。
插好软管,水桶里灌上水,硬件就搭完成了。
Home Assistant的配置
HA上面的自动化配置,无非就是读取花花草草检测到的土壤湿度,如果低于某个指定的值就打开小米插座,启动水泵给植物浇水。想法很简单,但实施起来却发现还有很多细节因素要考虑。
1,蓝牙连接不稳定
根据HA官网上的介绍,HA可通过蓝牙直接读取花花草草的数值,开始也就是这样配置的。但实际使用后发现,蓝牙连接非常不稳定,经常出现读不到数据的情况。
经过艰苦探索,在github上发现了一个名为plantgateway的项目,通过一个python程序读取花花草草的检测值,然后将数据发送到MQTT broker,而HA本身已有MQTT连接能力。经过测试,数据通过MQTT转一道手后,HA获取数据非常稳定,再也没有出现过读不到数据的情况。
最后的配置如下:
~/.plantgw.yaml(MQTT broker运行在本机):
mqtt:
server: 127.0.0.1
port: 1883
user: root
prefix: plants
sensors:
- mac: C4:7C:8D:64:95:98
alias: plant1
- mac: C4:7C:8D:64:9C:0E
alias: plant2
cron定时任务,每隔15分钟运行一次,读取传感器数据:
5,20,35,50 * * * * /srv/ha/ha_venv/bin/plantgateway
HA接收MQTT传递来的数据:
sensor:
- platform: mqtt
name: plant1_moisture
state_topic: plants/plant1/
value_template: '{{ value_json.moisture | int }}'
unit_of_measurement: '%'
- platform: mqtt
name: plant1_conductivity
state_topic: plants/plant1/
value_template: '{{ value_json.conductivity | int }}'
unit_of_measurement: 'µS/cm'
- platform: mqtt
name: plant1_brightness
state_topic: plants/plant1/
value_template: '{{ value_json.brightness | int }}'
unit_of_measurement: 'Lux'
- platform: mqtt
name: plant1_temperature
state_topic: plants/plant1/
value_template: '{{ value_json.temperature | float }}'
unit_of_measurement: '°C'
- platform: mqtt
name: plant1_battery
state_topic: plants/plant1/
value_template: '{{ value_json.battery | int }}'
unit_of_measurement: '%'
配置完成后并重启HA后即可在管理页面中看到数据。
(参数命名及图标根据状态变化颜色需要加入其它配置,限于篇幅这里省略)
顺便提一句,我买的花花草草监测仪是增强版,并升级了最新固件,HA+plantgateway+MQTT可以完美支持。希望可以解决HA社区中对增强版兼容性的疑虑。
2,花花草草的测量准确度
花花草草毕竟只是一个廉价的传感器,不是专业仪器,当然不能要求它的测量值有多精准。但我遇到的问题是,花盆中土壤的密度、电极插入土壤的位置和深度都对测量结果有特别大的影响。
好在植物并非那么娇气,所谓喜水、耐旱之类的需求都是相对而言,用不着那么精确。我的做法是,将花花草草监测仪按合适的深度插入花盆后,就不要再动它,让它有个稳定的工作环境,这样读取到的数据才有参考价值。如果换了花盆或重新拔插了传感器,需要对检测值重新标定并相应调整HA中的控制参数。
3,避免水漫金山
土壤湿度不足自动开水泵没问题,那么什么时候关水泵呢?等土壤湿度到达上限后再关肯定不行,一是周期性检测有延时,二是花盆容量小,土壤透水率高,没等湿度到达上限水就已经从花盆下面的透气孔流出来了。
根据薄荷喜水特点,几经试验和调整,我最终设定的程序是,每隔一小时读取一次土壤湿度值,如果湿度小于35%就开水泵,3分钟后关水泵,这样既能让土壤保持足够的湿度,又不会导致水从花盆底部流出。为了避免夜间工作时发出的噪音影响休息,这个程序只在白天运行。
自动化配置如下:
automation:
- alias: pump1_watering
initial_state: on
trigger:
- hours: '/1'
minutes: 30
seconds: 0
platform: time_pattern
condition:
condition: and
conditions:
- after: '8:00'
before: '22:00'
condition: time
- condition: numeric_state
entity_id: sensor.plant1_moisture
below: '35'
action:
- entity_id: switch.pump1_switch
service: switch.turn_on
- delay:
minutes: 3
- entity_id: switch.pump1_switch
service: switch.turn_off
后来考虑到避免意外情况发生(如手动打开了水泵电源却忘了关闭,或因某种原因浇水程序未能完整执行导致水泵不能在3分钟后自动关闭),又加了一条自动化,只要检测到水泵开启5分钟就自动关闭。
- alias: pump1_off
initial_state: on
trigger:
- entity_id: switch.pump1_switch
platform: state
to: 'on'
for:
minutes: 5
condition: []
action:
- entity_id: switch.pump1_switch
service: switch.turn_off
至此算是比较完美地实现了自动浇水的设想。
下图是HA记录下来的一星期土壤湿度和肥力曲线图,上面曲线为肥力,下面曲线为湿度,红色曲线是自动浇水这一盆,淡蓝色曲线是人工浇水的另一盆植物,可见自动浇水这一盆的土壤湿度要稳定得多。
之后的故事
经过长时间运行,胡椒薄荷长势良好,太太也如愿以偿地喝到了薄荷叶水。
有了这次成功经验,我们对家庭养殖农作物信心大增,开春后又种了两盆韭菜,依然是自动化养护,收成十分喜人,已经吃过好几顿韭菜馅饼啦。
夜羽剑光寒
校验提示文案
feely
校验提示文案
左写轮
校验提示文案
錵硴公子
校验提示文案
cwz1116
校验提示文案
xiami0079
校验提示文案
louiskim
校验提示文案
崩坏鸽
校验提示文案
雩风清和
校验提示文案
darkengine
校验提示文案
口___口
校验提示文案
值友9029058910
校验提示文案
古天乐的普通话
校验提示文案
布窗内库
校验提示文案
selphiechao
但是薄荷其实只要摄像头~因为缺水,叶子会焉……
校验提示文案
余歌唱晚
校验提示文案
丁丁李的开箱实验室
校验提示文案
如果没有后来
校验提示文案
roc634
校验提示文案
downit
校验提示文案
值友3555326056
校验提示文案
vincentwong
校验提示文案
SIEC_Z
校验提示文案
邱小烏ShaqKSmith
校验提示文案
邱小烏ShaqKSmith
校验提示文案
喵喵喵先生
校验提示文案
dnbjq
校验提示文案
断电少年
校验提示文案
浮生行简
校验提示文案
吃个大大大鸡排
校验提示文案
游牧人族
校验提示文案
冬哥CD
校验提示文案
芽芽猫
校验提示文案
响叮当的汉子
校验提示文案
为何假装会画画
校验提示文案
深白色memeda
校验提示文案
selphiechao
但是薄荷其实只要摄像头~因为缺水,叶子会焉……
校验提示文案
索隆大学士
校验提示文案
School123
校验提示文案
值友8069678573
转身去给我的小花人工浇水了
校验提示文案