国外物联网平台(3):IBM Watson IoT
国外物联网平台(3)
——IBM Watson IoT
马智
平台定位
提供全面管理的云托管服务,旨在简化并从 IoT 设备中获得价值。
- Watson IoT Platform 提供对 IoT 设备和数据的强大应用程序访问,可快速编写分析应用程序、可视化仪表板和移动 IoT 应用程序。
- Watson IoT Platform可以执行强大的设备管理操作,并存储和访问设备数据,连接各种设备和网关设备。Watson IoT Platform 通过使用 MQTT 和 TLS,提供与设备之间的安全通信。
- Watson IoT Platform使应用程序与已连接的设备、传感器和网关进行通信并使用由它们收集的数据。应用程序可以使用实时 API 和 REST API 来与设备进行通信。
架构
平台API
连接类API
- MQTT API for applications
- MQTT API for devices
- MQTT API for gateways
- HTTP API for applications
- HTTP API for devices
实时分析类API
信息管理类API
风险管理类API
- IBM Blockchain API
- Open Blockchain API
认知计算类API
自然语言处理
- Natural Language Classifier
- Concept Expansion (Beta)
- Dialog
- Language Translation
- Relationship Extraction (Beta)
- Text to Speech
- Speech to Text
- Retrieve and Rank
图像分析
- Alchemy Vision
- Visual Recognition (Beta)
文本分析
- Alchemy Language
- Relationship Extraction (Beta)
相关概念
- 组织:向 Watson IoT Platform 注册时提供组织标识,确保仅可从设备和应用程序访问组织自己的数据。
- 设备:设备可以是连接到因特网并具有放入云中的数据的任何对象。设备必须先进行注册,然后才能连接到 Watson IoT Platform。设备将使用认证令牌向 Watson IoT Platform 唯一表明自身身份。设备分为受管设备和非受管设备。
- 应用程序:连接到因特网并且希望与来自设备的数据进行交互和/或以某种方式控制这些设备的行为的任何对象。应用程序使用 API 密钥和唯一应用程序标识向 Watson IoT Platform 表明自身身份。
- 网关设备:网关是设备的专用类。它们兼具应用程序和设备的功能,使其能够充当访问点,为无法直接连接的其他设备提供与服务的连接。
- 事件:事件是设备将数据发布到 Watson IoT Platform 所采用的机制。设备控制事件的内容,并为其发送的每个事件分配名称。Watson IoT Platform 接收到事件时,将使用凭证来确定从哪个设备发送了该事件。由于使用这种体系结构,设备将无法模拟其他设备。
- 命令:命令是应用程序可用于与设备进行通信的机制。仅应用程序可发送命令,命令必须向特定设备发出。
- 设备注册表:管理库存,配置安全性以及存储数百万设备的元数据。定义设备类型以表示各设备型号,并将缺省元数据应用于该类型的所有设备。
- 连接:通过 MQTT 将设备、网关和应用程序安全地直接连接到 Watson IoT Platform。将设备中的数据作为事件进行建模,并控制事件进入应用程序的流程。
- 网关支持:在许多情况下,无法在服务和设备之间进行直接连接,Watson IoT Platform 允许可为多个设备提供间接连接的网关设备进行连接。
- 设备管理:通过在设备中实现对 Watson IoT Platform 设备管理协议的支持,允许 Watson IoT Platform 管理设备的生命周期。
- 外部服务集成:Watson IoT Platform 支持与外部服务的集成,以将其他联机设备支持的数据和操作引入到平台中,从而使应用程序和设备开发人员能够一直轻松利用 Watson IoT Platform API 与这些服务无缝交互。
- 历史记录:配置 Watson IoT Platform 以存储设备生成的事件记录。
- 上次事件高速缓存:API 现在可以返回特定设备的上次记录的 event-id 值,或者特定设备报告的每个 event-id 的上次记录值。上次事件高速缓存仅适用于过去 30 天内发送的值。
功能
-
连接、配置和管理设备
- 在Bluemix连接Watson IoT ,配置和管理IoT设备和数据,创建应用程序、可视化仪表板和移动 IoT 应用程序。
-
可视化归集事件
- Bluemix以可视化的方式收集IoT事件到逻辑流程图中,使用Node-Red进行拖拽式流程编排。
- 收集和管理时间序列视图的数据,准实时地在数据可视化面板中查看IoT设备状态。
-
实时分析
- 使用Analytics Real-Time Insights执行IoT设备数据的实时分析,观察设备健康度和操作状态。
-
应用认知计算
- 使用文字和语音进行自然的交互
- 图像和场景识别
- 对传感器输入进行模式匹配
- 与外部数据进行关联,如天气和Twitter
-
应用区块链
- 使用风险管理平台,包括区块链,存储数据到共享且无法擦除的分类账,为所有参与者提供安全的交易数据链访问。
-
设备管理
- 通过使用设备管理服务,执行各种设备操作,例如,重新引导或更新固件、接收设备诊断和元数据,或者执行批量设备添加和移除。
-
响应式可扩展连接
- 使用业界标准的 MQTT 协议(经 OASIS 批准)连接设备和应用程序。MQTT 旨在与设备实时、高效地交换数据。
-
安全通信
- 从设备中安全接收数据并向设备发送命令。通过将 MQTT 与 TLS 结合使用来完成此操作,保护设备与服务间的所有通信。
-
存储和访问数据
- 有权访问来自设备的实时数据,并将数据存储一段时间,从而有权访问设备的历史数据和实时数据。
Bluemix
- Bluemix是基于 Cloud Foundry 开源项目的平台即服务 (PaaS) 产品。
- Bluemix提供了流行的运行时和庞大的服务目录,且支持基于 Docker 的容器和 VM 部署。
- Bluemix用于快速创建、托管、扩展服务和应用程序,开发者只需要关注应用程序逻辑和应用程序设计。
- Bluemix提供了对物联网设备和数据的应用程序访问,功能简单而强大。
外部服务集成
-
Jasper 是一个用于 SIM 设备的管理平台。Jasper 已集成到 Watson IoT Platform 仪表板中,从而可通过 Watson IoT Platform 组织仪表板来管理 Jasper 设备。
-
查看总体 Jasper 数据
- 显示:状态、套餐、本月至今数据使用情况、本月至今 SMS 使用情况、本月至今语音使用情况、超额限制、添加日期和修改日期。
-
更改 SIM 激活状态
- 选择:库存、可随时激活、已激活、已取消激活和已废弃
-
查看 SIM 使用情况
- 显示:周期开始日期、计费数据和数据总量、计费 SMS 和 SMS 总量、计费语音和语音总量。
- 可以使用 YYYY-MM-DD 格式设置周期开始日期。
- 将 SMS 发送到 SIM
- 更改套餐
-
-
与IBM Analytics for Hadoop 集成
- 使用 IBM Hadoop 分布式文件系统 (HDFS) 节点,应用程序执行创建、读取、附加和删除操作。
-
与Mobile Application Security 和 Push 集成
- 使用 Bluemix 中的应用程序向移动设备发送通知,以响应从 Internet of Things Foundation 传感器设备收到的数据。
Analytics Real-Time Insights
- 提供实时分析引擎和分析编写功能,支持对 IoT 设备数据进行监控并赋予语境,能加快了解当前情况,改进决策并更好地响应出现的问题。
- 使用基于规则的简单组合模型以及可扩展框架,将IoT设备数据与主资产数据相组合,分析上下文中的情境,以及自动响应以改进运营并提高可用性和服务级别。
- 获取实时设备数据订阅源。入局数据通过虚拟数据模型进行解释,此模型可使用来自资产管理系统的主资产数据进行扩充。
- 用户定义的规则会应用于实时流式采集数据,以确定需要关注的情况。通过操作引擎,定义对检测到的情况的自动响应,例如发送电子邮件、触发 IFTTT 配方、执行 Node-RED 工作流程或使用 Webhook 来连接到各种 Web Service。
- 实时数据显示在 IoT 设备位置、数据、度量值和警报一览视图的可配置仪表板。
- 通过 Analytics Real-Time Insights,对来自设备的实时数据执行分析,并深入了解这些设备的运行状况以及总体运营状况。
- 设置 Watson IoT Platform 服务将分析引擎连接到设备后,才能开始使用 Analytics Real-Time Insights。
- 使用现有 Watson IoT Platform 服务,也可以创建新服务。
- 要快速启动并运行此服务,将手机应用程序及其关联的 Watson IoT Platform 服务部署到组织。
MQTT
- 设备和应用程序用于与Watson IoT Platform 进行通信的主机制为 MQTT;这是设计用于与传感器和移动设备高效交换实时数据的协议。
- MQTT 通过 TCP/IP 运行,mqtt.org 中提供了一系列范围广泛的 MQTT 客户机库,从 Eclipse Paho project 查找MQTT客户机库。
- MQTT 3.1 是目前使用最广泛的协议版本。V3.1.1 包含多个次级增强功能,并且已作为 OASIS 标准认可。
MQTT服务质量
-
最多一次 (QoS0)
- 消息最多传递一次,也可能根本不会传递。通过网络进行传递未得到确认,并且该消息未存储。如果客户机断开连接或服务器发生故障,那么可能会丢失消息。QoS0 是最快的传输方式。有些时候被称为"发完就忘"。
- MQTT 协议不需要服务器在 QoS0 级别将发布内容转发给客户机。如果客户机在服务器接收到发布内容时已断开连接,那么根据服务器实施,可能会废弃发布内容。
-
至少一次 (QoS1)
- 消息总是至少传递一次。如果在发送方接收到确认之前发生了故障,那么可能会多次传递该消息。该消息必须存储在发送方本地,直到发送方接收到指示接收方已发布该消息的确认为止。在此期间将一直存储该消息,以防必须再次发送该消息。
-
恰好一次 (QoS2)
- 消息总是恰好传递一次。该消息必须存储在发送方本地,直到发送方接收到指示接收方已发布该消息的确认为止。在此期间将一直存储该消息,以防必须再次发送该消息。QoS2 是最安全但最慢的传输方式。将使用比 QoS1 更复杂的握手和确认序列,以确保不会出现重复的消息。
应用程序的 HTTP API
- 查看组织详细信息。
- 成批设备操作(列出所有、添加、移除)。
- 设备类型操作(列出所有、创建、删除、查看详细信息、更新)。
- 设备操作(列出设备、添加、移除、查看详细信息、更新、查看位置、查看管理信息)。
- 设备诊断操作(清除日志、检索日志、添加日志信息、删除日志、获取特定日志、清除错误代码、获取设备错误代码、添加错误代码)。
- 连接问题确定(列出设备连接日志事件)。
- 历史事件检索(查看所有设备的事件、查看某种设备类型的事件、查看特定设备的事件)。
- 设备管理请求操作(列出设备管理请求、启动请求、清除请求状态、获取请求详细信息、获取每个受影响设备的请求状态列表、获取特定设备的请求状态)。
- 使用情况管理(检索某段时间内的活动设备数、检索历史事件数据所用的存储量、检索已用数据总量)。
- 代表设备发布事件(测试)
- 服务状态查询(为组织检索服务状态)。
应用程序的 MQTT 连接
-
客户机连接
- 每个已注册组织具有唯一端点,在连接该组织中应用程序的 MQTT 客户机时必须使用此端点。
- org_id.messaging.internetofthings.ibmcloud.com
-
MQTT 客户机标识
- 应用程序必须使用特定格式的客户机标识进行认证
- a:org_id:app_id
-
MQTT 认证
- 应用程序需要 API 密钥才能连接到组织。注册 API 密钥时,将生成必须与该 API 密钥配合使用的令牌。
-
发布设备事件
- 应用程序在发布事件时可将事件视为如同来自任何已注册设备一样。
- 发布到主题 iot-2/type/device_type/id/device_id/evt/event_id/fmt/format_string
-
发布设备命令
- 应用程序可将命令发布到任何已注册设备。
- 发布到主题 iot-2/type/device_type/id/device_id/cmd/command_id/fmt/format_string
-
预订设备事件
- 应用程序可预订来自一个或多个设备的事件。
- 预订主题 iot-2/type/device_type/id/device_id/evt/event_id/fmt/format_string
-
预订设备命令
- 应用程序可预订将发送到一个或多个设备的命令。
- 预订主题 iot-2/type/device_type/id/device_id/cmd/command_id/fmt/format_string
-
预订设备状态消息
- 应用程序可预订一个或多个设备的监视状态。
- 预订主题 iot-2/type/device_type/id/device_id/mon
-
预订应用程序状态消息
- 应用程序可预订一个或多个应用程序的监视状态。
- 预订主题 iot-2/app/app_id/mon
设备的 HTTP API
-
发布事件
- 作为 MQTT 的替代方法,设备可通过 HTTP API 向 IoT Platform 提交事件。设备可以向"https://${orgid}.internetofthings.ibmcloud.com/api/v0002/device/types/${typeId}/devices/${deviceId}/events/${eventId}"提交"POST"请求。
-
认证
- 请求必须包含授权头。只支持基本认证方法。通过 API 密钥认证应用程序,在应用程序向 IoT Platform API 发出任何请求时,必须提供 API 作为其凭证:
- 用户名 ="use-token-auth"
- 密码 = 认证令牌
-
服务质量
- HTTP(S) 协议提供"最多一次"尽力而为的传送,类似于 MQTT 协议提供的 QoS0 服务质量。在使用 QoS0 或 HTTP(S) 等效项传送事件消息时,设备或应用程序必须实现重试逻辑来保证传送。
设备的 MQTT 连接
-
客户机连接
- 每个已注册组织具有唯一端点,在连接该组织中设备的 MQTT 客户机时必须使用此端点。
- org_id.messaging.internetofthings.ibmcloud.com
-
MQTT 客户机标识
- 设备必须使用以下格式的客户机标识进行认证:
- d:org_id:device_type:device_id
-
MQTT 认证
- 用户名
- 服务当前仅支持针对设备进行基于令牌的认证,因此目前针对设备只有一个有效用户名。值"use-token-auth"向服务表明:设备的认证令牌将作为 MQTT 连接的密码进行传递。
- 密码
- 如果使用基于令牌的认证,请在建立 MQTT 连接时,将设备认证令牌作为密码提交。
-
发布事件
- 设备只能发布以下格式的事件主题:iot-2/evt/event_id/fmt/format_string
-
预订命令
- 设备只能预订以下格式的命令主题:command_id/fmt/format_string。无法预订其他设备的事件,并且将仅接收专门发布到设备自身的命令。
-
受管设备
- 设备生命周期管理支持是可选的,IoTF 使用的设备管理协议利用设备已用于事件和命令控制的相同 MQTT 连接。
- 受管设备可以发布服务质量 (QoS) 级别为 0 或 1 的消息。如果使用 QoS 级别 1,那么在必要时会对来自设备的消息进行排队。来自设备的消息不能是保留消息。
- IoT Platform 可发布 QoS 级别为 1 的请求以支持消息排队。要在未连接受管设备的情况下让发送的消息排队,该设备应使用"cleansession=false"。
设备管理协议
- "设备管理"功能可创建新一类的已连接设备,即"受管设备"。受管设备必须包含一个管理代理程序,该代理程序可理解"IoT Platform 设备管理协议",并可向"IoT Platform 设备管理"服务器发送"管理设备"请求。受管设备可以访问设备管理操作。
- 设备管理协议定义了一组受支持的操作。设备管理代理程序可以支持其中一部分操作,但必须支持"管理设备"和"取消管理设备"操作。支持固件操作的设备还必须支持观察。
-
设备管理生命周期
- 在 IoT Platform 中使用仪表板或 API 创建设备及相关设备类型。
- 设备必须连接到 IoT Platform 并使用"管理设备"操作,才能成为受管设备。
- 通过设备操作(例如,固件更新和设备重新引导)查看和操纵设备的元数据(如设备模型中所述)。
- 设备可以通过设备管理协议来传达更新(例如,位置或诊断信息,以及错误代码)。
- 为了能够在设备众多的情况下处理失效的设备,"管理设备"操作请求中提供了一个可选的生命周期参数。此生命周期参数包含的是一个秒数,设备必须在这段时间内发出另一个"管理设备"请求,才能避免被标记为停止而成为非受管设备。
- 设备退役后,可以使用仪表板或 REST API 从 IoT Platform 中移除该设备。
Context Mapping
- Watson IoT Context Mapping 允许应用程序使用地理空间功能,例如,基于全球道路网络的地图匹配和最短路径搜索。
-
通过 Context Mapping REST API 使用以下功能:
- 使用道路网络几何图形的准确度高的地图匹配。
- 处理地图上的实时事件,例如交通。
- 考虑到实时事件的动态最短路径搜索(路线搜索),例如交通。
- 检索道路几何图形数据,可以用于在地图上绘制道路形状。
-
Context Mapping 服务使用从 OpenStreetMap 抽取的道路网络数据(以 WGS84 坐标的形式)。只有车辆可通行的道路才用于分析。
- 使用 Context Mapping 进行地图匹配
- 使用 Context Mapping 进行路线搜索
- 使用 Context Mapping 处理交通事件
Driver Behavior
- 使用 Watson IoT Driver Behavior,通过使用 Driver Behavior API 对驾驶员的行为进行分析,以收集并分析汽车探测数据和前后关联的数据。
- 在创建和部署未绑定的服务实例之后,将应用程序与 Driver Behavior API 集成。
安全
-
IBM Watson IoT 是一项完全受管的云托管服务,解决了以下方面的安全问题:
- 认证:查明尝试访问的用户、设备或应用程序的身份。
- 授权:确保用户、设备和应用程序有权访问组织的信息。
- 加密:确保数据仅可由授权方读取,并且不会被拦截。
安全 – 组织管理
-
基于浏览器的 GUI 和 REST API 前均标有 HTTPS,同时带有 DigiCert 签署的证书。
- GUI:已通过 IBM 标识认证。
- REST API:通过 GUI 创建 API 密钥后,可将其用于针对组织执行已认证 的REST API 调用。
安全 – 设备和应用程序
- 注册设备或生成 API 密钥后,认证令牌将使用加密盐 (Salt) 并散列化。
- 设备凭证和 API 密钥在遭到破坏的情况下可单独进行撤销。
安全 – 连接
- 设备通过只有用户知道的 clientId 和认证令牌的唯一组合进行连接。
- 提供了针对通过 TLS (V1.2) 的连接的完全支持。
- 使用了开放式标准 (MQTT V3.1.1) 以允许在很多平台和语言之间轻松进行互操作。
安全 – 设备之间的数据泄露
-
设备仅有权发布和预订受限主题空间:
- /iot-2/evt/+/fmt/+
- /iot-2/cmd/+
- 所有设备都使用同一主题空间,防止设备能模仿其它的设备。
- 假冒其它设备的唯一方式是获取该设备的遭到破坏的安全凭证。
安全 – 防止组织之间的数据泄露
- 设备和应用程序的主题空间域在单个组织内。
- 基于客户机认证,使用组织标识变换主题结构,从而使一个组织无法访问另一个组织中的数据。
平台界面
创建Bluemix账户
选择区域
Watson IoT Platform 服务实例
配置用户访问权限
生成API秘钥
创建设备类型
添加设备
设备认证令牌
设备事件