协议 - SaberGuo/thc-platform GitHub Wiki

基本需求

  1. 数据上传
  2. 获取配置文件
  3. 图片上传
  4. 设备信息更新
  5. 时间更新

基本格式与交互逻辑

采集数据上传格式

  • 采集器发送
{
	device_id: 'xxxxxx',
	device_config_id: 'xxxxxx',
	method: 'push_data',
	package: {
		'$ts': {
			'$user_define_key_name': {
				value: 'x'
			},
			'$user_define_key_name': {
				value: 'x'
			},
			...
		},
		'$ts': {
			'$user_define_key_name': {
				value: 'x'
			},
			'$user_define_key_name': {
				value: 'x'
			},
			...
		},
		...
	}
}
  • 服务器回复
{
	device_id: 'xxxxxx',
	method: 'data_uploaded'
	ts: 1479798416
}

控制数据请求格式

  • 采集器发送
{
	device_id: 'xxxxxx',
	method: 'pull_param'
}
  • 服务器回复
{
	"device_id": 35,
	"device_config_id": 100,
        "method":"push_param",
	"image" [                            //当port为image时,划归为image这个字段,当其他port为其他的时候划归为data
		{
			"port": "image",
			"port_num": 0,       //port_num start from 0
			"sensor_type": "self_cam",
                        "keys":{"0":"image"} //keys' num start from 0
		},
	],
	"data": [
		{
			"port": "serial",
			"port_num": 0,
			"sensor_type": "nh122",
                        "keys":{"0":"temperature","1":"humidity"}
		},
                {
			"port": "ad",
			"port_num": 0,
			"sensor_type": "nhzd10",
                        "keys":{"0":"solar"}
		},
	],
	"control":{
		"data_upload_invl":"4,14,24,34,44,54 * * * *"
		"data_capture_invl":"3,13,23,33,43,53 * * * *"
		"img_capture_invl":"25 9,10,13,14 * * *"
		}
}
  • 采集器回复
{
	device_id: 'xxxxxx',
	method: 'param_updated'
}

图片数据上传格式

  • 采集器发送
{
	device_id: 'xxxxxx',
	device_config_id: 'xxxxxx',
	method: 'push_image',
	key: 'image',
	size: 2048,
	ts: 1479798416
}

size代表字节数

  • 服务器回复
{
	device_id: 'xxxxxx',
	method: 'push_image_ready'
	ts: 1479798416
}
  • 采集器发送图片内容,一包512字节,直到发送size==采集器通知的size,完毕后回复
{
	device_id: 'xxxxxx',
	method: 'image_uploaded',
	ts: 1479798416
}
  • 采集器发送完毕了,需要告诉服务器关闭链接
{
	device_id: 'xxxxxx',
	method: 'close_connection',
}

图片文件保存路径为device_id/acquisition_time.jpg

采集器发送失败服务器统一回复格式

  • 服务器回复
{
	method: 'failed',
	ts: 1479798416
}

采集器发送设备信息更新

  • 采集器发送位置信息
{
        device_id: 'xxx',
        method:  'update_device_info',
        info: {
              lat: 21.0,
              lon: 112.0,
              alt: 100
        },
        ts : 1479798416
}
  • 服务器回复信息
{
        device_id: 'xxx',
        method: 'updated_device_info',
        ts: 1479798416
}

采集器发送时间更新

  • 采集器发送请求
{
        method:  'update_time'
}
  • 服务器回复信息
{
        ts: 1479798416
}