快適な夜を求めて。エアコンの温度設定をRaspberry Piで切り替える USB電源制御

| コメント(0)

ことの発端は寝室に自分でエアコンを設置したことによる。
安く上げたいが、使えない(冷えない&暖まらない)機種はだめ。更に定刻起動繰り返しタイマーが無いとだめ。
特に定刻起動繰り返しタイマーは各社最上位機種にしか搭載されおらず、例外は三菱重工のビーバーのみ(このメーカーは全機種搭載)。
だからビーバーか、各社の高ーいモデルになる。
もちろんお金の都合上新品ならビーバー一択だ。
さらに不幸なことにベランダの今ある1F用の室外機の上にしか設置できない。これは工賃が高くつく...→自分で設置しよう!!→自分で設置するならヤフオクで中古を→東芝RAS-281EDRが送料込みで激安(確か35000円くらい)だ!!ソレにしよう!→6畳の寝室に10畳用をつけてしまった。
たぶんオーバーサイズなのが一番よくないのだと思う。冷えない暖まらないじゃなく「冷えすぎ、暖まりすぎ」だから。サーキュレーターでかくはんしても全体が28度くらいになるだけだった。


症状は朝4時くらいになると外気温が低くなり部屋が寒くなる。それを検知したエアコンが猛烈に暖気を吐き出し、一時期に28度くらいになる。→暑っつ!!!
暑くなったのでリモコンで0.5度下げるとエアコンは即反応して暖房を止めエコモードに入る。
だったら温度を検知して自動的に温度を下げればいいじゃない?という趣旨です。更に問題なのは別置きのサーキュレーターはやはり必要だけれどエアコンが暖気を出していないときは寒いということ。

まとめると
1.エアコンが部屋の暖まりを検知するのが遅く、28度にまでなってしまう。その後手動で0.5度下げて解決している。面倒だし何より深夜に起されて寝不足になる。

2.エアコンが暖気を出していないときはサーキュレーターを止めたい。


まず2の方は簡単だった...わけではない。
基本的には100V対応温度スイッチ(aliexpressで15ドルくらい)をサーキュレーターに噛ませればよい。もちろんサーキュレーターはリモコンとか電子スイッチでないもの(我が家では無印のサーキュレーター、静かで評判がよい)。
ただそれだけじゃだめ。エアコンが暖気を出すときはサーキュレーターが空気をかくはんする。その際寝ている顔に暖気が当たると不快で起きてしまう。顔に暖気が当たってはだめ。
これはサーキュレーターをどの方向に向けても防げなかった。解決策はサーキュレーターに半分暖気、半分冷気を吸わせること。(普通にやると全部暖気(=暑い)か、全部冷気(=冷機に押されて結局暖気が顔に当たる)のはず。サーキュレーターの中で暖気と冷気をまぜて心地よい温度(20~22度)にする必要がある。
エアコンメーカーは「暖気を足元まで届かせる」ことに努力していて、それが仇になっている。

まずエアコンの風向は真下とし、サーキュレーターも真下に設置した(温度スイッチで暖気がくればすぐオンになる)した。
これだけではサーキュレーターは暖気を送り出すから顔に当たって不愉快になる。そこでサーキュレーターの背面(=空気吸入口)に下敷きのようなものを水平に設置し、上半分からは暖気を、下半分からは冷気を吸い込むようにした。ミックスされた風はまぁまぁの温度になってくれた。
このサーキュレーターによって問題の大部分は解決した。リモコンで手動温度切り替えの頻度がかなり減った。がゼロにはならなかった。


つぎに1を解決するためエアコンの温度設定を自動で切り替えることにした。もちろんraspberry piにリモコン機能を持たせて実現する。以前購入した大宮技研のirmagicianT(温度センサー付き学習リモコン)があれば簡単...と思ったらそうでもなかった。

今回は新しくraspberry pi zero wを購入して設置したが、zero wの内蔵USBハブはusbreset.cでリセットできなかった。そうなるとirmagicianTがハングアップしたとき(割とハングアップする...)正しく処理できなくなってしまう(=暑くて起きることになる)。だからなんとかしてirmagicianTをリセットする必要がある。
色々調べていくうち、USBハブには「Per-port power switching」というUSBポードごとの電源管理機能を持つタイプがあるようだった。
試しにraspberry pi2で

lsusb -v | grep switching

すると「Per-port power switching」が表示される。lsusb -vの結果リストを見てPer-port powerの箇所がポートごとの電源管理機能を持つということ。そのスイッチ制御には「hub-ctrl.c」を使えばよい(ソース取得とコンパイルは検索すればわかる)。

うちにあるハブはBUFFALOのBSH7AE03で、これはSAVEスイッチにすると上流機器が電源オフになったときハブを停止させてくれる「節電ハブ」とよばれるもの。thumb_main.jpgネットで調べるとSUGOI HUBとかU2H-SW4Sが電源制御機能があると書いてあるが今はもう廃盤になっていたり、内部リビジョンで電源制御がなくなっていたりする模様。この商品は2017/11現在ビックカメラで販売していた。
raspberry piに接続すると以下のように認識される。

hub.png電源管理したいのはHub #1のPort 1なのでそれをオフする。
コマンドはhub-ctrl -h 1 -P 1 -p 0でよい。引数の意味は
-h  1がHub #1
-P 1 がPort 1:
-p 0 がオフ
ネットで例を探すとデバイス番号やバス番号で記載しているケースを見るが、hub-ctrl -vで表示されるHub #で制御するのが楽だと思う。
コマンドを実行するとPort 1の「power enable connect」が消える。しかしirmagicianTのLEDは点灯したまま、linux上のシリアルデバイスは消えている。電源オフされていないが論理的には切断された状態の模様。ここでhub-ctrl -h 1 -P 1 -p 1する(Port 1をオン)すると「power connect」になる。しかしirmagicianTは認識されない。論理的に接続できておらず電源管理がうまくできていない。

試行錯誤の結果、Port 1~3をオフした後Port 4をオフ(全てのUSBを抜いた後に電源オフという感じで処理)すると電源が切れた。順番が入れ替わるとうまくいかない(Port 4をオフしたあとPort 1をオフではうまくいかない。「全てのUSBを抜いた後に電源オフという感じで処理」しないとうまくいかなかった)
電源を入れるときは逆にPort 4をオンの後Port 1~3をオン。

注意することはそれぞれの制御(linuxの認識)には少し時間がかかるようで、sleepコマンドで1秒(Port 4には2秒)待ち時間を入れた。本当はポート個別に制御できたらよいが、今回は1つしか接続していないので全体をオフにしてしまっても構わないので良しとする。

これでirmagicianTは無事にリセットできるようになった。
あとから気が付いたが、「INFO: ganged switching.」は「連動スイッチ」の意味。ポートごとの電源管理の場合は「INFO:Per-Port Power Switching」と表示されたはず。我が家にある古いUSB1.0のハブを調査したところ「ganged switching」と表示されているが、電源管理は機能しなかった。

コメントする

このブログ記事について

このページは、powerpcが2017年11月26日 23:03に書いたブログ記事です。

ひとつ前のブログ記事は「サエコ 全自動エスプレッソマシン タレアリング エスプレッソ抽出されず...」です。

次のブログ記事は「アウトランダーPHEVをユーザー車検」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。