先日購入した"Afterburner" diesel heater controllerですが、際だった機能の1つに「インターネットを経由してヒーターを制御及び監視する」という機能があります。
今回やっとその機能を使うことができたので、紹介します。
Afterburner(アフターバーナー)については過去記事をご覧ください。
具体的にどういうことができるのかと言うと、
我が家で想定している使い方ですと、スキーをしていて終わる30分くらい前にゲレンデからヒーターをONにしたり、トレーラーをキャンプ場やRVパーク等に留め置いて日中は観光に出かけ、トレーラーに戻る途中でヒーターをONにして暖かくしておいたり。
または、消し忘れたかもしれないヒーターを世界中どこに居ても確認することもできます。
説明書を読んでいても初めて聞く言葉ばかりで理解するのに大変でしたが、何とか自分で納得できて設定も完了し、なんとか稼働にこぎ着けました。
まず全体の接続イメージですが、簡単にすると以下のような感じです。
ざっくり言うと、”アフターバーナーとスマートフォン(またはPC,Mac等)を、インターネットを介して接続する”んですが、途中途中に難関が待ち受けています。
要点は番号を振ってありますので、参考にされる方はポイントごとにご覧頂ければと思います。
①アフターバーナーをインターネットに接続する
モバイルWi-Fi又は定置もしくは停泊地のWi-Fiを利用する場合はその接続設定をアフターバーナーに登録するため、アフターバーナーのコンフィグに入り、接続するAPを設定してインターネットに繋がるようにします。我が家の場合は外出用のモバイルWi-Fiルーターがありますのでそれをトレーラーで稼働させてます。
そして設定が終わり無事に接続できると、
画面左上に扇のマークが出現します。これでアフターバーナーはWi-Fiに接続できました。(外部に接続できるWi-Fi前提で進めます)
※固定回線等の場合はルーターでポートフォワードの設定が必要な場合がありますので、その際はグローバルとローカル間でポート1883が通るように設定しておく必要があります。
①’スマートフォン(またはPC,Mac等)をインターネットに接続する
通常のインターネットに接続できる端末であれば特に設定は要りませんが、ホットスポット経由やWI-Fiルーター経由でインターネット接続されている場合はその設定が完了していることを確認します。
②MQTTサーバーを立てる又は公衆MQTTサーバーを利用する
さてここが1番厄介なところです。まずMQTTサーバーとは何かと言いますと、超簡単に言うと「指示を出す端末と指示を受け取る端末の間に入ってくれる仲介サーバー」っていう感じです。「手紙を出す人と手紙を受け取る人の間に入ってくれる郵便局」と言えばわかりやすいでしょうかね。詳しくはMQTTについてネットで検索すると詳細に出てきますので、是非ご一読ください。
元々MQTTによる機器制御は宅内で利用する物だったので、一般的には家庭内にサーバーを立てて動作させます。しかし今回は外部(インターネット環境下)でMQTTによる制御を行いますので、宅内にサーバーを立ててもそれを外部に公開する設定等が煩雑なのでとりあえず試験的に公衆MQTTサーバーを利用して制御を行ってみたいと思います。(公衆MQTTサーバーは最初から外部にありますからそこの設定は省ける。が、やろうと思えば他人の機器を制御できてしまうので完全に安全とは言えない)
私もこの記事を書き終えたら自宅LinuxサーバーにMQTTサービスをインストールするつもりです。
前置きが長くなりました。
まずどこの公衆MQTTサーバーを利用するかと言うことになりますが、とりあえずMQTTブローカーで有名なMosquittoを作っているEclipse Fundationというところが無料で提供しているmqtt.eclipseprojects.ioを使用してみます。
(その他、broker.hivemq.com等でも大丈夫です)
これらの公衆MQTTブローカーは事前に申し込みや登録は必要なく、いきなり使えます。
ではその設定をアフターバーナーのWebUIから打ち込んでいきます。
「Broker(MQTT)」欄に、利用するMQTTサーバーのアドレスを入力します。
それ以外の欄はそのままで大丈夫です。重要なのは「Topic Prefix」の欄に入っている文字列で、これはあなたがお使いのアフターバーナー固有の番号なので今後の設定で使用します。手元に控えておいてください。
入力を終えたら「State」欄のボタンををクリックしてパスワード1688を入力したらEnabledに変わることを確認します。
③アフターバーナーとMQTTサーバー間の接続を確認する
先ほどのWebUI画面で、StateがOnlineと表示されることを確認しましょう。
また、利用しているインターネット環境が変わった場合もチェックすることを心がけます。これはアフターバーナーコントローラー画面でも確認可能です。
Menu TrunkのComms SettingsからMQTT statusを開き、CONNECTEDになっていればMQTTサーバーとの接続は確立されています
④スマートフォン(またはPC,Mac等)から操作できるよう設定をする
クライアントアプリケーションをインストールするすることで、手元の端末からMQTTブローカーを介して相手方の機器を制御することが可能になります。
私の場合アンドロイド端末なので、PlayストアからMQTTクライアントアプリを何でも良いのでインストールします。操作画面の好みで選んでしまって構わないと思います。
とりあえず私はシンプルなMQTT Dashというアプリを入れてみました。
起動したら接続先プロファイルを作るので、右上の(+)をタップします。
するとプロファイル作成画面にたどり着きますので、
プロファイル名は何でも良いですが、MQTTブローカーのアドレスはお使いのブローカーのアドレスを入力してください。
それ以外の項目は入力不要です。
そうしたらダッシュボード画面に入りますので、そこに自分で表示させたいヒーターの項目を追加していきます。例えば運転ON/OFFボタンを追加させたい場合、ダッシュ画面の(+)をタップして「Switch/button」を選択し、項目名である「Topic Prefix/sts/Run」を入力していきます。※TopicPrefix部分は②で登場したあなたのアフターバーナー固有の文字列です
見られる/操作できる項目一覧は説明書にも書かれており、自分で好きな物をダッシュボードに追加していきます。
Topic(sub)欄はSubscribe側Topic欄で、要はヒーター側の何を受け取りたいかをここに入れます。例えば②のTopicPrefixが「AfterburnerAABBCCDD」だった場合、Topic(sub)欄には「AfterburnerAABBCCDD/sts/Run」と入力すると「AfterburnerAABBCCDDの運転状況」を監視することができます。また、このボタンをタップした場合にヒーターをON/OFFさせるために、Topic(pub)欄(Publishの意味)には「AfterburnerAABBCCDD/cmd/Run」、そしてPayloadはONが1でOFFが2にしておけばボタンをタップするごとにヒーターのON/OFFを行うことができます。
操作は行わず見たいだけでしたらsub欄のみ入力し、enable publishingをオフにしておけばタップ動作は効かなくなりますので例えば現在の室温を表示させるパーツなんかには使うべきと思います。
この繰り返しで、私の場合は
・アフターバーナーがMQTTと通信できているかの表示
・ヒーターのON/OFFボタン
・設定温度の表示及びタップしての温度変更
・現在の室内温度表示
・現在の状態表示(点火中、稼働中、停止動作中等)
・バッテリー電圧表示
をダッシュボードに並べてみました。
簡単な説明になってしまいましたが、また需要があれば少しずつ加筆修正していきたいと思います。