『瀚思彼岸』» 智能家居技术论坛
标题: 《照顾好我的幸福树》自动浇花+补光——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
- {"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
- {"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
- {"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
- {"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
- {"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
2.控制补光灯
topic:{dev_id}/led/command
3.控制设备工作模式
topic:{dev_id}/dev/command
设备状态:
- moisture_status:土壤湿度,true为”干/缺水“,false为”湿润/不缺水“
- water_level:水位值浸入水后数值基本在500-600.400以下不敏感(esp8266)0-4095(esp32)
- light_level:读取值0-54613light_accum: 当天光照量统计,每10分钟记录一次
- light_levelled:补光灯是否工作water_pump:水泵是否工作
1.设备传感器状态
topic:{dev_id}/devstate
- {"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"}
复制代码
- {"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 |