Skip to main content

SenseCAP & Node-RED を使用して Grafana に接続

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Node-RED を介して SenseCAP を Grafana に接続

SenseCAP K1100 - センサープロトタイプキット は、Seeed Studio が LoRa® 通信技術とエッジインテリジェンス製品のエッセンスを凝縮し、LoRa® および IoT アプリケーションを最も簡単に展開し習得できるように設計されています。

pir

産業用センサーへのアップグレードが可能

SenseCAP S2110 コントローラーS2100 データロガー を使用することで、Grove を簡単に LoRaWAN® センサーに変えることができます。Seeed はプロトタイピングを支援するだけでなく、堅牢な 産業用センサー を備えた SenseCAP シリーズを使用してプロジェクトを拡張する可能性も提供します。

IP66 ハウジング、Bluetooth 設定、グローバル LoRaWAN® ネットワークとの互換性、内蔵 19 Ah バッテリー、そしてアプリからの強力なサポートにより、SenseCAP S210x は産業用途に最適な選択肢となります。このシリーズには、土壌水分、空気温度と湿度、光強度、CO2、EC、そして 8-in-1 気象ステーション用のセンサーが含まれています。次の成功する産業プロジェクトに最新の SenseCAP S210x をお試しください。

SenseCAP 産業用センサー
S2100
データロガー
S2101
空気温度 & 湿度
S2102
光強度
S2103
空気温度 & 湿度 & CO2
S2104
土壌水分 & 温度
S2105
土壌水分 & 温度 & EC
S2110
LoRaWAN® コントローラー
S2120
8-in-1 気象ステーション

Grafana

Grafanaは、データ分析を実行し、大量のデータを理解するためのメトリクスを引き出し、カスタマイズ可能なダッシュボードを使用してアプリケーションを監視するためのオープンソースソリューションです。Grafanaは、Graphite、Prometheus、Influx DB、ElasticSearch、MySQL、PostgreSQLなど、一般的にデータベースと呼ばれるあらゆるデータソースに接続できます。オープンソースソリューションであるGrafanaは、さまざまなデータソースとの統合のためにゼロからプラグインを作成することも可能です。このツールは、時間の経過に伴うデータを研究、分析、監視するのに役立ち、技術的には時系列分析と呼ばれます。

これにより、ユーザーの行動、アプリケーションの動作、プロダクションまたはプレプロダクション環境で発生するエラーの頻度、発生するエラーの種類、および関連するシナリオを相対的なデータを提供することで追跡できます。

pir

この章の内容では、前述のNode-REDを引き続き使用し、InfluxDB 2.4インスタンスからのデータをGrafanaで可視化します。

その前に、以下を準備してください。

  1. Node-REDをインストールしていない、またはNode-REDが何か分からない場合は、Node-RED & SenseCAP チュートリアルを参照してください。

  2. Node-REDを使用してSenseCAPをInfluxDBにデプロイすることから始めてください。その詳細は、wikiのNode-REDを介してSenseCAPをInfluxDBに接続するで確認できます。

MQTTノードの作成

ステップ1. Node-REDを起動する

ターミナルでコマンドnode-redを入力してNode-REDを起動し、ブラウザを開いてアドレスバーにhttp://localhost:1880を入力してNode-REDのエディタにアクセスします。

ステップ2. MQTTノードを作成する

Network -> mqtt inノードを使用し、前回のチュートリアルで説明したSenseCAP APIの形式に従ってmqttを設定します。

  • サーバー: openstream.api.sensecap.seeed.cc

  • ポート: 1883

  • プロトコル: MQTT V3.1.1

  • クライアントID: フォーマットはorg-<Organization ID>-<Random ID>

    • <Organization ID>: 組織ID。これはSenseCAP APIを取得するで取得済みです。
    • <Random ID>: ランダムに生成された数字または小文字の文字列を使用します。
  • トピックフォーマット: /device_sensor_data/<OrgID>/<DeviceEUI>/<Channel>/<Reserved>/<MeasurementID>

OrgID組織ID。これはSenseCAP APIを取得する際に取得済みです。
DevEUIセンサー機器の一意の識別子。この情報はGrove - Wio E5の背面のステッカーやSenseCAPコンソールデバイスで確認できます。
Channelセンサーが接続されているデバイスの物理インターフェース。K1100キットの場合、ここでのデフォルト値は1です。
Reserved予約フィールド。
MeasurementID測定値ID。このIDはSenseCAP ドキュメントの測定値IDセクションで確認できます。

ステップ3. MQTTノードを検証する

設定が完了したら、右上のDeployボタンをクリックして設定が成功したか確認してください。正しく入力されていれば、Connectedという単語が表示されます。

InfluxDB OSS を開始する

tip

InfluxDB が提供する詳細な チュートリアル を参照して、InfluxDB のインストールとデプロイを完了することができます。このチュートリアルは異なるシステムに対応しています。以下では、Windows 11 システムを例にインストール手順を説明します。

ステップ 1. InfluxDB v2.4 をダウンロードする

こちら をクリックして、InfluxDB v2.4 の zip ファイルをダウンロードしてください。

ダウンロードしたアーカイブを C:\Program Files\InfluxData\ に展開し、必要に応じてファイル名を変更してください。

ステップ 2. InfluxDB を開始する

Powershell で C:\Program Files\InfluxData\influxdb に移動し、influxd デーモンを実行して InfluxDB を開始します。

cd -Path 'C:\Program Files\InfluxData\influxdb'
.\influxd
tip

Powershell または WSL を使用して influx および influxd コマンドを実行してください。このドキュメントのコマンドライン例では、システム PATH にインストールされているかのように influx および influxd を使用しています。これらのバイナリが PATH にインストールされていない場合は、提供された例の influx および influxd を .\influx および .\influxd に置き換えてください。

デフォルトでは、InfluxDB は InfluxDB HTTP API を介したクライアント-サーバー通信に TCP ポート 8086 を使用します。

InfluxDB を設定する

ステップ 1. InfluxDB アカウントを登録する

上記の手順を続け、開いたページでアカウントを登録してください。

ここで設定した Organisation Name をメモしてください。この名前は後で Node RED の設定で使用します。

ステップ 2. URL を取得する

デフォルトでは、InfluxDB は InfluxDB HTTP API を介したクライアント-サーバー通信に TCP ポート 8086 を使用します。

http://localhost:8086/

このセクションでは、InfluxDB の URL は以下の通りです。これをメモしてください。後で Node RED の設定で使用します。

ステップ 3. API トークンを取得する

以下に示すように API トークンページに移動し、Node RED 用の新しい API インターフェースを作成してトークンをメモしてください。

Node-RED を設定する

ステップ 1. InfluxDB パレットをダウンロードする

右上のメニューバーをクリックし、設定を選択します。

Paletts -> Installnode-red-contrib-influxdb を検索してインストールします。

左側のストレージバーから influx.batch を追加し、ダブルクリックして設定ページに入り、influx.batch ノードを編集するために編集ボタンをクリックします。

ステップ 2. influx.batch ノードを編集する:

  • Version: 2.0
  • URL: http://localhost:8086/
  • TOKEN: API トークンを取得する セクションで生成したトークン

完了したら、右上の Add ボタンをクリックして influx.batch のプロパティページに戻ります。この時点で、組織名とバケット名を入力してください。

ステップ 3. 関数ノードを設定する

InfluxDB にデータを報告するには特定のデータ形式に従う必要があるため、データ形式を処理するための関数ノードを追加する必要があります。

左側の関数バーから関数ノードをドラッグし、ダブルクリックして編集ページに入り、以下のコードを On Message にコピーしてください。

{
var payload = msg.payload;
var topic = msg.topic;
var strs = topic.split("/");
var length = strs.length
if (length >= 2) {
var measurementId = strs[length - 1]
var body = {}
var value = payload.value
if (measurementId == 4100) {
body.co2 = value
measurement = "co2"
} else if (measurementId == 4103) {
body.soilmoisture = value
measurement = "soilmoisture"
} else if (measurementId == 4150) {
body.accelX = value
measurement = "accelX"
} else if (measurementId == 4151) {
body.accelY = value
measurement = "accelY"
} else if (measurementId == 4152) {
body.accelZ = value
measurement = "accelZ"
} else if (measurementId == 4192) {
body.soundintensity = value
measurement = "soundintensity"
} else if (measurementId == 4193) {
body.lightIntensity = value
measurement = "lightIntensity"
} else if (measurementId == 4195) {
body.tvoc = value
measurement = "tvoc"
} else if (measurementId == 4097) {
body.airtemperature = value
measurement = "airtemperature"
} else if (measurementId == 4098) {
body.airhumidity = value
measurement = "airhumidity"
} else if (measurementId == 4175) {
body.AIdetection_1 = value
measurement = "AIdetection_1"
} else if (measurementId == 4176) {
body.AIdetection_2 = value
measurement = "AIdetection_2"
} else if (measurementId == 4177) {
body.AIdetection_3 = value
measurement = "AIdetection_3"
} else if (measurementId == 4178) {
body.AIdetection_4 = value
measurement = "AIdetection_4"
} else if (measurementId == 4179) {
body.AIdetection_5 = value
measurement = "AIdetection_5"
} else if (measurementId == 4180) {
body.AIdetection_6 = value
measurement = "AIdetection_6"
} else if (measurementId == 4181) {
body.AIdetection_7 = value
measurement = "AIdetection_7"
} else if (measurementId == 4182) {
body.AIdetection_8 = value
measurement = "AIdetection_8"
} else if (measurementId == 4183) {
body.AIdetection_9 = value
measurement = "AIdetection_9"
} else if (measurementId == 4184) {
body.AIdetection_10 = value
measurement = "AIdetection_10"
}
msg.payload = [{
measurement: measurement,
fields: body,
tags: {
device: "SenseCAP K1100"
},
timestamp: new Date()
}];
}
return msg;
}

次に、すべてのノードを接続し、Deploy ボタンをクリックします。すべてが正しく設定されていれば、mqtt in ノードが「connected」と表示されるはずです。

データのログ情報を確認したい場合は、function ノードの後に debug ノードを追加することができます。

Wio Terminal が起動して動作を開始し、SenseCAP PaaS サーバーにデータを送信し始めると、Node-RED のデバッグログでデータを確認することができます。

Grafana の設定

ステップ 1. Grafana のインストール

Grafana はさまざまなオペレーティングシステムにインストールできます。最小限のハードウェアおよびソフトウェア要件のリストや、Grafana のインストール手順については、Grafana のインストールを参照してください。

Windows 11 を例にとると、Grafana のウェブサイトからインストールパッケージをダウンロードし、ダブルクリックしてインストールを開始します。

ステップ 2. Grafana にサインイン

ウェブブラウザを開き、http://localhost:3000/ にアクセスします。Grafana がリッスンするデフォルトの HTTP ポートは 3000 ですが、異なるポートを設定している場合はそのポートを使用してください。

サインインページで、ユーザー名とパスワードに admin を入力します。

Sign in をクリックします。成功すると、パスワード変更のプロンプトが表示されます。

ステップ 3. データソースの追加

メインページで左下の歯車アイコンをクリックし、Add data source を選択します。

利用可能なデータソースのリストから InfluxDB を選択します。

ステップ 4. InfluxDB データソースの設定

データソース設定ページで、InfluxDB データソースの名前を入力します。

次に、以下を選択または入力します:

  • Query Language: Flux
  • HTTP の設定:
  • Auth の設定:
    • Basic auth を無効にします。
  • InfluxDB Details の設定:
    • Organization: 組織 ID。組織 ID は InfluxDB の About ページで確認できます。
    • Token: InfluxDB API トークン。
    • Default Bucket: Flux クエリで使用するデフォルトバケット。

Save & Test をクリックします。Grafana は InfluxDB 2.4 データソースへの接続を試み、テスト結果を返します。すべてが正常に動作している場合、以下の出力メッセージが表示されます。

データのクエリと可視化

InfluxDB の接続が設定されたら、Grafana と Flux を使用して、InfluxDB インスタンスに保存されている時系列データをクエリし、可視化することができます。

Grafana の使用方法について詳しくは、Grafana ドキュメントをご覧ください。Flux を初めて学ぶ場合は、Flux の始め方をご参照ください。

また、皆様のデータダッシュボードのご提出を歓迎しております。皆様の作品を楽しみにしています!

技術サポートと製品に関するディスカッション

弊社製品をお選びいただき、ありがとうございます!製品をご利用いただく際の体験がスムーズになるよう、さまざまなサポートをご提供しております。お客様の好みやニーズに応じた複数のコミュニケーションチャネルをご用意しています。

Loading Comments...