SenseCAP & Node-RED を使用して InfluxDB に接続
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Node-RED を介して SenseCAP を InfluxDB に接続する
SenseCAP K1100 - センサープロトタイプキット は、Seeed Studio が LoRa® 通信技術とエッジインテリジェンス製品のエッセンスを凝縮し、LoRa® および IoT アプリケーションを最も簡単に展開し、習得できるように設計されています。

産業用センサーへのアップグレード可能
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 気象ステーション |
InfluxDBについて
InfluxDBはオープンソースの時系列データベースであり、高性能な読み取り、高性能な書き込み、効率的なストレージ、大量の時系列データのリアルタイム分析に焦点を当てています。HTTPやUDPなどのネイティブプロトコルに加え、CollectD、Graphite、OpenTSDB、Prometheusなどのコンポーネントの通信プロトコルとも互換性があります。DevOpsモニタリング、IoTモニタリング、リアルタイム分析などのシナリオで広く使用されています。

この章の内容では、前述のNode-REDを引き続き使用し、Node-REDを通じてK1100キットをInfluxDBで管理する方法を説明します。
Node-REDをインストールしていない、またはNode-REDが何であるか分からない場合は、Node-RED & SenseCAP チュートリアルを参照してください。
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 ドキュメントのMeasurement IDsセクションで確認できます。 |
ステップ3. MQTTノードを検証する
設定が完了したら、右上のDeployボタンをクリックして設定が成功したか確認してください。正しく入力されていれば、Connectedという単語が表示されます。

InfluxDB の設定
ステップ 1. InfluxDB に登録またはログイン
すでに InfluxDB に登録済みの場合は、InfluxDB のウェブサイトでログインしてください。

まだ InfluxDB を使用していない、または登録していない場合は、こちらから登録を完了し、ログインしてください。

登録時にプロバイダーを選択するページが表示される場合があります。お好みに応じて選択するか、任意のものを選んでください。

ステップ 2. API トークンを取得
以下のように、Bucket をクリックしてください。

次に、CREATE BUCKET をクリックします。

新しいポップアップウィンドウで名前を入力し、無料のデータ保持期間(30 日間)を選択します。

次に、以下のように API Tokens をクリックしてください。

その後、Custom API Token を作成するオプションを選択します。

作成した Bucket に対して read と write の権限を付与し、下部の Create ボタンをクリックします。

作成が完了したら、API トークンをクリップボードにコピーして保存してください。このトークンは後のステップで使用しますので、安全な場所に保存してください。

ここでウィンドウを閉じると、この API トークンを再取得することはできません。
Node-RED の設定
ステップ 1. InfluxDB パレットをダウンロード
右上のメニューバーをクリックし、設定を選択します。

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

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

ステップ 2. influx.batch ノードを編集:
- Version: 2.0
- URL: Settings -> Orgnization Profile から取得します。

- TOKEN: API トークンを取得セクションで生成したものを使用します。

設定が完了したら、右上の Add ボタンをクリックして influx.batch のプロパティページに戻ります。この時点で、Orgnization(デフォルトでは InfluxDB に登録したメールアドレス)と Bucket 名を入力してください。

ステップ 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 のデバッグログでデータを確認することができます。

InfluxDB の視覚的ダッシュボードを設定する
センサーデータをより視覚的に表示するために、折れ線グラフを描画することができます。
InfluxDB Cloud に戻り、CREATE DASHBOARD をクリックして ADD CELL を選択します。

SenseCAP が InfluxDB にデータメッセージを送信し始めている場合、このページでセンサーのラベルを確認することができます。表示したいデータの内容については、チェックボックスをオンにするだけです。


トラブルシューティング
Q1: Node-RED でパレットが見つからないのはなぜですか?
A: 設定でパレットが見つからない場合、Node-RED を起動した際にターミナルでエラーメッセージを確認してください。

最も一般的な原因は、npm のバージョンが古すぎてパレットエディタを起動できないことです。
上記の状況に該当する場合は、管理者権限で Powershell を実行し、以下のコマンドを入力して npm をアップグレードしてください。
npm install -g npm
その後、Node-RED を再起動してください。
技術サポートと製品に関するディスカッション
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。