27、基于多层服务导向REST的智能系统解析

基于多层服务导向REST的智能系统解析

1. 多层SOA系统实现

在多层服务导向架构(SOA)系统中,Web服务处于核心地位,连接着Android应用程序和Apache Fuseki服务器(三元组存储)。Android应用程序通过向Web服务发送标准HTTP请求(如GET、PUT、POST和DELETE)来执行各种任务,包括CRUD操作、推理以及其他基于应用的复杂逻辑。

在数据处理方面,借助Apache Jena库的支持,使用SPARQL查询语言来检索和操作存储在三元组存储中的语义数据和本体。Jersey库在开发RESTful Web服务时发挥着关键作用,它不仅能够对客户端传入请求的函数和参数进行映射,还能动态地生成和处理各种格式的数据。通常,Jersey库用于将Web服务与Android应用程序绑定,并将数据映射到各种对象类中。

系统框架中的“Utility”层包含了一系列包和类,用于从传感硬件设备中提取、存储和处理数据。其中,“Sensor Utils”组件包含与第三方API和硬件库(如“*.almond”和“.arduino”)交互的包和类。一些关键的Java库,如WebSocket API(用于Almond +路由器)、XBee和comPort(均用于Arduino),被并行线程类用于记录事件(“EventLogThread”)、执行设备管理(“DeviceManagementThread”)以及将数据存储到三元组存储中(“TDBStorageThread”)。

多层SOA系统采用了多种硬件设备来实现不同的功能:
- SecurifiAlmond +路由器 :作为主要的“物联网路由器”,它支持多种通信协议,如ZigBee、Z-wave和Wi-Fi,因此与多个制造商开发的各种传感器设备兼容,使得在智能家居环境中添加和更新新的传感器设备更加容易。类似支持多种传感器的路由器还有Libelium Waspmote、SmartThing Hub和VeraLite。
- Arduino板 :通过使用具有无线(射频(RF)、ZigBee或Wi-Fi)或有线(通用串行总线(USB))功能的微型Arduino微控制器,可以将传感器嵌入到日常物品中,用于传输和收集模拟/数字传感器数据。不过,基于微控制器的传感技术的一个关键限制是,添加新传感器和配置各个组件需要专业的编程知识。“Sensor Utils”层通过使用第三方API和软件库,实现了与其他传感设备的灵活集成。
- Amazon Echo :用于语音交互。

传感器收集的数据使用“TDB Utils”包中的类进行存储,并添加到事件日志队列中。“TDB Utils”中的一个类通过以下三个简单步骤执行查询和更新请求:
1. 构建SPARQL查询/更新字符串 :根据具体需求构建合适的SPARQL语句。
2. 执行请求 :使用Jena类/标准HTTP POST方法来执行请求。标准HTTP POST请求可用于执行SPARQL更新,请求内容类型设置为“application/sparql-update”,可以使用Jena的WebContent类中已定义的静态变量(“WebContent.contentTypeSPARQLUpdate”)。
3. 解析响应 :在三元组存储端点上执行SPARQL查询,并使用ResultSet和QuerySolution类解析结果。

此外,“Utility”层中的“Ontology Utils”组件提供了加载本体模型、添加新断言以及使用Pellet推理机进行增量推理的主要支持。

REST Web服务API使用服务器发送事件(SSE)协议将传感器观测结果和活动推理结果广播给客户端。SSE协议允许多个客户端同时创建WebSocket连接。Web服务向客户端广播两个SSE:一个用于广播实时传感器事件,另一个用于向带有会话令牌的客户端广播推理结果。客户端设备与Web服务中关键组件之间的事件序列如下:
1. 监听传感器事件 :客户端Android应用程序可以通过向位于“SmartWebServiceAPI”中的SensorsCall类的“EventBroadcaster”函数进行SSE调用,在后台异步监听传感器事件。
2. 获取推理结果 :客户端若要接收特定于客户端的推理结果,必须首先从“ReasonerCall”获取会话身份。“ReasonerCall”负责从给定时间开始监听传感器事件,进行推理,然后使用“ResultsBroadcaster”函数广播结果。客户端收到会话令牌后,可以向“ResultsBroadcaster”发出请求,开始监听与其会话身份相关的推理结果。
3. 关闭会话 :客户端设备负责关闭会话,并在需要时单独存储会话数据。

不过,采用SSE协议的一个关键限制是所有客户端都会收到所有消息,这可能会引发隐私问题。一种替代的消息传递模式是发布 - 订阅模式,例如消息队列遥测传输(MQTT)协议,客户端可以仅订阅特定主题的消息。

Android应用程序和Web浏览器界面可以使用标准HTTP协议向REST Web服务API发出请求,目前请求格式设置为JSON,因此需要适当设置请求头。例如,从Web浏览器执行两个HttpGet请求方法以查看(a)通知列表和(b)患者1的预约列表时,会得到相应的响应消息。Android应用程序以JSON格式接收相同的数据,并使用org.codehaus.jackson.map.ObjectMapper类将数据自动重新映射到其各自的Java对象实例。

以下是系统中一些关键操作的流程总结:
|操作|步骤|
| ---- | ---- |
|TDB Utils执行查询和更新请求|1. 构建SPARQL查询/更新字符串
2. 使用Jena类/标准HTTP POST方法执行请求
3. 解析响应|
|客户端接收传感器事件和推理结果|1. 客户端Android应用程序通过SSE调用监听传感器事件
2. 客户端从“ReasonerCall”获取会话身份
3. 客户端向“ResultsBroadcaster”发出请求监听推理结果
4. 客户端关闭会话并存储数据|

下面是客户端与Web服务交互的mermaid流程图:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px

    A(客户端Android应用程序):::process -->|SSE调用| B(EventBroadcaster):::process
    A -->|获取会话身份| C(ReasonerCall):::process
    C -->|推理并广播| D(ResultsBroadcaster):::process
    A -->|请求推理结果| D
    A -->|关闭会话| E(关闭操作):::process
2. 多层SOA系统接口

基于REST的SOA系统开发了一款移动应用程序,其目的不仅是为居民提供更好的人机交互界面(HCI),还能通过利用设备内置传感器或使用无线连接(如蓝牙)连接外部设备,充当传感器/执行器。像智能手表和Shimmer传感设备等可以用于获取居民的额外上下文信息,从而提高活动识别的准确性并提供适当的协助。

考虑到为养老院的每位患者配备智能手机可能在经济上不可行,且让老年人使用智能手机也存在挑战,因此为老年人提供高效自然的人机交互方法可以在一定程度上解决这些问题。例如,近期引入的Amazon Echo等设备,它提供基于语音的系统交互方式,并能通过SmartThings与智能手机和其他智能设备互连,具有一定的优势。

这款Android应用程序具有多个特点:
- 语义分割结果显示 :该应用程序能够显示由REST Web服务API提供的连续传感器流的语义分割结果。采用多线程概念将每个传感器事件分割成相关的日常生活活动(ADL)线程。单个ADL线程运行T-Box推理和一个或多个A-Box线程。推理结果和传感器事件会广播给客户端,Android应用程序持续捕获并向居民展示这些信息。例如,应用程序界面左侧的截图显示了顶部的传感器事件日志和底部的可展开列表,列出了制作吐司、制作烘豆和泡茶等活动。可展开列表显示了各个ADL的图像、线程名称和分割的传感器总数。当用户展开可展开列表中的每个ADL元素时,会显示所有相关传感器的信息,包括传感器名称、激活时间以及该操作是通用的还是特定于用户的。右侧截图中黄色突出显示的泡茶活动操作展示了在A-box推理过程中识别出的居民偏好。
- 模拟界面 :开发了模拟界面,用于加载一个或多个活动的一组操作,并执行基于SPARQL的活动推理。Android应用程序向Web服务发出请求以执行模拟和推理任务。模拟传感器的激活和结果会显示出来,同时还使用了文本转语音功能来朗读结果(通过扬声器图标)。Web服务使用基于知识的方法执行活动识别算法。目前,仅使用预定义的用户ADL偏好来与激活的传感器进行匹配,匹配过程的目的是找到相关的用户偏好以及来自这些偏好的其他未激活传感器对象,以完成活动。用户可以使用交互式表单创建和管理他们的偏好,还可以通过位置和类型浏览所有传感器,添加新传感器或更新单个传感器。

以下是Android应用程序功能的总结:
|功能|描述|
| ---- | ---- |
|语义分割结果显示|显示连续传感器流的语义分割结果,使用多线程分割传感器事件,展示推理结果和传感器信息|
|模拟界面|加载活动操作,执行基于SPARQL的活动推理,显示模拟传感器激活和结果,支持文本转语音|
|用户偏好管理|用户可以创建、管理偏好,浏览、添加和更新传感器|

下面是Android应用程序功能的mermaid流程图:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px

    A(Android应用程序):::process -->|显示| B(语义分割结果):::process
    A -->|执行| C(模拟推理):::process
    C -->|显示| D(模拟结果):::process
    D -->|朗读| E(文本转语音):::process
    A -->|管理| F(用户偏好):::process

综上所述,基于多层服务导向REST的智能系统通过结合多种技术和设备,实现了高效的数据处理、活动识别和用户交互。该系统的设计和实现为智能家居和相关领域的发展提供了有价值的参考,但也存在一些局限性,如使用SSE协议可能带来的隐私问题以及执行活动识别任务对机器运行时内存和核心数量的高要求等。未来,该系统有望在可扩展性和性能方面得到进一步提升。

基于多层服务导向REST的智能系统解析

3. 系统优势与局限性分析

该多层服务导向REST的智能系统具有多方面的优势,同时也存在一定的局限性,以下进行详细分析:

3.1 系统优势
  • 兼容性强 :SecurifiAlmond +路由器支持多种通信协议,能与多个制造商开发的传感器设备兼容,方便在智能家居环境中添加和更新新的传感器设备,增强了系统的可扩展性。
  • 数据处理灵活 :通过“Utility”层的各类组件,如“Sensor Utils”和“TDB Utils”,实现了对传感器数据的灵活提取、存储和处理,并且利用SPARQL查询语言和Jena库对语义数据和本体进行操作,提高了数据管理的效率。
  • 交互方式多样 :系统不仅提供了基于Web浏览器的接口,还开发了Android移动应用程序,并且引入了如Amazon Echo等支持语音交互的设备,为用户提供了多种人机交互方式,满足不同用户的需求。
  • 活动识别准确 :采用多线程概念对传感器事件进行语义分割,结合基于知识的活动识别算法,能够更准确地识别用户的日常生活活动,并根据用户偏好提供个性化的协助。
3.2 系统局限性
  • 隐私问题 :使用SSE协议时,所有客户端都会收到所有消息,可能会引发隐私问题,需要寻找更合适的消息传递模式,如发布 - 订阅模式。
  • 硬件要求高 :系统在执行活动识别任务时,对机器的运行时内存和核心数量要求较高,这限制了系统在一些资源有限的设备上的应用。
  • 编程门槛 :基于微控制器的传感技术需要专业的编程知识来添加新传感器和配置各个组件,增加了系统维护和扩展的难度。

以下是系统优势与局限性的对比表格:
|类别|描述|
| ---- | ---- |
|优势|兼容性强、数据处理灵活、交互方式多样、活动识别准确|
|局限性|隐私问题、硬件要求高、编程门槛高|

4. 系统应用场景与未来展望
4.1 应用场景

该系统在多个领域具有广泛的应用前景,以下列举一些主要的应用场景:
- 智能家居 :通过对家庭中各种传感器数据的收集和分析,实现对家居设备的智能控制,如自动调节温度、灯光等,为居民提供更加舒适便捷的生活环境。
- 养老护理 :在养老院等场所,系统可以实时监测老年人的活动情况,识别异常行为,及时提供帮助和预警,提高养老服务的质量和安全性。
- 医疗保健 :结合生物传感器等设备,系统可以对患者的健康状况进行实时监测,辅助医生进行诊断和治疗,实现远程医疗和健康管理。

4.2 未来展望

为了进一步提升系统的性能和应用范围,未来可以从以下几个方面进行改进和发展:
- 优化消息传递协议 :研究和采用更安全、高效的消息传递协议,解决SSE协议带来的隐私问题,确保用户数据的安全。
- 提升硬件性能 :探索更轻量级的算法和技术,降低系统对硬件资源的要求,使系统能够在更多类型的设备上运行。
- 简化编程操作 :开发更友好的编程接口和工具,降低添加新传感器和配置组件的编程门槛,方便非专业人员进行系统维护和扩展。
- 拓展应用领域 :将系统应用到更多的领域,如智能城市、工业自动化等,为不同行业的发展提供支持。

以下是系统应用场景和未来展望的mermaid流程图:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px

    A(系统):::process -->|应用于| B(智能家居):::process
    A -->|应用于| C(养老护理):::process
    A -->|应用于| D(医疗保健):::process
    A -->|未来改进| E(优化消息传递协议):::process
    A -->|未来改进| F(提升硬件性能):::process
    A -->|未来改进| G(简化编程操作):::process
    A -->|未来拓展| H(拓展应用领域):::process

综上所述,基于多层服务导向REST的智能系统在当前已经展现出了强大的功能和应用潜力,但也面临着一些挑战。通过不断地改进和优化,该系统有望在未来为更多领域的发展做出贡献,推动智能系统技术的进一步发展。

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值