これまでHome Assistantの設定方法なども紹介してきましたが、今回は外からHome Assistantにアクセスして機器を操作するための設定を紹介します。
せっかくスマートホーム化しているので外からも機器を操作したいという人は多いと思います。
Home AssistantではDuck DNSというアドオンを入れることで外からアクセスできるようになります。
そのやり方を詳しく解説していきます!
設定手順
設定手順は以下の通りです。
DuckDNSは無料で使用できるDNSサーバーで、外からHome Assistantにアクセスするためには必要なサービスです。
もう少し詳しく、かつ、ざっくりとしたイメージを説明します。正確な説明はここではしませんし、知らなかったとしてもHome Assistantを使う上で問題はありませんので、説明は不要と言う方は次の章まで読み飛ばしていただいて構いません。
インターネットに接続されているルーターにはIPアドレスという番号が割り当てられています。(例えば、123.456.789.012といった具合に)
この番号は我々の生活に置き換えると住所のようなものです。手紙や荷物を送るときに住所を頼りに場所の特定がされるのと同じで、ネット上の通信の情報のやり取りはこのIPアドレスを頼りに正しいルーターやPCに情報が届けられます。
しかし、このIPアドレスはプロバイダーと特別な契約をしていない場合、時間が経つと変わってしまう仕組みになっています。そうすると、今まで使っていたIPアドレスでは正しく情報を届けられません。情報が正しく届けられないということはHome Assistantへのアクセスができないということです。
したがって、IPアドレスを打ち込んでHome Assistantにアクセスする場合は、常に最新のIPアドレスを把握しておかなければアクセスができません。変化していくIPアドレスを常に把握しておくのは現実的ではありません。
そこでこの問題を解決するのがDNSサーバーです。DNSサーバーはこのIPアドレスとドメイン(https://○○.comの○○以降)の組み合わせを管理しており、IPが変更されても組み合わせを自動的に更新してくれます。そのため、ドメイン名でHome Assistantにアクセスすれば、常に正しいIPアドレスに置き換えてHome Assistantにアクセスしてくれます。つまり、IPアドレスがわからなくても、ドメイン名さえ分かっていればアクセスできるわけです。ドメイン名は変わらないので、覚えるのは簡単ですよね。
以上が簡単ですがIPアドレスの説明です。次の章から実際に設定手順を解説していきます。
ルーターのポートフォワーディング設定
まずはルータの設定が必要です。ルーターのポートフォワーディング(ポート転送)の設定をします。
これは外からアクセスした時にhttpsで使用するポート(443)からHome Assistantで使用するポート(デフォルトは8123)にパケット(情報)を転送する設定です。異なるポート同士では通信ができないので、この設定をしないとHome Assistantにはアクセスできません。
ポートフォワーディングの設定はルーターごとに異なるため詳しいことは書けませんが、ルーター設定に行けばあるはずです。(ルーターの設定方法は大抵は192.168.0.0か192.168.0.1にアクセスします)
tp-linkのルーターの場合、詳細設定→NAT転送→ポート転送から設定できると思います。
大抵どのルーターでも以下のような入力ができると思いますので、次のように入力します。
DuckDNSでドメイン登録
次にDuckDNSの登録と設定をしていきます。DuckDNSにアクセスしてログインします。
ログインはGoogleやTwitter、Facebookなどのアカウントでもログインできます。お好きなものでログインすると良いでしょう。
ログイン後、取得したいドメインを登録します。つまり、使いたいアドレスを取得します。
下側のdomainsの右にあるテキストボックスに使いたいアドレスを入力して「add domain」を押します。もし、入力したアドレスが他の人に使われていたら登録できません。この場合は、別のアドレスを入力しましょう。
入力したアドレスがこのようにリストに表示されれば登録完了です。
画面に上段側に映っている「token」は後ほど使用しますのでコピーしておきましょう。
DuckDNSアドオンのインストール
次にHome AssistantのアドオンストアからDuckDNSをインストールします。
Home Assistant画面から「設定」→「アドオン」→「アドオンストア」と移動し、Official add-ons内にある「Duck DNS」を選択して、「インストール」をクリックします。
しばらくしてインストールが終わったら、Duck DNSアドオンの設定をします。上にある「設定」をクリックして以下の項目を入力します。
TokenにはDuck DNSサイトに書かれているtokenをコピー/ペーストします。
Let’s Encrypt欄はほぼそのままで良いですが、暗号化を有効にするために、「accept_temrs」をtrueに変更します。
最後に、一番上のDomainsを入力します。入力欄の上に空欄の×印がありますが、これは×をクリックして削除してください。すると、そこに新たに入力したドメインが登録されます。
もし、うまく入力できない場合はyamlに切り替えて入力すると良いです。右上の縦に3つ並ぶ点「・」をクリックして、「YAMLで編集」をクリックすることで切り替えができます。
そこに以下の内容で書き換えて保存します。
domains:
- (DuckDNSで登録したドメイン。○○○.duckdns.org)
token: (DuckDNSに表示されたtoken)
aliases: []
lets_encrypt:
accept_terms: true
algo: secp384r1
certfile: fullchain.pem
keyfile: privkey.pem
seconds: 300
ドメインの設定ができたら、上部のタブで「情報」をクリックしてアドオンのトップページに戻ります。
そして、中段にある「開始」をクリックします。
しばらくするとアドインが開始され、「開始」ボタンが「停止」ボタンに変わり、となりに「再起動」というボタンも現れます。
上のタブからログをクリックしてログ画面に移動します。ログに「+ Done!」と出てきていたら正常に開始できています。
Configuration.yamlの修正
次にConfiguration.yamlを修正する必要があります。
編集方法はどんな方法でも構いませんが、数行追加するだけなので、アドオンのFile editorで十分です。インストールされていない場合はアドオンストアからインストールしてください。この記事ではFile editorを使って修正していきます。
File editorを起動し、Configuration.yamlを開きます。そして、次のコードを追加します。
# Example configuration.yaml entry
duckdns:
domain: (あなたのドメイン)
access_token: (あなたのトークン)
入力が終わったら保存をし、変更内容を適用するためにHome Assistantを再起動します。
Home Assistantの設定
最後にHome Assistantの設定をします。
「設定」→「システム」→「ネットワーク」と進みます。
インターネットという欄にあなたのHome AssistantのURL(https://取得したドメイン)を記入し保存します。
早速アクセスしてみる!
以上で設定は完了です。正しく設定できていればドメインでアクセスできるはずです。
ブラウザのURLバーに、「https://(あなたのドメイン).duckdns.org」と入力してアクセスしてみます。
なお、IPアドレスでアクセスしようとすると、以下のような警告が出るかもしれません。これは無視で良いです。家の中、つまり内部ネットワークのため、問題ありません。詳細設定を開いてアクセスするをクリックしてください。
もし、外からアクセスしたいか確認したい場合は、スマホ等でWi-Fiを切断してモバイルネットワークで接続してみてください。モバイルネットワークで接続できればどこからでもアクセスできることになります。
まとめ
いかがだったでしょうか?
外からアクセスするためのDuckDNSの設定方法を紹介しました。
もしうまくできないや質問等あればお気軽にお問い合わせフォームから連絡ください。
また、他にもHome Assistantについて記事を書いています。ぜひこちらも読んでみてください。
コメント