myDevicesのCayenneに「Cayenne MQTT API」を使用してデータをアップロードする

スポンサーリンク
IoT
スポンサーリンク

前回ものの数十分でラズベリーパイのCPU使用率などのデータをCayenneにアップロードして可視化することが出来ましたが、正直ラズベリーパイのリソースモニタを遠隔でできるから何だ?という話です(重要なことですけどね)。

期待のIoTサービスmyDevicesの「Cayenne」を試したらかなりいい感じだったので紹介
知人からこんなのあるよと紹介されたIoT関係のサービスが意外とよさげだったので紹介します。Cayenneってなに?Cayenne(カイエン)は、一言でいうとセンサで計測してサーバに上げられた値をグラフに表示したり、サーバーからア...

今回はCayenneが提供する「Cayenne MQTT API」を使い、任意のデータをCayenneにアップロードする方法を紹介します。

スポンサーリンク

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時点で以下の環境向けのライブラリが公開されています。

  1. Arduino
  2. mbed
  3. Embedded C
  4. C++
  5. Python
  6. 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
  • ダッシュボードの確認

ダッシュボードをみると、このようにデータが送信されていることがわかります。

表示の方法をこのように変更することも可能です。

今回は、サンプルデータのアップロードだったので、次は実際のセンサーデータをアップロードしてみたいと思います。

IoT
スポンサーリンク
スポンサーリンク
こーをフォローする
Keep it up!

コメント

  1. 河童親分 より:

    左側サイドの項目が増えるのみで、消し方がわかりません。

    HPにはバーチャルしか使えないとか、最近いくつかの変更があるようです。

    • こー より:

      返信が大変遅くなってしまい申し訳ありません。

      左側にあるDeviceが消せないとのことですが、Deviceは右側にある歯車のマークをクリック→”Configure”をクリックした後、

      Configure

      “Remove Device”をクリックすることで削除できます。

      Remove