前回ものの数十分でラズベリーパイのCPU使用率などのデータをCayenneにアップロードして可視化することが出来ましたが、正直ラズベリーパイのリソースモニタを遠隔でできるから何だ?という話です(重要なことですけどね)。
期待のIoTサービスmyDevicesの「Cayenne」を試したらかなりいい感じだったので紹介
知人からこんなのあるよと紹介されたIoT関係のサービスが意外とよさげだったので紹介します。Cayenneってなに?Cayenne(カイエン)は、一言でいうとセンサで計測してサーバに上げられた値をグラフに表示したり、サーバーからア...
今回はCayenneが提供する「Cayenne MQTT API」を使い、任意のデータをCayenneにアップロードする方法を紹介します。
Contents
Cayenne MQTT APIについて
Cayenne Docsの内容をGoogle翻訳したものを引用する形で掲載しておきます。
原文はCayenne Docsを参照してください。
概要
Cayenne MQTT APIは、お持ちのデバイスをCayenne Cloudに接続するために使用されます。デバイスを接続したら、デバイスからCayenneダッシュボードにデータを送信し、ウィジェットを使用して表示できます。Cayenneからコマンドを受け取って、デバイスのリモートコントロールと自動化を可能にすることもできます。
MQTTについて
MQTTは、TCP/IPの上で使用されるように設計された軽量メッセージング・プロトコルです。小さなフットプリント、信頼性の低いおよび/または限られた帯域幅の接続が検出された場合に特に設計された、イベントおよびメッセージ(publish-subscribe)手法を使用します。このタイプのパターンは、現場で展開され、しばしばバッテリー電力および制約されたネットワーク上で動作するIoTデバイスに特に適しています。MQTTでは、publish-subscribeパターンは、メッセージをクライアントに配布するブローカーを使用します。クライアントは、関心のあるデータの種類や種類に応じて、さまざまなレベルのメッセージを購読することができます。
Cayenne MQTT APIを使用する
Cayenne MQTT APIを使用するには予め用意されているライブラリを使用します。2018/02/18時点で以下の環境向けのライブラリが公開されています。
- Arduino
- mbed
- Embedded C
- C++
- Python
- Node.JS
今回はPythonを使用します。
MQTTライブラリの使い方
Cayenne側の環境構築
- 「Add new…」→「Device/Widget」を選択
- 「Bring Your Own Thing」を選択
- UserName,Password,Client IDなどを確認
クライアント側プログラムの用意
先ほど述べたとおり、今回はPythonを使います。
- MQTTライブラリ(パッケージ)のインストール
Python用のCayenne MQTTライブラリをpipを使ってインストールします。なお、Pytyonは2.7.9以上もしくは3.4以上が必要です。
sudo pip install cayenne-mqtt
リポジトリからインストールすることもできます。
git clone https://github.com/myDevicesIoT/Cayenne-MQTT-Python cd Cayenne-MQTT-Python python setup.py install
- サンプルプログラム
githubでCayenneにデータをアップロードし、Cayenneからのデータをメッセージコールバックで受信するサンプルプログラムが公開されています。
このサンプルプログラムの”MQTT_USERNAME”、”MQTT_PASSWORD”、”MQTT_CLIENT_ID”を先ほどCayenne側の環境設定で取得した値に書き換えます。
import cayenne.client import time # Cayenne authentication info. This should be obtained from the Cayenne Dashboard. MQTT_USERNAME = "MQTT_USERNAME" MQTT_PASSWORD = "MQTT_PASSWORD" MQTT_CLIENT_ID = "MQTT_CLIENT_ID" # The callback for when a message is received from Cayenne. def on_message(message): print("message received: " + str(message)) # If there is an error processing the message return an error string, otherwise return nothing. client = cayenne.client.CayenneMQTTClient() client.on_message = on_message client.begin(MQTT_USERNAME, MQTT_PASSWORD, MQTT_CLIENT_ID) # For a secure connection use port 8883 when calling client.begin: # client.begin(MQTT_USERNAME, MQTT_PASSWORD, MQTT_CLIENT_ID, port=8883) i=0 timestamp = 0 while True: client.loop() if (time.time() > timestamp + 10): client.celsiusWrite(1, i) client.luxWrite(2, i*10) client.hectoPascalWrite(3, i+800) timestamp = time.time() i = i+1
- プログラムを実行
python Cayenee_sample.py
- ダッシュボードの確認
ダッシュボードをみると、このようにデータが送信されていることがわかります。
表示の方法をこのように変更することも可能です。
今回は、サンプルデータのアップロードだったので、次は実際のセンサーデータをアップロードしてみたいと思います。
コメント
左側サイドの項目が増えるのみで、消し方がわかりません。
HPにはバーチャルしか使えないとか、最近いくつかの変更があるようです。
返信が大変遅くなってしまい申し訳ありません。
左側にあるDeviceが消せないとのことですが、Deviceは右側にある歯車のマークをクリック→”Configure”をクリックした後、
“Remove Device”をクリックすることで削除できます。