CL-SYSTEM で、ホームオートメーション

CL-SYSTEM で、ホームオートメーション

CL-SYSTEM を使って、ホームオートメーション化するための実際の作業の進め方について解説していきます。

システムの設計

まずは、ホームオートメーション化するシステムの全体について設計していく必要がありますが、ここでの環境として、

  • 照明器具(オン・オフのみ)4台
  • 調光照明器具 2台
  • エアコン 2台
  • 鍵(MIWA か GOAL の制御盤にて施錠・開錠操作できるもの) 1台

という、設定でお話ししていきます。

配電盤は1か所、ここに、各照明器具の電源配線が、それぞれ別々に集まっているものとします。
エアコンの JEM-A 端子(HA 端子の場合もあります)から配電盤まで4芯のケーブルが設置されているものとします。
鍵の制御盤の端子(MIWAの制御盤の場合、JEM-A 端子の MONITOR の + と – 、タイマー端子の + と -) から配電盤まで4芯のケーブルが設置されているものとします。
MIWA の制御盤の場合、JEM-A 端子の4芯のみの制御だと、常時解放設定ができない可能性があります。タイマー端子を使うほうが制御が容易です。

注意:照明器具等の電源配線が配電盤から1本で器具に行き、途中で分岐している場合は、個別には制御できません
各機器から個別に配電盤まで引き直すか、分岐している箇所に、コントローラーとターミナルを設置するための分電盤を設置するかご検討ください

用意するもの

  • MQTT BROKER (サーバー)を運用するためのパソコン 1台
    多種のものが利用可能ですが、主には以下のようなものがあります
    古いパソコンに UBUNTU や Cent OS など、Linux 系の OSをインストールしたもの、
    Windows 10 パソコンに WSL にて Linux 系の OS をインストールしたもの
    Windows パソコンや Mac OS など
    Raspberry Pi など
  • CL SYSTEM コントローラー 1台
    以下の2種類のうちのどちらか
    M5Stack に CL-Controller 用のファームウエアを書き込んだもの
    CL-Controller (近日発売予定)
  • リレーターミナル 1台
  • ディマーターミナル 1台
  • JEM ターミナル 1台

決めておかなければならないこと

CL-SYSTEM は、全体を AREA と PLACE という2つの区切りで管理し、MQTT のトピック(データー送受信の宛先)に利用します。
比較的規模の小さいシステムであれば、適当に決めて、すべて同じもので運用すればよいでしょう。
区分けする場合、例えば、2階建ての家であれば、

AREAPLACE管理するもの
/HOME1F1階の照明や換気扇全て
/HOME2F2階の照明や換気扇全て
/HOMEAC全てのエアコン
/HOMEKY全ての鍵

といった分け方が考えられます。
今回は、

AREA/HOME
PLACEHomeItems

という想定で設計していきます。

今回紹介するシステム構築の構成と設定

以上の環境の設定で、今回紹介するシステムの構成と設定は以下の通りで行います。
なお、ネットワークに関しては、ルーターの設定などの各環境によって異なりますので、自分の環境をよく確認して行ってください。

機材MQTT BROKER 用パソコン( Ubuntu Desktop 18.04.2 LTS を予めインストールしたもの) 1台
ファームウエア書き込み用パソコン(Windows10 64bit 版インストール済みのもの) 1台
M5Stack 1台 (Wifi にてネットワークへ接続)
リレーターミナル 1台(シリアル番号 0108DEMO001)
ディマーターミナル 1台(シリアル番号 0308DEMO001)
JEMターミナル 1台(シリアル番号 0508DEMO001)
LCD スイッチ 2台
Seeed Grove System I2C 20cmケーブル 爪なし 1本
Seeed Grove System I2C 20cmケーブル 爪あり 3本
制御される機器ターミナル 0108DEMO001 に、照明器具 1~4 をチャンネル 1~4
ターミナル 0308DEMO001 に、調光器具 1・2 をチャンネル 1・2
ターミナル 0508DEMO001 に、エアコン1・2、鍵1
SSIDMyHome
SSID パスワードMyPass
AREA/HOME
PLACEHomeItems
ネットワーク192.168.0.0 ~ 192.168.0.255
ルーターの IP アドレス192.168.0.1
DHCP が割り振るアドレスの範囲192.168.0.100 ~ 192.168.0.150 までを ルーターの DHCP サーバー機能で割り振る設定になっているものとします
DNS の IP アドレス192.168.0.1 (独自の DNS サーバーを置かず、ルーターを使用する場合)
MQTT BROKER アドレス192.168.0.250
サブネットマスク255.255.255.0

作業手順

OpenHAB2とMosqutto のサーバーを作る

パソコンへの OS のインストールは、ネット上に情報があふれていると思いますので、今回は触れません。更新ファイルは最新の状態にしておいてください。
なお、このパソコンの IP アドレスは固定しておく方が好ましいです。
独自の DNS サーバーを立てたり、好況で提供されている Mosquitto を使用する場合など、必須とは言えませんが、
今回は上記の表の通り、192.168.0.250 を割り当てられているものとします。
IP アドレスの固定方法は、他の情報サイト等を参考にしてください。
MQTT Broer として、今回は Mosquitto を使います。もちろん、他の Broker でも構いません。TLS を使用して、セキュア穴接続を行う場合は、TLS 1.2 を利用できることが条件です。
OPENHAB 2 のインストール のページと
MOSQUITTO のインストール のページ 、
OPENHAB 2 の設定のページをみて、設定を済ませてください。

ファームウエア書き込み環境を整える

この手順の詳細についてはARDUINO-CLI のインストールにも書いてありますので、ご参照ください。
まずは、 Go 言語(Go Language) の最新版をダウンロードして インストールしてください。
初期値である c:\Go にインストールするのであれば、「はい」と「NEXT」をクリックするだけですぐに終わります。

次に、ツールとファームウエアのページの、
ARDUINO-CLI インストール用バッチから最新のバッチファイルと、ARDUINO-CLI コンパイル・アップロードバッチファイルから最新の コンパイル・アップロードバッチファイル をダウンロード後、解凍してください。

ARDUINO-CLI インストール用バッチを解凍したフォルダ内に Install.bat がありますので、ダブルクリックで実行してください。
バッチファイル起動後、
「バッチファイルを置いたフォルダを指定してください:」
と表示されるので、その文字のところにバッチファイルのフォルダをドラッグアンドドロップで放り込んでください。
フォルダを開いた状態であれば、フォルダのアドレスの左端の黄色い書類アイコンを ドラッグアンドドロップ すれば放り込めます。
「スケッチフォルダ:」
と表示されたら、初期値のフォルダでよければそのままエンターキーを押してください。
変更したい場合は、任意の場所を入力してエンターキーを押してください。
その後、
「Arduino-Cli のインストール終了までしばらくお待ちください」
と、表示されますが、これは、3~5分くらいかかるかもしれません。しばらくお待ちください。
バッチファイルの実行が終了すると
「インストールが終了しました」
「何かキーを押してください」
と、表示されますので、エンターキー等押して終了してください。
インストール用バッチのフォルダは、インストール終了後は消してしまって構いません。

コンパイル・アップロードバッチファイルのフォルダは、使いやすい適当な場所に移動してしまって構いません。
書き込みのたびに使うので、場所を覚えておいてください。

M5Stack に、ファームウエアを書き込んでコントローラーを作る

ツールとファームウエアのページCL-CONTROLLERファームウエアから、最新のファームウエアをダウンロードしてください。
ダウンロードが終わったら、解凍しておきます。

次に、(M5Stack を USB でつないでいない状態で)コマンドプロンプトを立ち上げ、

arduino-cli.exe board list

と、入力します。
コマンドプロンプトは、Windows ボタンを押してから CMD とキーを打つか、
スタートメニューの「Windows システムツール」の「コマンドプロンプト」で立ち上がります。
現在使用中の COM ポートの一覧が表示されます(なければ表示されません)。
次に M5Stack を USB ケーブルでパソコンに接続し、もう一度

arduino-cli.exe board list

と、入力します。この時、増えた COM ポートが、接続した M5Stack の使用しているポート番号になりますので、覚えておいてください。

次に、ダウンロードしたファームウエアのフォルダを、コンパイル・アップロードバッチファイルのフォルダ内の UploadM5Stack.bat にドラッグアンドドロップで放り込んでください。
DOSウィンドウが表示され、頭に COM ポート一覧と
「COM ポートの番号を指定してください:COM」
と、表示されるので、M5Stack が使用している COM ポート番号を半角の数字で入力してエンターキーを押してください。
書き込みが終了すると
「インストールが終了しました」
「何かキーを押してください」
と、表示されますので、エンターキー等押して終了してください。

コントローラーの設定

設定の書き込みをシリアル通信で行いますが、ここでは TeraTerm を使った例をあげていきます。
COM ポート番号と通信速度等、設定が正しければ、どのシリアル通信ソフト(ターミナルソフト)を使ってもかまいません。
TeraTerm のインストールがまだならば、「TERA TERM」のインストールをご参照ください。

TeraTerm を立ち上げると、

  • TCP/IP
  • シリアル

から選ぶウィンドウが立ち上がるので、「シリアル」を選んで、「ポート」から M5Stack の使用している COM ポート番号を選んで「OK」ボタンを押してください。
次に「設定」メニューの「シリアルポート」を選び、「ボー・レート」を115200 にして「OK」を押してください。
設定が終わったら、M5Stack の左側の赤いボタンを一度押して再起動しておきます。
TeraTerm の画面にずらずらと表示され、最後に
「Ready:」
が表示されたら、コントローラーは入力受付可能な状態になっています。
以下のコマンドを入力していきます。
1行ずつ実行し、表示が終わるのを待ってください。
カンマの前がコマンドでカンマの後ろがパラメータ(設定内容)ですが、上記の設定の表の内容になっているので、カンマの右側はご自身の環境等に合わせ、適時変更して入力してください。
なお、カンマの前後に空白スペースを入れないでください。

SSID,MyHome
SSIDPass,MyPass
AREA,/HOME
PLACE,HomeItems
BROKER,192.168.0.250
REBOOT

最後の「REBOOT」入力後、再起動します。起動後、Wifi に接続されると MQTT に接続します。
MQTT に正常に接続できると M5Stack に MQTT のBroker のアドレスが表示されるので、正常に接続できることを確認しておいてください。

各ターミナルのコントローラーとの接続

コントローラーと各ターミナルの接続・認識は、配電盤等に設置後でも可能ですが、できれば卓上で、接続を確認してから設置してください。

まずは、ターミナル 0108DEMO001 に USB Type-B ケーブルを接続し、パソコンとつなぎます。モバイルバッテリーや AC アダプタなど、USB で電源供給できるものならば、パソコンでなくてもかまいません。
次に、ターミナル 0108DEMO001 とコントローラーを爪なし Grove ケーブルで接続します。
接続できたら、M5Stack の電源ボタンを一度押して再起動するか、 M5Stack の3つのボタンのうち、「CHECK」と表示された左のボタンを押してターミナルを認識させます。
コントローラーを ターミナルソフト につないだままであれば、認識の様子が ターミナルソフト上に表示されます。

次に、 ターミナル 0308DEMO001 を USB ケーブル で電源供給し、ターミナル 0108DEMO001 と爪有りの Grove ケーブルでつなぎ(コントローラーと Seeed Grove ケーブルで数珠つなぎになった状態)、M5Stack の電源ボタンを一度押して再起動するか、 M5Stack の3つのボタンのうち、「CHECK」と表示された左のボタンを押してターミナルを認識させます。

認識されたら、同様に、ターミナル 0508DEMO001 を USB ケーブル で電源供給し、ターミナル 0308DEMO001 と爪有りの Grove ケーブルでつなぎ、M5Stack の電源ボタンを一度押して再起動するか、 M5Stack の3つのボタンのうち、「CHECK」と表示された左のボタンを押してターミナルを認識させます。

複数のターミナルの認識と接続は、1台ずつ、順番に、USB ケーブルをコネクタにつないで電源供給したうえで、同様の手順で全てのターミナルを認識させていってください。

Seeed Grove ケーブルでの連結は、20cm のケーブルなら 3 台まで、50cm のケーブルなら 2 台までは安定して動きますが、多すぎると通信が不安定になります。
台数が増える場合には、別売の分岐用のコネクタ等を利用するか、コントローラーを分けてください。

I2C アドレスの割り振りが正常に行われていない状態のターミナルを同時に複数接続すると、I2C アドレスの競合から正常な設定が行われません。
この場合、おかしくなったターミナルの赤黒2つ並んだボタンのうちの黒を押したまま、1回赤ボタンを押して離し、10秒ほど待ってから黒ボタンを離してください。
ターミナルの初期化が実行され、I2C アドレスも初期値の 0x11 (17) に設定されますので、再度1台ずつの認識を実行してください。
なお、ターミナルの初期化が行われるので、事前に個別設定をしていた場合は、再度設定しなおしてください。

ターミナルソフト上には、認識したターミナルの機器名や各チャンネル名、設定等が表示されます。チャンネル名の初期値は、ターミナルのシリアル番号に「-」と、00 から始まる 2桁のチャンネルのインデックス番号を付け加えたものになるます。
例えばターミナル 0108DEMO001 であれば、チャンネル1番目が 0108DEMO001-00 で、8番目が 0108DEMO001-07 となります。
スイッチの設定等で使用するので、把握しておいてください。
もちろん MQTT 経由や、シリアル経由で名前を変更することも可能です。

設定が正常に終了したら、配電盤等、コントローラーやターミナルの設置、ターミナルとの配線等を行ってください。

LCD スイッチの設定

USB コネクタに接続されたケーブルをパソコンやモバイルバッテリー、AC アダプタ等、USB に電源供給できる機器か、 電源接続コネクタ に 6 ~12v(推奨 6v) の直流電源を接続してください。
起動後、スマートフォン等の Wifi 接続できる機器で、SSID シリアル番号、SSID パスワード「01234567」に接続し、ブラウザーで http://192.168.4.1 を開いてください。
機器のページが表示されます。

ブラウザ経由での設定を参考に、

  • Wifi SSID
    Wifiの SSID で本設定では MyHome
  • Wifi パスワード
    Wifi のパスワードで本設定では MyPass
  • ブローカーアドレス
    MQTT Broker(サーバー)の IP アドレスか URLで本設定では 192.168.0.250
  • MQTT エリア名
    AREAで本設定では /HOME
  • MQTT プレース名
    PLACEで本設定では HomeItems

を入力後、「送信」を押してください。
再起動後、Wifi と MQTT につながるはずです。
再起動したら
再度同様に Wifi 接続機器で LCD のホームページを表示するか
MQTT に正常接続できたら画面が黒で左上に歯車アイコンが表示されるので、歯車アイコンを押してセキュリティページを表示し、
セキュリティページの左下の「OK」ボタンを押すと現在の IP アドレス等が表示されますから、パソコンのブラウザでそのアドレスを入力して LCD のホームページを表示してください。

ホームページの「ボタン設定」を押すとボタン設定ページが表示されます。

ブラウザ経由での設定を参考に、 以下の項目を設定してください。

ページの項目設定内容
Button Nameボタン名(半角31文字以内)
半角英数字で任意の名前を付けてください
Labelボタンに表示される名前(半角63文字以内)
長すぎると表示できませんので、半角で6文字程度以内にしてください
GB2312 で漢字を表示することも可能ですが、慣れるまでは半角英数文字で設定してください
Iconボタンのアイコンとして表示したいものを選んでください
Command Topic命令用 Topic (半角63文字以内)
AREA/PLACE/チャンネル名/command
例:本例でターミナル 0108DEMO001の1番目のチャンネルをオンオフするなら
/HOME/HomeItems/0108DEMO001-00/command
と、なります。
Status Topic状態取得用 Topic (半角63文字以内)
AREA/PLACE/チャンネル名/state
例:本例でターミナル 0108DEMO001の1番目のチャンネルをオンオフするなら
/HOME/HomeItems/0108DEMO001-00/state
と、なります。
On CommandON
備考:オン命令ペイロードを半角英数 15 文字以内で入力します
Off CommandOFF
備考:オフ命令ペイロードを半角英数 15 文字以内で入力します
Status CommandVALUE
備考:状態取得命令ペイロードを半角英数 15 文字以内で入力します

設定入力後、「EDIT」ボタンを押して設定を保存してください。
念のために、LCD スイッチのホームページの「再起動」ボタンを押して再起動後、ページが正しく表示されるか確認してください。

以上で、LCD スイッチでの機器のコントロールが可能となります。

RFID キーの設定(使用する場合)

ここでも設置例では機器に入っていませんが、 RFID キーも同様に以下の設定方法で設定することができます。
USB コネクタに接続されたケーブルをパソコンやモバイルバッテリー、AC アダプタ等、USB に電源供給できる機器か、 電源接続コネクタ に 6 ~12v(推奨 6v) の直流電源を接続してください。
起動後、スマートフォン等の Wifi 接続できる機器で、SSID シリアル番号、SSID パスワード「01234567」に接続し、ブラウザーで http://192.168.4.1 を開いてください。
機器のページが表示されます。

ブラウザ経由での設定を参考に、

  • Wifi SSID
    Wifiの SSID で本設定では MyHome
  • Wifi パスワード
    Wifi のパスワードで本設定では MyPass
  • ブローカーアドレス
    MQTT Broker(サーバー)の IP アドレスか URLで本設定では 192.168.0.250
  • MQTT エリア名
    AREAで本設定では /HOME
  • MQTT プレース名
    PLACEで本設定では HomeItems

を設定すると使用可能状態となります。

OpenHAB2 の設定

OPENHAB2 と MQTT の連携を参考に、設定を行ってください。
本例での item ファイルを openHAB2 の items フォルダ内の myHouse.items として作成する場合、ファイル内容は、以下の通りとなります。

Group     myHouse           "我が家"

Group     1fLights          "一階照明"       <light>      (myHouse)
Group     2fLights          "二階照明"       <light>      (myHouse)
Group     AllLights         "オンオフ照明"   <slider>     (myHouse)
Group     AllDimmers        "調光照明"       <slider>     (myHouse)
Group     AirCons           "エアコン"       <snow>       (myHouse)
Group     Keys              "鍵"            <door>       (myHouse)

Switch     0108DEMO001-00   "外灯"          <light>      (myHouse, 1fLights, AllLights)    {mqtt=">[broker:/HOME/HomeItems/0108DEMO001-00/command:command:*:default],<[broker:/HOME/HomeItems/0108DEMO001-00/state:state:default]"}
Switch     0108DEMO001-01   "キッチン"      <light>      (myHouse, 1fLights, AllLights)    {mqtt=">[broker:/HOME/HomeItems/0108DEMO001-01/command:command:*:default],<[broker:/HOME/HomeItems/0108DEMO001-01/state:state:default]"}
Switch     0108DEMO001-02   "リビング"      <light>      (myHouse, 1fLights, AllLights)    {mqtt=">[broker:/HOME/HomeItems/0108DEMO001-02/command:command:*:default],<[broker:/HOME/HomeItems/0108DEMO001-02/state:state:default]"}
Switch     0108DEMO001-03   "寝室天井"      <light>      (myHouse, 2fLights, AllLights)    {mqtt=">[broker:/HOME/HomeItems/0108DEMO001-03/command:command:*:default],<[broker:/HOME/HomeItems/0108DEMO001-03/state:state:default]"}
Switch     0308DEMO001-00   "玄関"          <light>      (myHouse, 1fLights, AllDimmers)   {mqtt=">[broker:/HOME/HomeItems/0308DEMO001-00/command:command:*:default],<[broker:/HOME/HomeItems/0308DEMO001-00/state:state:default]"}
Switch     0308DEMO001-01   "寝室調光"      <light>      (myHouse, 2fLights, AllDimmers)   {mqtt=">[broker:/HOME/HomeItems/0308DEMO001-01/command:command:*:default],<[broker:/HOME/HomeItems/0308DEMO001-01/state:state:default]"}
Switch     0508DEMO001-00   "ACリビング"    <light>      (myHouse, AirCons)                {mqtt=">[broker:/HOME/HomeItems/0508DEMO001-00/command:command:*:default],<[broker:/HOME/HomeItems/0508DEMO001-00/state:state:default]"}
Switch     0508DEMO001-01   "AC寝室"        <light>      (myHouse, AirCons)                {mqtt=">[broker:/HOME/HomeItems/0508DEMO001-01/command:command:*:default],<[broker:/HOME/HomeItems/0508DEMO001-01/state:state:default]"}
Switch     0508DEMO001-02   "玄関鍵"        <light>      (myHouse, Keys)                   {mqtt=">[broker:/HOME/HomeItems/0508DEMO001-02/command:command:*:default],<[broker:/HOME/HomeItems/0508DEMO001-02/state:state:default]"}

本例での sitemap ファイルを openHAB2 の sitemaps フォルダ内の myHouse.sitemap として作成する場合、ファイル内容は、以下の通りとなります。

sitemap myHouse label="我が家" {
    Frame {
        Group item=1fLights
        Group item=2fLights
        Group item=AllLights
        Group item=AllDimmers
        Group item=AirCons
        Group item=Keys
    }
}

ルールの作り方については、今後追加していきます。