見出し画像

加熱型加湿器の評価(下準備編)

経緯

加湿器の購入

年末に下記の加湿器を購入しました。

家の構造がリビングから階段伝いに二階まで続いているため、リビングをいくら加湿しても乾燥しているというのが発端で、強力に加湿しようということになり、象印の加湿器を購入。
ただ、使ってみると下記のような不満が出てきました。

消費電力量が多い

分かってはいましたが、湯沸かし段階では1000W、加湿中も400Wぐらいとかなりの電気食いです。ただ、自動モードがあるので「一度加湿してしまえば400Wを継続的に使うこともなかろう」と思っていましたが、結果はずっと稼働しっぱなしのようでポコポコ音がしています。
これはやはり使用している部屋の大きさが合ってないからかな、と思ってリビングではなく寝室で使って見ましたがやはりポコポコとずっと音がしています。もしかしたら稼働しているように見えて実際には稼働していないのかも?と思いますが、真偽は分からず。どうにか消費電力量をきっちり調査しようと思い立ちました。

加湿量が多い

寝室で使ったところ、窓が結露しました。我が家は二重ガラスなこともあって滅多に結露しません。現に普段使っているシャープの加湿空気清浄機では結露しないのですが、象印だとしっかり結露しました。
設定は「ひかえめ」にしているんですがしっかり結露するほど加湿します。つまり、「この加湿器はそもそも基準となる加湿量が多い」という仮説に辿り着きました。以上について検証したいと思います。

必要機材

検証には消費電力量・湿度を測定する必要があります。これらの計測には全てSwitchbotを使っていきます。

消費電力量

この加湿器がどの程度の消費電力量なのかを測るために下記の製品を使用しました。

Switchbotは電源をON/OFFするのによく使いますが、消費電力量を取ることができます。そのままではグラフ化等の機能はありませんがAPI経由で叩けば問題ありません。
注意点として、このコンセントのプラグはきっちりと極性を見るので、アース側の端子が大きく、一部のコンセントには刺さりません。壁のコンセントなんかはちゃんとアース側が大きくなってるので問題ありませんが、タップとかを使うと刺さらない場合があります。
そもそも、コンセントのプラグ差し込み口は左右で大きさが違うというのを知らない人も多いですが。。。

加湿量

加湿器による加湿量を測るためには下記の製品を使用します。

同じくSwitchbotで温度・湿度を測定できます。こちらはスマホと連動させればグラフを表示できるので便利ですが、せっかくなのでAPI経由で叩いて加湿量を取得します。
加湿量は温度に密接に関係するので温度も取っておきます。基本的には温度が一定の状態で測定しますが、変化していないことを確認するために使用します。

その他

象印の加湿器はプラグ側で電源をONにしても加熱を開始するわけではありません。当然、危険なのでそんなことはしないわけです。ただ、例えば測定した加湿量に応じて電源をON/OFFしたい場合は困ります。
ということで、下記の製品を導入します。

加湿量が十分になればOFF、足りなくなればONという形で制御します。また、屋外から制御するためにもHubを導入します。
ただ、こちらは検証後の改造を想定して導入します。

データ取得方法

IFTTTを使ったりIoT系のサービスを使うなどいろんな方法がありますが、まずはベーシックにAPIを叩いてデータ取得する方法です。

Amazon EC2の利用

データ取得をするためのLinuxが必要なのでAWSを契約してEC2でサーバを建てます。手元にLinuxサーバがあるならそれでいいのですが、新しくサーバなり小型PCを買うぐらいならEC2の方が圧倒的に安いでしょう。月1000円程度なので年間で12,000円、5年使って6万円なのでPC買って壊れることを考えたらEC2で良いです。EC2の構築方法は山ほど記事があると思うので割愛します。

SwitchbotのAPI取得

Switchbotのアプリをスマホに入れて「プロフィール」→「設定」を開き、「アプリバージョン」の部分を連打してください。
開発者向けオプションがONになって下記のように表示されます。

アプリバージョンを連打(10回らしい)

「開発者向けオプション」を開くとトークンが表示されます。クライアントシークレットは必要ありません。トークンをコピーして、どうにかしてPCまで持ってきましょう。

シェルスクリプトからのデータ取得

トークンを使ってデータ取得してみます。まずはシェルスクリプトで簡単に取得してみましょう。
とりあえずファイル名をdevices.shとして下記のようなスクリプトを作ります。

#!/bin/sh

token=ここにトークンをペーストする
auth="Authorization:${token}"
curl -H "${auth}" https://api.switch-bot.com/v1.0/devices/

curlで一行で書いてもいいんですが、分かりやすくするために変数を使いましょう。やってることは簡単でヘッダーにAuthorizationを追加し、トークンを貼るだけです。
実行すると下記のように表示されます。

{"statusCode":100,"body":{"deviceList":[{"deviceId":"XXXXXXX","deviceName":"照明", ...

一部伏せてはいますがこんな感じで返ってきます。Switchbotの製品を複数使っているとdeviceListに複数の製品が出てきます。
特定のデバイスからデータを取るには下記のようにdevicesの後ろにdeviceidを付けます。

#!/bin/sh

token=ここにトークンをペーストする
deviceid=ここにdeviceidを記載する
auth="Authorization:${token}"
curl -H "${auth}" https://api.switch-bot.com/v1.0/devices/${deviceid}/status

tokenとdeviceidにはそれぞれの値をいれてください。こんな感じで取れます。

{"statusCode":100,"body":{"deviceId":"XXXXXXXXXXX","deviceType":"Plug Mini (JP)","hubDeviceId":"BBBBBBBBBB","power":"on","voltage":100.8,"weight":0,"electricityOfDay":25,"electricCurrent":0},"message":"success"}

これは電源プラグの情報を取っています。さて、必要な情報は使用電力量なので weight になります。JSONをパースするにはjqコマンドが便利です。
インストールは

sudo apt install jq

で簡単に入ります。
jqを使ってパースするには下記のようにすれば良いです。

#!/bin/sh

token=
deviceid=
auth="Authorization:${token}"
curl -sH "${auth}" https://api.switch-bot.com/v1.0/devices/${deviceid}/status | jq -rc ".body | .weight"

これで使用電力量だけを表示できました。curlには-sを付けて余計な出力が出ないようにしておきます。これで電力量だけが表示できます。
単体で使用するので、ファイル名は consumption.sh にしておきましょう。

次に温度と湿度を取得します。ほとんど同じです。

#!/bin/sh

token=
deviceid=
auth="Authorization:${token}"
curl -sH "${auth}" https://api.switch-bot.com/v1.0/devices/${deviceid}/status | jq -rc '.body | "\(.temperature) \(.humidity)"'

二つの値を出力する方法は、jqに括弧で表示させるように指示すれば良いです。これは temp-humidity.sh にしておきます。

最後に、これらを合わせて表示させるスクリプトを作ります。取得されたデータの時刻が分かるようにunixtimeも付与するようにしましょう。カンマ区切りでCSVにしてもいいですが、面倒なのでスペース区切りにします。

#!/bin/sh

cd `dirname $0`
while true
do
  time=`date +%s`
  consumption=`./consumption.sh`
  temp_humi=`./temp-humidity.sh`
  echo $time $consumption $temp_humi
  sleep 60
done

このファイルはgetData.shとしておきます。consumption.shとtemp-humidity.shを呼び出しているので、それぞれのshファイルにchmodで実行権限を付けておきます。
また、他のディレクトリから呼び出されたことも想定して、dirname $0 (コマンドのある場所)にcdするようにもしています。
このスクリプトを実行するとwhileで無限ループし、sleepで60秒待機するので1分間隔で現在の状況を表示してくれます。
「DBへデータを格納したい」とか「安定動作させたい」とかならcronで動作させるなりすると良いのですが、他の便利なサービスを使った方が早い気がします。
実行したデータは標準出力に出てきますが、ファイルに保存したいのでリダイレクトしましょう。

./getData.sh > experiment_sharp.data

これで実行したまま放置してデータが溜まるのを待ちます。
この手のサーバでスクリプトを長時間回すときはNOHUPを付けたりしてプロセスが落ちないようにしますが、手っ取り早くtmuxを使うのが良いです。詳しくはまた別で解説します。

事前実験

象印の加湿器を試験する前に検証も含めて実験をしてみます。
実験場所は寝室になります。広さは6畳(11㎡)で寝ている間にどれぐらい加湿できているかを検証します。
加湿器は下記のSHARP KI-NS50-Wを使います。

気化式なので消費電力は非常に低いはずです。まずはこれで比較対象となるデータを取得してみましょう。
寝室は寝ている間は常にオイルヒーターの暖房が入っていて、温度はそれなりに保たれています。また部屋の開け閉め等も無いので環境としては安定していると言えるでしょう。
23時から6時までの間のデータを取得してみます。加湿モードはオートで他も特に設定は触りません。
一晩寝かせるとこんなデータが取れました。

1675175341 7 21 54
1675175403 7 21 54
1675175464 7 21.1 54
1675175526 7 21.1 54
1675175588 7 21.1 54

データは一部ですが、1分に1つなので7時間×60で420個ほどのデータが取れています。

グラフ化

データのグラフ化もエクセルなり便利なツールを使えばいいんですが、せっかくなのでgnuplotを使っていきます。
インストールは簡単で、aptから入れるだけです。

sudo apt install gnuplot

X上に表示させるためにはいろいろ必要ですが、画像で出力させるので必要ありません。
シェルスクリプトでgnuplotを使うには下記のようにコマンドを流し込みます。

#!/bin/sh

gnuplot << EOF
set terminal png
set output "Graph.png"
set xdata time
set timefmt "%s"
set format x "%H:%M"
set ylabel "Consumption"
set yrange [0:1000]
set y2label "Temp/Humi"
set y2tics 0,10,80
set y2range [0:80]
timezone(t)=t+3600*9
plot '< cat $1' using (timezone(\$1)):2 axis x1y1 smooth unique w l title "Consumption",\
'< cat $1' using (timezone(\$1)):3 axis x1y2 smooth unique w l title "Temperature",\
'< cat $1' using (timezone(\$1)):4 axis x1y2 smooth unique w l title "Humidity"
EOF

これでGraph.pngにグラフを出力してくれます。細かいコマンドの説明は省略しますが、引数に指定されたファイルを使ってグラフを作成します。時刻情報は表示する際にJSTに変換したいので単純に9時間加算しています。
余談ですが、VSCodeにSSHのExtensionを入れてVSCodeからサーバ上のファイルをマウントしておくと、この手のスクリプトの編集が便利なだけでなく、出力した画像をその場で確認できるので非常に便利です。
グラフ化したのが下記の画像になります。


SHARP KI-NS50-Wの消費電力

消費電力は7Wでずっと安定しています。流石にめちゃくちゃ低いです。湿度も55%前後で安定しています。温度も21度前後でほとんど変わりません。
また、満水にしておいたのですが水は半分以下になっています。

真ん中より下ぐらいまで減っている

加湿が十分で全く動いていなかったわけではなく、ちゃんと加湿した結果だというのが分かります。

SHARP加湿器の考察

SHARP KI-NS50-Wは非常に優秀で加湿だけでなく空気清浄もしてくれます。7Wの状態で24時間30日使ったとして5040W、つまり5kWなのでざっくり1kW20円とすると100円/月となります。
ただ、この機種はフィルターを交換する必要があるので1シーズンで1つ消費します。Amazonで2500円ぐらいです。

加えてAg+のカートリッジも1シーズンごとに消費します。2個で1600円ぐらいなので1個800円です。

1シーズンが4ヶ月だとすると、この2500+800=3300円を4で割るとだいたい825円ぐらいなので、電気代を合わせてシャープ加湿器のランニングコストはざっくり月1000円と見積もりましょう。

フィルターは2シーズン使えなくもないですが、衛生面を考えると交換した方が良いです。2シーズン使うとなると300円ほど下がるので月700円になります。また、中国製のサードパーティー製のフィルターもあるので、そちらを使えばもっと安くなりますが、どんどんリスクが上がっていくので未検証にします。加熱しないので下手なことをすると雑菌やウイルスを空気中にばら撒くことになるので、逆効果になってしまうのが気化式のデメリットです。ただ、通常使用していればそんなことはないでしょう。

他のデメリットとしては手入れがそれなりに面倒という点です。水の受け皿を必ずシーズン始めに洗った方がよいです(できれば1ヶ月に1回は洗いたいですが)。また、空気清浄機の部分のフィルターがホコリだらけになります。100円均一に空気清浄機の後ろにつけるフィルターが売ってるのでそれを毎月交換すると良いですが、単純にランニングコストがかかっていきます。
純正品も出ていて6枚入りで800円なので1枚100円ちょいです。

下準備完了

以上で下準備は完了です。次回は象印の加熱型加湿器を検証していきます。

この記事が気に入ったらサポートをしてみませんか?