通过 Node-RED 将 SenseCAP 连接到 InfluxDB
SenseCAP K1100 - 传感器原型套件 代表了 Seeed Studio 在 LoRa® 通信技术和边缘智能产品上的精华,旨在最简便地部署和掌握 LoRa® 和物联网应用。

可升级为工业传感器
通过 SenseCAP S2110 控制器 和 S2100 数据记录仪,您可以轻松将 Grove 转变为 LoRaWAN® 传感器。Seeed 不仅帮助您完成原型设计,还为您提供了通过 SenseCAP 系列坚固的工业传感器扩展项目的可能性。
IP66 外壳、蓝牙配置、与全球 LoRaWAN® 网络的兼容性、内置 19 Ah 电池以及来自 APP 的强大支持,使得 SenseCAP S210x 成为工业应用的最佳选择。该系列包括土壤湿度、空气温湿度、光强、二氧化碳、电导率以及 8 合 1 气象站传感器。尝试最新的 SenseCAP S210x,助力您的下一个成功的工业项目。
SenseCAP 工业传感器 | |||
S2100 数据记录仪 | S2101 空气温湿度 | S2102 光强 | S2103 空气温湿度 & CO2 |
S2104 土壤湿度 & 温度 | S2105 土壤湿度 & 温度 & 电导率 | S2110 LoRaWAN® 控制器 | S2120 8 合 1 气象站 |
关于 InfluxDB
InfluxDB 是一个开源的时序数据库,专注于高性能读取、高性能写入、高效存储以及海量时序数据的实时分析。除了支持 HTTP 和 UDP 等原生协议外,它还兼容 CollectD、Graphite、OpenTSDB 和 Prometheus 等组件的通信协议。广泛应用于 DevOps 监控、物联网监控、实时分析等场景。

本章节内容将继续使用前面介绍的 Node-RED,并通过 Node-RED 实现对 K1100 套件在 InfluxDB 中的管理。
如果您尚未安装或不了解什么是 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 文档 的测量值 ID 部分中找到。 |
步骤 3. 验证 MQTT 节点
配置完成后,请点击右上角的 Deploy 按钮,检查配置是否成功。如果填写正确,则会显示 Connected 字样。

配置 InfluxDB
步骤 1. 注册或登录 InfluxDB
如果您已经注册了 InfluxDB,请在 InfluxDB 网站上登录。

如果您尚未使用或注册 InfluxDB,请在 此处完成注册并登录。

注册时,可能会弹出一个页面要求您选择提供商,您可以根据自己的偏好选择,或者随意选择一个。

步骤 2. 获取 API Token
如下图所示,请点击 Bucket。

然后点击 CREATE BUCKET。

在弹出的新窗口中输入名称,并选择免费的数据保留期限 - 30 天。

接着,如下图所示,请点击 API Tokens。

然后选择创建一个 Custom API Token。

为我们刚刚创建的 Bucket 授予 read 和 write 权限,然后点击下方的 Create 按钮。

创建完成后,您可以将 API Token 复制到剪贴板并保存。请将其保存到安全的位置,我们将在后续步骤中使用它。

如果您关闭了此窗口,将无法再次获取该 API Token。
配置 Node-RED
步骤 1. 下载 InfluxDB 插件
点击右上角菜单栏并选择 Settings。

在 Paletts -> Install 中搜索并安装 node-red-contrib-influxdb。

从左侧的存储栏中添加 influx.batch,双击它进入配置页面,然后点击编辑按钮以编辑 influx.batch 节点。

步骤 2. 编辑 influx.batch 节点:
- Version: 2.0。
- URL: 从 Settings -> Orgnization Profile 中获取。

- TOKEN: 在 获取 API Token 部分中生成的 Token。

完成后,点击右上角的 Add 按钮返回到 influx.batch 的属性页面,此时请填写您的组织名称(默认为您注册 InfluxDB 时使用的电子邮件地址)和 Bucket 名称。

步骤 3. 配置 function 节点
将数据上报到 InfluxDB 需要遵循特定的数据格式,因此需要添加一个 function 节点来处理数据格式。

从左侧的功能栏中拖出 function 节点,双击它进入编辑页面,然后将代码复制到 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 节点显示已连接。
如果您想查看数据的日志信息,可以在 function 节点之后添加一个 debug 节点。

一旦 Wio Terminal 开始启动并工作,并开始向 SenseCAP PaaS 服务器发送数据,我们就可以在 Node-RED 的调试日志中查看数据。

配置 InfluxDB 可视化仪表板
为了更直观地查看传感器数据,我们可以绘制一些折线图。
返回 InfluxDB Cloud 并点击 CREATE DASHBOARD 来 ADD CELL。

如果 SenseCAP 已经开始向 InfluxDB 发送数据消息,那么您可以在此页面上看到传感器的标签。对于您想要显示的数据内容,只需勾选相应的框。


故障排除
问题1:为什么我在 Node-RED 中找不到 Palette?
答:如果您在设置中找不到 Palette,请检查启动 Node-RED 时终端是否有错误消息。

最常见的情况是您的 npm 版本太旧,无法启动 Palette 编辑器。
如果您的情况如上所述,请以 管理员身份运行 Powershell 并输入以下命令来升级 npm。
npm install -g npm
然后重新启动 Node-RED 即可。
技术支持与产品讨论
感谢您选择我们的产品!我们为您提供多种支持渠道,以确保您使用我们的产品时体验顺畅。我们提供多种沟通方式,以满足不同的偏好和需求。