偵測瓦斯桶內瓦斯剩餘量的Mopeka聲納感測器(Home Assistant可支援)

家裡沒有拉天然瓦斯的管路,一直以來都是使用瓦斯桶,後來購入了瓦斯烘衣機後,開始把腦筋動到怎麼監測瓦斯桶內瓦斯剩餘量的問題上面。本想用秤重去解決,但總覺得心裡哪裡過不去,覺得這應該不是我要的解法,後來我看到了Mopeka這個聲納感測器,更重要的是Home Assistant在Core 2023.2開始支援Mopeka的整合,直覺就是這個了。

Mopeka是利用聲納的原理來偵測瓦斯桶內液面的高度,透過低功耗藍芽將數據回傳APP,由APP內設定的瓦斯桶重量(真的是重量我沒打錯)回推瓦斯剩餘量。APP可以設定低量警示,但你不會每天都經過你家的瓦斯桶,不一定會有最即時的資料,且對於一個Home Assistant的使用者來說,接入Home Assistant後寫個automation就沒事了。

這個感測器叫Mopeka Pro Check Gas Level Sensor with Mount Collar,約一個手掌大,要購買的話記得要買有磁鐵的版本,才能利用磁鐵吸附在瓦斯桶底部。下圖黑色的橡膠墊後就是聲納感測器,旁邊有二個圓形的強力磁鐵,這個吸力真的很強,可能是釹鐵硼磁鐵。

先用Mopeka的APP做設定,按下正面的SYNC按鈕後就會抓到感測器。

點進去後就會看到感測器的狀態,因為我把感測器拿在手上,所以它偵測到沒瓦斯以及擺放的位置不對。

把感測器放在水平面上後,點Sensor Position的下拉箭頭,按Zero Sensor可以重置感測器的水平。

右上角齒輪點進去可以設定感測器名稱、地區、瓦斯桶重量、顯示方式、丙烷與丁烷的比例、感測器更新頻率與通知等等,這裡我沒有更改任何設定。

再來就是把感測器貼附到瓦斯桶底部,瓦斯桶下面墊了二塊磚是方便手伸進去調整感測器的位置,還有就是提高藍芽訊號的強度。

看著APP裡Sensor Position的部分,手動調整感測器的位置讓感測器水平。

成功偵測後就可以看到瓦斯剩餘量的資訊,還有連線品質的指標。

這張圖片的 alt 屬性值為空,它的檔案名稱為 Screenshot_20240205_200203_com.mopeka.tankcheck-576x1024.jpg

再來是要接入Home Assistant的整合,可想而知的問題來了,我主機收不到藍芽訊號。最後解決的方式是拿一塊ESP32開發板裝EspHome Bluetooth Proxy,把藍芽訊號轉成Wi-Fi訊號後解決的,可以參考Bluetooth Proxy — ESPHome這裡。

因為是放在戶外,所以我找了一個電子材料行可以買的到的小盒子把ESP32放進去,放的位置離瓦斯桶大概只有30公分的距離。

再來就是前面講的把瓦斯桶墊高,完全沒墊的話是收不到訊號的,有墊高的話可以參考下圖,訊號強度大概在-62dBm左右,而後面訊號強度有拉起來是因為換瓦斯桶時把感測器拿起來放在旁邊,訊號強度馬上變成正常該有的水準。

如果Mopeka到Bluetooth Proxy這段和Bluetooth Proxy轉Wi-Fi這段都正常的話,Home Assistant會自己偵測到有新裝置可以加入。一個裝置提供八個實體,有液面高度、電池電量、電池電壓、連線品質、藍芽訊號強度、感測器溫度與感測器X/Y方向水平偏移量。

關於Home Assistant在瓦斯剩餘量過低時要做提醒的自動化,就看各人習慣怎麼寫,我是透過Line做通知。當液面高度小於2cm左右時,是還有一點瓦斯可以用,但Mopeka有機率偵測不到,實體的狀態會變成未知。

- alias: Information:Gas_Tank_Low_Level
  trigger:
    - platform: time
      at: "18:00"
  condition:
    - condition: template
      value_template: "{{ states.sensor.balcony1f_dryer_tank_level.state | float < 2 or states.sensor.balcony1f_stove_tank_level.state | float < 2 }}"
  action:
    - service: notify.notify_line
      data:
        message: >
          {% if states.sensor.balcony1f_dryer_tank_level.state | float < 2 %}
            烘衣機用的瓦斯桶,瓦斯剩餘量過低。
          {% elif states.sensor.balcony1f_stove_tank_level.state | float < 2 %}
            瓦斯爐用的瓦斯桶,瓦斯剩餘量過低。
          {% endif %}

Lovelace就用custom:multiple-entity-row來寫,簡潔易看。

程式碼如下

type: vertical-stack
cards:
  - type: custom:multiple-entity-row
    entity: sensor.balcony1f_stove_tank_level
    icon: mdi:propane-tank
    name: 瓦斯爐
    show_state: false
    tap_action:
      action: none
    entities:
      - entity: sensor.balcony1f_stove_tank_level
        name: 餘量
        styles:
          width: 60px
      - entity: sensor.balcony1f_stove_tank_signal
        name: 訊號
        styles:
          width: 60px
      - entity: sensor.balcony1f_stove_tank_quality
        name: 穩定度
        styles:
          width: 60px
  - type: custom:multiple-entity-row
    entity: sensor.balcony1f_dryer_tank_level
    icon: mdi:propane-tank
    name: 烘衣機
    show_state: false
    tap_action:
      action: none
    entities:
      - entity: sensor.balcony1f_dryer_tank_level
        name: 餘量
        styles:
          width: 60px
      - entity: sensor.balcony1f_dryer_tank_signal
        name: 訊號
        styles:
          width: 60px
      - entity: sensor.balcony1f_dryer_tank_quality
        name: 穩定度
        styles:
          width: 60px

使用的是CR2032水銀電池

在〈偵測瓦斯桶內瓦斯剩餘量的Mopeka聲納感測器(Home Assistant可支援)〉中有 5 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端