基于Django的智慧养老系统设计
2023-05-30林正敏王淑娥于小亿韦德泉杨位兰
林正敏 王淑娥 于小亿 韦德泉 杨位兰
关键词:高龄社会;照顾服务;人工智能;物联网
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2023)02-0025-04
1 概述
2019年,全球65岁(含)以上人口为7.03亿人,预计到2050年,这一数字预计将增加至15亿人[1]。人口老龄化日益严重,对老年人的照顾供需亦将呈现倍数增加的趋势,相对也意味着有庞大的商机。一般而言,老年人的照顾依其性质可区分成家庭照顾和机构照顾两大类,老人照顾服务存在两个问题[2]:1)家庭照顾功能的弱化;2)集中机构照顾服务资源短缺以及服务质量参差不齐。这两个问题都突显于少子化和高龄化的社会问题,而如何在子女需要外出工作又能兼顾关心在家中或在机构中养老的长辈呢?不管是家庭照顾或机构照顾都需要运用科技来降低成本和提高服务质量。因此,完善“互联网+养老”的服务内容和机制,经由智慧科技导入以及优质服务内容的提供来提高养老服务质量,维系子女因外出工作也能关切父母养老生活,以实现养老产业的“弯道超车”[3],带动养老产业蓬勃发展。
为了提高服务质量,物联网(Internet of Things,简称IoT) 和人工智能(Artificial Intelligence,简称AI) 是两个很重要的导入智慧养老的新兴科技,把这两项新兴科技组合起来,就是人工智能医疗物联网(AIoT)。在AIoT 时代会要求IoT产品能够提供人工智能的能力,经由数据闭环不断地进行优化[4]。若将物联网应用在养老事业,需要聚焦在医疗上,就可以称为医疗物联网(IoMT),进一步将医疗物联网和人工智能的结合,就是人工智能医疗物联网。
已有许多学者提出的一些智能生活技术包括活动识别系统[5]、远程健康监测系统[6]、环境传感器[7]和智能护理床[8]等,但专门针对老年人生活,构建基于人工智能的智慧养老系统的设计还缺乏相关实际的落地应用。同时人工智能医疗物联网应用在智慧养老产业已经是时代所趋,因此本文将基于Python[9]设计并实现一个微型智慧养老系统。本研究的主要贡献有:1)提出基于人工智慧医疗物联网的Python设计方案;2)整合消息队列遥测传输(MQTT) 和Django 通道;3)为老年人的智能生活服务开发了一个网络仪表板应用程序。
本文的其余部分章节说明如下:第2节介绍了基于Python 的人工智能医疗物联网架构。第3节描述了使用Django Web 框架和Python 编程语言开发Web 应用程序仪表板。第4节介绍了开发的应用程序仪表板中使用的MQTT 和Django通道。第5节提供结论以及未来研究方向。
2 基于Python 的人工智能医疗物联网总体架构设计
随着移动计算时代的来临,人手一机,随处经由数据网络取得各项数据,同时手机也是人们跟计算机世界沟通最好的界面,因此智慧养老系统中移动设备(手机)是必要的设备。由于物联网的时代已经来临,有成千上万的传感设备都需要经由无线网络上网,这些感知器可以侦测身体生命征象讯号(如:体温、心跳和血氧等)以及环境和设施的讯号(如气温和水位等)。构建的智慧养老系统中,网络服务器是必不可少的角色,它可以結合数据库资源来提供网络服务。因此,传感器、移动装置(手机)、服务器就形成物联网的黄金铁三角,如图1所示。
Python 是一种高级、通用的直译型编程语言。尽管Python 的执行速度比其他基于编译器的语言还要慢,但由于它的特性非常适合用来开发物联网与老人服务事业相关的智能服务。因为它易于学习并且拥有众多专门的套件,这使得Python 成为2017 年至2021年最流行的编程语言[9-13]。基于Python程序语言来说,传感器、行动装置和伺服主机的软件开发都可找到相对的套任,这三项软件可以分别对应到Micro?Python、Kivy和Dajngo等套件。基于物联网架构由应用程序、网络和感知等三层组成,应用程序层提供各式服务,以数位内容服务为主,网络层以物联网的协定、爬虫工具以及交换格式等套件为主,感知层是实际对应到硬设备,例如:ESP32、ESP 8266、Raspberry Pi等,以能提供控制输出入设备以及通讯界面的韧体发展套件为主。AIoMT 其对应的Python套件如图2所示。表1则说明基于Python的物联网相对应于图2套件的功能以及相对应的网址。
智慧科技导入老人照顾服务中,最常见的是基于Web 的物联网服务,包括:家庭自动化、内容管理系统、微型应用程序开发和仪表板设计。Home Assis?tant 是一个使用Python 开发的开源家庭自动化操作系统,它使用YAML(Yet Another Markup Language)语法进行配置。仪表板用于开发监控系统,提供可视化控制面板,可供服务提供者透过数据快速地了解服务内容,Dash 是一个基于Python 的开源仪表板套件,也是开发交互式分析应用程序的最快方法。Flask 和Django 分别是以Python为基础的轻量级网络框架和高级网络框架。Django CMS 和Mezzanine 则是以Django为基础的内容管理系统,最适合开发深度旅游网站。Kivy则是可以开发跨平台应用程序(App),如iOS和Android,也支持多点触控的功能。
在网络层,Requests是在Apache2 许可下发布的套件,是一个支援Python 超文本传输协议(HTTP)的网络爬虫工具。Beautiful Soup 是一个基于Python的爬虫工具,可用于从HTML 和XML 文件中提取数据,它提供了导航、搜索和修改解析树的惯用方法,以从网页中检索信息。另外,Scrapy也是很重要的爬虫工具之一。JSON是JavaScript 物件对象符号表示格式,可提供人类可阅读的文本,用于传输由键值和数值成对组成的数据集合,用于物件对象之间的开放标准文件格式或数据交换格式。Paho MQTT 库是用于开发物联网应用程序的客户端开源代码,MQTT是物联网中很重要的协定之一。
在感知器层,树莓派(Raspberry Pi)是一系列微型单板计算机。树莓派支援Python程序语言,可以开发各种应用程序。例如:Raspberry Pi 4 Model B 于2019年6 月发布,采用1.5 GHz 64 位四核ARM Cortex-A72 处理器。MicroPython 和Circuit Python 是用于不同的微控制器的Python 编程语言。MicroPython 支持PYBoard、ESP8266、ESP32 和WiPy等微控制器。Cir?cuit Python 主要支持Adafruit、Arduino、Nordic Semi?conductor 和SparkFun等开发板。
3 基于Django MTV 架构设计
本节描述如何运用Python/Django技术开发仪表板应用程序(图3),图3中展示了模板(Templte)、视图(View)、模型(Model)和网址(urls)等模块间的关系。当基于Django网络服务器收到客户端浏览器送来的请求时,Django 网络伺务器会将网址传递给urls.py 模塊,然后比对该模块中的path函数进行网址和功能的链接转换。当比对到相同的网址时,ulrs.py 会调用view.py 模块中相应的视图函数,接着就会执行该视图函式。在执行该视图函数时,会依程序功能需求来操作数据库,不管是从数据库中取得的数据或是经由运算所产生的结果,都会将讯息储存在该视图函数的区域变量中。然后视图函数使用指定的html 文件和区域变量调用渲染函数。最后,html 文件和相关文件中的嵌入模板转换这些传递变量的内容。在此应用程序中,使用了以下软件包:1. Django 3.0.2;2. channels2.4.0;3. paho-mqtt 1.5.0;4. django-bootstrap 4 1.1.1;5.django-heroku 0.3.1。
针对照顾老人设计物联网服务程序,对于仪表板物联网应用程序,在该应用程序的顶部显示流量、设备、用户和运行率等四个重要数据面板,以方便服务提供者查看老人照顾的服务情形。在流量数据方面,系统接收智能传感器发送的MQTT消息的流量,经由流量统计数字可以得知这些传感器提供的有关老人照顾整体数据。在设备数据方面,表示系统中安装的物联网设备的总数量。在用户数据方面,表示系统创建的用户数量。运行率是显示已安装设备的运行的情形。在该应用程序中显示了已安装物联网设备的运行状态,包括:设备的启动以及收到各式感知器的讯号内容。
4 嵌入MQTT 至Django通道的设计
本节介绍基于Django设计的互联网/物联网应用过程中,整合物联网通讯协定MQTT 和背景执行的Django 通道。MQTT是物联网的通讯协定,MQTT 具有三个主要角色,即发布者、代理和订阅者/接收者,主要用于把智能传感器讯号传到网络服务器,这些信号会转换成消息发布到基于Django的物联网仪表板应用程序。然而通过网站存取物联网中感知器的数据,存在很大问题,就是必须向网站发出请求命令,才能让网站的程序处于执行状况。因此,网站必须要能在没有经浏览器发出请求命令时,也能背景执行服务,这项功能对于使用网站来做老人照顾服务是很重要的。而在Django这项能力就是通道技术,其主要用于后台任务执行。
图4展示基于Django的互联网/物联网系统,使用通道技术来整合MQTT物联网通讯协定以及使用者的数据流程。依照图3的说明,Django使用MTV架构来执行应用程序,因此在图4 中包括Model、View 和Urls等三个角色。而MQTT三个角色分别是发布者(Publisher)、代理人(Borker)以及接收者(Receiver),其中发布者就是感知器,可能是老人的心跳或血压值,也可能是门窗的近接开关或是紧急求救的讯号。MQTT代理人可以自行架设,或是使用现有的代理人服务器,例如:http://www.mqtt-dashboard.com/。MQTT接收者就是用Django 实现的函式,为基于Django 的互联网/物联网系统应用程序的一部分,为了能背景执行会以工作程序(Worker Process)方式出现,也就是采用通道技术,MQTT接收者会以后台任务使用通道技术向MQTT代理人发送的订阅消息后,Django就可以处于待机的状态,当Django 接收器接收到消息时,接收器会解析消息并检索信息。然后,接收器使用对象关系映射技术将存储在数据库中的数据取出。
智能传感器通常安装在老人家中,当事件被触发或固定时,传感器会向MQTT 代理人发送一则消息,然后由代理人将其讯号传输给订阅者。以下语法是基于Django的网络仪表板应用程序的接收器和智能传感器之间的协议:
{'serial':'006','name':'紧急按钮','value':'OK','unit':'Times','device':"Granny's home"}
上述语法的格式是采用Python 内置数据结构的字典以键/值成对方式出现。第一个键表示用于该讯息的序列号。第二个和第三个键分别用于指示事件名称和内容值,接下来是事件单位,最后一个键表示设备的名称。
5 结论
本研究以Python/Dajngo为基础设计并实现了基于人工智能、互联网/物联网的智慧养老服务系统。透过智慧感知器收集数据再经过MQTT协定传送到老人照顾服务应用程序,并实现流量、设备数量、使用者人数以及设备运转率,将数据显示在老人照顾服务应用程序的仪表板上。本系统采用Django 通道技术以运行后台任务方式,结合MQTT收集智能传感器发送的信息,经由Django、MQTT和通道等技术的整合可实现为老人照顾智能生活服务的Web应用程序仪表板雏形。
未来本系统将结合医疗物联网进行研究,可依照NIX Solutions于2021年8月5日发表五大医疗物联网(IOMT) 应用[14],包括:可穿戴生物传感器(Wearable Bi?osensors)、自动胰岛素输送(Automated Insulin Deliv?ery)、连接吸入器(Connected Inhalers)、智能温度计(Smart Thermometers)以及虚拟医院/病房(Virtual Hos?pitals/Wards)。例如,在新型冠状病毒感染中,常需要有实时性的血氧浓度侦测,才能做出适当的医疗处理,因此若能应用人工智能医疗物联网系统实时监控患者的血氧浓度的变化,更能符合时效性和实时性传输和诊疗。