作者:sonatasss
前言
本期以蓋革計數器為例演示如何將非智慧裝置接入到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架構
最後附上操作影片