• サービス紹介
  • SDPFナレッジセンター
  • 開発者レポート
  • リリースノート
  • API仕様
  • FAQ
  • お問い合わせ
Cumulocity IoT
このドキュメントについて IoTソリューション ユースケース Things Cloudコンセプト ユーザーガイド プロトコル統合ガイド カスタムストリーミング処理ガイド デバイス統合 デバイス統合チュートリアル Web SDKガイド リファレンス よくあるご質問 リリースノート 開発者レポート 開発者レポート
レポート一覧
Observable を活用したIoTデータ可視化の探索からカスタムウィジェット開発までのチュートリアル
テンプレートを用いたテーブルウィジェットのカスタマイズ
ユースケースを基にしたダッシュボードの設定方法
Step1 解説編 (工事現場ユースケース) Step2 問題編 (機器監視ユースケース)
Analytics Builder をはじめる
はじめに Apama Analytics Builderの強みと活用シーンについて イベント処理モデルを作成する 例題 リファレンス
Apama EPL をはじめる
はじめに Apama EPLコードを書く Apama 例題
htmlウィジェット開発
SCADA ウィジェットによるデータ可視化
Postmanを使用したMeasurement/Eventのデータ取得方法
pythonを使ってMeasurement/Eventデータを取得しcsvに変換する方法
Postmanを使用したMeasurementデータの格納方法
API 経由での Measurement 格納
Postmanを使ってMeasurementデータを一括アップロードする方法
Rubyによるリアルタイム通知
CEPスクリプトを書く(基本編)
CEPスクリプトを書く(応用編)
Web SDK for Angular を利用したカスタムアプリケーションの作り方
Web SDK for Angular を利用したカスタムウィジェットの作り方1
Web SDK for Angular を利用したカスタムウィジェットの作り方2
ロゴや配色を変更する方法
Sensor App(スマートフォンアプリ)の利用開始方法と利用例
MQTT対応のエージェントを利用しメジャーメントを送信する方法
権限管理について
Single Sign On セットアップマニュアル
CLIツールの使い方
Alarm の利用について

MQTT対応のエージェントを利用しメジャーメントを送信する方法

投稿日 / 投稿者名

2021.3.24 / 坂井 佑

はじめに

本レポートは、Things Cloud の利用例をより知っていただくための実利用レポートとして作成したものです。 Things Cloud は極力後方互換性を持つよう開発されていますが、今後のリリースにより、一部画面やコマンド、手順などが変更となったり、利用できない可能性があることをあらかじめご了承ください。

なお、作成にあたり、以下バージョンを用いています。

  • ver 10.6.6.32 (backend)

難易度 ★★

概要

本レポートでは、Raspberry Pi に c8yMQTT(https://github.com/SoftwareAG/c8yMQTT)をインストールし、MQTT静的テンプレートを利用してメジャーメントを送信する方法を説明します。

c8yMQTTはNTTコミュニケーションズがサポートしているものではないため、仕様等について答えかねる場合があります。

前提条件

  • 用意するもの

    • 作業用PC

    • Raspberry Pi 3B

      $ cat /etc/os-release
      PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
      NAME="Raspbian GNU/Linux"
      VERSION_ID="10"
      VERSION="10 (buster)"
      VERSION_CODENAME=buster
      ID=raspbian
      ID_LIKE=debian
      HOME_URL="http://www.raspbian.org/"
      SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
      BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
      
      • インターネットに接続済み
      • Python 3.7.3
    • マウス、キーボード、モニター(作業用PCからRaspberry Piにsshでログインできる場合不要)

所要時間(目安)

  • 15分

1. c8yMQTTのインストール

Raspberry Pi にc8yMQTTをインストールします。以下の作業はRaspberry Pi上で行います。

GitHubからc8yMQTTをクローンし、ディレクトリ内のinstall.shを実行します。

$ git clone https://github.com/SoftwareAG/c8yMQTT.git
$ cd c8yMQTT
$ sudo ./install.sh

その後、pi.propertiesのhostを利用するテナントのFQDNに変更します。

$ vi pi.properties

host = <<テナントのFQDN>>
host = mqtt.eu-latest.cumulocity.com # 変更前

変更が完了したら、サービスを再起動します。

$ sudo systemctl restart c8y.service

2. Things Cloudでの作業

デバイス→管理デバイス→登録からデバイス登録を行います。

スクリーンショット1

デバイスを登録→一般デバイス登録の順にクリックします。

デバイスIDの欄にデバイスのシリアルIDを入力し、次へをクリックします。

スクリーンショット3

シリアルIDの確認方法

pi@raspberrypi:~ $ cat /proc/cpuinfo | grep Serial
Serial		: <シリアルID>

以下の画面が表示されたら「承認」をクリックします。

スクリーンショット4

デバイス→すべてのデバイスをクリックすると「s7yPi-<シリアルID>」のデバイスが登録されていることが確認できます。※表示されない場合、リロードや右上の再読み込みをクリックしてください。

払い出されたデバイスの認証情報はクローンしたc8yMQTTディレクトリ内のc8y.propertiesに保存されます。

3. メジャーメントを送信する

本作業のc8yMQTTは「https://github.com/SoftwareAG/c8yMQTT/tree/4553e1d1bcf24e6f5ab9bc1bc47a5ad48a2eb315」のcommit時点のものを利用しており、今後のリリースにより記載されている行番号と異なることがあります。

MQTT静的テンプレートの温度メジャーメント(211)を利用し、メジャーメントを送信します。

  • 温度メジャーメントのパラメータ
    位置 パラメーター 必須 デフォルト値
    1 temperature value はい
    2 time いいえ 現在のサーバー時刻

MQTT静的テンプレートを使用するにはトピックs/usにメッセージをパブリッシュします。

piAgent.pyの102行目に以下を追記します。

def sendTemperature():
    tempString = "211,25," # テンプレートの番号,temperature value,time(任意)
    c8y.publish("s/us", tempString) # データ送信

piAgent.pyの119行目にsendTemperature()を追記します。

デフォルトでは5秒間隔でメジャーメントを送信します。pi.propertiesのsendintervalの値を変更することで送信間隔を変えることができます。

def sendMeasurements(stopEvent, interval):
    c8y.logger.info('Starting sendMeasurement with interval: '+ str(interval))
    try:
        while True:
            c8y.logger.info('sendMeasurements called')

            try:
                sense.send()
            except Exception:
                c8y.logger.info("No sense hat found omitting.")

            sendCPULoad()
            sendMemory()
            sendTemperature() # 追記
            if stopEvent.wait(timeout=interval):
                c8y.logger.info('sendMeasurement was stopped..')
                break
    except (KeyboardInterrupt, SystemExit):
        c8y.logger.info('Exiting sendMeasurement...')
        sys.exit()

サービスを再起動します。

$ sudo systemctl restart c8y.service

Things Cloudのデバイス管理→デバイス→全てのデバイスから今回登録したデバイスの計測値タブで温度メジャーメントが送信されていることを確認できます。

スクリーンショット5

MQTT対応のエージェントを利用してメジャーメントを送信する手順は以上です。

© 2025 NTT Communications. All rights reserved.