Grafana 面板监控 Helium 网络中的LoRaWAN温湿度终端

2021-09-12 16:16:14 浏览数 (1)

上次我们介绍了如何通过腾讯的物联网开发平台实现将helium网络中LoRaWAN终端的数据推动到微信公众号和腾讯连连小程序,本篇文档介绍如何通过腾讯云的CVM主机部署Mosquitto MQTT Telegraf InfluxDB Grafana 实现仪表盘监控温湿度数据以及历史数据的分析。

仪表盘:

温湿度监控仪表盘温湿度监控仪表盘

准备工作

  • 腾讯云云服务器主机,Ubuntu Server 20.04 LTS 64位
  • Rejeee温湿度传感器
  • Helium热点网关
  • Helium Console账户

数据流程:

代码语言:javascript复制
  Rejeee温湿度传感器 --> Helium热点AP --> HeliumConsole --> MQTTBroker --> Telegraf --> InfluxDB --> Grafana 

安装 Mosquitto MQTT Broker

  • 使用apt-get安装MQTT和客户端
代码语言:javascript复制
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients
sudo apt-get clean
  • 配置MQTT密码

创建两个MQTT账户密码,分别用在Helium Console 和 Telegraf 修改配置文件:

代码语言:javascript复制
sudo vim  /etc/mosquitto/conf.d/default.con

并增加两行配置,使用这个密码文件要求所有的连接登陆

代码语言:javascript复制
allow_anonymous false
password_file /etc/mosquitto/passwd

增加helium console MQTT集成使用的账户密码

代码语言:javascript复制
mosquitto_passwd -b /etc/mosquitto/passwd heliumconsole heliumconsole123

增加telegraf 使用MQTT连接使用账户密码

代码语言:javascript复制
mosquitto_passwd -b /etc/mosquitto/passwd telegraf telegraf123

重启进程并确认服务已启动

代码语言:javascript复制
service mosquitto stop
service mosquitto start
service mosquitto status

安装 influxDB

  1. Ubuntu 用户可以使用apt-get包管理器安装最新稳定版本的 InfluxDB ,使用以下命令添加 InfluxData 存储库配置:
代码语言:javascript复制
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/lsb-release
echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

安装并启动 InfluxDB 服务

代码语言:javascript复制
sudo apt-get update && sudo apt-get install influxdb
sudo service influxdb start
sudo systemctl status influxd.service 

配置influxDB并使用

  1. 登陆influx控制台influx
  2. 在控制台创建数据库
代码语言:javascript复制
create database rejeee_TH
use rejeee_TH<br>
create user rejeee_TH with password 'rejeee_TH123' with all privileges<br>
exit

安装Telegraf

代码语言:javascript复制
sudo apt-get update && sudo apt-get install telegraf
sudo service telegraf start
sudo service telegraf status

配置Telegraf

  • 将MQTT数据发送到inluxDB,修改下面配置文件
代码语言:txt复制
sudo vim /etc/telegraf/telegraf.conf
  • 修改下列参数配置outputs.influxdb
代码语言:javascript复制
    urls = ["http://127.0.0.1:8086"]<br>
    database = "rejeee_TH"<br>
    username = "rejeee_TH"<br>
    password = "rejeee_TH123"
  • 配置Telegraf 读取MQTT数据包, 在/etc/telegraf/telegraf.d 目录并创建一个名为 mqtt.conf 的文件,并填入以下信息
代码语言:txt复制
sudo vim /etc/telegraf/telegraf.d/mqtt.conf
  • 将下列信息填入mqtt.con文件中inputs.mqtt_consumer
代码语言:javascript复制
servers = "tcp://127.0.0.1:1883"
qos = 0
connection_timeout = "30s"
topics =  "helium/#" 
username = "telegraf"
password = "telegraf123"
data_format = "json"
json_string_fields = "name","hotspot_name","spreading"
  • 重新加载telegraf服务读取配置
代码语言:javascript复制
sudo systemctl reload telegraf.service
sudo systemctl status telegraf.service

安装Grafana

  • 安装Grafanasudo
代码语言:javascript复制
apt-get install  grafana
  • 启动服务
代码语言:javascript复制
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
  • 确认服务成功启动
代码语言:javascript复制
sudo systemctl status grafana-server.service
  • 重启Grafana
代码语言:javascript复制
sudo service grafana-server restart
  • 登陆Grafana 在浏览器中打开:http://服务器的IP:3000/login, 默认账户:admin 密码:admin

配置Grafana仪表盘

  1. 打开 Grafana:http://192.168.1.1:3000/login 用户名:admin 密码:admin
  2. 添加 InfluxDB 作为数据源 使用菜单 Configuration->Data Sources 添加之前创建的helium_sensors数据库凭据。按“保存并测试”。数据库:rejeee_TH 用户:rejeee_TH 密码:rejeee_TH123
  3. 添加仪表盘 下载参考温度监控仪表板:仪表盘模版
  4. 导入模版Json文件
导入模版Json文件导入模版Json文件

Helium Console 使用MQTT集成将数据导入MQTT Broker

  • 配置HElium Console MQTT集成

示例:

mqtt://heliumconsole:heliumconsole123@serverIP:1884

用户: heliumconsole

密码: heliumconsole123

设置集成模版:

代码语言:javascript复制
{
{{#decoded}}{{#payload}}"power": {{power}},
"temp_value": {{temp_value}},
"hum_value": {{hum_value}},{{/payload}}{{/decoded}}
"name": "{{name}}",
{{#hotspots}}"hotspot_name": "{{name}}",
"rssi": {{rssi}},
"snr": {{snr}},
"channel": {{channel}},
"fcnt":{{fcnt}},
"spreading": "{{spreading}}"{{/hotspots}}
}

MQTT Broker 采集到数据:

代码语言:txt复制
{
"power": 30,
"temp_value": 25.6,
"hum_value": 58,
"name": "Rejeee_TH",
"hotspot_name": "inxxxsting-honexxxuckle-gxxse",
"rssi": -86.0,
"snr": 12.199999809265137,
"channel": 399,
"fcnt":1712,
"spreading": "SF7BW125"
}
  • influxDB 确认数据是否入库:
代码语言:javascript复制
influx -username rejeee_TH -password rejeee_TH123
use rejeee_TH
select * from mqtt_consumer limit 5

确认influxDB采集到传感器数据

InfluxDB传感器数据InfluxDB传感器数据

0 人点赞