IoT SaaS加速器——助力阿尔茨海默病人护理
場景介紹
阿爾茨海默病,是導致中老年人認知功能障礙的最常見疾病之一,是發生在老年期及老年前期的一種原發性退行性腦病。據估計,全世界癡呆癥患者數量為4700萬,到2030年將達到7500萬人。癡呆癥患者數量到2050年預計將是現在的近三倍。疾病的高昂費用給衛生系統應對未來預計不斷增加的病例構成挑戰。據估計,目前每年的支出為8180億美元,而支出的增長速度預計會比疾病流行率上升還要快。照料癡呆癥患者給照護者帶來巨大壓力,包括身體上、情感上和經濟上的壓力。(by世界衛生組織)
用技術解決阿爾茨海默病護理的問題,讓老人和其護理者有更好的生活質量,是我們可以解決的方法。基于物聯網技術,已經有一些設備實現了阿爾茨海默病老人走失定位。但是我們要做更高一層,除了單獨分發的硬件之外,我們要使用開發工具IoT Studio幫助醫療機構做一個硬件SaaS管理系統,讓他們可以隨時監控旗下所有阿爾茲海默護理設備的數據以及定位,對老人的情況實現實時監控。同時也有能力對掌控的設備進行增刪改查,方便他們自己管理設備。通過IoT Studio賦能開發者,讓他們幫助包括醫療在內的各個行業用上物聯網技術,惠及百姓。
我們首先構建一個可以拍照,檢測心跳的手環設備,然后基于這個設備幫助護理機構開發一個集合管理監控告警的SaaS系統。設備由一個可以檢測心跳的光學模塊,一個可以檢測老人所在地場景的攝像頭,一個GPS定位模塊,一個物聯網通訊模塊(一般為GPRS),MCU和電源組成。云端由物聯網平臺為基礎建立設備與云端通訊,配合RDS存儲心跳&GPS數據,OSS存儲圖片數據,最后用IoT Studio的服務開發與Web可視化開發功能完成功能頁面搭建。整個云端開發過程只需要2小時以內即可。
最終效果如圖。
硬件部分
在demo階段,我們采用樹莓派3B+攝像頭+心跳模塊+GPS+電池的方法,驗證不同數據的上報方法以及數據存儲鏈路。考慮簡單化,聯網暫時采用WIFI方法。如果覺得使用電路比較麻煩,也可以使用服務開發+虛擬設備上報的方式,具體查看這篇文檔。
雖然帶手環的老人不一樣,但是每個手環上報的屬性類別是一樣的,我們可以類似編程開發里把它們歸結為同一個類(class)。我們首先需要在物聯網平臺上為我們的demo手環建立一個設備類(即產品),這樣我們才能在以后不斷的往這個產品下實例化新的設備。
進入阿里云物聯網平臺,在產品頁面新建一個產品,選擇自定義品類即可,命名為“阿爾茨海默氏癥老人監控手環”。
進入產品的功能定義頁,定義5個自定義功能——剩余電量,地理位置,心跳,圖片地址(存放攝像機上傳圖片的URL)。
地理位置只需要在“添加功能”里用標準的功能即可,如圖,其他全部配置項默認即可。
心跳為一個整型數據,剩余電量為浮點型數據,圖片地址為字符型數據,如圖。
在設備面板點擊“添加設備”,選擇剛才創建的手環產品,然后輸入隨意的設備名稱即可。
IoT Studio為交付型業務做了項目維度的隔離,因此需要將用到的設備導入到對應的項目中。
首先打開物聯網平臺的“開發服務”選項進入IoT Studio。點擊某個項目名稱的“查看”進入項目詳情頁。然后點擊右上角的“導入產品”。選擇剛才的手環產品,然后導入,可以在設備管理頁看到產品以及下屬的設備已經導入項目里。
這樣就完成了產品的定義,實例化與項目維度的隔離了。
上云部分
樹莓派采用python編程,因此我們需要參考物聯網平臺的python SDK,同時開發者社區也有很多相關文章。在這里我們直接跳過。
由于物聯網平臺的屬性不支持直接存儲圖片,因此我們暫時使用oss進行存儲。你也可以選擇使用HTTP/2通道(已支持python SDK)將圖片上傳至物聯網平臺每個設備單獨的存儲空間,不過從該存儲空間調用圖片的URL需要動態生成,可以參考這篇文檔。
OSS存儲空間準備
阿里云對象存儲服務(Object Storage Service,簡稱 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存儲服務。您可以通過調用 API,在任何應用、任何時間、任何地點上傳和下載數據,也可以通過 Web 控制臺對數據進行簡單的管理。OSS 適合存放任意類型的文件,適合各種網站、開發企業及開發者使用。
首先點擊“立即開通”進入開通頁面并點擊同意協議。
然后進入控制臺,新建一個Bucket,一個Bucket相當于一個文件夾,可以通過API路徑訪問里面的文件。在這里我們選擇公共讀寫。
然后可以看到OSS控制臺新建了一個bucket,里面是空的,我們可以嘗試上傳一些圖片。
然后點擊文件右方的操作項里的“復制文件URL”,把復制的URL粘貼到瀏覽器,看看能否預覽。
可以看到通過URL訪問我們就能看到圖片了,這樣OSS的配置就完成了。
考慮到Bucket的公共讀寫特性,安全性會有一定的問題,可以考慮將bucket私有化,然后圖片上傳的時候設置圖片為公共讀寫,并采用時間戳加鹽等方式將圖片文件名隨機化的方式解決。當然安全性上HTTP/2通道為更優方案。
樹莓派代碼
樹莓派的配置與連接在此不再贅述,可以在樹莓派新建py文件,直接將此份代碼復制過去,并且設置為開機執行,也可以參考這篇文檔。
代碼如下(基于python 3.6),需要根據備注填入自己的賬號信息,產品信息等:
結束,把這個python文件設置為開機運行即可。
調試
可以看到數據已經上報到物聯網平臺了,同時oss的鏈接也可以用。
數據部分
接下來將演示如何通過IoT Studio服務開發工作臺完成設備上報數據的轉儲以及根據規則進行告警(如心跳過低告警)。IoT Studio 服務開發是一個物聯網業務邏輯的開發工具。通過編排服務節點的方式快速完成簡單的物聯網業務邏輯的設計。適用于以下場景:設備聯動、設備數據處理、設備與服務聯動、生成API 、生成App的后端服務等。
開通RDS
阿里云關系型數據庫RDS(Relational Database Service)是一種穩定可靠、可彈性伸縮的在線數據庫服務,提供容災、備份、恢復、遷移等方面的全套解決方案,徹底解決數據庫運維的煩惱。目前六月份有10塊錢試用半年的折扣,可以嘗試購買。
開通以后進入管理控制臺,會看到自己已經付費的實例出現,進入管理。
由于我們需要用外部的服務調用RDS數據錄入,因此需要允許外網訪問,需要首先設置白名單。然后把默認的127.0.0.1改為0.0.0.0/0
然后返回管理頁,可以看到外網地址出現了。
接下來需要設置登錄數據庫的賬號,進入賬號管理頁點擊創建賬號,輸入賬號密碼等信息,并且選擇要授權的數據庫。
完成后返回實例控制頁,點擊登錄數據庫,輸入剛才設置的賬號密碼,即可登入RDS數據庫。
3)
登錄之后首先創建一個數據庫,命名為test,然后刷新一下,可以看到新建的test數據庫,然后進入數據庫建立一張表。
插入如下的幾列,注意time可能需要改為timestamp類型,最后保存即可完成。這樣就完成了表結構的配置。
數據對接RDS
首先在物聯網平臺首頁,開發服務下的IoT Studio的快速入口進入服務開發工作臺。然后新建一個服務,命名為“手環心跳轉儲RDS”。
然后在節點列表里選擇“設備觸發”節點,在右側欄選擇之前創建的產品“阿爾茨海默氏癥監控手環”,監聽所有設備的屬性上報,如圖。
接下來選擇一個云數據庫mySQL節點,將設備觸發節點與云數據庫節點連接起來。
參數如下,分別對應之前的列名,record不填,因為record會自動增長:
{"table": "test","rows": [{"BPM": "{{query.props.BPM.value}}","Latitude": "{{query.GeoLocation.value.Latitude}}","Longtitude": "{{query.GeoLocation.value.Longtitude}}","time": "{{query.deviceContext.gmtCreate}}"}] }數據格式說明
我們可以看到,設備上報的數據格式設這樣的:
{"deviceContext": {"productKey": "a1OhdcX0B8B","deviceName": "Wrist003","gmtCreate": 1560497545957},"props": {"GeoLocation": {"time": 1560497545957,"value": {"CoordinateSystem": 1,"Latitude": 25.26,"Longitude": 111.45,"Altitude": 0}},"BPM": {"time": 1560497545957,"value": 21}}}在服務開發中,如果需要在json參數里調用外部動態的參數,需要采用{{xx.xx}}的方式調用。如在"BPM": "{{query.props.BPM.value}}"里,第一個query表示參數來自于第一個節點,第二個props表示取設備上報上來的屬性數據,第三個BPM表示取props下的BPM對象,最后的value表示取BPM對象的值。同理其他幾個可以根據設備上報數據的結構進行填寫。
完成后點擊部署,調試(可以使用虛擬設備上報),回到RDS的數據庫頁面,可以看到數據更新了。這樣就完成設備數據上報轉RDS的操作。
數據即時告警規則
如果老人的心跳過低,我們會通過釘釘機器人把消息通知到護士群里,讓他們即時知曉情況。
首先仍然是新建一個服務,命名為心跳過低告警。
然后同樣選擇一個設備觸發節點,偵聽所有手環設備上報的屬性。
添加一個“條件判斷”節點,條件節點相當于一個if-else判斷。并且把設備觸發節點與條件節點連接起來。
在條件判斷節點中,第一個選擇“同時滿足所有條件”,在“條件1”中第一個下拉框選擇“設備觸發”,在二級菜單選擇“心跳”;判斷條件選擇“<=”,第二個框選擇“靜態值”“數值”。觸發報警的條件我們設置為老人心跳值小于50。
在之前的數據對接RDS里,我們使用代碼化的query.props.BPM.value定義設備數值。而在條件判斷等節點中,我們封裝了數據源格式,可以讓你直接選擇數據源進行規定格式的告警信息配置,而無需輸入query/payload等變量。
接下來在左側節點列表的“功能”類拖入一個“釘釘機器人”節點。并與條件判斷節點的上方出口(“滿足條件”)進行連線。選擇模板為“設備告警”模板,數據源選擇“設備觸發”“心跳”,可以選擇@所有人。
釘釘機器人的Webhook填入你要推送的釘釘群的釘釘機器人Webhook。
如何獲取Webhook?
釘釘機器人是釘釘群內一個自動化的消息發送工具。在一個釘釘群內打開右上角的“群設置”,可以發現以下彈窗。
點擊釘釘機器人,進入機器人配置頁面。
選擇添加自定義機器人。
然后在完成頁面可以看到webhook。整個復制下來,粘貼到輸入框內。
如果是自定義模板,如何動態配置文本text?
由于監聽了全部的煤氣檢測器,我們收到警告的時候需要知道是哪個煤氣檢測器報警了,因此需要接受上報的煤氣檢測器的DeviceName進行推送。
選擇text推送類型,參數框內為一個json對象,因此調用方法要符合json的格式。我們采用了{{value}}的格式,如“{{query.deviceContext.deviceName}}”,可以查看下圖的完整配置方法:
{"msgtype": "text", "text": {"content": "使用手環{{query.deviceContext.deviceName}}的老人心跳過低,數字為{{query.props.BPM.value}},大家快去看看吧!"}, "at": {"isAtAll": true} }對條件判斷節點的“不滿足條件”,放置一個不做任何處理的nodejs腳本占位即可。
完成后,同樣的進行部署啟動調試。在虛擬設備那邊上報一個小于50的BPM,看看是否成功響應。這樣就完成了一個即時響應的心跳告警功能。
應用部分
本次的應用部分包括設備管理的頁面,允許醫院維護人員查看各個設備的狀態,屬性并根據需求添加新的設備。另外有當前所有設備在地圖上的分布情況,方便監控老人動向。最后包含了一個監控手環上報圖片的實時查看功能,可以查看老人有沒有遇到危險,迷路等。
最終的實現效果如圖:
手環管理SaaS創建
首先進入IoT? Studio頁,點擊Web可視化開發,進入Web可視化頁面。
然后新建一個空白模板,輸入應用的名字,如“阿爾茲海默癥示例應用”。
進入空白的Web頁面,準備開始搭建我們的應用。
左側欄的構建
首先把整個應用的架構搭建好,創建5個頁面,分別為醫院監控大屏,醫院設備管理,老人1的詳情頁,老人2的詳情頁,老人3的詳情頁。
接下來我們為整個應用添加一個左側欄,點擊左下方的“導航菜單”。
由于我們已經建好了對應的空頁面,可以選擇自動生成。
可以看到生成的左側菜單欄,現在想把老人1,2,3三個頁面歸屬到一個“老人監控”的主分類下,因此需要修改配置菜單項。點擊左下角的“配置菜單”。此外這里修改了分辨率為1440x900。
點擊新增主菜單,輸入“老人監控”這個主分類名。這個主類目不會對應任何實際的頁面鏈接,只是一個分隔符。
出現二次確認彈窗確認即可。
最后改成這樣的結果。可以檢查一下里面的鏈接是否正確的配置。
可以看到左側菜單出現了“老人監管”這個分類。
配置頁面基本元素&樣式
想要SaaS應用的樣式與眾不同?可以自定義各種樣式,也可以使用標準模板。
使用標準模板可以在新建頁面的時候點擊。
也可以根據自己的喜好,用空白模板,然后自定義樣式,比如修改菜單欄顏色。
修改背景顏色。
放入一些圖片。
輸入文字等裝飾。最后變成這樣的頁面。
接下來我們需要添加一些有功能的組件,讓整個SaaS應用運作起來。
醫院監控大屏頁
如同示例,我們需要一個指示設備GIS的地圖以及一個展示設備狀況的列表。在組件欄對應的是這兩個組件。
設備地圖
設備地圖需要用到物聯網平臺數據分析功能的空間數據可視化服務。過程如下圖gif顯示,首先在左側欄拖入地圖組件,然后點擊添加場景,前往空間數據可視化頁面,然后點擊添加,選擇“阿爾茲海默癥手環”產品,點擊確定。
可以修改地圖主題色等。
選擇后返回IoT Studio,重新點擊地圖組件選擇剛才創建的場景,就可以看到在頁面上出現了一份有設備位置的地圖。
可以調節大小,放到合適的位置上,就完成了地圖組件的配置了。
設備屬性表格
設備屬性表單可以把當前產品下所有設備(手環)的在線狀態,更新時間以及屬性快照值的顯示出來,并且在應用發布后可以調整顯示的列內容。適合全局性的設備預覽。
首先拖入設備屬性組件,在右側欄配置要關聯的產品。
可以看到關聯了產品后,表單自動顯示產品下的全部設備。接下來我們可以修改一下右側的配置項,讓他的樣式更符合黑色的背景。
然后我們可以點擊右上角預覽,查看一下頁面效果。可以在預覽時點擊“列顯示設置”按鈕修改顯示的列數,這個配置是本地存儲的,不會同步到云端。
這樣第一個醫院監控大屏頁面就完成了。
醫院設備管理頁
設備管理頁允許運維人員(而不是開發者)直接添加新設備獲取三元組,這樣他們就可以不感知阿里云物聯網平臺而實現設備的添加。為了實現這個功能,需要設備管理這個表單組件,如圖。
配置方法為:首先從左側欄拖入設備屬性組件,然后在右側欄修改一些配置項——包括是否允許發布之后用戶添加/編輯/刪除設備,修改列顯示排序,添加自定義標簽,修改樣式等等。具體功能說明可以查看文檔。
然后可以通過圓形組件,矩形組件以及文字組件添加設備采買流程等,最后完成的效果如圖。
我們可以預覽,看看是否可以添加/刪除設備。注意這里的添加/刪除是會直接影響物聯網平臺上的設備的。
這樣設備管理頁就完成了,最后就是每個設備的詳情頁,也就是每個監控手環的信息展覽頁。
設備監控頁
設備監控需要監控當前老人的心跳,剩余的電量,是否有告警信息,攝影設備的實時圖像監控以及心跳的歷史趨勢圖等。
儀表盤的配置
首先從左側欄拖入一個儀表盤,修改一下樣式。
然后關聯設備數據,這里關聯的是老人001的Wrist001設備的剩余電量。選擇產品,設備,屬性,然后驗證數據格式。注意如果設備沒有上報過信息,數據格式驗證是無法通過的,可以通過虛擬設備上報信息進行驗證。
這樣就完成了剩余電量的儀表盤了,同理心跳數據的儀表盤也一樣操作。
告警信息系統
我們需要一段文字來接受來自設備的告警信息,同時需要一個按鈕調用告警服務。
首先拖入一段文字組件,然后關聯對應設備的對應事件(如老人摔倒),驗證格式之后文字會顯示事件的快照值以及輸出參數。當然可以通過服務開發工作臺的HTTP請求接口修改文字內容,定制化等。
可以拖到最下方進行輪詢,保證數據的實時性。
接下來是一個告警服務,比如短信通知家屬,我們可以開通阿里云的短信服務或者釘釘機器人進行消息的輸出,也可以用服務開發的“三方API”節點進行微信公眾平臺等三方輸出。這里我們以釘釘機器人為例。
新建一個服務,使用一個HTTP請求節點,中間接一個釘釘機器人節點,最后接一個HTTP返回節點即可。HTTP請求不需要入參,HTTP返回不需要額外配置,釘釘機器人節點的配置項如下。
在按鈕那里選擇交互-點擊-調用服務,選擇對應的服務,驗證即可看到釘釘機器人推送。
這就完成了告警模塊的設置。
實況監控
圖片的實況監控,如之前說的我們獲取了設備圖片的url作為屬性上報,我們可以使用“變量”機制,幫助iframe組件獲取設備上報的屬性。
首先拖入一個iframe組件,然后直接把之前步驟里獲得的oss圖片鏈接粘貼上去即可。
心跳曲線
心跳曲線需要用到設備曲線圖組件,可以直接關聯具體的設備獲取數據,無需額外的配置。
首先拖入一個曲線圖組件,在數據源側選擇設備Wrist001,點擊驗證數據,即可讀取最近上報的數據。
然后調節樣式即可,最后樣式如下:
這樣就完成了整個設備監控頁。其他頁面按此流程綁定不同設備即可,目前組件也已經支持跨頁面復制。
發布應用
我們需要先在阿里云上申請一個域名,打開域名購買,購買一個域名。
然后前往IoT Studio的Web可視化工作臺的設置菜單,點擊域名管理。按照引導流程處理進行域名解析。
然后點擊右上角的發布,點擊確定即可。
然后就可以看到發布成功了。直接前往自己購買的域名查看即可。
?
這樣就完成一套全鏈路的阿爾茨海默病人護理物聯網解決方案的發布了。
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的IoT SaaS加速器——助力阿尔茨海默病人护理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cloud Toolkit 部署应用到
- 下一篇: Sentinel 1.7.0 发布,支持