生物数据基础分析服务协议

生物数据(EEG、HR等)的基础分析服务。此部分数据为情感计算服务的数据基础。需要先初始化并上传生物数据,才能进行情感计算服务。

服务 操作 备注
biodata init 启动、初始化生物数据基础分析服务
subscribe 订阅实时生物数据
unsubscribe 取消订阅实时生物数据
upload 上传数据
report 获取当前生物数据报表

Biodata init

启动、初始化生物数据基础分析服务。

init Request 结构体

[!NOTE]

  • 脑电检测容差等级,从原始数据中提取脑电信号时对信号质量的容许程度。
  • 该值越大,对佩戴情况的要求越低,在受到干扰时输出数据的概率较高,但其中包含噪声的概率也较高;
  • 该值越小,对佩戴情况的要求越高,在受到干扰时可能无法输出数据,但输出的数据中包含噪声的概率较小;
  • 参数 bio_data_tolerance : eeg,此参数为可选参数,取值范围为 0~4,默认值为 2。
{
    "services": "biodata",
    "op": "init",
    "kwargs": {
        "bio_data_type": [ 
            bio_data_type1,  # 需要初始化的生物数据分析服务类型,eeg、hr
            bio_data_typeN
        ],
        "bio_data_tolerance": {  # 可选参数
            "eeg": 1  # key: eeg、hr,目前只支持eeg;value: 0--4,默认2
        }
    }
}
类型 备注
bio_data_type eeg
hr
bio_data_tolerance eeg bio_data_tolerance 为可选参数
hr bio_data_tolerance 为可选参数

init Response 结构体

{
    "code": 0,
    "request": {
        "services": "biodata",
        "op": "init"
    },
    "data": {
        "bio_data_type": [
            bio_data_type1, # 已经初始化的生物数据分析服务类型
            bio_data_typeN
        ]
    }
}

Biodata Subscribe

订阅生物数据分析服务的实时数据。分析返回值为可选服务,如果你需要实时接收分析返回的值,则开启此订阅,并配置要返回的参数。具体参数见下表。

  • 注意:Subscribe有两种Response
    • 订阅成功Response
    • 订阅数据Response

实时生物数据分析返回值

类别 参数 类型 取值范围 说明
eeg eegl_wave list[float] [-2.4e6, 2.4e6]*100 左通道脑电波形片段,初始阶段返回为空数组,之后返回数组长度为100
eegr_wave list[float] [-2.4e6, 2.4e6]*100 右通道脑电波形片段,初始阶段返回为空数组,之后返回数组长度为100
eeg_alpha_power float [0, 1] 脑电α频段能量占比
eeg_beta_power float [0, 1] 脑电β频段能量占比
eeg_theta_power float [0, 1] 脑电θ频段能量占比
eeg_delta_power float [0, 1] 脑电δ频段能量占比
eeg_gamma_power float [0, 1] 脑电γ频段能量占比
eeg_quality int {0, 1, 2, 3, 4} 脑电信号质量等级 0表示未检测到佩戴,电极与皮肤接触不良 1表示检测到数据但没有有效脑电信号 2表示检测到脑电信号但信噪比较低,只显示波形而不进行计算 3表示检测到脑电信号质量正常,可进行正常计算 4表示检测到脑电信号质量很好,信噪比较高,计算结果更准确
hr hr int [0, 255] 心率值
hrv float [0, 255] 心率变异性

Subscribe Request 结构体

{
    "services": "biodata",
    "op": "subscribe",
    "kwargs": {
        bio_data_type1: [ # 生物数据类型,eeg、hr等
            data_type1, data_type2, data_typeN  # 配置你要返回的参数,详见 实时生物数据分析返回值表 参数 列
        ],
        bio_data_typeN: [
            data_type1, data_type2, data_typeN
        ]   
    }
}

Subscribe Response 结构体

订阅状态Response

{
    "code": 0,
    "request": {
        "services": "biodata",
        "op": "subscribe"
    },
    "data": {
        "sub_" + bio_data_type1 + "_fields": [ # bio_data_type1: 生物数据类型,eeg、hr等
            data_type1, data_typeN  # 详见 实时生物数据分析返回值表 参数 列
        ],
        "sub_" + bio_data_typeN + "_fields": [
            data_type1, data_typeN,
        ]
    }
}

订阅数据Response

返回的数据取决于 Subscribe 时设置的数据。

{
    "code": 0,
    "request": {
        "services": "biodata",
        "op": "subscribe"
    },
    "data": {
        bio_data_type1: {  # 生物数据类型,eeg、hr等
            data_type1: data1,    # 详见 实时生物数据分析返回值表
            data_typeN: dataN,
        },
        bio_data_typeN: {
            data_type1: data1,
            data_typeN: dataN,
        }
    }
}

Biodata Unsubscribe

取消订阅生物数据分析服务实时数据。

Unsubscribe Request 结构体

{
    "services": "biodata",
    "op": "unsubscribe",
    "kwargs": {
        bio_data_type1: [ # 要取消订阅的生物数据类型,eeg、hr等
            data_type1, data_type2, data_typeN  # 详见 实时生物数据分析返回值表 参数 列
        ],
        bio_data_typeN: [
            data_type1, data_type2, data_typeN
        ]   
    }
}

Unsubscribe Response 结构体

{
    "code": 0,
    "request": {
        "services": "biodata",
        "op": "unsubscribe"
    },
    "data": {
        "sub_" + bio_data_type1 + "_fields": [ # bio_data_type1: 正在订阅的生物数据类型,eeg、hr等
            data_type1, data_typeN
        ],
        "sub_" + bio_data_typeN + "_fields": [
            data_type1, data_typeN,
        ]
    }
}

Biodata Upload

客户端上传生物数据。客户端将从硬件接收到的数据拼接,满足一定数量之后上传。如脑电数据为从硬件接收到 30 个包拼接一次,然后上传;心率则为每 2 个包拼接一次,然后上传。具体见以下描述。

Upload Request 结构体

{
    "services": "biodata",
    "op": "upload",
    "kwargs": {
        bio_data_type1: data, # bio_data_type1 生物数据类型, 如 eeg、hr等; data: 拼接后的生物数据包(data=[126, 45, 24, 67 ... 34, 154, 200, 123, 875]; len(data) == 600),详见客户端生物数据(biodata)的处理。
        bio_data_typeN: dataN
    }
}

客户端生物数据(biodata)的处理

bio_data_type 描述 客户端每次上传拼接包数 从硬件接收数据包间隔时间 客户端上传理论间隔时间
eeg 双通道脑电数据 30 12 ms 360 ms
hr 心率数据 2 200 ms 400 ms

双通道脑电数据处理

将脑电数据包内的字节按照顺序转换为 10 进制无符号整型。将转换后的数据存成列表,转换完成后的列表,包含 20 个数据。

客户端脑电数据处理
Figure: 客户端脑电数据处理

将 20 个脑电数据包,即 600 个数据拼接成为一个列表,然后将此列表通过情感云脑电接口上传情感云服务器。

心率和佩戴检测数据处理

客户端心率数据处理
Figure: 客户端心率数据处理
  • 将心率/佩戴检测数据转换为 10 进制无符号整型。
  • 将 2 次心率/佩戴检测数据存成列表,然后通过情感心率/佩戴检测接口上传到情感云服务器。

Biodata Report

获取生物数据分析统计报表。返回从开始到执行此操作区间的所有 biodata 的分析值。返回的报表结果见下表。

[!NOTE]

  • 数据报表为阶段性生成,每次请求 report 之后都会清除生成 report 的数据,再次请求则返回的为上次请求 report 到这一次请求之间的数据报表。
  • 为防止网络不稳定,导致 report 返回失败,我们每次请求的Report 会保留 2 分钟,2 分钟内请求的report 为上一次分析的分析结果。2 分钟后我们会清除生成 report 的数据,再次请求则返回的为上次请求 report 到这一次请求之间的数据报表。
  • 测试应用 report 保留时间为 1 分钟。

生物数据报表调用间隔

[!NOTE]

  • 会话过程中或结束时若已经接收到(subscribe) 达到次数,则可调用,否则返回值为空或0。
  • Report为阶段性数据,会清空前阶段数据,请开发者尽量控制调用频次(建议只在使用结束时调用一次)。
类别 需要收到subscribe次数 调用间隔
eeg 20 2min
hr 20 2min

生物数据分析统计报表

类别 参数 类型 取值范围 说明
eeg eeg_alpha_curve list[float] [0, 1]*k, (k≥20) 脑电α频段能量变化曲线
eeg_beta_curve list[float] [0, 1]*k, (k≥20) 脑电β频段能量变化曲线
eeg_theta_curve list[float] [0, 1]*k, (k≥20) 脑电θ频段能量变化曲线
eeg_delta_curve list[float] [0, 1]*k, (k≥20) 脑电δ频段能量变化曲线
eeg_gamma_curve list[float] [0, 1]*k, (k≥20) 脑电γ频段能量变化曲线
hr hr_avg float [0, 255] 心率平均值
hr_max float [0, 255] 心率最大值
hr_min float [0, 255] 心率最小值
hr_rec list[int] [0, 255]*k, (k≥20) 心率值全程记录
hrv_rec list[float] [0, 255]*k, (k≥20) 心率变异性全程记录
hrv_avg float [0, 255] 心率变异性平均值

Report Request 结构体

{
    "services": "biodata",
    "op": "report",
    "kwargs": {
        "bio_data_type": [
            bio_data_type1,   # 生物数据类型,eeg、hr等
            bio_data_typeN
        ]
    }
}

Report Response 结构体

{
    "code": 0,
    "request": {
        "services": "biodata",
        "op": "report"
    },
    "data": {
        bio_data_type1: { # 生物数据类型,eeg、hr等
            data_type1: data1,  # 详见 生物数据分析统计报表 参数 列,data: 详见生物数据分析统计报表 类型、取值范围等
            data_typeN: dataN,
        },
        bio_data_typeN: {
            data_type1: data1,
            data_typeN: dataN,
        }
    }
}
© Entertech 2019 all right reserved,powered by Gitbook该文件修订时间: 2019-11-29 06:38:15

results matching ""

    No results matching ""