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

标题: 【zigbee版】通过脉冲计数读燃气表,将使用量接入HA [打印本页]

作者: Fable    时间: 2023-2-14 06:59
标题: 【zigbee版】通过脉冲计数读燃气表,将使用量接入HA
看到论坛上有大佬把燃气使用量接入HA的,自己也想试试,但是发现都是使用Wi-Fi协议的,没有zigbee的,于是就开始尝试了。
最开始选用zigbee是想用电池供电,且燃气表的位置Wi-Fi信号不是很好,并且已经有zigbee网络。

想用电池的话,Wi-Fi模块那个功耗,就算是深度休眠,也顶不住燃气使用高峰时的频繁上报,肯定不太行,寻思着zigbee休眠的功耗极低,之前也尝试过电池供电的光照传感器,没啥问题,却没想到光电传感器模块耗电量太大了,因为是要全天计量,也不能让传感器休眠,最后还是用常电了
总的来说,既然都要接常电,还是用esp8266(32)接入来的方便简单成本低,zigbee版适用于家里已经有zigbee网关,并搭建了z2m(ZHA的quirk太难写了,会写的也可以试试)的小伙伴。

前置知识
zigbee固件烧录方法
z2m基础使用方法

使用到的硬件
CC2530模块(如XL2530-D01) 也可以用Ebyte的zigbeb开发板
顺便说一下XL2530-D01的引脚是1.27mm的
烧录器(ccdebugger/SmartRF04E)也有看到有教程用esp8266来烧录,但是身边没有esp模块就没有尝试,感兴趣的小伙伴可以尝试一下
光电传感器(小车寻迹模块)(如 TCRT5000)
合适的电源转换器(模块) 用开发版的话直接USB供电就可以

接线
把光电传感器的数字输出连接到CC2530模块上的P1.4(用于脉冲计数)和P1.5(用于外部唤醒,可不接,原本为电池供电准备的)
如不接P1.5,则60秒上报一次数据,接P1.5则感应到脉冲时立即上报
推荐接上外部唤醒,方便HA里去抖动

固件
由于最后使用了常电,所以配置成了路由器,可以中继zigbee网络
固件使用ptvo配置而成
z2m转换文件由ptvo生成

[attach]45335[/attach]

z2m
烧录好固件后,模块会自动进入配对模式,在z2m中打开允许配对

HA部分
z2m会在HA中自动发现
脉冲计数开和关分别算一次,在HA要做好过滤。
我的处理是设置了一个定时器
在5秒内多次计数只会算作一次
自动化的yaml(仅供参考)
  1. alias: 燃气自动计量
  2. description: ""
  3. trigger:
  4.   - platform: state
  5.     entity_id:
  6.       - sensor.ran_qi_ji_shu_qi_l4
  7. condition:
  8.   - condition: state
  9.     entity_id: timer.ran_qi_qu_dou_dong_ji_shi_qi
  10.     state: idle
  11. action:
  12.   - service: timer.start
  13.     data: {}
  14.     target:
  15.       entity_id: timer.ran_qi_qu_dou_dong_ji_shi_qi
  16.   - service: input_number.increment
  17.     data: {}
  18.     target:
  19.       entity_id: input_number.gas
  20. mode: single
复制代码
图形化
[attach]45336[/attach]

思路就是脉冲计数有变化,并且计时器处于空闲状态,就启动计时器,并增加燃气使用量
如果5秒内多次变化,会因为计时器处于激活状态而不触发自动化
计时器设定多久取决于燃气表转的速度
另外,也有看到通过模拟输出的电压来判断是否计数的帖子,但是这次买的模块没有带模拟输出,就暂时没有实验,固件也还没有配置读取模拟输出,之后有机会再加上。

效果图
[attach]45337[/attach]

[attach]45338[/attach]

[attach]45339[/attach]

最后
稍微说一下ZHA和z2m
一开始尝试zigbee的时候,选用的ZHA集成,确实方便,插上协调器,自动发现,舒服。渐渐的就发现问题了,一些偏离zigbee标准的设备,似乎在ZHA上支持的不是很好,比如aqara的单火开关不能设置快速响应模式,涂鸦光感门磁缺失光照数据等。
然后一些DIY设备原生不支持,想要写quirk,好家伙 会一点python的我看完教程一脸懵逼,不会js的我看完z2m的drive的写法,都能明白个大概,开始调试或自己写。
在我看来ZHA适用于遵守zigbee协议的zigbee设备,在标准集群上的功能使用起来十分良好。而z2m适配的设备很多,偏离标准的设备或DIY的设备也能通过较为好理解的js文件添加支持。

以上

参考帖子
【学习-记录-分享】燃气DIY篇2-巧读天然气表
燃气表末位字轮数字 0上的贴片的作用是什么




作者: bugensui    时间: 2023-2-14 11:31
大佬,z2m和zigbee2mqtt是一个东西吗。是不是得配置mqtt服务才能用z2m
作者: ciasdmxhxjjpd@c    时间: 2023-2-14 13:14
本帖最后由 ciasdmxhxjjpd@c 于 2023-2-14 13:24 编辑
bugensui 发表于 2023-2-14 11:31
大佬,z2m和zigbee2mqtt是一个东西吗。是不是得配置mqtt服务才能用z2m

cc2530 的带usb的开发版,刷 zigbee2mqtt 固件。
https://www.jianshu.com/p/bd6448bafcf9

作者: neighbour    时间: 2023-2-14 15:02
唉,我用了最傻的方式。 百度AI图像识别。 免费的份额勉强够用。
作者: iamhyde    时间: 2023-2-14 16:28
666,还有zigbee开发板玩,ptvo做省电版固件貌似收费?
作者: idaniel    时间: 2023-2-14 18:17
666,逆向工程!!牛!
作者: justion    时间: 2023-2-14 20:11
neighbour 发表于 2023-2-14 15:02
唉,我用了最傻的方式。 百度AI图像识别。 免费的份额勉强够用。

那岂不是要安装一个摄像头对着表?然后定时拍照识别?
作者: Fable    时间: 2023-2-14 20:37
bugensui 发表于 2023-2-14 11:31
大佬,z2m和zigbee2mqtt是一个东西吗。是不是得配置mqtt服务才能用z2m

z2m就是zigbee2mqtt的简称
是需要mqtt服务
可以直接一个docker compose把两个服务拉起来,很方便
z2m官网有docker的相关文档可以看一下https://www.zigbee2mqtt.io/guide ... _docker.html#docker
作者: Fable    时间: 2023-2-14 20:41
neighbour 发表于 2023-2-14 15:02
唉,我用了最傻的方式。 百度AI图像识别。 免费的份额勉强够用。

摄像头用的什么方案呢,有看过esp-cam的方案,还能读水表
作者: Fable    时间: 2023-2-14 20:44
iamhyde 发表于 2023-2-14 16:28
666,还有zigbee开发板玩,ptvo做省电版固件貌似收费?

ptvo要配置省电确实收费,免费版做一些小玩意也是够用的
但是对于市面上没有卖的,需要DIY符合自己需求的设备来说,还是很值的

作者: bugensui    时间: 2023-2-14 21:51
本帖最后由 bugensui 于 2023-2-14 21:52 编辑
neighbour 发表于 2023-2-14 15:02
唉,我用了最傻的方式。 百度AI图像识别。 免费的份额勉强够用。


提供图片提取关键部位的ocr确实不难,百度有接口,问题是,燃气表一般在橱柜里,怎么定时拍照呢,图片解析倒是简单,还有,我想不明白,燃气公司是怎么远程抄表的,我们能直接获取他的get数据不,燃气表,应该是不联网的,而且都没有接通电源线,貌似是安装的电池
作者: bugensui    时间: 2023-2-14 21:53
Fable 发表于 2023-2-14 20:37
z2m就是zigbee2mqtt的简称
是需要mqtt服务
可以直接一个docker compose把两个服务拉起来,很方便

谢谢大佬
作者: Fable    时间: 2023-2-14 23:56
bugensui 发表于 2023-2-14 21:53
谢谢大佬

不是大佬就刚入门zigbee的萌新

作者: mobility    时间: 2023-2-15 15:02
neighbour 发表于 2023-2-14 15:02
唉,我用了最傻的方式。 百度AI图像识别。 免费的份额勉强够用。

你好!我的燃气表,没有反光片,无法使用光反射来取数,请问你可以 发些资料给我吗?我也想用 百度的ai识图。谢谢!
作者: gx19970920    时间: 2023-2-16 19:24
大佬牛逼,收藏了,放假时候做一个
作者: 智定义    时间: 2023-2-19 10:12
在配置里添加了js文件,但添加设备后显示不支持,也没有暴露任何数据,请问大佬是怎么弄的
作者: 智定义    时间: 2023-2-19 10:17
在配置中添加了转义js文件,添加设备后显示不支持,也没有数据及实体,请问大佬是怎么弄
作者: neighbour    时间: 2023-2-23 11:41
justion 发表于 2023-2-14 20:11
那岂不是要安装一个摄像头对着表?然后定时拍照识别?

用的一个小方块模组150块钱。 有抓图http cgi接口。用nr的http get就能获取jpg
作者: neighbour    时间: 2023-2-23 11:42
Fable 发表于 2023-2-14 20:41
摄像头用的什么方案呢,有看过esp-cam的方案,还能读水表

esp-cam ov2640 效果太崩溃了。我之前也想用它弄水表了。就算是补光效果还是太差!
作者: neighbour    时间: 2023-2-23 11:46
bugensui 发表于 2023-2-14 21:51
提供图片提取关键部位的ocr确实不难,百度有接口,问题是,燃气表一般在橱柜里,怎么定时拍照呢,图片解 ...

我们家那边燃气公司也是用的NBIOT 的ocr方式 每3天 半夜两点拍照。 我弄得一个小的摄像头模组3*3*3cm. 2.8mm焦距。 燃气公司万智生活家,理论上也可以获取但是频率太低
作者: neighbour    时间: 2023-2-23 11:49
本帖最后由 neighbour 于 2023-2-23 11:57 编辑
mobility 发表于 2023-2-15 15:02
你好!我的燃气表,没有反光片,无法使用光反射来取数,请问你可以 发些资料给我吗?我也想用 百度的ai识 ...

[attach]45601[/attach]
我的气表字体特殊。百度识别准确性拫差。如果只识别四位的话会提高准确性





[{"id":"976de61d.0323d8","type":"function","z":"8e99b4b40fc27c69","name":"构造API消息","func":"var a=msg.payload\nvar b=a.replace(\"data:image/jpeg;base64,\",\"\")\nmsg.payload=\"image=\"+b\nvar token=global.get('token')\nmsg.url=\"https://aip.baidubce.com/rest/2.0/ocr/v1/numbers?access_token=\"+token\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":130,"y":1280,"wires":[["a3d0c8ba.5de698"]]},{"id":"a3d0c8ba.5de698","type":"change","z":"8e99b4b40fc27c69","name":"URL转义","rules":[{"t":"change","p":"payload","pt":"msg","from":"/","fromt":"str","to":"%2F","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"+","fromt":"str","to":"%2B","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":1280,"wires":[["948e678a.524f78"]]},{"id":"948e678a.524f78","type":"http request","z":"8e99b4b40fc27c69","name":"","method":"POST","ret":"txt","paytoqs":"query","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"credentials":{"user":"","password":""},"x":495,"y":1280,"wires":[["aa0e82cd.80e7c"]]},{"id":"aa0e82cd.80e7c","type":"json","z":"8e99b4b40fc27c69","name":"","property":"payload","action":"obj","pretty":false,"x":660,"y":1280,"wires":[["769863bc.1346bc","ae0e95ac446236b8"]]},{"id":"ae0e95ac446236b8","type":"switch","z":"8e99b4b40fc27c69","name":"token失效检测","property":"payload.error_code","propertyType":"msg","rules":[{"t":"cont","v":"110","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":865,"y":1280,"wires":[[]]},{"id":"769863bc.1346bc","type":"change","z":"8e99b4b40fc27c69","name":"提取返回结果","rules":[{"t":"move","p":"payload.words_result.0.words","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":140,"y":1330,"wires":[[]]},{"id":"d18e5c88.c9bfb","type":"simplejs","z":"8e99b4b40fc27c69","g":"3cf66ba9552b45cc","func":"parse-int","property":"payload","name":"转成数值","x":320,"y":1330,"wires":[["a1d0eaac.f40208"]]},{"id":"a1d0eaac.f40208","type":"function","z":"8e99b4b40fc27c69","name":"数值变换清洗","func":"var a=msg.payload\nvar b=a/100\nif (b<5000&&b>4000&&(b-global.get('rqls')<30&&(b-global.get('rqls'))>0))\n{\n    msg.payload=b\n}\nelse\n{\nmsg.payload=global.get('rqls')\n    \n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":515,"y":1330,"wires":[["6ba60ff7.3892f"]]},{"id":"6ba60ff7.3892f","type":"function","z":"8e99b4b40fc27c69","name":"数据比较","func":"var a=msg.payload\nvar rqls=global.get('rqls')\nif (a>=rqls)\n{\n    msg.payload=a\n    global.set('rqls',a)\n}\nelse\n{\nmsg.payload=global.get('rqls')\n    \n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":670,"y":1330,"wires":[[]]},{"id":"d13dd6b7.2a4d38","type":"inject","z":"8e99b4b40fc27c69","name":"周末白天","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"0 7-18 * * 6,0","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":130,"y":1080,"wires":[[]]},{"id":"9163a683.d762e8","type":"ONVIF Snapshot","z":"8e99b4b40fc27c69","g":"c63021ea63fed787","name":"燃气抄表","url":"http://192.168.1.219:8080/onvif/device_service","username":"admin","password":"xxxxxxx","x":320,"y":1080,"wires":[["9b78d6e9.3d5018"]]},{"id":"9b78d6e9.3d5018","type":"change","z":"8e99b4b40fc27c69","name":"移动payload","rules":[{"t":"move","p":"payload.image.base64","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":1130,"wires":[["89a816f4.e9ebf8"]]},{"id":"89a816f4.e9ebf8","type":"change","z":"8e99b4b40fc27c69","name":"去掉前缀","rules":[{"t":"change","p":"payload","pt":"msg","from":"data:image/jpeg;base64,","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":1130,"wires":[["61f433d4fcee2e95"]]},{"id":"61f433d4fcee2e95","type":"image viewer","z":"8e99b4b40fc27c69","name":"","width":"320","data":"payload","dataType":"msg","active":true,"x":510,"y":1180,"wires":[["9cfbedb1.b6f99"]]},{"id":"9cfbedb1.b6f99","type":"jimp-image","z":"8e99b4b40fc27c69","name":"裁切","data":"payload","dataType":"msg","ret":"b64","parameter1":"390","parameter1Type":"num","parameter2":"370","parameter2Type":"num","parameter3":"800","parameter3Type":"num","parameter4":"160","parameter4Type":"num","parameter5":"","parameter5Type":"msg","parameter6":"","parameter6Type":"msg","parameter7":"","parameter7Type":"msg","parameter8":"","parameter8Type":"msg","sendProperty":"payload","sendPropertyType":"msg","parameterCount":4,"jimpFunction":"crop","selectedJimpFunction":{"name":"crop","fn":"crop","description":"crop to the given region","parameters":[{"name":"x","type":"num","required":true,"hint":"the x coordinate to crop form"},{"name":"y","type":"num","required":true,"hint":"the y coordinate to crop form"},{"name":"w","type":"num","required":true,"hint":"the width of the crop region"},{"name":"h","type":"num","required":true,"hint":"the height of the crop region"}]},"x":685,"y":1180,"wires":[["91b0ad17.8b417"]]},{"id":"91b0ad17.8b417","type":"jimp-image","z":"8e99b4b40fc27c69","name":"转灰度","data":"payload","dataType":"msg","ret":"b64","parameter1":"0.5","parameter1Type":"msg","parameter2":"","parameter2Type":"num","parameter3":"780","parameter3Type":"num","parameter4":"200","parameter4Type":"Blend","parameter5":"","parameter5Type":"msg","parameter6":"","parameter6Type":"msg","parameter7":"","parameter7Type":"msg","parameter8":"","parameter8Type":"msg","sendProperty":"payload","sendPropertyType":"msg","parameterCount":0,"jimpFunction":"greyscale","selectedJimpFunction":{"name":"greyscale","fn":"greyscale","description":"remove colour from the image","parameters":[]},"x":860,"y":1180,"wires":[["c3d70deb.132b"]]},{"id":"c3d70deb.132b","type":"image viewer","z":"8e99b4b40fc27c69","name":"","width":"240","data":"payload","dataType":"msg","active":true,"x":1060,"y":1180,"wires":[["ee6d2790.11c3e8"]]},{"id":"ee6d2790.11c3e8","type":"jimp-image","z":"8e99b4b40fc27c69","name":"位图转换","data":"payload","dataType":"msg","ret":"b64","parameter1":"100","parameter1Type":"num","parameter2":"255","parameter2Type":"num","parameter3":"","parameter3Type":"none","parameter4":"180","parameter4Type":"num","parameter5":"","parameter5Type":"msg","parameter6":"","parameter6Type":"msg","parameter7":"","parameter7Type":"msg","parameter8":"","parameter8Type":"msg","sendProperty":"payload","sendPropertyType":"msg","parameterCount":3,"jimpFunction":"threshold","selectedJimpFunction":{"name":"threshold","fn":"threshold","description":"apply one or more functions","parameters":[{"name":"max","group":"options","type":"num","required":true,"hint":"max value of byte 0 ~ 255"},{"name":"replace","group":"options","type":"num","required":false,"hint":"replace with byte 0 ~ 255. Default is 255"},{"name":"autoGreyscale","group":"options","type":"bool","required":false,"hint":"default is true"}]},"x":1275,"y":1180,"wires":[["976de61d.0323d8"]]}]

作者: neighbour    时间: 2023-3-4 14:20
mobility 发表于 2023-2-15 15:02
你好!我的燃气表,没有反光片,无法使用光反射来取数,请问你可以 发些资料给我吗?我也想用 百度的ai识 ...

刚发现一个便宜 省事的方案
https://jomjol.github.io/AI-on-the-edge-device-docs/Installation/
作者: mobility    时间: 2023-3-6 08:46
本帖最后由 mobility 于 2023-3-8 09:14 编辑

[attach]46040[/attach]谢谢你提供的消息哦,总算是基本搞定了,花的时间最多的是 反复测试如何固定设备,获得最佳效果的照片。。。

作者: haikuoyi    时间: 2023-3-25 23:27
插眼,插眼
作者: liujunmao    时间: 2023-7-1 16:03
很好、很强大,这个一定得支持!!!
作者: heiyangou    时间: 2024-7-31 15:50
先学习,感谢分享




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