資料介紹
描述
Walabot 睡眠質(zhì)量追蹤器
亞歷克斯技能
該技能發(fā)布在 alexa 技能版塊,請(qǐng)隨意按照指南并監(jiān)控自己的睡眠
您可以按照系統(tǒng)指南中的用戶鏈接 alexa 來(lái)使用您的指南設(shè)置多個(gè)用戶。
問(wèn)題
CDC最近將睡眠不足??列為公共衛(wèi)生問(wèn)題。嗜睡是增加事故和其他職業(yè)錯(cuò)誤風(fēng)險(xiǎn)的根本原因。它還可能引起健康問(wèn)題,如糖尿病、抑郁癥和高血壓。
根據(jù)美國(guó)國(guó)家睡眠基金會(huì)和消費(fèi)電子協(xié)會(huì)最近的一項(xiàng)調(diào)查,超過(guò) 60% 的睡眠追蹤技術(shù)擁有者在睡眠追蹤后更加了解自己的睡眠模式。51% 的睡眠追蹤技術(shù)擁有者表示,他們知道這項(xiàng)技術(shù)正在幫助他們睡得更好,而 49% 的人表示,自從開(kāi)始使用這項(xiàng)技術(shù)后,他們感覺(jué)更健康了。
盡管大多數(shù)睡眠跟蹤技術(shù)是手表和手環(huán)等非侵入性設(shè)備,但它們?nèi)匀恍枰罅咳粘>S護(hù)以保持衛(wèi)生和持續(xù)充電。使用可穿戴設(shè)備的頻繁充電和衛(wèi)生維護(hù)的紀(jì)律已經(jīng)讓很多人不再使用它們。
我們的解決方案
使用 Walabot,我們可以構(gòu)建一個(gè)始終開(kāi)啟的非侵入式睡眠跟蹤系統(tǒng)。通過(guò)這種方式,用戶不必?fù)?dān)心為可穿戴設(shè)備充電、清洗衛(wèi)生,并且仍然能夠跟蹤良好的睡眠。
解決方案分為三個(gè)部分:
- Walabot部分
- Walabot 服務(wù)器部分
- Alexa部分
Walabot 可以在任何 Linux 或 IoT 機(jī)器上使用;在這種情況下,我們將使用筆記本電腦作為基礎(chǔ)。我們還將在本地實(shí)施人工智能,以向用戶識(shí)別模式。
Walabot服務(wù)器將用于存儲(chǔ)信息;這可用于顯示移動(dòng)設(shè)備、物聯(lián)網(wǎng)顯示設(shè)備以及 Alexa 的額外信息。
Alexa 是我們可以使用的眾多輸出選項(xiàng)之一;在這種情況下,它是最容易實(shí)現(xiàn)的,并且可以快速了解您的夜間睡眠情況。
第 1 步:使用 Ubuntu 設(shè)置 Walabot
我們首先必須設(shè)置 Walabot。在這種情況下,我們正在檢測(cè)睡眠時(shí)使用的能量。我們以呼吸的例子為基礎(chǔ),因?yàn)榭雌饋?lái) Walabot 不僅在檢測(cè)運(yùn)動(dòng)方面非常有效,而且在檢測(cè)運(yùn)動(dòng)中使用了多少能量方面非常有效,因此非常適合跟蹤睡眠。
我們可以使用任何運(yùn)行 Ubuntu 和 Python 的物聯(lián)網(wǎng)設(shè)備(例如 Raspberry Pi)來(lái)構(gòu)建它,但對(duì)于這個(gè)原型的案例,我們將使用便宜的筆記本電腦,因?yàn)槲覀冇幸粋€(gè)可以監(jiān)控正在發(fā)生的事情的屏幕。
#!/usr/bin/env python3
from __future__ import print_function # WalabotAPI works on both Python 2 an 3.
from sys import platform
from os import system
from imp import load_source
from os.path import join
import time, random
import math
from collections import deque
import urllib.request
modulePath = join('/usr', 'share', 'walabot', 'python', 'WalabotAPI.py')
wlbt = load_source('WalabotAPI', modulePath)
wlbt.Init()
start = time.time()
class RealtimePlot:
def __init__(self, axes, max_entries =100):
self.axis_x = deque(maxlen=max_entries)
self.axis_y = deque(maxlen=max_entries)
self.axes = axes
self.max_entries = max_entries
self.lineplot, = axes.plot([], [], "ro-")
self.axes.set_autoscaley_on(True)
def add(self, x, y):
self.axis_x.append(x)
self.axis_y.append(y)
self.lineplot.set_data(self.axis_x, self.axis_y)
self.axes.set_xlim(self.axis_x[0], self.axis_x[-1] + 1e-15)
self.axes.set_ylim(0, 0.2)
self.axes.relim(); self.axes.autoscale_view() # rescale the y-axis
def animate(self, figure, callback, interval = 50):
import matplotlib.animation as animation
def wrapper(frame_index):
self.add(*callback(frame_index))
self.axes.relim(); self.axes.autoscale_view() # rescale the y-axis
return self.lineplot
animation.FuncAnimation(figure, wrapper, interval=interval)
def main():
from matplotlib import pyplot as plt
# Walabot_SetArenaR - input parameters
minInCm, maxInCm, resInCm = 30, 150, 1
# Walabot_SetArenaTheta - input parameters
minIndegrees, maxIndegrees, resIndegrees = -4, 4, 2
# Walabot_SetArenaPhi - input parameters
minPhiInDegrees, maxPhiInDegrees, resPhiInDegrees = -4, 4, 2
# Configure Walabot database install location (for windows)
wlbt.SetSettingsFolder()
# 1) Connect : Establish communication with walabot.
wlbt.ConnectAny()
# 2) Configure: Set scan profile and arena
# Set Profile - to Sensor-Narrow.
wlbt.SetProfile(wlbt.PROF_SENSOR_NARROW)
# Setup arena - specify it by Cartesian coordinates.
wlbt.SetArenaR(minInCm, maxInCm, resInCm)
# Sets polar range and resolution of arena (parameters in degrees).
wlbt.SetArenaTheta(minIndegrees, maxIndegrees, resIndegrees)
# Sets azimuth range and resolution of arena.(parameters in degrees).
wlbt.SetArenaPhi(minPhiInDegrees, maxPhiInDegrees, resPhiInDegrees)
# Dynamic-imaging filter for the specific frequencies typical of breathing
wlbt.SetDynamicImageFilter(wlbt.FILTER_TYPE_DERIVATIVE)
# 3) Start: Start the system in preparation for scanning.
wlbt.Start()
fig, axes = plt.subplots()
display = RealtimePlot(axes)
display.animate(fig, lambda frame_index: (time.time() - start, random.random() * 100))
#plt.show()
#fig, axes = plt.subplots()
#display = RealtimePlot(axes)
while True:
appStatus, calibrationProcess = wlbt.GetStatus()
# 5) Trigger: Scan(sense) according to profile and record signals
# to be available for processing and retrieval.
wlbt.Trigger()
# 6) Get action: retrieve the last completed triggered recording
energy = wlbt.GetImageEnergy()
display.add(time.time() - start, energy * 100)
#This is just for prototype purposes, we will gather the data in bulk and send them to the server in the future
if energy * 100 > 0.05 and energy * 100 <= 0.15:
urllib.request.urlopen("http://{your_server_link}/input?medium=1&high=0").read()
elif energy * 100 > 0.15:
urllib.request.urlopen("http://{your_server_link}/medium=0&high=1").read()
plt.pause(0.001)
if __name__ == "__main__": main()
第二步:Walabot Server 數(shù)據(jù)存儲(chǔ)
為了隨著時(shí)間的推移跟蹤睡眠,我們將數(shù)據(jù)存儲(chǔ)在云中是一個(gè)好主意。在這個(gè)例子中,我們?cè)谝粋€(gè)文件中設(shè)置了一個(gè)簡(jiǎn)單的文件存儲(chǔ),但將來(lái)我們可以將它存儲(chǔ)到 mongodb 中。
對(duì)于這個(gè)例子,我們將使用node.js并通過(guò)heroku托管。
設(shè)置服務(wù)器后,使用附加的以下代碼作為您的基礎(chǔ)。您可以選擇托管在其他地方,例如 Amazon、Azure 或 IBM Bluemix;這只是啟動(dòng)服務(wù)器的一個(gè)簡(jiǎn)單示例。
var fs = require('fs');
var app = express()
// respond with "hello world" when a GET request is made to the homepage
app.get('/', function (req, res) {
fs.readFile('data.txt', 'utf8', function readFileCallback(err, data){
if (err){
console.log(err);
} else {
obj = JSON.parse(data); //now it an object
res.send(JSON.stringify(obj));
}});
})
app.get('/input', function (req, res)
{ var fs = require('fs');
var high = req.query.high;
var medium = req.query.medium;
fs.readFile('data.txt', 'utf8', function readFileCallback(err, data){
if (err){
console.log(err);
} else {
obj = JSON.parse(data); //now it an object
obj.high += parseInt(high);
obj.medium += parseInt(medium); //add some data
json = JSON.stringify(obj); //convert it back to json
fs.writeFile('data.txt', json, 'utf8', null); // write it back
res.send('success')
}});
})
一旦達(dá)到閾值,讓 Walabot 更新服務(wù)器。
if energy * 100 > 0.05 and energy * 100 <= 0.15:
urllib.request.urlopen("http://{your_server_link}/input?medium=1&high=0").read()
elif energy * 100 > 0.15:
urllib.request.urlopen("http://{your_server_link}/medium=0&high=1").read()
第 3 步:亞歷克斯
用戶現(xiàn)在可以使用 Alexa 來(lái)了解您的睡眠質(zhì)量。我們將按照本指南使用 Alexa 快速技能套件
該指南將教您:
- 在 AWS 上創(chuàng)建 Lambda 函數(shù)
- 在 Alexa 技能上創(chuàng)建 Alexa 技能
Lambda 托管 Alexa 可以與之交互的無(wú)服務(wù)器函數(shù)。使用 node.js 而不是按照指南創(chuàng)建一個(gè)空的。我們可以從下面復(fù)制/粘貼 Alexa node.js 代碼。
創(chuàng)建函數(shù)后,我們將獲得 ARN 編號(hào)。把它寫下來(lái),這樣我們就可以在 Alexa Skill 工具包的配置中使用它。我們還必須將 Alexa Skill 工具包添加到睡眠跟蹤器中 - 復(fù)制并粘貼整個(gè) node.js 代碼。
目前的情報(bào)托管在 Alexa 中,它會(huì)檢查是否四處走動(dòng)和是否經(jīng)常移動(dòng),例如起床。這樣我們就可以減輕服務(wù)器的負(fù)擔(dān)。
現(xiàn)在我們正在轉(zhuǎn)向 Alexa 技能套件:
在交互模型中,將以下睡眠跟蹤意圖模式放在那里:
Intent Schema:
{
"intents": [
{
"intent": "SleepTrackIntent"
},
{
"intent": "AMAZON.HelpIntent"
}
]
}
Sample Utterances:
SleepTrackIntent How was my sleep
SleepTrackIntent How was my sleep tracking
之后,在配置中,我們可以把我們之前使用的 ARN:
第 4 步:一切準(zhǔn)備就緒,開(kāi)始測(cè)試
現(xiàn)在您可以通過(guò)詢問(wèn)“Alexa,問(wèn) Sleep Tracker 我的睡眠如何?”來(lái)測(cè)試您的 Alexa 技能。
下一步是什么?
我們可以對(duì)睡眠質(zhì)量進(jìn)行機(jī)器學(xué)習(xí),而不是編寫自己的算法。將來(lái)會(huì)這樣做。
?
- 遠(yuǎn)足追蹤器開(kāi)源分享
- 推桿速度追蹤器開(kāi)源分享
- 電子紙潮汐和天氣追蹤器開(kāi)源分享
- 睡眠監(jiān)測(cè)傳感器
- 道路質(zhì)量GPS追蹤器開(kāi)源
- 啤酒追蹤器開(kāi)源硬件
- 加密貨幣追蹤器開(kāi)源分享
- 每日用水追蹤器開(kāi)源
- ACT主動(dòng)Covid追蹤器開(kāi)源
- 放松呼吸運(yùn)動(dòng)追蹤器開(kāi)源分享
- 寵物食品消費(fèi)追蹤器開(kāi)源分享
- Speeduino速度追蹤器開(kāi)源
- Walabot AI鎖舌開(kāi)源分享
- 睡眠質(zhì)量監(jiān)測(cè)器開(kāi)源分享
- LoRa GPS追蹤器開(kāi)源設(shè)計(jì)
- 雷達(dá)干擾追蹤器(RIT),使用公開(kāi)數(shù)據(jù)追蹤軍事雷達(dá) 703次閱讀
- 小森睡眠鬧鐘榮獲多項(xiàng)國(guó)家外觀設(shè)計(jì)專利和發(fā)明專利授權(quán) 940次閱讀
- 鏈路追蹤系統(tǒng)SkyWalking的原理 3868次閱讀
- 尋找開(kāi)源硬件成功的觸發(fā)器 636次閱讀
- 基于單片機(jī)和無(wú)線通信實(shí)現(xiàn)智能睡眠呼吸監(jiān)測(cè)與報(bào)警系統(tǒng) 4283次閱讀
- 智能手表顯示的睡眠數(shù)據(jù)可信嗎 1.1w次閱讀
- dfrobot開(kāi)源圖像識(shí)別傳感器介紹 3284次閱讀
- 什么是眼球追蹤?為什么對(duì)VR如此重要? 7644次閱讀
- 一種智能終端的睡眠監(jiān)測(cè)系統(tǒng),能夠采集人體睡眠腦電信號(hào) 9308次閱讀
- OpenCV上八種不同的目標(biāo)追蹤算法 3.2w次閱讀
- 光線追蹤算法匯總 1.7w次閱讀
- 光線投射,光線追蹤與路徑追蹤的概念與區(qū)別 1w次閱讀
- STM32進(jìn)入和退出睡眠模式 1.1w次閱讀
- Linux進(jìn)程的睡眠和喚醒 4278次閱讀
- 采用光電傳感器的太陽(yáng)追蹤系統(tǒng)設(shè)計(jì)方案 6657次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多