ニフティクラウドMQTTをC4SA上から操作してみる

ちょっとした確認で動作させるための環境を整えるのは、結構大変だと思います。
[C4SA](http://c4sa.nifty.com/)で簡単に環境設定を行って、ニフティクラウドMQTTを操作していきたいと思います。

# 前準備

[C4SA](http://c4sa.nifty.com/)への登録は事前に済ませておいてください。15日間無料で利用することができます。
クライアント側には、対応ブラウザ以外は用意する必要はありません。

# サブスクライバーを作る

## キャンバスを作成

では、Pythonを動作させるキャンバスを作成していきます。

![newcanlist.png](https://qiita-image-store.s3.amazonaws.com/0/7257/517a6193-65f4-7fda-d85e-4c7d85811cfe.png)

新規キャンバス作成をクリックしてPythonのキャンパスを選択します。

![newcanname.png](https://qiita-image-store.s3.amazonaws.com/0/7257/70c7eeb4-6366-8009-0cbc-fa331d4fa7df.png)

キャンバス名を「Subscriber」に設定します。

![subcanlist.png](https://qiita-image-store.s3.amazonaws.com/0/7257/33931006-6ed2-941c-aa30-2d86d55d804b.png)

作成が完了しますと、キャンバス一覧で操作可能となります。

![subcandisplay.png](https://qiita-image-store.s3.amazonaws.com/0/7257/9c3a8952-07aa-fc2b-e798-319e1d27b409.png)

キャンバスを開くと、作成したアプリケーションの操作が可能となります。

## 必要なモジュールをインストール

C4SAは、パッケージなどをインストールするためのCLIの機能を持っています。
この機能で、CLIからMQTTにパブリッシュするためにPahoをインストールします。
CLIを開いて、以下のコマンドを実行します。

```bash
pip install paho-mqtt
```

![subcancliinstall.png](https://qiita-image-store.s3.amazonaws.com/0/7257/6163d696-9621-b2c1-0daf-1f7569d3fce9.png)


## 動作させるソースを作成する

[ここ](https://eclipse.org/paho/clients/python/)を参考に、サンプルからニフティクラウドMQTTに接続する情報を設定していきます。
ソースの作成は、キャンバスのエディタを利用していきます。

![subcanfilenew.png](https://qiita-image-store.s3.amazonaws.com/0/7257/8e495c08-b3b0-9c3d-648f-e8a9282ebba9.png)


新規にファイルを作成しますので、新規作成ボタンをクリックします。

![subcanfilenew.png](https://qiita-image-store.s3.amazonaws.com/0/7257/00a69242-e901-c083-0f16-7d8ae1b30fe3.png)

ファイル名を「mqttsub.py」にします。

![subcanfileedit.png](https://qiita-image-store.s3.amazonaws.com/0/7257/a9fcbaa9-9335-7eac-46b8-253c87e688ee.png)


エディタで、以下のファイルを書いていきます。

```py:mqttsub.py
# coding=utf8

import paho.mqtt.client as mqtt

USERNAME = "[管理者ユーザー名]"
PASSWORD = "[パスワード]"

def on_connect(client, userdata, result):
    print("Connected with result code " + str(result))


def on_message(client, userdata, msg):
    print(msg.topic + " " + str(msg.payload))


if __name__ == '__main__':

    client = mqtt.Client()
    client.username_pw_set(USERNAME, PASSWORD)
    client.on_connect = on_connect
    client.on_message = on_message

    client.connect("[ドメイン]", [MQTTポート])
    client.subscribe("topic/#")

    client.loop_forever()

```

## 動作させてみる

CLIを再度開いて、以下のコマンドを実行します。

```bash
python mqttsub.py
```

以下のような画面になります。

![subcanrun.png](https://qiita-image-store.s3.amazonaws.com/0/7257/14082233-feb2-5dfe-eb11-ab620f34c9a3.png)

続いて、パブリッシャーを作成していきます。

# バブリッシャーを作る

続いてパブリッシュするクライアントを作成します。

## はじめに

キャンバスの作成と必要なモジュールをインストールまでは同じ操作で、キャンバスを作成します。

## 動作させるソースを作成する

ニフティクラウドMQTTに接続する情報を設定していきます。ソースの作成は、キャンバスのエディタを利用していきます。

![pubcannew.png](https://qiita-image-store.s3.amazonaws.com/0/7257/3f3fda64-b3cc-e1de-3524-cc6c40550052.png)

キャンバス名を「Publisher」に設定します。

![pubcannewfile.png](https://qiita-image-store.s3.amazonaws.com/0/7257/604c3f6b-bba3-20ba-e27a-71b12c5ebe88.png)

ファイル名を「mqttpub.py」にします。

エディタで、以下のファイルを書いていきます。

```py:mqttpub.py
# coding=utf8

import paho.mqtt.client as mqtt

USERNAME = "[管理者ユーザー名]"
PASSWORD = "[パスワード]"

if __name__ == '__main__':

    client = mqtt.Client()
    client.username_pw_set(USERNAME, PASSWORD)

    client.connect("[ドメイン]", [MQTTポート])

    client.publish("topic", "C4SA test message")

```

## 動作させてみる

CLIを再度開いて、以下のコマンドを実行します。

```bash
python mqttpub.py
```

![pubcanrun.png](https://qiita-image-store.s3.amazonaws.com/0/7257/00f61e79-8ee2-1482-a5e8-e932a83d8f52.png)

先ほど作成して起動しておいたサブスクライバーがわのキャンバスを見てみましょう。

![subcanoutput.png](https://qiita-image-store.s3.amazonaws.com/0/7257/00252a58-a695-e10f-c674-62f1737164f4.png)


送信したメッセージが表示されています。

# 最後に

いかがでしたでしょうか？
簡単にニフティクラウドMQTTを操作することができました。