『瀚思彼岸』» 智能家居技术论坛

标题: 《照顾好我的幸福树》自动浇花+补光——HA+micropython实现 [打印本页]

作者: zld_555    时间: 2020-6-12 23:04
标题: 《照顾好我的幸福树》自动浇花+补光——HA+micropython实现
本帖最后由 zld_555 于 2020-6-12 23:24 编辑

先来几个图
[attach]23438[/attach]

HA端控制面板


[attach]23435[/attach]

水箱(水泵+水"位"传感器)(花盆里还有土壤湿度传感器 )

[attach]23436[/attach]

光照(灯带+光传感器)

[attach]23437[/attach]


透明塑料外壳 (动手能力差)


概述

学了micropython后一直想做个东西练练手,家里正好有一盆幸福树,就做个玩具照顾下花花草草吧。

起初是打算使用esp8266设备(因为便宜呗),esp8266设备只有一个ADC接口,所以把这个宝贵的接口留给了水位传感器,土壤湿度传感器就没有使用ADC。后来因为8266的内存实在是太弱了,总是莫名重启优化调试了几天仍然无果,咬咬牙心一横多花了10来块钱上了esp32。

功能主体由esp设备独立完成,HA方便的提供一个接入控制方式。如果依靠HA进行自动化,实现起来应该会更简便。

功能

自动浇水:由土壤湿度传感器检测干湿度,在水箱有水的情况下启动水泵抽水。

自动补光:由光照传感器检测光照强度,并定时采样累计。在允许补光的窗口时间(设定窗口时间是因为怕光污染)进行补光,提升光照强度,直到满足设定的每日光照期望值。光照每天累计,次日清零。

HA接入:配置好主题,使用mqtt自动发现。可以看到各个传感器的状态值。并可以手动控制水泵和补光灯(会退出自动模式)。

物料准备

  物料  
数量
单价
总价
  Esp32NodeMCU  
1
26
26
  BH1750FVI数字光照传感器模块  
1
10.5
10.5
  土壤湿度计检测模块 湿度传感器  
1
1.55
1.55
  水位传感器 Water Sensor  
1
0.7
0.7
  电源模块12V输入3.3V 5V  12V多路输出  
1
1.2
1.2
  12V 5A电源适配器  
1
14
14
  LED补光灯12V  
2
9.5
19
  直流电机3V 卧式小潜水泵DC3W   
1
2.25
2.25
  水泵导水管  
1米
0.8
0.8
  2路5V继电器  
1
3.25
3.25
  DC接口母头  
1
0.45
0.45
  F型透明防水盒  
1
5.5
5.5
  发光二极管  
2


  600Ω电阻  
1


  网线  
2米


  电源线双芯12V  
2米


     

85.2
网线分成了两部分,其一实现浇水相关功能(两个传感器+水泵至少需要6芯),其二实现补光功能(光照传感器需要4芯,剩下4芯拧成两股为LED供电)。
发光二极管一个用于显示电机工作状态,一个用于显示水箱是否有水,可选用。
  接入设计

[attach]23434[/attach]
对于电路知识,我完全是萌新,画的图仅限于能看懂,包括后面的焊接/接线都是乱七八糟,各位看官见笑
代码实
      因为咱这是HA论坛,所以只对HA相关的内容做出说明,完成代码请移步github
      通讯完全使用mqtt实现,并且在代码里进行MQTT自动注册,所以HA里只需要开启自动发现即可。

       HA的MQTT自动发现配置:

        ‘homeassistant/{switch}/{dev_id}/{object_id}/config’

          由控制台发布,设备端订阅的主题:‘{dev_id}/+/command’

          由控制台订阅,设备端发布的主题:‘{dev_id}/devstate’

       自动发现:

1.土壤湿度传感器(binary_sensor
       topic:homeassistant/binary_sensor/{dev_id}/moisture/config
  1. {"device_class": "moisture", "name": "Temperature", "state_topic": "{dev_id}/state", "payload_on": "wet","payload_off":"dry", "value_template": "{{value_json.moisture_status}}" }
复制代码


2.水位传感器(sensor
topic:homeassistant/sensor/{dev_id}/water/config
  1. {"device_class": "illuminance", "name": "light_accumulation", "state_topic": "{dev_id}/state", "unit_of_measurement": "lx", "value_template": "{{ value_json.light_accumulation}}" }
复制代码


4.LED补光灯(switch
       topic:homeassistant/switch/{dev_id}/led/config
  1. {"name": "plant_led", "command_topic": "{dev_id}/led/command","payload_on":"on","payload_off":"off", "state_topic": "{dev_id}/state", "value_template": "{{value_json.led}}"}
复制代码


5.水泵(switch
      topic:homeassistant/switch/{dev_id}/water/config
  1. {"name": "plant_waterpump", "command_topic": "{dev_id}/water/command","payload_on":"on","payload_off":"off", "state_topic": "{dev_id}/state", "value_template": "{{value_json.water_pump}}"}
复制代码


6.手工/自动模式切换(switch
      topic:homeassistant/switch/{dev_id}/mode/config
  1. {"name": "plant_devmode", "command_topic": "{dev_id}/mode/command","payload_on":"auto","payload_off":"manual", "state_topic": "{dev_id}/state", "value_template": "{{value_json.mode}}"}
复制代码


命令主题:
1.控制水泵
      topic:{dev_id}/water/command
  1. "on"  |   "off"
复制代码

2.控制补光灯
      topic:{dev_id}/led/command
  1. "on"  |   "off"
复制代码

3.控制设备工作模式
      topic:{dev_id}/dev/command
  1. "auto"  |  "manual"
复制代码




设备状态:


1.设备传感器状态
      topic:{dev_id}/devstate
  1. {"dev_id":"9","dev_state":"on","mode":"atuo","moisture_status":"dry","water_level":400,"light_level":1000,"light_accum":1930,"led":"on","water_pump":"off"}
复制代码


  1. {"dev_id":"9","dev_state":"on","mode":"manual","moisture_status":"wet","water_level":400,"light_level":1000,"light_accum":1930,"led":"on","water_pump":"off"}
复制代码







作者: liantianji    时间: 2020-6-13 07:14
牛人,赞1个。
作者: showphi    时间: 2020-6-13 08:33
厉害!厉害!
作者: cqzz1    时间: 2020-6-13 13:00
厉害了 大佬
作者: 情非殇    时间: 2020-6-13 16:12
反正我不会,我就觉得附带原理图的都牛逼
作者: wison    时间: 2020-6-13 22:20
来看看
作者: youquan    时间: 2020-6-15 21:11
牛啊,看这应该是不会啊!!!
作者: wktm    时间: 2020-6-27 21:51
要是再详细些就更好了,能盖更高的楼
作者: nisofer    时间: 2020-6-28 15:38
谢谢楼主分享
作者: 我在草丛快来    时间: 2020-7-5 14:38
楼主利用这套装备做个自浇水花盆吧  应该是这个名称,英语角self watering planter
作者: Sourdough    时间: 2020-7-5 22:09
谢谢分享
作者: comeon_000    时间: 2020-7-7 16:40
楼主 esp32的配置文件是否可以分享一下
作者: uniontech_yao    时间: 2020-7-9 00:42
马克,感谢楼主分享。这连物料都扒光了
作者: zwkilo    时间: 2020-12-1 01:37
楼主,这光敏传感器是啥个错误啊 ERROR:bh1750fvi is not found:[Errno 110] ETIMEDOUT
作者: lswq    时间: 2021-7-8 01:39
牛逼是牛逼,可这紫色光也太阴间了吧hhhhhhhhhhh

作者: q290264917    时间: 2021-11-24 16:04
学习一下,改天自己做个交作业
作者: Astrophysics    时间: 2021-12-16 15:47
标记一下,等种花了来弄一个
作者: million    时间: 2021-12-24 17:42
感谢分享
作者: q2316367743    时间: 2022-11-30 18:31
感谢楼主分享,学习一下,自己也做一个
作者: xyz5378    时间: 2023-1-31 15:25
牛逼了我的个
作者: ccz888888    时间: 2024-7-4 22:54
厉害了 大佬
作者: hnb123    时间: 2024-8-16 15:32
我用笨办法 用天猫精灵 带一个灯ftd来控制水泵开关 每天晚上点和早上7点各浇水一次,he这个不会




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5