コモノポリタン

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

【Home Assistant(Hass.io)でホームオートメーション】NFCタグで機器管理

NFCタグで機器を管理しましょう

スマートホームを実現するためには、Google HomeやらBroadlink RM mini3やら同じものを複数個買って使う必要が出てきます。電池を入れ替えたり、設定を確認したりで場所を動かした時も、間違えずに元の場所に戻す必要があります。まあ、マジックで名前を書いておいてもよいのですが、そこは「スマート」ホームですから、スマートにNFCタグでピッとやって管理しましょう。

1. 準備

名前 型番 備考
NFCタグ NTAG213 Amazonで12枚690~790円で売っています。サンワサプライ(互換?)との記載のある円形の白無地で記憶容量144byteのタグです。
f:id:maky_Ba:20200124003741j:plain:w300
まだ一枚60~70円ですね。
スマホ or タブレット Android, iOS (iPhone6以降) NFCが使えること。Androidの方が読み書ききちんとできてよいかな。iPhoneでも最近のものは大丈夫でしょう。

1.1.タグの準備

べたっと貼って剥がさないであれば気にしなくてよいのですが、NFCタグを貼りたいBroadink RM mini 3の裏面は紙ラベルなので、剥がして貼りなおせる様に、ちょっと細工を。
そのまま貼るときはここはスキップで。

  1. 購入したタグはちょうどクオーター硬貨と同じぐらい(つまり、まあ10円玉と同じぐらいということですね)なので、硬貨を何らかの紙(写真ではポストイット)に置いてちょっと大きめにぐるっと円を描く
  2. NFCタグの剥離紙を剥がして、書いた円に収まるように貼る(まあこのタグの粘着シートでも剥がせそうですけどね)。
  3. 弱い両面テープ(写真のはKOKUYO 両面テープラクハリT-RM2015。ちょっと癖があって使いづらい…)をタグの白い面に貼る。全面に貼らずに一部残しておくと剥がしやすい(と思う。写真で黒い点を打っているところが糊なし(=剥がすところ))。
  4. ちょきちょき書いた円に沿って切って出来上がり。
    外側になる紙(今回はポストイット黄色)|NFCタグの粘着面|NFCタグ本体|両面テープ、と4層構造に。

f:id:maky_Ba:20200123235815j:plain:w300:left f:id:maky_Ba:20200124000102j:plain:w170

1.2. NFCタグ書き込みアプリの準備

NFCタグの書き込みアプリはいろいろあって、おおよその違いは「タグをかざした時に出来ること」が違いだと思います。そもそもの話なりますが、アプリを入れなくても、NFCリーダー搭載のスマホタブレットAndroid携帯やタブレットなど)にNFCをかざすと簡単なことならできます。例えばURLを開く、メールを送る、などなど。

NFCタグのアプリを入れておくと、タグを読み込んだ時にさらに色々できるようになります。が、しかし「そのアプリ」がNFCを読み取るスマホなどにインストールされてる必要があります。

今回はブラウザで情報を表示したいだけなので、URLをタグに書き込んで、かざしてURLをオープンできれば十分です。つまり、どのNFCタグアプリでもさほど違いはありません、ということ。ここで評判のよさそうな「NFCタグマティック」を使います。

f:id:maky_Ba:20200124001459p:plain:w200
(評判良くて評価が3.9なのか、というところは突っ込まないでください)

1.3. Home Assistant (Hass.io)側で準備

今回はスマホをかざすとそのデバイスの情報が書かれたWebページが表示される、というようにしたいと考えています。そのWebページをHome Assistantサーバで表示させるための準備です。と言っても簡単です。

  1. 左側から「File Editor」を選んで、エディタを立ち上げる。
  2. エディタ画面の左上のフォルダのアイコンをクリックする
  3. デフォルトで表示されているフォルダ(config/)の下にwwwをつくります。`config/‘フォルダが表示されている状態で、フォルダに+マークの「New Folder」をクリックしてwwwを指定。それだけです。
    f:id:maky_Ba:20200621043339j:plain:w450
  4. Home Assistantサーバを再起動。

これでwwwフォルダに置かれたhtmlファイル(例えばA.html)には、https://<あなたのHome Assistant URL>/local/A.htmlでアクセスできるようになっているはず。
htmlファイルの作成もFile Editorを使えば良いですね。らくちん。

2. NFCタグの設定

2.1. 表示する情報の準備

Home AssistantのFile Editorを使って、先ほど作成したwwwに表示用のファイル(例えばここでは ir_remote_broadlink_rm3_04.html)を作ります。フォルダが選ばれている状態で、「New File」(ファイルに+のアイコン)して下記を入力します。これはHTMLで好きに編集してくださいね。

<html lang="ja">
    <head>
    </head>
    <body>
        <h1>Broadlink RM mini 3 - #4</h1>
        <table border=1>
            <tr>
                <td>WiFi MAC Address</td>
                <td>C8:F7:42:xx:xx:xx</td>
            </tr>
            <tr>
                <td>Purchase Date</td>
                <td>2019/9/3</td>
            </tr>
            <tr>
                <td>Status</td>
                <td>Active</td>
            </tr>
        </table>
    </body>
</html>

2.2. タグの書き込み

それではNFCタグにURLを書き込んでいきましょう。
NFCタグマティックを起動して、画面を横にスワイプして、「オープンタスクを新規作成」をタップ。「ブラウザでwebページ表示」をタップ。
f:id:maky_Ba:20200620213427p:plain:w200:left f:id:maky_Ba:20200620213700p:plain:w200

先ほど作ったHTMLファイルのURLhttps://<あなたのHome Assistant URL>/local/ir_remote_broadlink_rm3_04.htmlを記入して「OK」。NFCタグをスマホ/タブレットNFC書き込みエリアの下に置いて「書き込む」をタップ。
f:id:maky_Ba:20200620215437p:plain:w200:left f:id:maky_Ba:20200620215955p:plain:w200

書き込みエリアから外れているなら、少し前後左右に動かして書き込む。
f:id:maky_Ba:20200620220413p:plain:w200:left f:id:maky_Ba:20200620221002p:plain:w200

3. おしまい

NFC読み取り機能のあるスマホ/タブレットNFCタグに触れる(近づける)と、ブラウザが自動的に立ち上がって、こんな感じで表示されます。
f:id:maky_Ba:20200621051229j:plain:w200:left f:id:maky_Ba:20200621051424j:plain:w200
ちょっと表示が小さいかな、そこはHTMLでなんとでもなりますので、お好みで調整を。

これで「え、これどこのだっけ」が解消されます。また情報のアップデートはいちいちNFCの書き込みをしなくても、Home Assistant側だけで完結。ちょっと便利になりました。

次こそは、エアコンを汎用赤外線リモコンで操作したいと思います。

【Home Assistant(Hass.io)でホームオートメーション】汎用赤外線リモコン

ついに汎用赤外線リモコンの回!!

 昨年末からずっとほったらかしていたネタ(正確には最初に設定したのは、もう二年近く前…)ですが、ついに記事にすることに。

この記事の前提条件
Home Assistant 0.111.4
HassOS 4.10
Server Raspberry Pi 3B+

1. はじめに

 ホームオートメーションで出力に相当する機能をつくるのは、なかなか難しい。
 最初からネット経由やアプリ経由で操作できる家電もTVとかエアコンとか段々と増えてきてはいます。しかし家にはすでに多くの家電が存在し、「スマート化」するためだけに家の家電を買い替えるのは我が家の大蔵大臣(誰だ?)が許してはくれません。
 しかし幸いなことに大半の家電には「リモコン」というものがついていて、またその大半は「赤外線リモコン」なのです。つまり、リモコンの赤外線信号を記録して、送信することができれば家電を操作する(例えば、シーリングライトをオンにする、とか)ことができるのです。
 その赤外線を記録し・再生するのが「スマートリモコン」です。日本で帰る製品も最近はいろいろ出ています。Nature Remo mini (Nature社)、eRemote mini(LinkJapan社)、スマートリモコン(エレコム社)、スマート家電リモコン(ラトックシステム社)などのあり、専用のスマホアプリもあり、プリセット(事前に学習済みのリモコン)も充実しているというメリットあります。おおよそ4,000~8,000円ぐらいでしょうか。
 しかし私にとっては結局のところHome Assistantから操作できれば良いので、それほど立派なものでなくても良いのです。LinkJapan社のeRemote miniのOEM元のBroadLink社製品RM mini3であれば、1,500円前後で手に入ります*1*2f:id:maky_Ba:20200621224452j:plain:w300
 見た目から「黒豆(Black Bean)」と呼ばれています。これを使えるようにしてゆきます。

2. 黒豆(BroadLink RM mini 3)の初期設定

2.1. Broadlink社製アプリ(e-Control)をインストール

  1. スマホ/タブレットのアプリ検索(AndroidならGoogle Play)でBroadlinkで検索するとBroadlink - Universal Remotee-Controle Smart Homeなどいろいろでてきます。
  2. Home Assistantで使うにはBroadlinkのクラウドサービスに登録してはダメという話があるので、ログインしなくても良いe-Controlを使用しました。
  3. e-Controlをインストールしますが、もう色々権限を求められるので、ものすごく気持ち悪いですが、ぐっとがまん。Privacy Termsも我慢してContinueしてインストール完了。

2.2. WiFi接続設定

  1. アプリを立ち上げて、黒豆にWiFiを設定を開始します。
  2. ログイン画面が出て「さあログインアカウントを作ろう」的な圧力を感じますが、右上の「Skip」でスキップします(左画面)。そして出てきたTop画面の右上の「+」で「デバイス+」を選びます(右画面)。 f:id:maky_Ba:20200621225312p:plain:w200:left f:id:maky_Ba:20200621225425p:plain:w200

  3. 黒豆を接続したいWiFiSSIDが表示されている(=このスマホタブレットがそのWiFiに接続している)ことを確認して、パスワード欄にパスワードをセット。
    f:id:maky_Ba:20200621225719p:plain:w200

  4. 黒豆のLEDが青色で素早い点滅(1秒に2、3回)を繰り返していることを確認。初回でないとか、もしそうなっていないなら、MicroUSBの上にあるReset Buttonを細い針金のようなもので6秒以上押して、青色素早い点滅モード(設定モード)にする。デバイス+の画面の下の「SET」ボタンをクリック
  5. うまくいくと「このデバイスは日本でつかえねーよ」的なメッセージが表示され、黒豆のLEDの点滅が止まる。
    f:id:maky_Ba:20200621230859p:plain:w200
    (これが「設定成功」の画面!)
     これで黒豆が指定したSSIDWiFiに接続されます。一行目にWiFiMACアドレスが表示されるのでメモしておきましょう。
     何があってもこれ以上進めないので、海外で騒がれている「間違ってもBroadLinkのクラウドサービスに登録しないこと(Do not set up a cloud (not now, not ever). )」は自動的に回避されるのです。Thank you! LinkJapan.

2.3. 固定IPの指定

 他のデバイスと同様に、Fingを使って割り当てられてたIPを調べます。さきほどメモしたMACアドレスが使われているIPを探します。Hangzhou Broadlink TechnologyHangzhou Broadlink Electronics Technologyといった製造名のはずです。これを固定IP化しておきます。

3. Home Assistantでの設定

3.1. 赤外線リモコン学習の準備

 Configuration.yamlファイルに下記設定を記載し、左メニューの「設定」→「サーバーコントロール」→「設定の検証」でConfiguration.yamlの記載を間違えてないか確認。大丈夫なら下の方の「サーバーの管理:再起動」で再起動する。

(前略)

#*****************************************************************************
# Switch
#*****************************************************************************
switch:
  # Broadlink RM mini 3 (#5)
  - platform: broadlink
    host: 192.168.XX.XX           # 先ほど固定化したIP
    mac: 'XX:XX:XX:XX:XX:XX'      # 先ほどメモったWiFiのMACアドレス
    timeout: 30

(後略)

3.2. 学習

  1. 「開発者ツール」→「サービス」タブで、サービスのドロップダウンリストからbroadlink.learnを選択。Service Data(YAMML optional)にhost: 192.168.XX.XXと黒豆のIPを指定。 f:id:maky_Ba:20200622005402j:plain:w400
  2. 「サービスを呼ぶ」ボタンをクリック。黒豆のLEDが白く点灯。
  3. 20秒以内にリモコンを黒豆に向けて、学習したいボタン(ここでは「消灯」)を押す。
  4. うまくいけば黒豆のLEDが消える。ちなみになかなかうまくいかない。うまくいけば通知が来て、そこに学習した赤外線コードが表示される。 f:id:maky_Ba:20200622010321j:plain:w200
    (これは日立のシーリングライトのリモコンです。ううむ長いな。Panasonicのはもっと短かったのに。)
    コードを選択して、下記のcommand off: ''のクオーテーション間にコピー。最後に==を付け加える。
(前略)

#*****************************************************************************
# Switch
#*****************************************************************************
switch:
  # Broadlink RM mini 3 (#5)
  - platform: broadlink
    host: 192.168.XX.XX 
    mac: 'XX:XX:XX:XX:XX:XX'
    timeout: 30
    switches:
      hitachi_celling_light_ch1:
        friendly_name: "Study Room Light"
        command_off: 'JgCwBA8NDygQDBAoDw0PDQ8NDw0PDQ8MEAwQDQ8oECcQKA8oECcQKBAnECgQJxAoDw4ODQ8NDw0PDQ8NDw0PDQ8pDigQKBAoDikPKQ8NDikPDQ8NDw0PDQ8oDykPKA8NDygPKQ8oDykPDQ4ODgAD7G82DikPDQ8NDw0PDQ8NDw0PDQ8NDg4ODg4ODikODg4ODg4ODg4ODg4PDQ8oDygPDQ8ODwwQDBAMDw0PKQ8MECgPDQ8oECgPKBAoDw0PKA8NDykPDBAMEAwQDBAMEAwQDA8NECgPKA8oECgPKBAnECgPKQ8oECcQDQ8NDw0PDQ8NDw0PDQ8NDygPKA8oECgPKQ4pDw0PKQ4NDw0PDQ8NDykPKA8pDw0OKQ8oDykPKA8NDw0PAAPrbzYPKQ8NDw0PDBAMEAwPDQ8NDw0ODg4ODg4OKQ8NDg4ODg8NDw0PDQ8NDykPKA8NDw0PDQ8NDw0PDQ8oEAwQKA8NDygQKA8oDygQDBAoDw0PKBAMEAwQDBAMEAwPDQ8NDw0QJxAoDygQJxAoDygQKBAnECgPKBANDw0PDQ4ODg4ODg8NDg4OKQ8oECcQKA8oDykPDQ8pDg0PDQ8NDw0PKQ4pDykODg4pDygPKQ8oDw0PDQ8AA+twNQ8oEAwQDBAMEAwPDQ8NDw0PDQ8NDg4ODg4pDg4ODg4ODg4ODg4ODw0PKA8pDw0PDQ8NDw0PDQ8NDygPDQ8oEAwQKA8oECgPKA8NDygQDBAoDw0PDQ8NDw0PDQ8MEAwQDQ8oECcQKA8oECgPKBAnECgQJxAoDw4ODg4NDw0PDQ8ODg0PDQ8pDycQKA8pDygPKQ8NDygPDQ8NDw0PDQ8oDykPKA8NDykPKA8oDykPDQ8NDwAD7G42DygQDBAMEAwPDQ8NDw0PDQ8NDg4ODg4ODikODg4ODg4ODg4ODg4PDQ8oDykPDQ8NDw0PDQ8NDw0PKA8NDygQDBAoDygQKA8oEAwQJxAMECgQDBAMDw0PDQ8NDw0PDQ8NDygQKA8oECcQKA8oECgPKBAoECcRDA8NDw0PDQ8NDg4PDQ8NDikPKA8oECgPKQ4pDw0PKQ4NDw0PDQ8NDykPKA8pDw0OKQ8oDykPKA8NDw0PAAPsbzUPKQ8NDw0PDQ8NDw0PDQ8NDw0ODg4ODg4OKQ4ODg4ODg4ODg4PDQ8NDygPKBAMEA0PDQ8MEAwQDBAoDw0PKA8NECgPKA8oECgPDQ8oEAwQKA8NDw0PDQ8NDwwQDBAMEA0PKBAnEScQJxAnECgQJxEnECgQJxANDg4ODQ8NDw0PDQ8NDw0PKQ8nEScQKA8oECgQDBIlEAwPDQ8NDw0PKBAoECcPDQ8pDygPKQ8oEAwPDQ8AA+xvNQ8pDw0PDQ8NDw0PDBAMEA0PDQ8MDw0PDQ8pDg4PDQ8NDw0PDQ8NDwwQKA8oEAwPDRAMEAwQDBAMDykPDBAoDw0QJxAoDygQKA8NDygQDBAoEAwPDQ8MEQsQDBAMEAwRCxEnECcRJxAnECcRJxAnEScQJxEnEAwQDA8NDw0PDRAMDw0PDQ8pDygPKBAoDygPKQ8NDygPDQ8NDw0PDQ8oDykQJxAMDykPKA8oDykPDQ8NDwANBQAAAAAAAAAA=='

(後略)

 ちなみにswitchesの次の行のentity名(ここではhitachi_celling_light_ch1)は、大文字やスペースは不可です。 同じようにして、「全灯」のボタンも学習しましょう。

3.3. UI設定

 左メニューの「状態」をクリックし状態画面にする。次に画面の右端の3点メニューボタン(…を縦にしたやつ)を押して「Configure UI」を選択します。UI編集画面の右下のオレンジ色の+ボタンを押します。
f:id:maky_Ba:20200622134014j:plain:w400
 いろいろありますが、いつもエンティティパネルを使っているので、今回はボタンを使ってみましょう。
f:id:maky_Ba:20200622134147j:plain:w400
 デフォルトでswitchが設定されていることもあります。そうでなくてもエンティティを選ぶだけでOKです。これで右側にプレビュー表示されているの雷マークのパネルが状態画面に表示され、これを押すと天井のライトがOn/Offできます。

4. おわりに

 これでどんどん学習させて、Home Assistantからリモコン付き家電を操作できるように出来ますね。
 ちなみに学習は周囲の光(LEDが沢山あって、赤外寄りの光もバンバン発光しているのではないだろうか)に影響されてうまくいかいないことが多い気がするので、私は左手でRM mini3の上部を囲んでそこにリモコンを差し込んで学習させています。これでちょっとは認識率が上がる気がする… f:id:maky_Ba:20200623214426j:plain:w300

 汎用赤外線リモコンとクリスマスツリーで使ったIFTTTを組み合わせると「ねぇぐーぐる、ベッドルームの電気を消して」という寒い日には最高の機能が実現されます。が、今は初夏…。そんなこと出来てもねぇ。

 次はリモコンのフォーマットを解析してコードを作る、というのに取り組みましょう。乱れのない良いコードを作れる、リモコンにボタンが無い機能をのコードが使える、とかメリットがあります。そして最大のメリットは、「エアコン」のコードを効率的につくれる(可能性がある)、というあたりでしょうか。夏に向けて、さて頑張りましょう。

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

  1. RaspberryPiにHome Assistant導入
  2. Home Assistant初期設定
  3. 環境センサー(Omron)を接続
    1. 環境センサー(Omron)を接続 - 前編
    2. 環境センサー(Omron)を接続 - 中編
    3. 環境センサー(Omron)を接続 - 後編
  4. スマートコンセントでクリスマスツリー点灯!(スマートプラグ)
  5. スマートディスプレイ
  6. OK、ぐーぐる、クリスマスツリーを点けて(IFTTT連携)
  7. ルンバ発進!
  8. 汎用赤外線リモコンを接続《今回》
  9. データベースの外部化
  10. UIを改善

*1:技適の問題はありますが…。個人の家での使用なのでまあ、なんとか…。

*2:Amazon.co.jpでも買えたりします。また、このご時世なので中国からの荷は遅れそうですが、LightInTheBoxとかGeekBuyingやAliExpressなども結構安く手に入ります、新型コロナ前からけっこう時間かかってましたが

【Home Assistant(Hass.io)でホームオートメーション】ルンバ設定方法変更(HA0.109~)

Roomba新規登録があたらしくなりました。

年初に下記の記事のようにRoombaをHome Assistantから操作できるようにしました。が、Home Assistantのバージョンを0.109に上げたらルンバが状態に表示されなくなりました。 【Home Assistant(Hass.io)でホームオートメーション】ルンバ 発進! - コモノポリタン

どういうことだ??。調べてみるとどうやらRoombaがHAのインテグレーション(Home AssistantにデバイスをUIで登録する方法)に対応し、登録の仕方が変更になったみたい。

「3.1. ルンバのBLID/Passwordを取得する」 までは上記の元記事と一緒。その先から。

3.2. Integrationの設定

[設定]→[Integrations]と進み、右下の(+)印(Set up a new integration) をクリック。iRobot Roombaというのがあるのでそれを選択。
f:id:maky_Ba:20200607185227j:plain:w450

「Connect to the device」というウィンドウが表示されるので、先ほどメモったBLIDとPasswordそれとルンバのIPアドレスを設定します。送信してうまくいくと「Sucess!」のウィンドウが表示されます。名前はiRobotのアプリで設定したものが読み込まれます。エリアを設定して完了。
f:id:maky_Ba:20200607185428j:plain:w350 f:id:maky_Ba:20200607185616j:plain:w200

Integrationタブの中に、iRobotのタイルが表示されます。
f:id:maky_Ba:20200607190102j:plain 最近のバージョンからIntegreationがグラフィカルなタイル表示になりました。 いろいろ登録すると鬱陶しそうですが、同じ種類なら一つのタイルにまとめられるので大丈夫かも。

3.3. UI設定

表示パネルのどこかに「vaccum.<付けた名前のエンティティ名>*1」を設定します。
UIの設定(Configure UI)もグラフィカルになりました。いつも使っているEntityパネルは右上。出来上がりのイメージがわかりやすくなりました。 f:id:maky_Ba:20200607193838j:plain

例えば下記の様に設定すると右のような感じになります。
f:id:maky_Ba:20200607194241j:plain:w300:leftf:id:maky_Ba:20200607194317j:plain:w250

右の画面のルンバの名前(上では「Roomba_no1」)をクリックするとルンバの状態と操作の画面がポップアップします。
f:id:maky_Ba:20200607194534j:plain:w300:left

おわりに

ってこの記事を書いて、ぼーっとしているうちにHome Assistantも0.110.xに…。
いろいろと設定が便利になって、UIもほんの少し変わってきたので、ここらで一度見直し、再設定してみるか。気が向いたら、再設定の記事まとめます。

*1:名前にスペースとかピリオドとかが含まれるとそこはアンダースコアに置き換わると思うが、今回はiRobotアプリに登録するときからNO スペース、NOピリオドで命名したのでわかりかねます。大文字は小文字になっていました。「Roomba_no1」が「roomba_no1」になりました。

【在宅】スマホスタンド

在宅でのテレビ・電話会議対応にスマホスタンド(改)

iPhoneの充電台として、百均(CanDo)で「音が広がるスマートフォンスタンド」を買って使っていました。音が広がる点は実はあまり重視していなくて、大きさと安定感(おもり必要ですが)がポイントでした。
ダイソーでも同じもの手に入るようです)

f:id:maky_Ba:20200510124014j:plain

しかし、このご時世、スマホはzoom会議、Teams会議と大活躍。ハウリング防止でiPhone付属のマイク付きイヤフォンを接続するのですが、そうすると充電が…。

1. lightning二股ケーブル

Amazonで「iPhone イヤホン 変換ケーブル lightning 充電 イヤホン 同時 二股接続ケーブル ライトニング 変換アダプタ」を買ってみました。1300円ぐらい、大丈夫かと思う値段ですが、一応使えてます(使えませんよ的な警告でますが…)。
心配ならAppleで売っているBelkinのやつとかを使うのが吉かと。

2. スマートフォンスタンドを改造

スタンドの上の左右の端を持って、左右に少し広げると、下の受け皿の所が外せます。

f:id:maky_Ba:20200510125311j:plain

後ろの穴(写真ではすでに加工済み)は元々はケーブル1本を通すためのもので小さいので、カッターナイフで変換アダプタがちょうど収まるように切ります。カッターナイフで十分切れますが、ケガしないように気をつけて。

f:id:maky_Ba:20200510125932j:plain:w150f:id:maky_Ba:20200510130008j:plain:w150

はい、出来上がり。
(ちょっと右側にずれているのは愛嬌…)

完成形

こんな感じです。中に5百円玉の重しを入れて安定させています。 これで長い会議も大丈夫!
f:id:maky_Ba:20200510134900j:plain:w150 f:id:maky_Ba:20200510134920j:plain:w150

【Home Assistant(Hass.io)でホームオートメーション】ステレオペア

お年玉Google Homeでステレオペア!

<下書きに入れて気が付いたら4カ月もたってました…遅ればせながら。>

中古スマホ・タブレット販売のイオシス」のお年玉セール(?)で中古のGoogle Homeが2,020円だったので、つい2つ買ってしまいました*1。完全なる衝動買い…

スマートスピーカーは触って使うものでは無いので、Bランク中古と言っても綺麗なのでは、と予想して購入。予想通り中々の美品。底のゴムっぽい所が少し使用感あるかな、でももしかすると取り出して置いた私の机が汚いだけでは…というレベル。

さて勢いで買ったは良いが、既に部屋の数ぐらいはスマートスピーカーを持っている我が家の現状。空いてるとしたら、ウォークインクローゼットと言う名のベッド横のスペース、トイレ、風呂の中、玄関、ぐらいか。

ウォークインクローゼットは寝室のGoogle Homeが余裕で返事してます今も。風呂は防水で無いと駄目だし、玄関はコンセント無し、トイレはねぇ、と言う事で、さてはて、です。

そうだ!、ステレオペア機能は使ったことなかったなぁ、と言う事でやや無理矢理ですが、ステレオの音楽再生スピーカーにしてみます。

1. 必要なもの

名前 型番 コメント
Googleスマートスピーカー2個 Google Home / Google Mini / Google Nest Mini 同じもの2個セットで。

2. セットアップ

Google Homeアプリでセットアップしますが、大半のプロセスは通常と違いはありません。強いて言えば、名前を分かり易く付けておいたほうが良いかな、と言うぐらいでしょうか。 (私は、リビングのテレビ脇に置きましたので「リビングスピーカー1」「リビングスピーカー2」としました)

両方のスピーカーのセットアップが終わったら、そのうちの一個を選んで設定を押します。「ステレオペア」を選ぶと、もう一個はどれにするって聞かれます。あとは言われるがまま。

f:id:maky_Ba:20200123194358j:plain

3. おしまい

出来上がると2個のスピーカーは、まとめて1個扱いになります。名前も一つに。 YouTube Musicなどで、ステレオペアスピーカから再生するとちゃんとステレオに聞こえます。まあ音質は推して知るべしですが、結構大音量でもいけるので、イージーリスニングには良いかもしれませんね。

なお「ねぇ、ぐーぐる」すると、左側のスピーカーが回答を担当します。ではでは。

<追加> 我が家はリビングダイニングなので、ダイニング側に置いてあるGoogle Nest Hubに「タイマー3分」とかお願いすると、離れたテレビ横のGoogle Homeが反応してしまうのです(テレビの左側のスピーカが聞き取り担当なのですが、その左側がダイニングなのです…)。困った。どうしよう。

*1:来年は1円値上げになるのかな。

【Home Assistant(Hass.io)でホームオートメーション】ルンバ 発進!

Five, Four, Three, Two, One, Roombas are GO!*1

昨年末のビックカメラの新聞広告に踊らされて、家のルンバを更新しました。今までのルンバはグルグル廻るちょっとバカっぽいルンバだった*2のですが、新型はどうだ?真っ直ぐなヤツだが、隅々まで気が回らないヤツだという噂も。

1. はじめに

f:id:maky_Ba:20191222142406j:plain:w400
(ルンバって買い換えても「変わった!」って感じにならないのですよね…)

今まではルンバ885Plus*3でした(左のやつ)。交換用フィルタや、お部屋ナビ(複数のお部屋を順番に掃除させる赤外線ゲート的なもの)2個、バーチャルウォール(入っちゃダメなところに赤外線で線引きするもの)とかおまけがいっぱいでした。赤外線リモコンがあったので、汎用赤外線リモコンで学習させてHomeAssistantから「Roomba Go!」とかは一応出来なくはない(テストはした)のですが、運用上はうまくいかなかった*4ので、Home Assistant連携は放置してました。

今回のビッグカメラの特価品はルンバ980でした(右のやつ)。同じ900番台にルンバ960という定価がちょっと安いのがあります。違いは「付属品(バーチャルウォール1個増、交換用フィルタ・エッジブラシ1個増)」「吸引力(カーペットブースト)」「稼働時間」だそうです。ううむ、あまり有難くない…バーチャルウォールって意外と使わないのです。カーペットブーストに至っては、我が家は部屋をルンバ仕様にしていて、一か所(1畳程度)を除いてカーペットが無いのです。稼働時間を気にするほど家は広くないし、バッテリー無くなったら充電して続きを掃除してくれるらしいので、まったく問題ないでしょう。ま、特価になっていたから良しとしますか。

2. Roomba 980の初期設定

2.1. 本体充電

箱からだして、充電ステーションを設置して本体を置く。3時間充電、とか書かれているが既に本体充電済みなので、すぐに満充電になって電気が消えるかもしれません。びっくりしないように(びっくりしました、私は。)。

2.2. iRobot Homeアプリ設定

まあ、アプリが無くても足で「Clean」ボタンをぽちっと押せば掃除はしてくれるのですが、まあアプリ連携推奨らしいので、設定しましょう。掃除したところをマップしてくれるって機能もあるらしいし。AppStoreもしくはGoogle Playで「iRobot Home」アプリをインストールしましょう。

アプリで家の外からでもアクセスできるようにするために、ユーザアカウントの作成を迫られます。あんまり好きではないのですが…しかたなし。
f:id:maky_Ba:20191222204233p:plain:w125 f:id:maky_Ba:20191222204325p:plain:w125 f:id:maky_Ba:20191222204347p:plain:w125 f:id:maky_Ba:20191222204824p:plain:w125

初めてルンバを接続する時は「ロボットを追加」画面がでます。 確認事項に表示される3点「充電ステーション」「ロボット」「Wi-Fi」以外に、「Bluetooth」「位置情報」が必要です。ううむ。
f:id:maky_Ba:20191222204849p:plain:w125 f:id:maky_Ba:20191222204918p:plain:w125 f:id:maky_Ba:20191222204943p:plain:w125 f:id:maky_Ba:20191222205005p:plain:w125

ルンバの名前を決めて、接続先のWi-Fiパスワードを入力(Home Assistantと同じネットワークのWi-Fi)するとルンバの起動を求められます。
あとでHome Assistantから操作するためにIPを固定化しておいた方がよいので、左から3番目の画面で「最新のネットワーク設定」をクリックし、静的IPを設定しておきます。
f:id:maky_Ba:20191222205058p:plain:w125 f:id:maky_Ba:20191222205116p:plain:w125 f:id:maky_Ba:20191222205144p:plain:w125 f:id:maky_Ba:20191222205212p:plain:w125

多分Bluetoothがちゃんと機能していれば、ルンバから「設定中です」的な音声が流れるのですが、うまくいかないと、下の左端の画面とその次の画面の間ぐらいかな、そこらへんで「(アプリを使っている)スマホ等のWi-Fiを切り替えて直接ルンバに接続せよ」って言われたりします。多分Wi-FiSSID/パスワードを伝えたいだけだと思います。スマホWi-Fi設定で「roomba........」というSSIDを選んで接続すると、またすぐに「元のWi-Fiに戻せ」って言われて右往左往…。それが終わると再び左端の画面になって、ネットに接続してFirmwareのアップデートなんやらが走って(いるらしい)しばらくすると「設定が完了しました!」画面になる*5
リモコン代わりに「Clean」できるボタンが表示されます。 ルンバを切り替えたいときは、左上の三本線をクリックすると選択できる画面が表示されます(下、右端)。
f:id:maky_Ba:20191222205328p:plain:w125 f:id:maky_Ba:20191222205407p:plain:w125 f:id:maky_Ba:20191222205447p:plain:w125 f:id:maky_Ba:20191222205512p:plain:w125

2.3. 掃除させてみた

f:id:maky_Ba:20191222211957p:plain:w125:left f:id:maky_Ba:20191222212026p:plain:w125:left 掃除させてみました。バカっぽさが消えて(愛くるしさも減少??)、真っ直ぐな優等生君に生まれ変わりました。左がClean Map機能でどこを掃除したか(しなかったか)がわかる機能です。しかも道中Wi-Fiの受信感度も測定しているし。
iRobot社の社長が「家の中がどうなっているかわかるIoTデバイスはルンバだけだ」的な発言をしたくなる気もわかります。が、しかし、ねぇ、家の中の情報がねぇ…。このClean Map機能をOffにすればCloud(iRobot社)にはデータが送られなくなるのですが、面白いからねぇこの機能。そこが狙いか。

3. Home AssistantからルンバGo!

次は本命のHome Assistantからのルンバ制御です。基本的には下記のHome AssistantのIntegrationsのiRobot roombaの記載に従えば良いのですが、相変わらず言葉足らず。
www.home-assistant.io

3.1. ルンバのBLID/Passwordを取得する

ルンバのBLID(Build ID?)とPasswordを取得しないと連携できないのですが、Home Assistantのサイトはそのあたりは、下記のサイトに丸投げ工法。
github.com

ただWindowsのWLS(ubuntu)環境でやろうとしたらPythonのバージョンなのか何なのかでイマイチうまくいかず。下記のサイトの言う通りに進めたら無事BLID/Passwordが取得でき、うまくいきました。 community.home-assistant.io

  1. Windowsのどこか(例えばデスクトップ)に、作業用のフォルダ(roomba)を作成して、exeインストーラgithubのファイルの置き場にします。
  2. Pythonのサイト(https://www.python.org)から最新版のexeインストーラを取得
  3. GithubのNickWaterton/Roomba980-Python(https://github.com/NickWaterton/Roomba980-Python)からRoomba980-Pythonをzipで固めたものを取得
  4. Pythonのインストール。「カスタムインストール」でC:\Pythonにインストール。「環境変数Pythonを追加」(Add Python to environment variables)も忘れずに。
  5. Roomba980-Python-master.zipの中のroombaというフォルダをC:\Pythonの直下に展開
  6. DOSプロンプトを立ち上げる(Windows左下の検索窓からcmdとか入れて)
> cd C:\Python
> pip install six
> python .\roomba\getpassword.py -R 192.168.xx.xx  (←ルンバのIP)

途中で止まって「ルンバがホームステーションに居て電源が入っている状態か確認しろ」「確認したらルンバのホームボタンをピロッって言うまで2秒ほど押せ」と言ってくるので言われた通り操作して、DOS窓でEnterを押す。

(中略)
Roomba (Roomba_no1) IP address is: 192.168.xx.xx
blid is: 69F4051123456789
Password=> :1:1577025355:SE0pEGauevFJOgxK <= Yes, all this string.
Use these credentials in roomba.py

このblid「69F4051123456789」とPassword「:1:1577025355:SE0pEGauevFJOgxK」(どちらも値はサンプルですよ)の両方が重要。メモっておきましょう。

ちなみにpip install sixは、1回やれば十分。次に(2台目ルンバ―とか)BLID/Passwordを取得したいときは、PythonスクリプトだけでOKです。

3.2. Configuration.yaml設定

先ほどメモったBLIDとPasswordそれとルンバのIPアドレスをConfigurationファイルに記載します。

(前省略)
# iRobot roomba 980
vacuum:
  - platform: roomba
    name: <表示用のルンバの名前>
    host: <IP_ADDRESS>
    username: <BLID>
    password: <PASSWORD>
(後省略)

あとは再起動。

これで、vaccum.turn_onやらvaccume.turn_offやらでルンバを制御することができるようになります。一日複数回のタイマー起動とかもOK(のはず)。コマンドは、掃除機(Vacuum)の項にありますよ。

www.home-assistant.io

3.3. UI設定

表示パネルのどこかに「vaccum.<付けた名前を基にしたエンティティ名>*6」を設定します。例えば下記の様に設定すると右のような感じになります。
f:id:maky_Ba:20200110005844j:plain:w300:leftf:id:maky_Ba:20200110005904j:plain:w250

右の画面のルンバの名前(上では「Roomba No.1 - 1st Floor」)をクリックするとルンバの状態と操作の画面がポップアップします。
f:id:maky_Ba:20200110010736j:plain:w300:left

4. さいごに

Home Assistantのコミュニティのやりとりを見るに、BLID/Passwordの取得は結構苦労しているみたいです。

「Multiple Connectionがいかん」(どうやらルンバは一度に一か所としかやり取りできないので、ルンバアプリ(クラウドサービス)とおうちサーバHass.ioの2か所(Multiple)の接続はだめだという理論)とか言って、すべての端末の全てのルンバアプリを削除してからgetpassword.pyスクリプトを実行すべし、とか言っている人もいましたが、少なくとも私はそんなことしなくても大丈夫でした。一応、アプリは停止させてからスクリプト実行しましたが。

またHass.ioからの制御に関しても「Multiple Connectionが邪魔をするのだ」とかいうコメントもありましたが、今のところiRobot HomeアプリとHAの両方からアクセスしてもきちんと動いています、今のところ。 まあ組み合わせや、タイミングでダメになったりしそうですが…

さて、新年早々、やっぱり汎用赤外線リモコンには到達せず。
赤外線リモコンにはいろいろやらせたいけど、とりあえず電気をつけるとこだけにするか。

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

  1. RaspberryPiにHome Assistant導入
  2. Home Assistant初期設定
  3. 環境センサー(Omron)を接続
    1. 環境センサー(Omron)を接続 - 前編
    2. 環境センサー(Omron)を接続 - 中編
    3. 環境センサー(Omron)を接続 - 後編
  4. スマートコンセントでクリスマスツリー点灯!(スマートプラグ)
  5. スマートディスプレイ
  6. OK、ぐーぐる、クリスマスツリーを点けて(IFTTT連携)
  7. ルンバ発進!《今回》
  8. 汎用赤外線リモコンを接続《次回》
  9. UIを改善
  10. データベースの外部化

*1:サンダーバード好きなので「発進!」(正確にはGoは準備完了的な意味合いですが)はこのセリフで。Roomba"s"なのは一階と二階の両方にあるからです。

*2:右往左往しながら何度もしっかりと掃除してくれるので、ういやつよのう、という感じで好きでしたよ。でもお別れ…

*3:ああこれもビッグカメラ.comで買ったやつだったなぁ。

*4:汎用赤外線リモコンは、基本的に横から上の範囲に赤外線を広範囲に照射するのですが、ルンバは床の上なので赤外線がうまく届かないのですが…なんか反射でうまくいくときもあったりするのですが。天井、と言うかシーリングライトに汎用赤外線リモコンを組み合わせるのが、到達範囲という点では何気に良いと思うのですが。製品化されないのかなPanasonicとかから。

*5:この「設定が完了しました!」画面はアニメーションが凝っています。ごみをぶちまけて(上記画面)、ぐるぐる走りまわってごみを掃除したり、猫を載せて走ったりして、最後は綺麗な状態で止まります。

*6:ちなみに名前にスペースとかピリオドとかが含まれるとそこはアンダースコアに置き換わります。また大文字は小文字に。「Roomba No.1 - 1st Floor」は「roomba_no_1_1st_floor」になります。

あけましておめでとうございます!

今年もよろしくお願いします。

1. Home Assistant再導入

年末年始は旅行に行っていたのですが、だいたい旅行中にHome Assistantがお亡くなりになります…。前回はGWの旅行中に大往生。原因の切り分けと復旧に結構手間がかかりました。

今回の原因はDB(sqlite3)がイカレタみたい。そろそろSDカードへの負担を減らす方法を考えないと。

とりあえずコストコで新品のmicroSD 64GBを購入して再インストール。自分の記事が役に立つ…
f:id:maky_Ba:20200110012002j:plain:w350
(5枚で4000円弱で購入できました。さてどのぐらい持ちますやら)

2. WxBeacon2 (Omron製)の電池交換ラッシュ!

ラッシュは大袈裟か。大体同時期に使い始めたので、電池が切れるのも似た日程に。
湿度とか温度とかが時々「0(ゼロ)」になるっていう症状が出てきたら、大人しく電池交換の準備を。
f:id:maky_Ba:20191225012018j:plain:w225:left f:id:maky_Ba:20191225012056j:plain:w225
公称推奨電圧2.7~3.3Vなので、まあそんな感じかと。電池寿命は「約6ヵ月※3 (測定間隔5分/1日1回接続)」が定格らしいのですが、私の使い方とバルクの安売りボダン電池だと経験上3~4カ月ですかねぇ。

2020年もよろしくお願いします。
次こそは赤外線リモコンだ!きっと、たぶん、いや…どうだろう…