用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统

2019-04-19 12:00:00 129点赞 857收藏 95评论

小编注:本文来自「一起做手工」(推荐关注),小家具、手工工艺品等万物皆可DIY,你是否也是个手工大神呢?又或者你对手工很感兴趣,都可以来本话题下,一起分享自己的手工心得~

本文目录:

事情的起因

入手花花草草

花花草草的局限

选购配件,搭建硬件

Home Assistant的配置

之后的故事

事情的起因

智能家居是个坑,一旦跳进去就无法自拔。特别是接触了Home Assistant这个开源的家庭自动化平台之后,感觉好像开辟了一个崭新的世界,各种设备、各种玩法,玩得不亦乐乎。

兵分两路,话说两头。前些日子太太找来了几株薄荷,打算在家里花盆种植,说平时用薄荷叶泡水喝,可以解毒去火,对她的慢性咽炎有辅助治疗效果。

用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统

种花我俩都是外行,家里种的几盆花基本处于无人照料、自生自灭的状态。不过既然薄荷有药用价值,倒不妨认真对待一次,若能治好太太的咽炎也算大有收获。但能否把它养活养好,太太心里没底,我倒是胸有成竹。理工男嘛,解决问题是我的强项。

玩了这么久智能家居,第一时间就想到了小米生态链产品“花花草草植物监测仪”。

 

花花草草监测仪加强版 小米生态链产品 全天360度守护 光感养份温度监测 蓝牙连接65元京东去购买

 

入手花花草草

“花花草草监测仪可以替植物说话,帮你准确传达家里的每盆花各自需要什么样的照顾,正确获取她们现在的水分养分是否足够、光照温度是否充足,从此养花可以轻松又简单。”——摘自小米商城产品介绍

下单两个花花草草监测仪加强版,转天到手。

在米家APP中配对后,要在植物数据库中选择植物种类。用“薄荷”关键字搜索,居然给我列出来20个不同的薄荷品种。好在APP中有详细的识别指导,可根据植物叶子的详细特征逐步筛选,最终确定我家这个薄荷品种是“胡椒薄荷”。

用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统

用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统

除了庞大又专业的植物参数数据库,APP中也给出了简明扼要的养护方法,对我们这些外行来说极有指导意义。

用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统

用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统

花花草草的局限

实时监测有了,养殖方法也知道了,不过实操起来还是有一些问题需要解决。

我们面临的最大问题是,根据养殖指导,胡椒薄荷这种植物不耐旱,夏季需要每天浇水。这对于两个上班族来说颇有难度。倒不是没时间,而是下班回家后根本想不起它来。

理想的解决方案是做一套自动化系统,根据花花草草检测到的土壤湿度实现自动按需浇水。

问题是花花草草监测仪为了低功耗,采用了蓝牙连接方式,当时家里还没有蓝牙网关设备,不能将其接入网络,只有拿着手机靠近它时才能看到检测出来的土壤参数。这就意味着无法实现与其它智能设备的联动,自动灌溉也就无从谈起。

米家不行,还有Home Assistant。查了Home Assistant主页,还真有花花草草的接入方案,这就好办了。

不过,后来的事实证明,当时有点过于乐观了,这里面的坑还真不少。

选购配件,搭建硬件

花花草草监测仪的传输采用了BT4.0 BLE低功耗模式,而我的Home Assistant服务器跑在一个老掉牙的笔记本上,有蓝牙但不支持4.0,所以需要购入一个支持BLE的USB蓝牙适配器。我用的是这款:

USB蓝牙适配器4.0电脑音频台式机笔记本耳机音响鼠标键盘打印机通用免驱动外置无线发射接收器19.8元天猫精选去购买

浇水需要水泵。最便宜的是养鱼用的潜水泵,虽然能用,但把220V交流供电的水泵长期泡在水里我总觉得不踏实。经过搜索,在老马家发现了一个产品叫蠕动泵,其特点是水电完全分离,不用泡在水中。搭配他家的硅胶软管,虽然价格上稍贵一点,但买个心安。电源适配器没买,家里有闲置的12V电源转换头。

蠕动泵12v微型水泵家用小型水泵静音迷你自吸泵24v直流电动抽水泵19.8元天猫精选去购买

  

硅胶管蠕动泵 透明塑料软管子耐高温蠕动管食品级软管 防冻细水管15元天猫精选去购买

 至于水泵电源控制,家里就有现成的小米智能插座,不用再买。

小米(MI) 插线板智能插座插排多功能插排接线板 米家智能插座WiFi版59元京东去购买

 东西到齐后,需要给水泵焊上电源线,正负极倒是无关紧要,水泵正转和反转的区别,不会烧毁。

用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统

蓄水桶利用了一个直筒形状的玻璃花瓶,摆在阳台倒也不难看。找了个大小合适的小药瓶,用热熔胶粘在花瓶外沿,把水泵放在里面,防尘又防水,需要维修或改造时可以把水泵拿出来。

用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统

插好软管,水桶里灌上水,硬件就搭完成了。

用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统

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记录下来的一星期土壤湿度和肥力曲线图,上面曲线为肥力,下面曲线为湿度,红色曲线是自动浇水这一盆,淡蓝色曲线是人工浇水的另一盆植物,可见自动浇水这一盆的土壤湿度要稳定得多。

用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统

之后的故事

经过长时间运行,胡椒薄荷长势良好,太太也如愿以偿地喝到了薄荷叶水。

有了这次成功经验,我们对家庭养殖农作物信心大增,开春后又种了两盆韭菜,依然是自动化养护,收成十分喜人,已经吃过好几顿韭菜馅饼啦。

用科技修身养性:花花草草监测仪+Home Assistant实现家庭种植自动灌溉系统


展开 收起
评论95

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

请选择举报理由

相关文章推荐

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