找回密碼
 立即註冊
惟家LINE群QRCODE
    查看: 1|回覆: 0

    寵物自動餵食器接進 HA:餵食紀錄與異常偵測

    [複製鏈接]

    !lvup!   100%

    363

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22005752
    發表於 3 天前 | 顯示全部樓層 |閱讀模式
    自動餵食器本身就能定時,但接進 HA 之後才知道「牠到底有沒有吃」



    單靠餵食器不夠的三個理由


    • 餵食器只知道「我放了飼料」,不知道寵物有沒有吃
    • 卡料的時候通常不會通知(或者通知在它自己的 App 裡)
    • 出遠門時你最想知道的是「今天有沒有正常」


    接進 HA 的三種路徑

    路徑一:官方整合或社群整合

    有些品牌有 HA 整合,可以:


    • 觸發餵食
    • 讀取餵食紀錄
    • 讀取餘糧量


    買之前查一下「品牌名 + Home Assistant」。

    路徑二:智能插座 + 功率判斷

    適合只有定時功能、沒有連網的餵食器。


    • 馬達轉動時功率會上升
    • 可以判斷「有沒有真的出料」

    1. template:
    2.   - binary_sensor:
    3.       - name: 餵食器運轉中
    4.         unique_id: feeder_running
    5.         delay_on: "00:00:03"
    6.         delay_off: "00:00:20"
    7.         state: >
    8.           {{ states('sensor.feeder_power') | float(0) > 3 }}
    複製代碼

    路徑三:自己做(ESPHome)

    如果你會一點 DIY:


    • ESP32 + 步進馬達 + 螺旋出料
    • 加一個秤重感測器(HX711 + 荷重元)知道放了多少
    • 完全可控,而且可以做很細的邏輯


    但老實說,除非你想玩,買現成的比較實際。



    關鍵:怎麼知道「真的吃了」

    方法一:秤重(最準)

    在食盆下面放一個荷重元(load cell)
    1. # ESPHome
    2. sensor:
    3.   - platform: hx711
    4.     name: "食盆重量"
    5.     dout_pin: GPIO16
    6.     clk_pin: GPIO17
    7.     gain: 128
    8.     update_interval: 10s
    9.     unit_of_measurement: g
    10.     filters:
    11.       - calibrate_linear:
    12.           - 0 -> 0
    13.           - 250000 -> 500      # 用已知重量校正
    14.       - median:
    15.           window_size: 7
    16.           send_every: 7
    17.       - delta: 3               # 變化超過 3 克才回報
    複製代碼

    delta 濾波很重要 —— 荷重元的讀值會一直微幅跳動,
    沒有它的話資料庫會被塞爆。

    自動化
    1. alias: 確認有吃飯
    2. triggers:
    3.   - trigger: state
    4.     entity_id: binary_sensor.餵食器運轉中
    5.     from: "on"
    6.     to: "off"
    7. actions:
    8.   - delay: "00:00:30"        # 等飼料掉完、重量穩定
    9.   - variables:
    10.       放了多少: "{{ states('sensor.食盆重量') | float(0) }}"
    11.   # 等一小時看有沒有減少
    12.   - wait_template: >
    13.       {{ states('sensor.食盆重量') | float(999)
    14.          < 放了多少 * 0.3 }}
    15.     timeout: "01:30:00"
    16.   - if: "{{ wait.completed }}"
    17.     then:
    18.       - action: logbook.log
    19.         data:
    20.           name: 寵物
    21.           message: >
    22.             正常進食({{ 放了多少 | round(0) }} 克)
    23.     else:
    24.       - action: notify.mobile_app_charles
    25.         data:
    26.           title: 可能沒吃飯
    27.           message: >
    28.             一個半小時前放了 {{ 放了多少 | round(0) }} 克,
    29.             現在還有 {{ states('sensor.食盆重量') | round(0) }} 克
    30. mode: single
    複製代碼

    「沒吃飯」是寵物生病最早的徵兆之一
    這個通知的價值比「定時餵食」高很多。

    方法二:人體感應器 / 攝影機

    在食盆附近裝一個感應器:
    1. template:
    2.   - binary_sensor:
    3.       - name: 寵物在吃飯
    4.         state: >
    5.           {{ is_state('binary_sensor.food_area_motion','on') }}
    6.         delay_off: "00:02:00"
    複製代碼

    PIR 對小動物的靈敏度比較差(體溫和體積都小),
    放近一點、朝下裝會比較好。

    用 Frigate 的話可以辨識「dog」或「cat」
    1. cameras:
    2.   pet_area:
    3.     objects:
    4.       track:
    5.         - dog
    6.         - cat
    7.       filters:
    8.         cat:
    9.           min_area: 1500      # 貓比人小很多,門檻要調低
    10.           threshold: 0.65
    複製代碼

    注意:Frigate 對貓狗的辨識率比對人低
    而且角度和光線影響很大。要多調幾次。

    方法三:餘糧量監控
    1. alias: 飼料快沒了
    2. triggers:
    3.   - trigger: numeric_state
    4.     entity_id: sensor.feeder_remaining
    5.     below: 20
    6. actions:
    7.   - action: notify.mobile_app_charles
    8.     data:
    9.       title: 飼料快沒了
    10.       message: >
    11.         剩下約 {{ states('sensor.feeder_remaining') }}%,
    12.         大概還能撐 {{ (states('sensor.feeder_remaining') | float(0) / 8)
    13.                       | round(0) }} 天
    14. mode: single
    複製代碼



    餵食紀錄怎麼做

    用 counter 記次數
    1. counter:
    2.   daily_feedings:
    3.     name: 今日餵食次數
    4.     initial: 0
    5.     step: 1
    複製代碼
    1. # 餵食時 +1
    2. - action: counter.increment
    3.   target: {entity_id: counter.daily_feedings}
    4. # 每天午夜重設
    5. alias: 重設餵食計數
    6. triggers:
    7.   - trigger: time
    8.     at: "00:00:00"
    9. actions:
    10.   - action: counter.reset
    11.     target: {entity_id: counter.daily_feedings}
    複製代碼

    用 logbook 記詳細內容
    1. - action: logbook.log
    2.   data:
    3.     name: 餵食
    4.     message: >
    5.       {{ now().strftime('%H:%M') }} 放了 {{ 放了多少 | round(0) }} 克
    6.     entity_id: sensor.食盆重量
    複製代碼

    做一張儀表板卡片
    1. type: entities
    2. title: 寵物
    3. entities:
    4.   - entity: counter.daily_feedings
    5.     name: 今日餵食
    6.   - entity: sensor.食盆重量
    7.   - entity: sensor.feeder_remaining
    8.     name: 飼料餘量
    9.   - entity: sensor.water_level
    10.     name: 飲水量
    11.   - type: divider
    12.   - entity: sensor.last_eaten
    13.     name: 上次進食
    14.   - type: button
    15.     name: 手動餵食
    16.     action_name: 餵
    17.     tap_action:
    18.       action: call-service
    19.       service: script.manual_feed
    複製代碼

    出遠門時的每日摘要
    1. alias: 寵物每日摘要
    2. triggers:
    3.   - trigger: time
    4.     at: "21:00:00"
    5. conditions:
    6.   - condition: state
    7.     entity_id: input_select.house_mode
    8.     state: 度假
    9. actions:
    10.   - action: notify.mobile_app_charles
    11.     data:
    12.       title: 今天的寵物狀況
    13.       message: >
    14.         餵食 {{ states('counter.daily_feedings') }} 次。
    15.         飼料還有 {{ states('sensor.feeder_remaining') }}%。
    16.         {% set w = states('sensor.water_level') | float(0) %}
    17.         {% if w < 30 %}飲水快沒了({{ w }}%)。
    18.         {% else %}飲水正常。{% endif %}
    19.         室溫 {{ states('sensor.living_room_temperature') }} 度。
    20. mode: single
    複製代碼

    幾個重要的安全考量

    一、絕對不要讓餵食器依賴網路


    • 餵食器本身要有內建的定時功能
    • HA 只負責「監控」和「額外觸發」
    • 網路掛了、HA 掛了,寵物還是要有飯吃


    這是原則問題。不要做成「HA 觸發才會餵」。

    二、不要接在會被自動關掉的插座上


    • 餵食器的插座不要放進任何「離家關電」的自動化
    • 最好用沒有智能功能的插座,或者確認「斷電後預設是開」


    三、飲水也要監控

    缺水比缺食物危險很多。


    • 用水位感測器或荷重元
    • 或者用流量計(如果是循環飲水機)
    • 設一個「低於 X% 就緊急通知」


    四、溫度監控

    出遠門的時候,家裡沒開冷氣可能會熱死寵物
    1. alias: 寵物在家時的溫度警報
    2. triggers:
    3.   - trigger: numeric_state
    4.     entity_id: sensor.living_room_temperature
    5.     above: 30
    6.     for: "00:15:00"
    7. conditions:
    8.   - condition: state
    9.     entity_id: input_select.house_mode
    10.     state: 度假
    11. actions:
    12.   - action: climate.set_temperature
    13.     target: {entity_id: climate.living_room}
    14.     data: {temperature: 27, hvac_mode: cool}
    15.   - action: notify.mobile_app_charles
    16.     data:
    17.       title: 家裡太熱
    18.       message: >
    19.         室內 {{ states('sensor.living_room_temperature') }} 度,
    20.         已自動開啟冷氣
    21.       data:
    22.         push:
    23.           interruption-level: time-sensitive
    24. mode: single
    複製代碼

    這個是我覺得養寵物最該做的自動化,比餵食重要。

    ---

    我家沒有養寵物,這篇是整理論壇上和幾個朋友的經驗寫的。

    有養的朋友說:「餵食其實餵食器自己就會做,
    真正有價值的是知道牠有沒有吃、水夠不夠、家裡會不會太熱。」


    這句話我覺得總結得很好。
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-9-24 10:30 , Processed in 0.078858 second(s), 24 queries .

    快速回覆 返回頂部 返回列表