# OpenHABとの接続

[OpenHAB](https://www.openhab.org/)（open Home Automation Busとも呼ばれます）は、Javaで書かれたオープンソースのホームオートメーションソフトウェアです。さまざまなデバイスの統合、わかりやすいユーザーインターフェースの提供、そして最も柔軟なツールのサポートという強みを持ち、OpenHABはホームオートメーション分野で最も優れたプラットフォームの一つとなっています。

高い柔軟性と使いやすさを備えたOpenHABは、ユーザーがMQTTブローカーに接続するための専用バインディングを提供しています。本記事では、EMQXプラットフォームのMQTTブローカーとOpenHABを設定する手順をご紹介します。

## 前提条件

### MQTTブローカーの取得

EMQXが提供する[無料のパブリックMQTTブローカー](https://www.emqx.com/en/mqtt/public-mqtt5-broker)を利用できます。このサービスは[EMQXプラットフォーム](https://www.emqx.com/en)をベースに構築されています。ブローカーへのアクセス情報は以下の通りです。

- ブローカー: **broker.emqx.io**
- MQTTポート: **1883**
- MQTT over TLS/SSLポート: **8883**

また、[デプロイメントを作成](../create/overview.md)することも可能です。接続情報はデプロイメントの概要画面で確認できます。デプロイメントが起動していることを確認してください。MQTTサーバーへの接続テストにはTCPポートまたはTLS/SSLポートを使用します。

独自にデプロイメントを作成する場合は、[認証](../deployments/auth_overview.md)を確認し、`Access Control` > `Authentication`でユーザー名とパスワードを設定して認証を行ってください。

## OpenHABの初期設定

OpenHABで初めてMQTTを使用する場合は、[クイックスタート](https://www.openhab.org/addons/bindings/mqtt/)を参照してください。

1. OpenHABのインストール

   ここでは例として、Dockerを使ってOpenHABを素早くインストールします。

   ```bash
   docker run -d --name=openhab --restart=always --network=host \
    -v /opt/openhab/conf:/openhab/conf \
    -v /opt/openhab/userdata:/openhab/userdata \
    -v /opt/openhab/addons:/openhab/addons \
    openhab/openhab
   ```

   その後、ローカルIPの対応ポート（例: x.x.x.x:8080）にアクセスしてアカウントを作成します。

   ![openhab_create_account](./_assets/openhab_create_account.png)

   次に、言語、地域、タイムゾーン、ホームの場所を選択します。設定が完了すると、OpenHABのコンソール画面にリダイレクトされます。

   ![openhab_console](./_assets/openhab_console.png)

2. バインディングのインストール

   `Settings` ---> `Bindings` ---> `MQTT Binding` に移動し、MQTTバインディングをインストールします。

   ![openhab_binding](./_assets/openhab_binding.png)

3. `Things`に`MQTT Broker`を追加

   ![openhab_add_thing_1](./_assets/openhab_add_thing_1.png)

   次に、`MQTT Broker`を選択し、先ほど作成したデプロイメントの情報を入力します。

   ![openhab_add_thing_2](./_assets/openhab_add_thing_2.png)

## TCPポートでの接続

このセクションでは、OpenHABクライアントをTCPポート経由でMQTTブローカーに接続する方法を説明します。

- ブローカーのアドレス、ポート、ユーザー名およびパスワード（存在する場合）を入力します。
- MQTTトランスポートに`TCP`を選択します。

![openhab_mqtt_connection](./_assets/openhab_mqtt_connection.png)

## TLS/SSLポートでの接続

このセクションでは、OpenHABクライアントをTLS/SSLポート経由でMQTTブローカーに接続する方法を説明します。

- ブローカーのアドレス、ポート、ユーザー名およびパスワード（存在する場合）を入力します。
- `Secure Connection`を有効にします。
- MQTTトランスポートに`TCP`を選択します。

![openhab_mqtts_connection_1](./_assets/openhab_mqtts_connection_1.png)
![openhab_mqtts_connection_2](./_assets/openhab_mqtts_connection_2.png)

## 接続テスト

`Settings` ---> `Things` ---> `MQTT Broker`に移動し、「online」と表示された緑のラベルがあれば、OpenHABとEMQXプラットフォームの接続に成功しています。おめでとうございます！

![openhab_connection](./_assets/openhab_connection.png)

EMQXプラットフォームのモニターページからもステータスを確認できます。

![openhab_monitor](./_assets/openhab_monitor.png)
