1. 概述

1.1. 文档说明

生物雷达数据接口,用于推送生物雷达数据至客户服务器,URL接口数据接口需要客户自行实现。

文档日志
序号 修改人 修改日期 修改内容 版本号
1 ome 2018-8-16 15:01:36 新增sn序列号信息推送 V1.0.1
2 ome 2018-8-22 10:01:36 新增signal信号值信息推送,完善在床状态信息 V1.0.2
3 ome 2018-12-19 15:31:41 新增睡眠报告推送接口 V1.0.3
4 ome 2019-3-19 09:00:07 新增在床状态信息 V1.0.4
5 ome 2019-10-8 15:21:12 新增实时数据单双雷达信息区分 V1.0.5
6 ome 2020-3-17 11:48:44 新增报告推送单双雷达信息区分 V1.0.6
7 ome 2020-6-9 13:09:46 新增推送接口说明,新增驻留时长、预警类型、呼吸状态推送(BR07卫生间场景专用) V1.0.7
8 ome 2020-11-4 17:50:22 新增在线状态说明 V1.0.8
9 ome 2021-4-28 11:12:00 设备序列号统一调整为int类型 V1.0.9
10 ome 2022-1-13 18:14:37 新增跌倒设备预警类型14 V1.0.10
11 ome 2022-3-10 11:14:37 新增java接口样例 V1.0.11
12 ome 2022-3-18 11:42:28 优化接口字段说明 V1.0.12
13 ome 2022-9-23 14:25:25 报告接口新增上床、离床时间 V1.0.13
14 ome 2022-10-08 14:25:25 实时、报告接口新增设备类型 V1.0.14
15 ome 2023-8-29 11:13:52 报告接口新增鼾声次数、止鼾次数 V1.0.15

2. 接口

2.1. 实时数据接口

客户提供接口,以接收服务器推送的信息。(根据生物雷达监测的数据计算各项信息后,返回给客户)

基本信息
  • 请求url:http://api.example.com/datapost(由客户提供的接口链接)

  • 请求协议:HTTP

  • 请求方式:POST

  • 请求格式:application/json

  • 推送间隔:5-15 s

请求参数
字段 参数位置 类型 默认值 必输项 结构 描述
body cust_json

<RadarData>

根据json格式转为JSON字符串。详细定义请见下文RadarDataEntity说明
[RadarData]
[
  {
    "mac": "3C71BF2E9999",
    "sn": "",
    "radarNumber": 1,
    "deviceModel": 35,			
    "heartRate": 0,
    "respiratoryRate": 0,
    "turn": 0,
    "online": 2,
    "isbed": 0,
    "signal": 29,
    "stayTime": 30,
    "alarmType": 6,
    "breathStatus": 10,
    "ip": "118.196.253.149",
    "timeStamp": "2019-10-08 15:17:22.513"
  },
  {
    "mac": "3C71BF2E9999",
    "sn": "",
    "radarNumber": 2,
    "deviceModel": 35,
    "heartRate": 66,
    "respiratoryRate": 20,
    "turn": 3,
    "online": 2,
    "isbed": 1,
    "signal": 67,
    "stayTime": 30,
    "alarmType": 6,
    "breathStatus": 10,
    "ip": "118.196.253.149",
    "timeStamp": "2019-10-08 15:17:22.513"
  }
]
                                               
[RadarDataEntity]
字段 类型 非空 结构 描述
mac string 设备MAC地址
sn string 设备序列号,按需获取
radarNumber int 设备雷达序号(默认为1。1:雷达一数据,2:雷达二数据,同时表示该设备为双雷达。)
deviceModel int 设备型号(防跌倒默认为34,智能床默认为35,具体型号请咨询获取,防跌倒无报告)
heartRate int 心率
respiratoryRate int 呼吸率
turn int 翻身次数
online int 是否在线(0:离线,1:在线。超过N秒接收不到数据自行判断离线,建议值为60秒以上)
isbed int 在床状态(0:离床,1:在床,11:分析中,21:设备异常)
signal int 信号值(信号值越大表示监测对象的体征信号强度越大,一般30以上表示有人)
stayTime int 驻留时长(默认为0,BR07卫生间场景特有属性,单位:分钟)
alarmType int 预警类型(默认为0,卫生间场景属性;0:正常,6:驻留时间超过n分钟,7:体征数据异常,14:跌倒预警)
breathStatus int 呼吸状态(默认为0,BR07卫生间场景特有属性;值越大表示呼吸越平稳)
ip string 设备上传IP地址,按需获取
timeStamp string 时间(2017-03-25 17:18:24.456)
接口参考实例C#

        [HttpPost("/api/datapost")]
        [AllowAnonymous]
        public IActionResult datapost()
        {
            string resultJosn = "";
            try
            {
                resultJosn = "{\"code\": 1,\"msg\": \"未知异常\"}";
                Stream stream = HttpContext.Request.Body;
                //获取响应内容
                using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
                {
                    string requestDataStr = reader.ReadToEnd();
                    string getPostTime = "";
                    var arr = JArray.Parse(requestDataStr);
                    var msg = "post成功,data数据有" + arr.Count + "个";
                    if (arr.Count > 0)
                    {
                        getPostTime = arr[0]["timeStamp"].ToString();
                    }

                    resultJosn = "{\"code\": 0,\"msg\": \"ok\"}";
                }
            }
            catch (Exception ex)
            {
                resultJosn = "{\"code\": 1,\"msg\": \"" + ex.Message + "\"}";
            }
            return Content(resultJosn);
        }
                                               
接口参考实例JAVA
	@PostMapping("/api/datapost")
    public String datapost(HttpServletRequest request) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
        String line = null;

        StringBuilder sb = new StringBuilder();
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }

        String reqBody = sb.toString();
        JSONArray pbj = JSONUtil.parseArray(reqBody);

        String msg = "post成功,data数据有" + pbj.size() + "个";

        StringBuilder returnJson = new StringBuilder();
        returnJson.append("{");
        returnJson.append("\"ret\":0,");
        returnJson.append("\"msg\":\"" + msg + "\",");
        returnJson.append("\"err_code\":0");
        returnJson.append("}");

        String rjson = returnJson.toString();
        return rjson;
    }
                                               

2.2. 睡眠报告接口

客户提供接口,以接收服务器推送的信息。(根据生物雷达监测的数据计算生成报告后,返回给客户)

基本信息
  • 请求url:http://api.example.com/reportpost(由客户提供的接口链接)

  • 请求协议:HTTP

  • 请求方式:POST

  • 请求格式:application/json

请求参数
字段 参数位置 类型 默认值 必输项 结构 描述
body report_json

<RadarReportData>

根据json格式转为JSON字符串。详细定义请见下文RadarReportDataEntity说明
[RadarReportData]
	[
    {
		"sleep_id":"20181202160510607437",
        "mac": "5CCF7F6A7B31",
        "sn": "182024",
        "radar_number": 1,
        "device_model": 35,
        "snore_times": 0,
        "stopsnore_times": 0,
        "inbed_time": 158,
        "outbed_time": 0,
        "sleep_time": 16,
        "deep_sleeptime": 0,
        "light_sleeptime": 16,
        "rem_time": 0,
        "wake_time": 142,
		"sleep_score": 72,
        "fall_sleeptime": 124,
        "stime": "16:22",
        "etime": "19:01",
        "sdate": "2018-12-02 16:22:00",
        "edate": "2018-12-02 19:01:00",
        "date": "2018年12月02-02日",
        "turn_count": 0,
        "heart_rate": 73,
        "breath_rate": 13,
        "heart_rate_h": 75,
        "breath_rate_h": 15,
        "heart_rate_l": 71,
        "breath_rate_l": 11,
        "outbed_times": 0,
        "assess_result": {
            "types": [
                {
                    "type_name": "入睡困难"
                },
                {
                    "type_name": "睡眠质量过低"
                }
            ],
            "reason": [
                {
                    "reason_name": "入睡时长超过30分钟"
                },
                {
                    "reason_name": "可能睡前专注看手机,如长文章等"
                },
                {
                    "reason_name": "综合评分过低,主要影响因素为深睡比例和入睡速度"
                }
            ],
            "program": [
                {
                    "program_name": "睡前一小时降低环境亮度,播放舒缓音乐放松心情,缓慢平衡地呼吸。"
                },
                {
                    "program_name": "睡前喝点热牛奶"
                },
                {
                    "program_name": "少玩手机"
                },
                {
                    "program_name": "4-7-8呼吸法:利用鼻子吸气4秒,憋气7秒,最后再呼气8秒,做3次循环"
                }
            ],
            "more": [
                {
                    "title": "睡眠的生理过程是怎样的?",
                    "url": "http://ask.medix.cn/answers/008c0f5be212e2633f8496411e8ef485.htm?ad=off"
                },
                {
                    "title": "什么样的环境益于睡眠?",
                    "url": "http://ask.medix.cn/answers/4053ff42cd211c56df9d73098d521d0f.htm?ad=off"
                },
                {
                    "title": "更多睡眠知识",
                    "url": "http://ask.medix.cn/1a69de81f43998b703805e5cbf43c6c4.htm?ad=off"
                }
            ]
        },
        "user_sleepScore": 70,
        "user_scoreWords": "睡眠质量一般",
        "user_vsAllPeople": "战胜全国 65% 的小伙伴",
        "datelist": ["2018-12-02 16:22:54","2018-12-02 16:24:54",...,"2018-12-02 23:12:54"],
        "resplist": [23,21,..., 23],
        "cyclelist":[1,8,...,0],
        "turnlist": [1,1,...,0],
        "rexlist": [25,25,...,75 ],
        "heartlist": [85,83,...,85]
    }
]
                                               
[RadarReportDataEntity]
字段 类型 非空 结构 描述
sleep_id string 睡眠报告ID
mac string 设备MAC地址
sn string 设备序列号,按需获取
radar_number int 设备雷达序号(默认为1。1:雷达一数据,2:雷达二数据,同时表示该设备为双雷达。)
device_model int 设备型号(防跌倒默认为34,智能床默认为35,具体型号请咨询获取,防跌倒无报告)
snore_times int 鼾声次数
stopsnore_times int 止鼾次数
inbed_time int 在床时间(分钟)
outbed_time int 离床时间(分钟)
sleep_time int 睡眠时间(分钟)
deep_sleeptime int 深睡时间(分钟)
light_sleeptime int 浅睡时间(分钟)
rem_time int REM时间(分钟)
wake_time int 清醒时长(分钟)
sleep_score int 睡眠效率
fall_sleeptime int 入睡用时(分钟)
stime string 上床时间(时分,如22:40)
etime string 起床时间(时分,如22:40)
sdate string 上床日期(时分,如2018-12-02 22:40:00)
edate string 起床时间(时分,如2018-12-03 08:40:00)
date string 报告日期( "2018年12月02-03日")
turn_count int 翻身次数(次)
heart_rate int 平均心率(次/分)
breath_rate int 平均呼吸频率(次/分)
heart_rate_h int 心率最高值
breath_rate_h int 呼吸频率最高值
heart_rate_l int 心率最低值
breath_rate_l int 呼吸频率最低值
outbed_times int 离床次数
assess_result object 评估及诊断信息
  types object 评估结果
    type_name string 评估结果说明
  reason object 诊断结果
    reason_name string 诊断结果说明
  program object 建议方案
    program_name string 建议方案说明
  more object 相关问答
    title string 相关问答标题
    url string 相关问答URL
user_sleepScore int 睡眠质量
user_scoreWords string 睡眠结果
user_vsAllPeople string 睡眠对比结果
datelist array 日期数组
resplist array 呼吸频率数组,与datelist对应
cyclelist array 周期数组,与datelist对应。含义:
0:深睡
1:浅睡,第一个浅睡点为入睡点
2:REM
3:短时离床,也相当于起夜
4:离床,报告以外的周期
5:上床点
6:起床点
7:入睡过程,上床点5和入睡点8之间的为清醒点
8:入睡点
9:短时间网络异常,长时间则会结束计算报告处理
turnlist array 翻身数组,与datelist对应
rexlist array 睡眠曲线数组,与datelist对应
heartlist array 心率数组,与datelist对应
接口参考实例C#
  if ("POST" == _context.Request.RequestType)
	{
		//传data
		Stream stream = _context.Request.InputStream;
		string requestDataStr = "";
		if (stream != null && stream.Length > 0)
		{
			using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
			{
				requestDataStr = reader.ReadToEnd().ToString();
			}

		}

		var arr = JArray.Parse(requestDataStr);
		var msg = "post成功,data数据有" + arr.Count + "个";

		StringBuilder returnJson = new StringBuilder();
		returnJson.Append("{");
		returnJson.Append("\"ret\":0,");
		returnJson.Append("\"msg\":\"" + msg + "\",");
		returnJson.Append("\"err_code\":0");
		returnJson.Append("}");

		rjson = returnJson.ToString();

		_context.Response.Write(rjson);
	}