Skip to content

监测仪数据外发结构概述

监测仪会在有网络连接的前提下定时向预设的网络接口以 HTTP 协议的格式发送 POST 请求,用以向网站传递设备信息以及实时气体浓度数据。

目前设备外发数据的接口有以下五种:

  • token 请求接口: http://[hostname:port]/[apipath]/getToken 用以发送用户名密码验证信息并获取返回的验证 token 。该 token 将被用于以下另四种 api 接口的身份验证。

  • 设备信息上传接口: http://[hostname:port]/[apipath]/deviceInfo 用于上传监测仪的设备名称、序列号、经纬度位置信息以及所属用户。

  • 摄像机信息上传接口: http://[hostname:port]/[apipath]/cameraSource 用于上传摄像机的 camera id、摄像机画面的远程获取 url 和所属设备。

  • 传感器信息上传接口: http://[hostname:port]/[apipath]/sensorInfoUpdate 用于传递设备上气体浓度传感器的名称、代号、类别、上下限阈值和所属设备。

  • 实时气体浓度数据上传接口: http://[hostname:port]/[apipath]/realtimeDataUpload 用于上传设备中所有气体传感器的实时浓度数据。该接口一般会同时上传所有气体浓度数据,因此发送的数据结构是数组形式。

各接口 POST 请求的具体负载格式

token 请求接口

headers = {
    "Content-Type": "application/json"
}
body = {
    "name": "admin",  //用户名
    "password": "password"    //密码
}
token 请求接口的返回值 json 需要遵循以下格式,不然设备无法正确获取 token:
{
    "message": "Authenticated.",
    "success": true,
    "token": token  //此处token为真实token值
}
如果验证失败,则 "success" 返回 false, "message" 返回 "Unauthenticated"。

设备信息上传接口

headers = {
    "Content-Type": "application/json",
    "token": token
    // 这里的 token 需要从getToken接口的返回值中获取
}
body ={
    "deviceid": "HY001", //设备唯一id
    "serialnumber": "B221236CDE341",  //设备序列号
    // 经纬度位置信息
    "coordinate": {
        "latitude": 31.1304933,  //纬度
        "longitude": 120.6100298,  //经度
        "altitude": 0.0  //海拔
    },
    "user": "admin"  //所属用户名
}

摄像机信息上传接口

headers = {
    "Content-Type": "application/json",
    "token": token
    // 这里的 token 需要从getToken接口的返回值中获取
}
body = {
    "cameraid": "HY001CAM", //摄像机唯一id
    // 摄像机画面获取 url
    "url": "http://222.92.212.253:61120/tjai/HY001/index.m3u8",
    // 所属设备名称
    "device": "HY001",
}

传感器信息上传接口

headers = {
    "Content-Type": "application/json",
    "token": token
    // 这里的 token 需要从getToken接口的返回值中获取
}
body = {
    "name": "H2SSensor",  //传感器名称,不唯一
    "code": "HY001H2S",  //传感器唯一代号
    "type": "3",  //传感器类型
     //高报警值,显示的数值应该是上传值除以100。如上传2000,显示的应该是 20,单位同实时数据中的单位。
    "upperthreshold": 2000,
    "bottomthreshold": 500,  //低报警值,同样需要除以100。
    "device": "HY001"  //所属设备名称
}

实时气体浓度数据上传接口

headers = {
    "Content-Type": "application/json",
    "token": token
    // 这里的 token 需要从getToken接口的返回值中获取
}
body = {
    // 实时数据的时间戳,自 Epoch 以来的毫秒数。
    // 注:因为设备上的时间由于开关机及网络问题可能不准,所以新版本设备上该键名不再上传。
    // 服务端如果需要上传时间建议自己 new 一个。
    "updatetime": new Date(), 
    "device": "HY001",  //所属设备名称
    //实时数据,数组形式
    "sensordata": [
        {
    //传感器唯一代号,其中"HY001"同设备名,"O2"是气体名称,"01"是手持式(即P20)编号。下同
            "sensorinfo": "HY001O201",  
    //实时气体浓度数据,其真实值需要除以100,如此处应该是20.5%Vol,下同。
            "concentration": 2050,  
            "unit": "%Vol",   //气体浓度单位
        },
        {
            "sensorinfo": "HY001LEL01",
            "concentration": 7190,
            "unit": "%LEL",
        },
        {
            "sensorinfo": "HY001H2S01",
            "concentration": 360,
            "unit": "ppm",
        },
        {
            "sensorinfo": "HY001CO01",
            "concentration": 840,
            "unit": "ppm",
        }
    ]
}