标签:
马智
物接入IoT Hub - 架构
物接入IoT Hub - 功能
物接入IoT Hub – 概念
概念 |
描述 |
MQTT |
MQTT是基于二进制消息的发布/订阅(Publish/Subscribe)模式的协议, |
endpoint |
IoT Hub 的服务实例,代表一个完整的IoT Hub 服务。 |
thing |
表示IoT Hub 设备, |
principal |
principal是一个抽象概念,表示设备(thing)的身份。 |
policy |
为身份principal设置对应的策略policy,一个principal对应一个policy。 |
permission |
为每一个policy设置一组权限permission,其中包括主题topic,和对该主题的操作权限operation。 |
topic |
每一个policy都需要指定一个主题项目(topic),在进行使用IoT Hub 服务之前, |
operation |
对topic的操作权限。目前基于MQTT协议,IoT Hub 支持创建发布PUBLISH和订阅SUBSCRIBE两种权限。 |
MQTT协议
MQTT(Message Queuing Telemetry Transport)是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT)。
客户端
服务端
MQTT vs HTTPS:
物接入IoT Hub – 操作流程
目前每个账户只能创建2个endpoint,100个things,100个principal。
物接入IoT Hub – 连接类型
tcp://yourendpoint.mqtt.iot.gz.baiduce.com:1883
ssl://yourendpoint.mqtt.iot.gz.baiduce.com:1884
wss://yourendpoint.mqtt.iot.gz.baidubce.com:8884
物接入IoT Hub – 运维界面
创建设备
创建身份
创建策略
生成秘钥
物接入IoT Hub – MQTT客户端类型
物接入IoT Hub – Paho客户端源码示例
订阅一栋办公楼内第五层的温度值
通过NetBeans 来展示如何通过代码来与物接入服务发送或者接受消息。新建一个Java应用程序类型的Maven项目,右击"依赖关系"选择添加依赖关系,查询org.eclipse.paho,并加入对org.eclipse.paho.client.mqttv3的依赖。
package com.baidu.iot; import java.io.InputStream; import java.security.KeyStore; import java.security.cert.Certificate; import java.security.cert.CertificateFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttMessage; public class Thermometer { public static void main(String[] args) throws Exception { String endpoint = "hostname"; //输入创建实例endpoint返回的hostname String username = "yourendpoint/yourthing"; //输入创建thing返回的username String password = "Dm3yyvOHb7zt/uRWsPgsfsgbnj7CxuVMc+uDbf4j960="; //输入创建principal返回的password String topic = "building-b/floor-5/temperature-1"; //订阅的消息主题,本例是指订阅b号楼第五层的温度 TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509"); tmf.init((KeyStore)null); TrustManager[] trustManagers = tmf.getTrustManagers();
SSLContext ctx = SSLContext.getInstance("TLS"); ctx.init(null, trustManagers, null); MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(true); options.setUserName(username); options.setPassword(password.toCharArray()); options.setSocketFactory(ctx.getSocketFactory()); MqttClient client = new MqttClient(endpoint, "java-client"); client.connect(options); MqttMessage message = new MqttMessage(); message.setPayload("15".getBytes()); client.publish(topic, message); client.disconnect(); } } |
物接入IoT Hub – 与大数据分析服务对接
标签:
原文地址:http://www.cnblogs.com/ibrahim/p/baidu-iot-hub.html