非智能盖革计数器接入homeassistant(光学识别)上
追加修改(2022-09-26 09:14:45):
发现大家关注点有点跑偏,本文重点是非智能设备光学识别接入流程。盖革计数器只是演示设备,大家可以根据需要接入其他设备。
前言
本期以盖革计数器为例演示如何将非智能设备接入到homeassistant中
涉及内容比较多
上篇主要讲HA设置部分
硬件准备
摄像头一个
因为不想对盖革计数器进行硬件改造
而且手头有个esp32-cam
所以打算用OCR方案(光学识别)
如果所拍摄物体比较远
建议用好一点的ip cam
百元左右TP或者水星性价比都不错
还可以用闲置手机当网络摄像头
APP推荐IP Webcam
如果介意有水印的可以百度下 PJ版的 IP Webcam PRO
然后在HA里添加集成就可以了
创建OCR服务器
本来打算用自带的Seven Segments OCR组件
不知为什么我这个docker版HA没有 ,组件安装还比麻烦
干脆搭建个飞桨ocr服务器
不用设置文字坐标
也不仅限于数字
调用起来也方便
代码如下
docker run -d -p 5001:5000 --restart=always c403/paddleocr
调用例子
json 格式
curl IP:5001/ocr -F imgurl=https://res.smzdm.com/mobile/wap/dist/img/download_logo.png -F outtype=json
只显示结果
curl IP:5001/ocr -F imgurl=https://res.smzdm.com/mobile/wap/dist/img/download_logo.png
上传图片文件
curl ip:5001/ocr -F img=@/tmp/img.png
识别测试
示例图片
第一行是即时辐射值
第二行是运行5分钟之后的平均数值
识别结果
可以看到第二行就是要提取的数据
homeassistant设置
修改configuration.yaml文件添加如下代码
homeassistant:
allowlist_external_dirs:
- /config/
- /tmp/
sensor:
- platform: command_line
name: radiation
command: "curl 172.17.0.1:5001/ocr -F img=@/config/radiation_ocr.jpg -s | sed -n '2p'"
unit_of_measurement: "uSv/h"
unique_id: "sensor.radiation"
这里 sed -n '2p'" 即获取第二行数据
大家按需求自行修改
然后创建自动化就就可以了
我设置的是每天8点
摄像头截图保存在 /config/radiation_ocr.jpg
然后更新命令行传感器
alias: 每天八点自动更新
description: ""
trigger:
- platform: time
at: "08:00:00"
condition: []
action:
- service: camera.snapshot
data:
filename: /config/radiation_ocr.jpg
target:
entity_id: camera.192_168_68_94
- delay:
hours: 0
minutes: 0
seconds: 3
milliseconds: 0
- service: homeassistant.update_entity
data: {}
target:
entity_id: binary_sensor.updater
mode: single
测试ok
几行代码就搞定了
是不是很简单
闲来无事我又测试了下文字识别
还是挺好用的
总结
本文主要学习了HA的命令行传感器和orc服务器搭建
https://www.home-assistant.io/integrations/sensor.command_line/
该ocr方案相比HA自带的seven segments省去了调试的麻烦
而且也不用设置完坐标担心摄像头位移问题
缺点就是docker体积有点大(2G),不兼容ARM架构
最后附上操作视频
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~














校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案