安全软件亚搏在线博客
作者:
马克爱尔兰

谷歌
获取博客新闻稿

饲料燃烧器

关于FME|11月14日,二千零一十八|马克·爱尔兰

健身测量引擎:FME,健身追踪器,以及其他互联网设备

在所有可用的物联网设备中,其中许多是为测量健康度和跟踪活动而设计的。即使你不戴活动追踪器,看看你的同事,你很可能会看到有人戴着这样的装置。

结合FME的能力——读取物联网数据,处理它,并将其推送到输出格式或通知——我们有什么?(哦,我想你知道这是怎么回事!)

是的,我们有一篇文章介绍了FME和健身追踪器。在这种情况下,是fitbit跟踪器;我们在2018年1月增加了对活动跟踪设备的支持。我要介绍:

  • 关于如何使用此功能的一些高级想法
  • 如何使用Web服务将fitbit跟踪器连接到FME
  • 如何获取fitbit数据,以及如何在FME中使用它的一些建议
  • 哪些其他支持的设备与FME Web服务连接?
  • 如何创建FME web服务,对于不支持的设备

尽管我专注于健身追踪器,还有许多其他基于网络的设备和传感器适用于这些内容。另外,我认为这种设备与FME的结合有可能超出个人使用的范围。所以,尤其是健康方面,让我们开始思考如何在企业层面上使用健身追踪器……

企业级活动跟踪:物理素养和其他示例

我最近参加了一个与健康有关的会议,会议的主题是体育素养出现。据我所知,体育素养的目标不是为了保持身体健康而将人们推入某项运动。它的理念是鼓励人们学习基本的运动技能,因此,他们对自己的体育活动和运动更有信心。

例如,因为人们通过做来学习,作为一个镇议会,你可以通过添加步行道或放置户外健身设备来鼓励活动。或者只是画一个跳房子人行道上的图案!可能就这么简单。

但是成功的关键是衡量结果。即使你在城市环境中增加了物理挑战,你如何衡量居民的体力活动是否增加了?只需选择一些居民,并使用活动跟踪器跟踪他们的步骤。即使只是测量步长计数——当然还要使用FME保存记录——也可以证明活动程序是有效的。

这只是一个例子。我可以想到健身追踪器的多种企业级应用,我相信你也可以:

  • 医院理疗师跟踪患者活动以确保他们进行锻炼
  • 山区救援队跟踪覆盖的搜索区域数量
  • 学校或大学体育项目跟踪训练和体育活动的数量
  • 研究睡眠模式的医疗机构

它的范围很广,因为大多数健身追踪器不仅包括活动量,但是GPS位置,睡觉,营养,以及其他。

但是,当然,我们不仅仅是来讨论跟踪活动,但为了演示如何使用FME检索和处理跟踪数据…

用FME连接物联网设备

正如我所说的,虽然我们说的是追踪器,这适用于其他物联网设备,比如保安摄像机,汽车,以及家庭取暖设备。所以你可以把它应用到任何设备上,但现在我用的是Fitbit追踪器。

与FME建立物联网连接有两个部分:建立Web服务(开发人员部分)和通过该服务建立连接(用户部分)。我既是开发者又是用户,不过,正如我稍后将提到的,我不必这样。

设置Fitbit Web服务

无论设备如何,第一步是向设备制造商注册一个开发人员帐户。这里我浏览到dev.fitbit.com/apps,注册的,并创建了一个新的“应用程序”:

这创建了一个新的fitbit“app”,并为我提供了一组可用于连接该app的信息:

不,这不是我真正的身份证/秘密!对不起的。但你很容易创造自己的。

不,这不是我真正的身份证/秘密!对不起的。但你很容易创造自己的。

然后我启动了FME工作台,从菜单栏中选择工具> FME选项,并单击Web连接选项。从那里我单击了一个标记为管理服务的按钮。它向我展示了一个可用的Web服务列表;安装的和可以下载的FME集线器.fitbit是存储在FME集线器上的模板服务,所以我选择了它,然后点击下载按钮:

fitbit Web服务模板(hmmm–我注意到我们使用的是fitbit而不是fitbit。我会向我们的开发人员提到)是下载并安装的,现在我可以输入我的秘密参数:

这对于开发人员来说是非常重要的。现在我可以通过该应用程序使用FME访问用户信息…

设置fitbit连接

为了能够连接到我的Fitbit帐户,我需要用开发者信息设置Web服务。然而,作为一个用户,我可能不想设置一个开发人员帐户,或者感觉很舒服。好吧,没关系。如果您认识的人(比如我)创建了FME web服务(如上所示),他们可以导出并与您共享(比如,在这里)!

所以请随意下载我创建的Web服务并使用它。只需在FME选项下管理Web服务,选择从文件导入,然后选择上面的文件。密码是“fme”。

一旦您拥有了FME web服务(无论是我的还是您创建的),作为用户,您所需要的就是利用该服务的web连接。您可能已经为Web服务或数据库创建了类似的连接,所以这应该更熟悉。

要创建Web连接,我可以再次进入FME选项面板,或者我可以直接在我想要使用它的地方创建连接。例如,这里是一个电视传真机变压器:

这个电视传真机允许我使用身份验证,在此我选择Web连接身份验证并创建新连接。这将打开一个简单的对话框:

我要做的就是选择FitBit,然后点击认证。认证连接需要我通过标准的fitbit对话框输入我的用户名和密码,然后提示我允许FME访问我的账户:

现在开发人员和用户部分都完成了,我已连接好,准备出发…

使用FME访问物联网设备

那么我该如何处理我的Fitbit连接呢?好,的Fitbit Web API文档告诉我什么类型的调用是可用的和什么HTTP方法使用:

…它甚至会告诉我请求的URL是什么:

这对我来说很简单,因为我可以复制那个URL并粘贴到我的电视传真机变压器。我还必须选择正确的HTTP方法(这里是GET)。运行翻译,并为FME提供(在本例中)我昨天的fitbit活动:

显然有很多事情要处理,但这是JSON格式,而FME有一个JSON-FLATENER变压器来处理这些,给出以下内容:

它基本上是一组记录我的活动的属性,加上一份锻炼活动清单(只需一次步行)。

我确实不喜欢“慢走”这一部分!对我来说,5.073773公里在3152000毫秒(52.5分钟)内并不慢,也不小于2英里/小时;但这是Fitbit的解释,我不能怪FME!我还想知道是否有必要测量我的步行距离,精确到1/10毫米,因为我们都知道有什么问题超精密度带来了。

仍然,我已经从Fitbit获得了信息,现在可以使用它了…

将物联网数据与FME结合使用

如果你用了FME很长时间,你会知道有无数的任务你可以使用它;所以,这些只是建议:

  • 把我的数据写入一个在线可视化工具,比如人构成的画面或场景.这并不是说Fitbit的仪表盘不好,但我想,一个专用的可视化工具会让我对自己的统计数据有更多的控制和多样性。
  • 记录你每天的长跑活动,并在地图上标出。例如,你可以选择一条像纽约到旧金山的路线,并根据你的理论进展更新路线。在FME中使用a很容易做到这一点探路者变压器使线路和狙击手将路线缩短至当前总距离。
  • 将您的数据写入在线数据库,让你的朋友和家人也这样做。这样,您就可以记录每个人的活动,并可以比较结果。也许可以生成一个最高分数的联赛表HTMLReportGenerator变压器将帮助)。
  • 使用一个通知——无论是在FME服务器上还是在类似Tweeter的转换器上——来发布你的成就。
  • 不喜欢默认的Fitbit徽章?自己编吧!您可以很容易地自动完成这项工作,以便在达到某些目标时奖励您自己的徽章;例如,你走了多少公里,因为有FME变压器。
  • 扫描食品包装上的营养信息,解释它(尝试特西塞克拉勒),请并将信息推送到Fitbit食物摄入追踪器。
  • 将fitbit练习日志转换为空间数据,记录数据,并通过网络地图发布。

简而言之,让你的想象力尽情发挥吧!如果您在尝试执行特定任务时遇到问题,上的所有人FME知识库Q+A准备好帮忙了。

但我确实提到了一些具体的事情——地点,还有协作——我想更深入地介绍一下这些……

使用fitbit位置(和其他)数据类型

当我第一次尝试获取位置数据时,这个过程失败。因为我没有允许的“范围”。返回到FME选项对话框中fitbit的Web服务定义,您会注意到一个名为“授权参数:url”的参数。它的价值在于:

https://www.fitbit.com/oauth2/authorize?范围=活动&提示=同意&响应\类型=代码

这就是授权FME访问的理由。“范围”部分定义了您可以访问的数据。默认情况下,范围仅为活动;所以我可以找出锻炼的时间,但不是发生在哪里。为此,我需要位置授权。事实上,Fitbit文档告诉我有多个范围选项:

  • 活动
  • 心痛
  • 位置
  • 营养
  • 配置文件
  • 设置
  • 睡觉
  • 重量

因此,为了授予位置权限,我在FME对话框中将该参数更改为:

https://www.fitbit.com/oauth2/authorize?范围=活动+位置&提示=同意&响应\类型=代码

一旦我将其应用到Web服务,我还必须重新验证我的连接。我找到了我的网络连接,右键单击,并选择Reauthenticate。弹出与以前相同的对话框,但现在我有另一个批准范围:

现在在电视传真机我可以运行API命令来获取我练习的细节:

https://api.fitbit.com/1/user/---/activities/17902687982.tcx?includePartialtcx=假

请注意,ID号与我在常规活动查询中检索到的相同。此查询的结果包括GPS点的位置:

出于某种原因(我不知道为什么),它现在返回XML而不是JSON。很奇怪,但是我们也有同样可以轻松处理XML的转换器。在这里我用了XMLFragmenter在“位置”标签上返回每个位置的单独功能,每个都有经度和纬度。然后一个VertexCreatorLineBuilder,和协调系统设置器

这给了我昨晚散步路线的线路特征。5公里后,我一定睡得很好,睡眠统计数据会告诉我,如果我也愿意把它添加到范围中。

协同使用FME和Fitbit:游戏化和安全性

我们现在知道我可以很容易地使用FME来获取fitbit统计数据并加以利用。但是像这样的健身追踪器实际上是关于“游戏化”(在与他人竞争中得分)的,所以协作方法非常有用。这是如何实现的?我可以创建一个单独的工作区来读取每个人的统计信息吗?

这有点复杂。虽然我只需要创建一个fitbit应用程序,应用程序需要一个令牌来访问它想要访问的每个用户帐户。令牌存储在每个FME web连接中,因此,每个用户帐户都需要自己的FME Web连接。

因此,我可以创建FME Web服务(作为开发人员),并用我自己的客户机ID和客户机机密填充它。然后,我可以将其导出为文件(客户机信息经过适当加密),并与其他人共享该服务(如上所述)。这些其他人(用户)可以使用该Web服务创建新的Web连接,使用自己的用户名和密码进行身份验证,读取他们的数据。

但这并不意味着我的工作区可以阅读你的数据。例如,我希望能够创建一个FME Fitbit用户排名表,使用主工作区查询每个人的帐户。但我想我做不到。我无法使用我的连接查询您的数据,即使我们使用了相同的应用程序.所以如果你使用我的应用程序,你不必担心我可以读取你的数据,我不必担心你能读懂我的。

因此,如果我想要一个从多个帐户计算统计信息的工作区,我必须尝试一种更奇特的方法。

  • 将数据加载到数据库:我设置了一个工作区,将数据从Fitbit传输到数据库。每个人都想怎么做就怎么做,使用自己的连接。我有一个单独的工作区来从数据库记录创建统计信息。很容易设置,但依赖于用户定期运行工作区(他们可以,当然,设定一个时间表)。
  • 设置Fitbit好友:我所有的Fitbit用户都是我帐户上的“朋友”。然后我的工作区可以从他们的帐户中获取统计信息。仍然很简单,但是我从朋友那里得到的统计数据比完全帐户访问的要少。
  • 上载所有Web连接:用户导出他们的fitbit网络连接并将其传回给我。我导入它们的连接,并在每个连接上运行一次主工作区。我可以想到两种可能的方法:
    • 在服务器:将连接设置为已发布的参数。使用fme server rest api读取可用连接列表(/security/categories/namedconnections/resources是要使用的命令),然后运行工作区,每次向已发布参数发送不同的连接时。
    • 桌面:将连接设置为属性。将连接名称列表放入文本文件中。读取文本文件。每行都成为用作连接名称的属性。

我绝对不是网络服务安全专家,但我看不到让主工作区从多个用户创建统计信息的另一种方法。如果我错了请告诉我。

其他物联网设备和FME

浏览到FME工作台中的“管理Web服务”对话框,您将看到其他受支持的健身设备。

Strava例如,是一个多设备的应用程序,记录身体活动。对我来说,它似乎更注重跑步和骑自行车,而不是像Fitbit那样的一般运动。这个Strava Web服务可以从FME集线器下载并使用strava API获取数据,同样的,就像我对Fitbit所做的那样。

除此之外,我注意到列表中的其他设备不是用于活动跟踪的。Nest Web服务用于访问Nest IOT设备,如巢恒温器或巢相机。甚至还有一个YouTube上的视频这说明了如何将嵌套API与FME结合使用。这个NetatmoWeb服务用于访问用于空气质量监测的类似设备,包括温度计和烟雾报警器。

创建您自己的Web服务

如果你想连接到一个没有定义web服务的物联网设备,然后就有可能创造你自己的。在可用服务列表的底部,单击+按钮,然后选择身份验证类型:

然后(对于令牌服务),需要填写令牌请求字段,如url。设备的开发人员信息主要包括这些信息。不管是不是灯泡烧烤,您应该能够确定哪些值用于创建新的Web服务。

我会说,在FME中创建您自己的Web服务并不总是简单的。不是FME部分那么难;因为现有的认证标准只提供了松散的指导方针,不同的Web服务以稍微不同的方式解释这些准则。这可能有点像一场战斗(我花了一周左右的时间试图从一个API获得响应,最终放弃了)但绝对有可能。你可以随时寻求帮助知识库如有必要。

总结

说到物联网,FME已经覆盖了。如果设备有一个开放的API,那么你可以使用FME来接收记录的信息,甚至可以向设备发送命令(是特斯拉,我在想你)!

加入FME服务器(或FME云)你也能得到通知的力量。这允许事件驱动的处理;所以你可以自动联系你的设备,以响应来自其他地方的事件(天气预报很冷,打开暖气),请或者根据设备的信息在其他地方发出通知(如果我的花园软管流量指示泄漏或堵塞)。

像往常一样,我希望这个内容激发你的想象力,用FME做伟大的事情。我们刚刚决定成为2018年的FME假日黑客,这将是一个尝试物联网集成的好机会。去年获奖作品是一个工作空间建造3D姜饼屋.也许今年有人能用FME工作区来准备一只圣诞火鸡来控制烹饪过程?或者跟踪你假期后的锻炼?我迫不及待想看看你怎么想。

在博客和知识库中注意官方公告。