新能源电动车监控数据上报

简介: 本场景介绍了阿里云原生数据库Lindorm定位智能海量数据存储场景,可提供车辆数据实时监控,助力建立驾驶行为分析等服务。

新能源电动车监控数据上报

1. 搭建ECS实例环境

搭建ECS实例环境

本步骤需要在ECS控制台操作,开通ECS实例,并完成相关配置。

登录ECS控制台,按照页面引导购买ECS实例。

说明:购买ECS实例过程中,镜像选择CentOS 7.3 64位。

设置安全组,开通3000、1883、1880端口的访问。

2. 开通Lindorm数据库

开通Lindorm数据库

本步骤需Lindorm控制台操作,开通Lindorm实例,并完成相关配置。

登录Lindorm控制台,在实例列表页,单击创建,按照页面引导购买Lindorm实例。

说明:

选择 “时序节点规格(OpenTSDB API)”,设置节点数为2。

Lindorm数据库的地域,需与ECS实例保持一致。

若选择“一键开通并克隆”,则Lindorm数据库会完成克隆,可跳过此步骤。您可前往Lindorm控制台的实例页,查看实例信息。

通过克隆,自动生成的实例备注名默认为InstanceforTest。

配置白名单:进入Lindorm实例的访问控制页面,将ECS绑定的公网IP添加入Lindorm的白名单中。

开通公网访问:进入Lindorm实例的数据库连接页面,选择时序引擎,单击开通外网地址。

3. 搭建车辆数据接收环境

搭建车辆数据接收环境

本步骤需要在ECS控制台操作,登录开通的ECS,搭建mqtt服务器。

登录ECS控制台,在实例列表页,选择开通的ECS,单击远程连接-立即登录,输入密码后,登录ECS。

依次输入如下命令,搭建mqtt服务器。

说明:请逐条复制命令运行。

echo “安装openssl、gcc、g++”
sudo yum install openssl-devel 
sudo yum -y install gcc+ gcc-c++
echo “下载mosquitto安装包”
wget http://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz
echo '解压'
tar -zxvf mosquitto-1.6.8.tar.gz
echo '进入mosquitto-1.6.8'
cd mosquitto-1.6.8
echo '编译'
make
echo '安装'
sudo make install
echo '创建配置文件'
mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
echo '创建用户组及用户'
sudo groupadd mosquitto
sudo useradd -g mosquitto mosquitto -s /sbin/nologin
echo '启动运行mqtt服务器'
mosquitto -c /etc/mosquitto/mosquitto.conf -d
echo 'ps查看'
ps -aux | grep mosquitto
echo “如果出现找不到libmosquitto.so.1的情况,执行下面两步命令”
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
sudo ldconfig
echo “测试mosquitto安装是否正常”
echo “另外启动一个shell,订阅消息,可以收到发送的消息”
mosquitto_sub  -t rimelink
echo “发送消息”
mosquitto_pub -t rimelink -h localhost -m 'hello, mosquitto'

4. 搭建车辆数据转存流程

搭建车辆数据转存流程

本步骤需要在ECS控制台操作,登录开通的ECS,安装Node-RED,搭建车辆数据的转存流程。

在ECS服务器上,安装Node-RED。

说明:请逐条复制运行。

wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
xz -d node-v12.16.1-linux-x64.tar.xz
tar -xvf node-v12.16.1-linux-x64.tar
cp -arp node-v12.16.1-linux-x64 /usr/local/
echo '安装node.js'
sudo yum install nodejs
echo '安装node-red'
npm install -g --unsafe-perm node-red
echo “重新生成node和npm的软链接”
rm -f /usr/bin/npm /usr/bin/node
ln -s /usr/local/node-v12.16.1-linux-x64/bin/npm /usr/bin/npm
ln -s /usr/local/node-v12.16.1-linux-x64/bin/node /usr/bin/node
echo '运行node-red'
nohup node-red > node-red.log 2>&1 &

配置数据转存流程。

1) 在浏览器中输入http://{公网IP:1880},登录Node-RED控制台,复制如下JSON,导入转存流程模板。

[{'id':'99bd800f.7ed3','type':'tab','label':'mqtt2Lindorm','disabled':false,'info':''},{'id':'329162c1.3169ce','type':'mqtt in','z':'99bd800f.7ed3','name':'BEV','topic':'topic','qos':'2','datatype':'utf8','broker':'cb1d3631.5b6b28','nl':false,'rap':false,'rh':'0','x':610,'y':500,'wires':[['60757334.92409c']]},{'id':'60757334.92409c','type':'function','z':'99bd800f.7ed3','name':'MQTT to Lindorm','func':'var tokens = msg.topic.split('/');
var dest = tokens[tokens.length-1];
let ts = Date.now();
console.log(ts);
msg.headers = { 'Content-type' : 'application/json' }
msg.payload = '[{\'metric\':\'vehicle\', \'tags\':{\'sensor_a1\':\'a1\'},\'timestamp\':' + ts + ', \'fields\':' + msg.payload + '}]' ;
console.log(msg.payload);
return msg;','outputs':1,'noerr':0,'initialize':'','finalize':'','libs':[],'x':910,'y':460,'wires':[['5571d60f.d66b48']]},{'id':'5571d60f.d66b48','type':'http request','z':'99bd800f.7ed3','name':'','method':'POST','ret':'txt','paytoqs':'ignore','url':'http://ld-bp1ef09pjj62026vx-proxy-tsdb.lindorm.rds.aliyuncs.com:8242/api/mput','tls':'','persist':true,'proxy':'','authType':'','x':1180,'y':400,'wires':[['341c1a02.fd2f36']]},{'id':'341c1a02.fd2f36','type':'debug','z':'99bd800f.7ed3','name':'','active':true,'tosidebar':true,'console':false,'tostatus':false,'complete':'true','targetType':'full','statusVal':'','statusType':'auto','x':1370,'y':500,'wires':[]},{'id':'cb1d3631.5b6b28','type':'mqtt-broker','z':'99bd800f.7ed3','name':'225','broker':'8.136.192.53','port':'1883','clientid':'node-red','usetls':false,'verifyservercert':true,'protocolVersion':'4','keepalive':'15','cleansession':true,'birthTopic':'','birthQos':'0','birthRetain':'false','birthPayload':'','birthMsg':{},'closeTopic':'','closeRetain':'false','closePayload':'','closeMsg':{},'willTopic':'','willQos':'0','willRetain':'false','willPayload':'','willMsg':{},'sessionExpiry':''}]

导入后,选择mqtt2Lindorm流程,显示的转存模板如下:

2) 修改节点配置,编辑mqtt-broker节点,填入mosquitto IP地址(即公网IP地址,端口号默认1883)。

3) 编辑http 请求节点,配置Lindorm数据库连接信息:数据库URL地址,数据库用户名和密码。

说明:

数据库URL地址,可进入Lindorm数据库实例详情的数据库连接-时序引擎,进行用户名和密码的创建或查看。

数据库URL地址,可进入Lindorm数据库实例详情的数据库连接-时许引擎页面获取。

4) 点击部署,完成车辆数据转存流程的部署。

5. 模拟车辆数据写入,自动同步至Lindorm

模拟车辆数据写入,自动同步至Lindorm

本步骤需要在ECS控制台操作。登录开通的ECS,在Node-RED上模拟车辆数据写入。

您可以在Node-RED上执行如下命令,构造车辆模拟数据:

mosquitto_pub -h {公网IP} -t topic -m '{'lon': 223.573209,'lat': 45.674483,'enginStatus': 0,'acOnOff': 0,'sunRoof': 0,'frontFogLightStatus': 0,'dippedLightStatus': 0,'rearFogLightStatus': 0,'turnLightStatus': 0,'highBeamLightStatus': 0,'leftFrontDoorStatus': 0,'rightRearDorrStatus': 0 }'

说明:您也可以执行以下命令,下载并运行脚本,不断地写入模拟数据。

wget https://database-experience.oss-cn-shanghai.aliyuncs.com/write.sh; chmod 777 write.sh; nohup sh write.sh > /dev/null 2>&1 &

说明:全量模拟数据格式如下:

名称

类型

是否必填(Y/N)

说明

statusCode

String

Y

(200成功,非200失败)

statusMessage

String

Y

状态描述

data

Object

N

业务数据

lon

String

Y

经度

单位:千万分之一度

lat

String

Y

纬度

单位:千万分之一度

timestamp

String

Y

上报时间

enginStatus

String

Y

发动机状态:

0:default 

5:not run 

6:run

7:cranking

acOnOff

String

Y

空调开启/关闭

0:关

1:开

sunRoof

String

Y

天窗状态

0:未知位置

1:关闭

2:开启

3:全开

frontFogLightStatus

String

Y

前雾灯状态

0:OFF

1:ON

dippedLightStatus

String

Y

近光灯状态

0:OFF

1:ON

rearFogLightStatus

String

Y

后雾灯状态

0:OFF

1:ON

turnLightStatus

String

Y

转向灯状态

0:灯灭

1:右转向灯亮

2:左转向灯亮

3:双灯亮(危险警报灯)

highBeamLightStatus

String

Y

远光灯状态

0:OFF

1:ON 

leftFrontDoorStatus

String

Y

左前门状态

0:Unlock

1:Lock

rightRearDorrStatus

String

Y

右后门状态

0:Unlock

1:Lock

trunkDoor

String

Y

后备门状态

0:Unlock

1:Lock

leftRearDoorStatus

String

Y

左后门状态

0:Unlock

1:Lock

rightFrontDoorStatus

String

Y

右前门状态

0:Unlock

1:Lock

frDoorLock

String

Y

前右门锁状态

0:unlock

1:lock

rlDoorLock

String

Y

后左门锁状态

0:unlock

1:lock

rrDoorLock

String

Y

后右门锁状态

0:unlock

1:lock

flDoorLock

String

Y

前左门锁状态

0:unlock

1:lock

centrolLockStatus

String

Y

中控锁状态(删除)

0:Unlock

1:Lock

frontLeftWindow

String

Y

左前窗状态

0:window close(车窗关闭)

1:window breathe(透气窗)

2:window open(车窗打开)

frontRightWindow

String

Y

右前窗状态

0:window close(车窗关闭)

1:window breathe(透气窗)

2:window open(车窗打开)

rearLeftWindow

String

Y

左后窗状态

0:window close(车窗关闭)

1:window breathe(透气窗)

2:window open(车窗打开)

rearRightWindow

String

Y

右后窗状态

0:window close(车窗关闭)

1:window breathe(透气窗)

2:window open(车窗打开)

tireLeftFrontPressureStatus

String

Y

左前轮胎压状态

0:Normal

1:Over-pressure

2:Under-pressure

3:Reserved

tireRightFrontPressure

String

Y

右前轮胎压

单位:1.373Kpa

无效值:0xFF

tireRightFrontPressureStatus

String

Y

右前轮胎压状态

0:Normal

1:Over-pressure

2:Under-pressure

3:Reserved

tireLeftRearPressure

String

Y

左后轮胎压

单位:1.373Kpa

无效值:0xFF

tireLeftRearPressureStatus

String

Y

左后轮胎压状态

0:Normal

1:Over-pressure

2:Under-pressure

3:Reserved

tireLeftFrontPressure

String

Y

左前轮胎压

单位:1.373Kpa

无效值:0xFF

tireRightRearPressure

String

Y

右后轮胎压

单位:1.373Kpa

无效值:0xFF

tireRightRearPressureStatus

String

Y

右后轮胎压状态

0:Normal

1:Over-pressure

2:Under-pressure

3:Reserved

remainingFuel

String

Y

剩余油量

单位:1L

数值范围:

totalMileage

String

Y

总计里程

单位:Km

数值范围:

无效值:1000000~16777215

remainingMileage

String

Y

续航里程

单位:Km

数值范围:

averageFuel

String

Y

平均油耗

单位:L/100km

数值范围:

精度: 0.1

无效值:201~255

validEngineCoolerTemperature

String

Y

发动机冷却液温度有效位

0:Not valid

1:Valid

engineCoolerTemperature

String

Y

发动机冷却液温度

单位:℃

偏移量:-40

无效值:0xFF

validSpeed

String

Y

车速有效位

0:Not valid

1:Valid

speed

String

Y

车身速度

单位:0.05625km/h

无效值:0x1901~0x1FFF

pm25Status

String

Y

PM2.5过滤状态

0:reserve

1:优

2:良

3:差

4:关闭

5~7:reserve

stealAlarmStatus

String

Y

盗警状态

0: Disarmed

1: Armed

2: Prearmed

3: Alarmed'

alarmType

String

Y

警情类型

1:碰撞上报

2:侧翻(预留)

3:盗警

4:欠压

5:断电

6: 儿童遗忘报警

alarmTimestamp

String

Y

警情上报时间戳

6. (可选)对接Grafana,可视化展示数据

(可选)对接Grafana,可视化展示数据

安装并启动Grafana服务。

1)在ECS服务器上,运行如下命令,安装Grafana。

wget https://database-experience.oss-cn-shanghai.aliyuncs.com/grafana-6.2.2-1.x86_64.rpm; yum install grafana-6.2.2-1.x86_64.rpm

2)执行如下命令,启动Grafana服务。

service grafana-server start

接入Lindorm数据库的时许引擎数据源。

1)登录Grafana。在浏览器中输入Grafana登录页面的URL地址:ECS公网地址:3000。

例如:ECS 的公网地址是 xxx.xx.xx.xxx,那么在浏览器中输入地址http://xxx.xx.xx.xxx:3000

登录名:admin

密码:admin

2)在Grafana中创建一个数据源。创建时,如下设置需指定信息,其他设置采用默认值即可。

数据库类型:OpenTSDB。

HTTP URL:Lindorm数据库的VPC网络地址。可进入数据库控制台的实例详情-基础信息-查看VPC网络查看。

OpenTSDB版本:==2.3。

Resolution:millisecond。

3)单击Save&Test。

说明:若界面上弹出提示语Data source is working,则表明Grafana已经成功连接上指定的数据库实例。

创建展示数据的监控视图,查看数据大盘(dashboard)。

说明:

本案例已为您提供监控视图模板,您可直接导入模板,一键生成数据大盘。

您也可访问参考文档,手动搭建数据大盘。

1)下载监控视图模板(点击下载)。

2)单击 + > Import,进入模板导入页面。

3)单击Upload .json File,上传模板文件后,单击Import,完成导入。

效果图如下:

实验链接:https://developer.aliyun.com/adc/scenario/60678b87284a42e59926ca2b432657fd

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
岩土工程监测中振弦采集仪的选型指南与市场概况
岩土工程监测中振弦采集仪的选型指南与市场概况 振弦采集仪是岩土工程监测中常用的一种设备,用于测量土体的振动特性。它的选型指南和市场概况如下:
岩土工程监测中振弦采集仪的选型指南与市场概况
|
传感器 监控 Linux
农业温室大棚数据监控系统的设计与实现
农业温室大棚数据监控系统的设计与实现
639 0
|
8月前
|
传感器 机器学习/深度学习 监控
实时交通信息采集与处理
实时交通信息采集与处理
342 3
岩土工程监测利器:多通道振弦数据记录仪应用铁路隧道监测
岩土工程监测利器:多通道振弦数据记录仪应用铁路隧道监测 岩土工程监测是工程建设中十分重要的一环,特别是在铁路隧道工程中,岩土工程监测更是不可或缺的一项。其中,振弦数据记录仪是一种非常重要的仪器,可以帮助监测人员实时监测隧道内部的变化,为工程的安全运行提供重要的保障。本文将着重介绍多通道振弦数据记录仪在铁路隧道监测中的应用。
岩土工程监测利器:多通道振弦数据记录仪应用铁路隧道监测
工程监测振弦采集仪在铁路监测中的应用
工程监测振弦采集仪在铁路监测中的应用
工程监测振弦采集仪在铁路监测中的应用
|
传感器 数据采集 安全
振弦采集仪及在线监测系统完整链条的岩土工程隧道安全监测
近年来,随着城市化的不断推进和基础设施建设的不断发展,隧道建设也日益成为城市交通发展的必需品。然而,隧道建设中存在着一定的安全隐患,如地质灾害、地下水涌流等,因此隧道工程的安全监测显得尤为重要。
振弦采集仪及在线监测系统完整链条的岩土工程隧道安全监测
工程监测振弦采集仪应用于铁路安全监测
随着铁路运输事业的发展,铁路的安全性和可靠性的问题愈加引起人们的关注。在铁路运输中,一旦出现问题,除了会影响乘客的安全,也会对铁路的运营和维护造成极大的困难。为了保证铁路的安全和可靠性,工程监测振弦采集仪被广泛应用于铁路监测,帮助人们及时发现和解决问题,提高铁路的运行效率。
工程监测振弦采集仪应用于铁路安全监测
|
传感器 数据采集 安全
工程监测振弦采集仪在铁路监测中的应用案例
工程监测振弦采集仪在铁路监测中的应用案例
工程监测振弦采集仪在铁路监测中的应用案例
|
传感器 SQL 监控
10分钟以内搭建好,阿里云AIoT教你如何精准监测机房温度
物联网发展速度日益加快,如何才能缩短物联网应用的开发流程、降低开发成本,是物联网企业关注的重点之一。阿里云AIoT作为物联网行业的引领者和创新者,为了帮助物联网企业完成设备上云的最后一公里,经过不断的沉淀,推出了物联网应用开发工具——IoT Studio。
736 0
10分钟以内搭建好,阿里云AIoT教你如何精准监测机房温度
地铁舆情监测方案
随着我国经济的飞速发展,地铁这一轨道交通工具已被大多数省份城市广泛使用。速度快、不塞车,在享受地铁带来的便捷时,也以“乘客”挑剔的视角对地铁运营服务提出意见和建议。

热门文章

最新文章