资源(Resources) ======================================= 根据最佳实践,设备云与其他APP或服务将采用REST API接口。其目的是将内部对象通过Web API的方式暴露给外部世界,并利用HTTP Method对应与对象的CRUD操作。这种内部对象就是 **资源** 。其命名规则是英语名词复数。 IoT服务器并不会将所有对象暴露给外部世界。 ==================== 内建资源 ==================== * Users, 用户本身也是资源 * Markdown,用户创建的网页 * Devices,联网设备 * CachedStreams,Cache热点数据报文,更新频率<1秒,保存时间<5秒 * DataStreams,SQL管理数据库中结构化数据,用于保存更新频率适中的数据 * DataPoints,SQL数据库中数据可以按照时间和设备检索 * ArchivedStreams,归档数据,每日从SQL数据库中归档,只可按照日期检索 * Triggers,触发器,满足物理量的触发门限 * APIKeys,密钥,相关CRUD操作和授权 * Jobs,任务集合,系统创建,用户可查阅 * Reports,报表生成(设备服务器不再负责报表创建) .. csv-table:: 资源与用户权限(CRUD) :header: "资源","访客","用户","设备员","管理员","备注" :widths: 20,10,10,10,10,40 "Users","C","RU","R","R/D","用户创建,管理员可删除" "Markdown","N","CRUD","R","R/D","用户创建,管理员可删除" "Devices","N","R","CRUD","RUD","设备员负责设备CRUD,管理员备份" "CachedStreams","N","R","R","R","自动创建,定时消失" "DataStreams","N","R","R","R/D","自动创建,定时/手动删除" "DataPoints","N","R","R","R/D","同上" "ArchivedStreams","N","R","R","R/D","定时创建,手动删除" "Triggers","N","R","CURD","R/D","设备员负责设备CRUD,管理员备份" "APIKeys","N","RUD","RUD","R/D","系统创建,用户/管理员更新" "Jobs","N","R","R","R","系统自动运行" "Reports","N","N","N","N","移除" ============ 设备 ============ 由于接入协议的遗留技术因素,设备服务器必须与设备紧密捆绑。目前Dawn IoT中只有一种设备:呼吸机。 理论上,只有IOT整体通路上每个环节都实现合适协议,才具备多种设备同时接入的可能。我们预测未来与其他设备的前端整合即将开展,所以设备资源会出现更多种类: * 呼吸机 * 血氧模块 * 多导睡眠分析仪 * 综合监护仪 * 心电监护仪 * 其他 就目前阶段,每接入一种设备,必须在系统建模阶段针对设备进行定义,继而对数据库、通讯协议进行定制。 ============ 数据即资产 ============ 设备云将接收到的数据按照数据实时性和体量不同分解为三个梯度的数据。采用不同种类的数据库,包括SQL,NoSQL和NewSQL/DocumentDB/BigTable,以满足实时绘图、检索、分析和归档不同的需求。 * CachedStreams,数据快照 * DataStreams,保存在SQL数据库中数据 * ArchivedStreams,从SQL数据库中归档到文档数据库的数据 ========== 触发器 ========== 在实时数据中,对于缓存中数据进行计算,满足触发条件的即进行后处理: * 高低门限触发(Level Trigger) * 斜率触发(Slope Trigger) 目前不支持自定义触发。日后基于安全沙盒会提供自定义触发。 ========== 数据转换 ========== 数据从采集到数据持久存储,需要一系列转换: #. Demux,解复用 #. Axial transfer,轴向转换 #. Scale,缩放 #. Serialize,序列化 目前不支持自定义转换。日后基于安全沙盒会提供自定义转换器。 :doc:`index`