コモノポリタン

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

【Home Assistant (Hass.io)でホームオートメーション】1. Raspberry PiにHome Assistant導入

再起動、って言ってから早何か月だ?!…ゆるゆると進めてゆきます

0. まえがき の まえがき

 2017年後半にGoogle Homeが日本で発売されました。 デジモノ、コモノ好きの私は当然購入しました。 まあ「毎日天気予報を聞く」「忘れてしまった俳優の年齢を確認する」「忘れずに体重を記録する(※これはそのうち記事にしましょう)」という用途では役に立っており、今では計4個(Homeが2個、Home Miniが2個)が活躍中です。
 が、しかし、それだけでは何だか可哀そう。何か他に役立つことはないのかと。
 「ねぇGoogle、電気をつけて」
これだ! 当時はまだ、家をコントロールする仕組みはあまり世に出ていない様子でしたので、それならコモノ(=デジタルガジェット)を組み合わせて家をスマート化(?)してGoogle Homeと繋いで、我が家で「ねぇGoogle」してやろう!と思い立った次第。
 さて、世の中的には、クラウドサービスを活用してスマートホーム化する流れだと思うのですが、私は残念ながら、古い世代で自分の情報は極力身近に置いておきたい派なのです。ありていに言ってしまうと、クラウドサービスの継続性をまったく信用していないのです。きっとそのうちサービスされなくなって、おうちのコントロールが出来なくなっちゃったりするのです。*1
で、いろいろ調べるとHome Assistantというオープンソースシステムで、家庭内ホームオートメーションサーバが簡単に作れそうということで、Home Assistantを中心に頑張ってスマートホームを目指してみることに。現在も奮闘中。

(追記:2020年11月15日 いろいろ取り組み増えてきたので下記の目次作りました。本編の最新ラズパイ(Raspi4)化もありますよ。) maky-ba.hatenablog.com

1. まえがき

 スマートホームのガジェット(学習赤外線リモコン、スマートコンセント等)は、基本的にはその会社のクラウドサービスやアプリと組み合わせて使うことが前提となっています。ただ、最近はAlexaとかGoogleHomeとかと連携できるものが多いので、それを核にしてスマートホームを満喫することも可能です。それでも、アプリからの操作などはやはり個別のままだったりします。


 Home Assistantは、様々なメーカーのいろいろな製品を直接操作(クラウド経由での操作もありますが)する統一的ホームオートメーションを実現する「おうちサーバ」のオープンソースソフトウェアです。ここ1年半でバージョンも0.6台から0.9台への着実に進歩しておりますし、しばらくは活発に活動するのではないかと思います。まあ、コミュニティは英語中心であまり日本語での紹介が無いのが玉に瑕ですが…  まずは、Home Assistantを導入して、センサーやスイッチなどを順番に繋いでゆきたいと思います。

2. 前提

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

  • ホームオートメーションサーバ(ソフト): Home Assistant 0.95
    (0.96でも同様。少し画面デザインが変わりましたが)
  • ホームオートメーションサーバ(ハード): Raspberry Pi 3 Model B+

3. 準備

さてまずは本命のホームオートメーションサーバの準備を進めてゆきましょうか。

f:id:maky_Ba:20190713222847j:plain:w150:left サーバ(ハード)
Raspberry Pi 3 Model B+

私はマルツで購入しましたが、あっちこっちで買えますね。

f:id:maky_Ba:20190713231122j:plain:w150:left ケース
サーバ用途なので、一応ファン付きのものを。 「Smraza Raspberry Pi 3B+ ケース」と次で紹介する「スイッチ付ACアダプタ」のセットを使っています。

f:id:maky_Ba:20190714213311j:plain:w150:left ACアダプタ 2.5A USB Micro-Bコネクタ出力
RaspberryPi3が2.5A必要なので流用は難しいですね。 それから、Raspberry Piは電源スイッチが無くUSBケーブルの抜き差しが電源スイッチがわりなのですが、これはスイッチ付きUSBケーブルです。便利。

f:id:maky_Ba:20190714213355j:plain:w150:left SDカード (microSD 64GB)
32GB推奨だが、FAT32でフォーマットされている必要あり。 Windows10では64GB SDはFAT32フォーマットできない(そもそも64GBをFAT32にするのは規格外)ので、なんらかのツールを使う必要があります。 アクセス速度より常時起動を考慮して、高耐性のMLCタイプのSDカードを使っています。

f:id:maky_Ba:20190714212255j:plain:w150:left サーバ(ソフト)
Home Assistant

https://www.home-assistant.io/getting-started/

それ以外に必要なもの: インターネット接続(無くてもおうちサーバは立てられますが、そもそもインストールが大変…)、 無線LANルーター(ホームオートメーション専用に1台古いのを準備。無線LANと有線LANが両方あるとよし)、 LANケーブル(必要なだけ)、 PC(Windows/MAC/Linux)(microSDにHome Assistantを書き込むのに使用)、 PC/タブレット/スマホ(Home Assistantをブラウザ越しに設定するのに使用)、 ぐらいでしょう。

4. さあHome Assistant(Hass.io)を導入するぞ

Home Assistantが、オープンソースのサーバソフトだという事は言及しましたが、ではタイトルにある「Hass.io」というのは何か。まあ、難しいことを省くと、インストールと管理が便利な「一塊になったHome Assistant」のこと、とでも覚えておけば問題ない。 基本的には、Install Home Assistantに従ってインストールを進めれば良い。下記のその手順。

(1) ソフトウェア(Hass.io)のダウンロード

Installing Hass.ioのページから該当するハードウェアのzipファイルをダウンロードする。今回はRasPi3B+なので『Raspberry Pi 3 Model B and B+ 32bit (recommended)』をダウンロードする。

(2) SDカードに書き込む

Windows/Mac/Linux用のSD書き込みソフトEtcherをインストールする。FAT32でフォーマットされた32GB以上のSDカードをパソコンに挿入して、Etcherを起動し、下記のステップで書き込む。

  1. Select image: (1)でダウンロードしたzipファイルを指定
  2. Select drive: SDカードのドライブ(決してシステムドライブとかと間違えないこと)
  3. Flash!: これで書き込み開始

(3) Raspberry Piの固定IP化

Raspberry Pi側で固定IPに出来るはずですが、設定が面倒なので、ルーターDHCPでのIPの割り当て時に固定IPを割り当てるようにする。

1) IP確認の準備
今回準備したルーター(インターネット接続までは準備を完了していること)に接続したスマホタブレットに、Fing(iPhone/Android)をインストール。このアプリで同一ネットワーク内のマシンのIPやMACアドレスがわかるようになる。
2) Raspberry Piの起動
MicroSDカードを挿入し、LANケーブル(準備したルーターに繋いだもの)を接続し、最後に電源(USBケーブル)を接続する。しばらく激しくLEDが点滅するので傍観する。
3) IPアドレスMACアドレスの確認
LEDの点滅が落ち着いたら(本当はHass.ioのネットワーク初期設定が完了したら、だが外からはよくわからない)、Fingを起動し準備したルーターを選択。Bonjour名:hassio、MAC販売元:Raspberry Piというデバイスがあるはず(なければもう少し待つ)なので、そのIPアドレスMACアドレスをメモる。(例:IPアドレス=192.168.1.3、MACアドレス=B8:27:EB:xx:xx:xx)
4) ルーターDHCP設定
ルータ毎にDHCPでの振り出しIPの固定化手順は違うと思うが、私が使っているBuffaloのルーターでは、「Internet/LAN」→「DHCP リース」で、3)で調べたMACアドレスを「手動割当」に変更できる。(例えば、192.168.1.30に設定(固定)する)
5) Home Assistantの画面にアクセス
先ほどFingを実行したスマホ/タブレットのブラウザからhttp://(Raspberry PiIPアドレス):8123にアクセスする。Name/Username/Passwordを設定しろと言われるので、設定する。UsernameとPasswordは、このHass.io(Raspberry Pi)にアクセスするときに使うので忘れないように。 左上のメニューから設定(歯車のマーク)を選び、「一般」→「サーバー管理」「再起動」とすすむ。
6) IP固定化の確認
Raspberry PiのLEDのチカチカ(Hass.ioの起動中)が落ち着いたら、再びFingでhassioデバイスIPアドレスを確認する。

(4) Home Assistantの起動確認

さきほど既に、Home Assitant画面にアクセスしてますが、固定IP化したアドレスhttp://<Raspberry PiのIPアドレス>:8123 でHome Assistantの画面を開く。何も設定していないので、さみしい画面が表示されるはずです。

f:id:maky_Ba:20190715165138p:plain
Hass.io初期画面

5. おわりに

 ここまででRaspberry PiにHome Assistantを導入出来ました。まあこれだけだと何もできない(天気がわかるぐらい)ので、これから順にスマートホームバイスをつないでいきます。
 入力側の環境センサーで気温とかを測りたいところですが、次は、まずはHome Assistantをとりあえず使えるように初期設定しましょう。

【Home Assistant(Hass.io)でホームオートメーション】

  1. RaspberryPiにHome Assistant導入 《今回》
  2. Home Assistant初期設定 《次回》
  3. 環境センサー(Omron)を接続
    1. 環境センサー(Omron)を接続 - 前編
    2. 環境センサー(Omron)を接続 - 中編
    3. 環境センサー(Omron)を接続 - 後編
  4. 汎用赤外線リモコンを接続
  5. スマートプラグを接続
  6. UIを改善

*1:ほらね、という訳ではないのですが、「マウスのスマートホーム販売終了、クラウドサービスは2022年まで - 家電 Watch」というニュースが。継続して売れ続けないとクラウドが維持されなくなっちゃう…

コモノポリタン再開

2019年あけましておめでとうございます。

前回は2013年の10月、気が付いたら、何年もたっていました。浦島太郎か。

書きかけの記事も沢山…なのに、はてなダイアリーは今春で終了とか…
いやはや月日の経つのは早いです。

わが身も、海外で働いたり、戻ってきてすっかりドメスティックな仕事になったりと、いろいろありました。

いろいろ変わったこと

仕事はさておき、身の回りも色々変わりました。

他にも色々変わったなぁ。ドキュメントスキャナは微妙にCanon DR-C225Wになったし、プリンタは永らくHPだったのにbrotherのDCP-J973N(フラッドヘッドスキャナがついててコピーが取れることが基準)に、外付けHDDは、NAS(Synology DS218+ とバックアップ用のHDD)に等々。

あ、コモノ的には(特に金銭面で)禁断のゴルフを始めましたよ。GarminのApproach S6J ⇒ Approach S60を購入したり、TruSwing J、Approach CT10に手を出したり。

 

最近の興味は、一昨年に購入したGoogle Home/Miniに始まる「おうちスマート化」ですね。

 

 まあ、ぼちぼち再開してゆきますか。

Kindle PaperWhite (2013)届いた!

2012年版を息子に譲った*1ので、人生銀行貯金箱をフル活用して新型(2013年版)を予約購入して、発売日に入手。

見た目変わりません。裏側のロゴが「kindle」から「amazon」に変わったぐらい。ページめくりも、並べて比較しないと「速くなった」という感じもしません。

クーポン?

そうだクーポン\1,980-がもらえるはず!、とイソイソとAmazon.co.jpにログインしてアカウントを確認するも「\0」…むむ!
しばらくしたらAmazon.co.jpから「一部のお客様にクーポンが登録されていないことがわかりました」とメールが来ました。私だ。10/27までになんとかする、と言っているので、まあ気長に待ちましょうか。

Kindleオーナー ライブラリー

「数千冊の対象タイトルの中からお好きな本を、一か月に1冊 無料でお読みいただけます。」のAmazonプライム会員向けサービス。Amazonにいいようにされている私としては、Amazonプライム会員なので早速読んでみようと仕組みから確認…むむ?おお!
これは「貸本」ですね。確かにamazonは一言も「あげる」なんて言ってませんねぇ。「読める」ですね表現は。

私の想定する利用の流れは、こんな感じかな、

  1. 読んでみたい本を検索
  2. 「Jプライム」対応か確認 (これはKindle端末上のストアからでも、PC上のWebストアからでも確認可能)
  3. 試し読み
  4. 気に入ったら、Kindle端末上のストアから「無料で読む」ボタンで本を「借りる」
  5. 月を跨ぐまで、のんびり読む
  6. 月を跨いだら、本を返却(=「利用終了手続き」)して次の本を「借りる」

さあ、一冊目を探さなきゃ。結構沢山ある*2から大変…。

*1:学校の夏の課題で明治の文豪の本を読む!だそうで、「何冊でも読めい!」とばかりに突き付けました。結果は…。

*2:「すべてのKindleオーナーライブラリ」が400,888冊なのに、「Kindle本」が148,749冊なのは何故?外国のが混じってる?それとも単なるバグ?

自炊本をフルスクリーンで

自炊本のpdfの設定をdot by dotに調整して、Kindle PaperWhiteで綺麗に表示される様にしたものの、表示エリアは76%だし、右綴じなのに右側タップでページ進みだったり、とある意味散々な状態。
で、いろいろググってみました。そうですが、mobiですか。以前、mobiは変換しづらいので敬遠していたのですが、やってみたら簡単になってました。

準備

  1. KindleGen :
    このページから、自分の環境にあったモノを落とす。私は、Windows版を落として、展開したkindlegen.exeをChainLP.exeと同じフォルダに置きました。
  2. Python :
    KindleGenで生成したmobiファイルには、生成前の情報がそのまま入ってしまってます。つまりは容量が「倍」ってこと。それを削ぎ落とすスクリプトが"Python"で書かれてます。で、このページから、Pythin 2.7をダウンロードしてインストール。
  3. kindlestrip.py:
    これが削ぎ落としのスクリプトここからダウンロード。で、掲示板だから最新版は後ろの方?とか思って読んでいくと、親切にも「最初のページのダウンロードリンクを最新版に差し替えておいてよん」とか言ってます、サンキュー。ということで、最初のダウンロードリンクのkindlestrip.py 1.35.zipをダウンロードして展開、C:\tempにでも置いておきます。

さあ変換しよう。

mobi化

  1. ChainLPでmobiファイル生成:
    pdfを作った時とほぼ同じで「ページ補正=小説のみ」「ノンブル=左右下」で、[編集(F)]-[トリミング&余白]で上余白を20ぐらいに。そうしないと上ぴったりになっちゃう。上3〜4mmぐらいは仄かに陰になるのでそこは余白にした方が読みやすい。そして肝心の解像度はフルフルの[758x1024]!
  2. mobiファイルをスリムに:
    生成したファイルを、C:\temp にコピーする。たとえば、自炊book.mobi をスリム化して 自炊book_PaperWhite.mobi にする場合には、下記のコマンドをコマンドコンソールを使ってC:\tempで実行させると出来上がり。

C:\Python27\python.exe kindlestrip.py "自炊book.mobi" "自炊book_PaperWhite.mobi"

Kindle Paperwhiteに送り込んで読みましょう。

どう?

所感

初回に「コミックの読み方」みたいな簡単なチュートリアルが出る。そうか、イメージファイルのmobiってコミックか…。でも、まあ完璧ですね。フリックでページめくれるし(ちゃんと右綴じになってるし)、字も大きくなって読みやすくなった。
Kindle PaperWhiteで自炊本を読んでいると、増々KindleDXのPaperWhite版出ないのかなぁ、って思っちゃいます。大きすぎて導光シートがちゃんと機能しないのかなぁ。

おおッびっくり!Kindle Paperwhite届いたぞ

10月末にちょっと出遅れてKindle PaperwhiteAmazon.co.jpで注文したら、なんと「えっーと注文いっぱいなので、12月ぐらいかな」と注文ページで言われて仕方なく待ちに。さらにすぐに「12月24日までに届けるのは無理!年明け1/6-1/7に届けましょう」と注文履歴ページでのたまわれました。
うう、最近は量販店も在庫し始めて「なんじゃアマゾン、量販店に在庫させるぐらいならこっち送れ!」と念を送ったのが今週中ごろでしたが、それが功を奏したのか、今日届きました。やったー。

恒例のdot by dotの有効画数を調べましょう

E-Ink(は、なのかAmazonの表示アルゴリズムは、なのかは不明ですが)はPDFのイメージの縦横ドット数と有効表示領域のドット数が合ってないと、微妙に調整が入って漢字の縦棒や横棒が一部細くなってりして非常に気になります。したがって、自炊派にとっては有効画素数を把握して変換するのは重要(と勝手に私は思ってます)。
縦長の黒塗り長方形のページと横長の黒塗りの長方形のページを持つpdfを作成して、pdf表示の有効表示領域を調べます。地味な作業ですね。ペイントで黒塗り四角を作ってPDF出力。Paperwhiteに入れて表示させ、スクリーンキャプチャ*1を取得。再度、PCに取り込んで、ペイントで座標を地道に読み取ります。

横[ドット] 縦[ドット]
有効表示領域 658 904
参考(解像度) 758 1024

なんだかPDF表示の時は、余白が多いですねぇ。PDFの有効表示領域は全体の76%程度。これでは折角の高解像度化が…。なんか表示オプションとかあるのかなぁ?
余白のサイズも計ってみました。

[ドット]
上余白 40
下余白 80
左余白 50
右余白 50

それぞれ、この半分ぐらいの余白でも良いと思うのですが…

所感

ChainLPで「ページ補正=小説のみ」「ノンブル=左右下」としてPDFの余白を削って生成すると、文庫本ではまあ読めますね*2

もうちょい、表示領域を広げてくれると嬉しいのですが。
Paperwhiteはバッチリ、背景が白くくっきりしてコントラストが良くなるので読みやすいですよ。軽い(まあ国産のブックリーダーの方が軽いらしいですけど)し、タッチパネルで操作しやすいし*3。メモリが2GB(ちょろちょろとテスト用にPDFを入れたら既に1GBちょいとしか残ってない)で自炊派には厳しいかな。日本の電子本も買いましょうか。

*1:Paperwhiteのスクリーンキャプチャは、右上隅と左下隅を同時に押さえれば出来ます。

*2:高解像度(ってほどでもないけど、600dpiで取得したやつ)のスキャンイメージを取っておいてよかった。それを基に読みたい本をまた変換しなきゃ。そうかNexus7はどうだろう、E-Inkじゃないからそれほどdot by dotに拘らなくてよいかな。

*3:ただし、PDFだと文庫本の右綴じを反映したページ捲りが出来ません。設定で何とかなりませんかねぇ、アマゾンさん。無理だろうなあ、自炊だし、日本だし。

ああMicrosoft Surface RT 買っちゃった

Stanford Shopping CenterにあるMicrosoft Shopに閉店間際に寄りました。

ちょっとなりきれてないApple Storeという感じ(でもまあMicrosoftとしては、とっても頑張っている感じ)のお店でした。店員も(青とかの)ポロシャツとか着て親切だったり、Xboxの前で踊ったりしてましたよ。お客様も結構入っていました。2軒隣にApple Storeもありましたが、(元々ですが)ちょっと小さく、お客様もほとんどいませんでした。まあiPad Miniも売り切れなので、売り物が無い開店休業状態なのかもしれませんが。
で、Microsoft Surface RT 32GBを買っちゃいました。勢いで。
Apple storeならiPhoneでお会計ですが、こちらはお会計専用(とおぼしき)Windows Tabletにクレジットカード読み取り機がついていて、それでその場でお会計。

開封の儀はすっとばして、こんなもの

箱もすっきりしてて、中は最近(というかiPhone,iPadの影響を受けて)の標準的な本体+その下に簡単なマニュアル(と呼べるかどうかわかならない紙切れ)と電源ケーブルという構成。

英語版を選択していったん起動後、右側の「チャーム」とやらから[Settings]に入り右下の[Change PC Settings]で[Language]から日本語を追加。Detailだったかをみると「language packをダウンロードするか」みたいなのがあるので、よしやります、と言うと数百MBのpackをダウンロードし始める。ブロードバンド必須。再起動後に日本語に。ああ、あまりにも普通に日本語使えるよ。
Windowsだなぁ、と思ったのはSettingsの中にWindows Updateがあること。そして早速またもや数百MBのupdateをダウンロードし始めました。
面白いからTouch Cover (Blue)にしましたが、真面目に使うならType Coverでしょう、面白くないけど。個人的には、タイプ音(ポコポコと木魚みたいな音が出る)をonにしておけば、何とか使えるかなと思う。

感想

Surfaceについては、かっちり剛性を持たせすぎてやや重い。Touch Coverまでつけると900gぐらいになっちゃう。
それからこれは別にSurfaceでなくてもRT全般に言えることかもしれないが、OS的には、これはこれでアリかと思う。つまりWindowsを使ってきた人が、タブレットに行くなら違和感が少ないのでは。いざとなればエクスプローラも使えるし、普通にUSBメモリとかも読み書きできる。タブレットの人には「邪道!」と言われるかもしれないけど、限りなくノートPCに近いタブレットという意味では使える。まともなOffice製品が入っている点も(当然ですが)良いところ、残念ながらiOSAndroid版のOffice互換ソフトで日本語環境でちゃんと使える・再現できるものはほとんど無いのです。
ただ同僚の意見は賛否両論。「あー、微妙。なんか無理してる感じ」という人から、「いいじゃん」という人まで。

Nexus7をプチPCとして使う

Hyatt Houseでゴロゴロしていると、知らないうちにNexus7のOSアップグレードが落ちて来ていた。トイレで4.2化を実行、まだ46個しかアプリを持っていないので、チクチク、適合性をチェックされても問題なく終了。
Android 4.2で変わったところ(で気が付いたところ)をば。

  1. マルチユーザ対応:これ素敵。タブレット系OS*1でお初ではないでしょうか。以前から「カウチポテトタブレットにするなら家族利用可能なマルチユーザを!」と切望していたのですが、ついに!Thank you Google!
  2. 時計:標準の時計(待ち受けの時計)の表示が変(?)に。時間の桁だけ太い…意図は不明。
  3. 充電:以前は専用のACアダプタ(たぶん何処かが短絡されている充電専用のUSB)でないとNexus7上では充電マークが出ませんでした。ほかのUSB ACアダプタやケーブルを使って充電マークが出なくても、実際にはボチボチは充電されていたらしいのですが、充電されているかされていないのか判らず精神衛生的によくありませんでした。今回のアップグレードで充電用ACアダプタやケーブルを用いなくても充電マークは出るようになりました。ちっ、充電用に「Galaxy Tab 充電USBアダプタ」を購入したのに*2

Galaxy Tab 充電USBアダプタ

Galaxy Tab 充電USBアダプタ

そんなとこですか。じゃ、本題のプチPC化の話に移りましょう。

Nexus7にキーボードとマウスを繋ぐ。


まあそんなに難しいことではありません。準備したのは下記の2つ。

REUDOのキーボードは初回の認識はイマイチうまくいかなくって、「*****をキーボード入力してください」的な画面がNexus7に表示されず一向に接続されませんでした。最後に、キーボードをBluetooth接続モードにしてNexus7画面上で「接続中」となった時に破れかぶれでキーボードで0000(もう一個0だったかな)と入力すると、おお!接続完了ではないですか。ちなみに、その後はペアを解消しても再接続の時もふつーに「*****をキーボード入力してください」的な画面がでるので、最初の苦労は何だったのでしょうか。それに比べるとマウスは何も考えずに接続されました。

マウスを繋ぐと、ポインタが画面にでます。おおっ!

キーボードを繋ぐと、ソフトウェアキーボードが出なくなります。おおっ!
ちなみに、日本語入力の切り替えは、cmd+~でした。
3つ合わせて合計で660g程度。ちょうど新しいiPadぐらいですか。

[g]
Nexus7 338.5
RBK-2200BTi 206.0
M555b 114.5
合計 659.0

旅行用としては良い感じですか。ああ、でもあとネットに繋ぐ装置が必要かぁ。

*1:Windowsタブレットで使っていた人から見れば今更かもしれませんが。

*2:充電用のケーブルを使うと充電が早いという噂もあり。検証してみないと。