[toc]
永天数据平台物联网场景,构建“双引擎”模式将数据的生产,收集,处理,存储和服务进行封装,面向不同层级服务和应用提供不同服务形式,数据中台一般包括数据采集、数据集成、数据治理、数据应用和数据资产管理,另外还有诸如数据标准和指标建设.
graph LR
subgraph USKY-AGENT
data-agent
data-updater
end
data-agent -.tcp.-> data-acceptance
data-agent -.mqtt.-> mqtt-acceptance
data-updater --> updater-acceptance
subgraph USKY-IOT
data-acceptance
mqtt-acceptance
updater-acceptance
end
data-acceptance
subgraph USKY-Manager
iot-api
iot-web
end
updater-acceptance -->iot-api
data-acceptance --mq:data-collector--> data-transfer
mqtt-acceptance --mq:data-collector--> data-transfer
subgraph USKY-DATA
data-transfer
device-data-influxdb-writer
device-data-mysql-writer
device-data-judge
end
device-data-influxdb-writer --> InfluxDB
iot-api --> InfluxDB
iot-api --> mysql
iot-web --> iot-api
data-transfer --mq:device-data--> device-data-influxdb-writer
data-transfer --mq:device-data--> device-data-mysql-writer
data-transfer --mq--> device-data-judge
graph LR
subgraph USKY-AGENT
ytCore
ytDog
Device
end
ytDog -.tcp.-> ytDMPVersionServer
ytCore -.tcp.-> ytDMPDataServer
Device -.mqtt.-> ytDataCollectorCore
subgraph USKY-IOT
ytDMPDataServer
ytDMPVersionServer
ytDataCollectorCore
end
subgraph USKY-Manager
iot-api
iot-web
end
ytDMPVersionServer -->iot-api
ytDMPDataServer -.http.-> InfluxDB
ytDMPDataServer --mq:data-collector--> ytDeviceTypeInfluxdbWriter
ytDataCollectorCore --mq:data-collector--> ytDeviceTypeInfluxdbWriter
subgraph USKY-DATA
ytDeviceTypeInfluxdbWriter
end
ytDeviceTypeInfluxdbWriter --> InfluxDB
iot-api --> InfluxDB
iot-api --> mysql
iot-web --> iot-api
Data-acceptance 自定义协议设备接入,解码服务,当前按照设备类型形成独立中间件,ytDP0001、ytDP0002、ytDP0003、ytDP00033、ytDP0006、ytDP0007、ytDP0008
Mqtt-acceptance mqtt协议设备接入,解码服务
Data-tsdb-writer-mongo 数据存储服务
Data-tsdb-writer-influxdb 数据存储服务(研究)
Data-cache 实时缓存服务
Data-query. 数据查询服务
统一接收格式
{
"metrics": {
"温度": 1000,
"电量":77,
"f1":-144
},
"tags":{
"connType":"G",
"type":"INFO"
}
"deviceId": "1000001",
"deviceType":"表",
"productId": "52e1a2798c0a4335855648decf24de5a",
"timestamp": 1636456995855
}
存储设计
* 数据存储策略: 每个ns的每个metric的每个自然小时的数据存储到一个文档中.
* id: ns_metirc_本小时0分的毫秒时间戳
* maxTime: 下个小时0分的时间
* minTime: 本小时0分的时间
* vs中是本小时的数据,每个key代表从本小时的0分到数据时间的秒数(因为数据是个double值,本身很小,数据占用存储的部分都被时间戳占用了,
* 所以通过把和本小时0分的相对值作为key,减少时间戳暂用的存储大小)
{
"_id" : "13062509066_speed_1638691200000",
"maxTime" : ISODate("2021-12-05T09:00:00Z"),
"metric" : "speed",
"minTime" : ISODate("2021-12-05T08:00:00Z"),
"ns" : "13062509066",
"vs" : {
"2921" : 30,
"2937" : 30,
"2951" : 30,
"2967" : 30,
"2981" : 30,
"2997" : 30,
"3011" : 30,
"3027" : 30,
"3041" : 30,
"3057" : 30,
"3071" : 30,
"3087" : 30,
"3101" : 30,
"3521" : 30
}
}
{
"_id" : "13062509066_loc_1638691200000",
"maxTime" : ISODate("2021-12-05T09:00:00Z"),
"metric" : "loc",
"minTime" : ISODate("2021-12-05T08:00:00Z"),
"ns" : "13062509066",
"vs" : {
"2921" : {
"lat" : 30.04181,
"lng" : 117.784129
},
"2937" : {
"lat" : 32.041809,
"lng" : 118.784129
},
"2951" : {
"lat" : 30.04181,
"lng" : 117.784129
},
"2967" : {
"lat" : 32.041809,
"lng" : 118.784129
},
"2981" : {
"lat" : 30.04181,
"lng" : 117.784129
},
"3521" : {
"lat" : 30.04181,
"lng" : 117.784129
}
}
}
curl --location --request POST 'http://127.0.0.1:10020/device/data' \
--header 'Content-Type: application/json' \
--data-raw '{
"metrics": {
"mileage": 1000,
"speed": 13.5
},
"tags": {
"connType":"G",
"type":"INFO"
},
"deviceId" : "13062509066",
"productId": "52e1a2798c0a4335855648decf24de5a",
"timestamp": 1655712711
}'
curl --location --request POST 'http://127.0.0.1:10111/aggregateMetricsDataForSingleDevice' \
--header 'Content-Type: application/json' \
--data-raw '{
"deviceId": "13062509066",
"startTime": 1655712711000,
"endTime": 1655712711000,
"fieldNames": ["loc","speed"],
"limit": true
}'
https://help.aliyun.com/document_detail/116264.html
https://help.aliyun.com/document_detail/141858.html
graph LR
a[产品]
b[设备]
c[设备类型]
d[指标]
a --1-N--> b
b --N..1--> c
c --1..N --> d
设备系统名称 | 设备编码 | 设备简称 | 设备指标 |
---|---|---|---|
火系统 | |||
水系统 | |||
烟感系统 | |||
消防栓 | |||
液位 | |||
Rtu | |||
设备信息表
设备ID,设备类型, 厂商型号
Emqx
mongo --host 106.14.25.32 --port 25000
> show dbs;
admin 0.000GB
config 0.000GB
device-data 39.409GB
device_wifi_data 8.618GB
local 0.000GB
spoi 43.921GB
test 0.006GB
> use device-data
switched to db device-data
> show collections;
deviceDataEntity
paasdeviceDataEntity
> db.deviceDataEntity.find({'_id':'868120262119982_speed_1637964000000'}).pretty();
查询所有
db.deviceDataEntity.find().pretty();
db.deviceDataEntity.find({'_id':'13062509066_loc_1639062000000'}).pretty()
influxdb
kafka(待定)
redis
https://book.open-falcon.org/zh_0_2/ https://blog.csdn.net/ludongguoa/article/details/121168818 https://baijiahao.baidu.com/s?id=1721161998997866645&wfr=spider&for=pc
thingskit
https://docs.thingskit.com/thingskit-link/#thingskit%E7%AE%80%E4%BB%8B
https://demo.thingskit.com/system/customize
cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo [influxdb] name = InfluxDB Repository - RHEL \$releasever baseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stable enabled = 1 gpgcheck = 1 gpgkey = https://repos.influxdata.com/influxdb.key EOF
28W
16+12
4W
永天 | XC_V_CT_PTCY_SZPT_APP_47 | 4 | 8 | 100 | 200 | 银河麒麟V10 | 政务网区 | 知识库门户、交通应用服务器 | 10.86.135.220 | 100.68.50.127 | 172.31.18.9 | root/T9@xl683!6cK | 18873c2d -028b-4680-bd98-a764c8a8d7 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
XC_V_CT_PTCY_SZPT_DB_11 | 4 | 8 | 100 | 500 | 银河麒麟V10 | 政务网区 | [数据库]交通数据库服务器 | 10.86.135.161 | 100.68.159.226 | 172.31.18.26 | root/j!@4!N!M!6cK | 0b063f14 -372d-44c7-929a-db93fcc4ed |
---|---|---|---|---|---|---|---|---|---|---|---|---|
移动平台
1)一次软件上架;