コモノポリタン

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

【Home AssistantでDIY Smart Home】空気の乾燥に注意!

【Home Assistant(Hass.io)】
絶対湿度を把握せよ!

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

 せっかく温湿度計が設置されているので、この冬も快適な生活のために役立てたいと思います。
 冬の心配は風邪とかインフルエンザですね。今年はそれにコロナも加わり大変な状況です。コロナはどうかはわかりませんが、ウイルス性疾患であるインフルエンザは湿度によって罹りやすさが変わるそうです。そのあたり表示してゆきましょう。

この記事の前提条件
Home Assistant 2021.1.4
HassOS 5.10
Server Raspberry Pi 4(2GB)

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

1. 冬の快適さ

 この間の夏には快適な生活の目安のために不快指数を表示できるようにしました。レベルメーターで猛暑の可視化ができるようになり「おっとエアコンつけなきゃ」と在宅勤務のレベルを上げるにも一役買いました。
maky-ba.hatenablog.com

 さて冬の快適さといえばまずは寒さ対策でしょうが、やはり昨今ではインフルエンザなどのウイルスの活動を抑える「湿度」も忘れてはいけません。ウェザーニュースのサイトによると、重要な指数は「絶対」湿度(正確には容量絶対湿度)だそうです。
weathernews.jp

絶対湿度
[g/㎥]
インフルエンザ流行
11以上 流行しにくい
7~11 流行しやすい
7以下 より流行しやすい

 容量絶対湿度の計算式は、Wikipediaの下記の項あたりを参照すると良いでしょう。

 以下に計算式を取りまとめてみました。
f:id:maky_Ba:20210117182655j:plain

2. 絶対湿度計算式のセンサーを設定

sensors:
(中略)
  # Volumetric Humidity
  - platform: template
    sensors:
      # saturation water vapor pressure
      swvp_inside:
        value_template: "{{ (6.1078 * (10 ** ( (7.5 * states('sensor.last_value_of_inside_temp')|float) / (states('sensor.last_value_of_inside_temp')|float + 237.3)))) }}"
      # amount of saturation water vapor pressure
      aswvp_inside:
        value_template: "{{ (217 * states('sensor.swvp_inside')|float) / (states('sensor.last_value_of_inside_temp')|float + 273.15) }}"
      # Volumetric Humidity
      # Volumetric Humidity
      vh_inside:
        value_template: "{{ (states('sensor.vh_aswvp_inside')|float * (states('sensor.last_value_of_inside_humidity')|float / 100))| round(2) }}"

3. 絶対湿度の表示

 せっかく夏は不快指数の表示を実現したので、夏は不快指数を表示して、冬は絶対湿度を表示する快適度パネルを作りたいですね。
 まずは、熱中症が気になる=不快指数が気になる時期を「夏」、インフルエンザが気になる=絶対湿度が気になる時期を「冬」として定義する方法を考えましょう。熱中症が心配なのは、まあ、5月~9月でしょう。異論があるかもしれませんが。
 夏、冬ということで、まあ順当に考えれば季節を返してくれるseasonセンサーを設定するのが良いのかもしれません。しかしながらAstronomical夏至とか春分とかで区切る)でもMeteorological(月で区切る)でも、今回の希望にはかないません。5月~9月の間を暑い時期(Hot Season)と定義する独自のis_hot_seasonセンサーを作ります。

(前略)
  - platform: template
    sensors:
      is_hot_season:
        value_template: "{{ (now().month|int >= 5) and (now().month|int <=9) }}"
(後略)

 垂直スタックカードの中に、1つのエンティティカードと2つの条件カード(中身はゲージカード)を組み込むように設定します。

  1. エンティティカード:室温と湿度を表示する
  2. 条件カード:暑い時期でない時に、絶対湿度のゲージを表示する
  3. 条件カード:暑い時期に、不快指数のゲージを表示する

f:id:maky_Ba:20210117231953j:plain:w400

 絶対湿度を表示するカードは下記の様に設定しました。
(緑、黄色、赤の値を逆順に設定するだけで、数値が小さいときに赤くなるようにできるのですね、すごい)
f:id:maky_Ba:20210117232401j:plain:w400

 不快指数のゲージカードは以前の記事猛暑の可視化と同様に設定します。

 実際には、真逆の条件を付けているので条件カードが両方表示されることはないのですが、編集中には一応こんな並びでこんな表示(ゲージ)になっているのか確認できます。
f:id:maky_Ba:20210117232650j:plain:w300

 出来上がりはこんな感じです。今は1月(≠暑い時期)なので絶対湿度表示ですね。5月になったら切り替わるハズ、さて。
f:id:maky_Ba:20210117233049j:plain:w300

4. おわりに

 いけませんね、ギリギリ危険水準です…洗濯物でも干しますか。

maky-ba.hatenablog.com