コモノポリタン

コモノ、デジモノが好きなKomonopolitan住民 (はてなダイアリーからの引っ越しです)

【Home AssistantでDIY Smart Home】雨量計

【Home Assistant(Hass.io)】
雨量計 powered by Xiaomiセンサー

「Home Assistant(Hass.io)でホームオートメーション 再起動!」シリーズです。

 すっかり涼しくなって(たまに比較的暑い日も来ますが)秋だなぁと思う日が増えてきました。エアコンのリモコン信号の解析・合成のモチベーションがだだ下がりする今日この頃です。
 一方で秋の長雨のシーズンになり「いま、家ではどんぐらいの雨が降っているのかな」というのが気になるシーズンになりました。

 雨量をシステム的に測るには、気象庁も採用している「転倒枡式雨量計」( http://www.jma.go.jp/jma/kishou/know/kansoku_guide/b1.html)というのが良さそうで、3Dプリントで自作することも考えました。しかし我が家の可愛い3Dプリンタは小さいので、雨量計の様な差し渡しが10cmになりそうなものを設計するには「気合」と「技術」がいります。
 そん時いつものaliexpressをプラプラ散策していると転倒枡+センサー(リードスイッチのみ)がセットになっているmisolのスペアパーツを見つけました。しかも、ナイスなことにXiaomiドア窓センサーとそのmisolの部品を使った雨量計をHome Assistantで使っている人がいました! community.home-assistant.io  aliexpressに発注していたmisolのスペアパーツが到着したので*1、今回はひねりもなく、上記サイトの通りに雨量計を作ることにします。Thank you, Parrel !

この記事の前提条件
Home Assistant 2021.9.7
Home Assistant OS 6.4
Server Raspberry Pi 4(2GB)

 上記バージョンを前提とした手順です。 (最新版では動かないこともあるかもしれませんが、私が使っている限り、備忘録を兼ねて最新化してゆきたいとは思っています)

1. 準備

雨量計
misol(?ウェザーステーションらしいのですが?)のスペアパーツとして売られてます。スペア?壊れやすいのかな?中身を見るとリードスイッチがあるだけです。
価格:AliExpressでだいたい1個1600円ぐらい。
Xiaomi Aqara Door & Window Sensor
いつものコレです。これ使い勝手が良いのです。スイッチのワイヤレス化としては秀逸です。今回はリードスイッチ壊したやつを使います。
価格:AliExpressで4個とかまとめて買うと1個900円ぐらいかな。
外に取り付ける金具など
雨量計は外に出しておかなければならないので、どこかに固定する必要あります。傾いていると正しく雨量が測れませんし。他にも金具とかネジとか使いました。
価格:こういうの諸々買うと1000円は超えちゃうんだよねぇ。

2. 雨量計をつくる/改造する

 まずはmisolの雨量計スペアをばらします。爪で留まっているだけなので、どんどんばらしてゆきます。基盤から出ているケーブルを適当(ぴったりという意味)で切って赤と緑の2本の線を露出させます。

 いつものXiaomi Door & Windowsセンサーをいつも通り4枚におろし、今回は基盤だけ使います。元に戻したければ、テストパッド(?)にはんだ付けをすれば良いのですが、今回はXiaomiセンサーのリードスイッチを破損させてたヤツが手元にあったのでそれを使います。雨量計の赤と緑のケーブルをXiaomiセンサーのリードスイッチがあったところにはんだ付けします*2

奥の雨量計の基板にリードスイッチが見えますね。
 まずは雨量計の基盤をケースに戻します。奥にケーブルを出す切り欠きがあるので、一旦そこをケーブルを出して底まで基盤を押し込みます。

 雨量計の基板から出ているケーブルを基盤の緑側にうまい具合に押し込みます。Xiaomiセンサーには電池を入れて、雨量計の基盤の横にある広めの隙間に格納します。

 蓋をしたら出来上がりです。切り欠き部分は雨が入らないようにテープか何かで埋めておきましょう。

3. Home Assistantの設定(センサー・UI)

追記(2022/1/5):この記事の設定ではHome Assistant再起動のたびにゴミが発生することが判明。下記記事が修正版。 maky-ba.hatenablog.com (以下、修正前のまま残します)

 まったくひねりなく、Parrelさんのサイトの記載の通り下記の様にConfiguration.yamlに2つのセンサーを設定します。一つは一日に何回枡が転倒したか数えるraingauge_tipsセンサーです。もう一つは、1回転倒した雨量を基に一日の降雨量を計算するraifall_todayセンサーです。

(前略)
#***************************************************************************
# Sensor
#***************************************************************************
sensor:

(中略)

  # Rain Gauge
  - platform: history_stats
    name: Raingauge tips
    entity_id: binary_sensor.door_window_25_contact
    state: 'off'
    type: count
    start: '{{ now().replace(hour=0, minute=0, second=0) }}'
    end: '{{ now() }}'
  # 
  - platform: template
    sensors:
      rainfall_today:
        friendly_name: Rainfall today
        unit_of_measurement: mm
        value_template: >-
          {% set count = states('sensor.raingauge_tips') | int %}
          {% set mm_per_pulse = 0.30303 %}
          {% set mm = count * mm_per_pulse %}
          {{ mm|round(1, 'floor') }}

(後略)

 「状態」の中で、Lovelace UIを設定します。下記の様にエンティティカードを設定すると、雨量計の情報をカードで見ることができます。

 日が変わるとカウンタがリセットされます。が、最初なぜか9時にリセット… 9時?おお?UTCか?
 UIで諸々の設定が出来るようになったときに、Configuration.yamlファイルのHomeassistant:セクションを書きまくっていたので自動設定が無効になっていたのを思い出しました。つまりタイムゾーン設定が無効になってました。そりゃあ1日が9時始まりになりますよね。タイムゾーン設定をAsia/Tokyoに設定すれば解決!

4. 取付

 買ってきた金具と家にあった金具やネジで庭の柵に土台を作ります。ステンレスの取付用の板ははみ出たところを切るか、3Dプリンタでぴったりサイズの取り付け台を作りたいものです。取り合えずテスト用に借り設置します*3

 小さいネジで雨量計を取り付けます。

 最後に上から見て、水準器(手前の赤丸)で水平に取り付けられているか確認します(左写真)。全体像はこんな感じです。やはり、はみ出しているステンレスが邪魔ですね(右写真)。

 テストに散水ホースでシャワーの様に水をかけてカウントされるかテストします。筐体がいかにもプラスチックというものなので、結構「カタンカタン」という転倒枡の音がしますね。

5. おわりに

 秋の長雨シーズン、無事に降水量を記録できるかな?こうなると次は風向風速計に手をだすかな?超音波式の可動部のない風向風速計を作りたいと思っているのですが。さて。

maky-ba.hatenablog.com

*1:お気づきかもしれませんが「aliexpressをぷらぷら」していたのは実は夏真っ盛りの台風到来時です。やっと届きました…

*2:今回のはんだ付けは、汚いですね…半田ごて新調しようかな。

*3:なんて言ってそのまま常用しちゃうものですが…。