您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 营销创新 > 国内物联网平台初探(一)百度物接入IoT Hub
国内物联网平台初探(一)——百度物接入IoTHub2016.6.12详细内容请联系:ibrahima@126.com2物接入IoTHub-架构•全托管的云服务,帮助建立设备与云端之间安全可靠的双向连接•支撑海量设备的数据收集、监控、故障预测等各种物联网场景3物接入IoTHub-功能•通信协议:支持MQTT•数据安全:设备级认证、策略授权;双向安全连接、SSL传输•开发语言:支持多种开发语言、兼容主流硬件设备1.支持C、C#、Python、Java、PHP等2.支持CLI命令行工具(Python)•分析服务:对接百度大数据服务4物接入IoTHub–概念概念描述MQTTMQTT是基于二进制消息的发布/订阅(Publish/Subscribe)模式的协议,最早由IBM提出的,如今已经成为OASIS规范,更符合M2M大规模沟通。endpointIoTHub的服务实例,代表一个完整的IoTHub服务。thing表示IoTHub设备,用户可以在每个endpoint中创建一个或多个thing。principalprincipal是一个抽象概念,表示设备(thing)的身份。每个thing可以绑定一个principal,每个principal拥有一个policy权限。policy为身份principal设置对应的策略policy,一个principal对应一个policy。permission为每一个policy设置一组权限permission,其中包括主题topic,和对该主题的操作权限operation。topic每一个policy都需要指定一个主题项目(topic),在进行使用IoTHub服务之前,需要先为我们即将开展的订阅发布信息创建一个主题名称,该主题应用于MQTT客户端。topic规则允许字符串可以带一个通配符”#”,例如“temperature/#”就是匹配前缀是temperature的所有topic;单独的“#”表示匹配所有topic。operation对topic的操作权限。目前基于MQTT协议,IoTHub支持创建发布PUBLISH和订阅SUBSCRIBE两种权限。5MQTT协议MQTT(MessageQueuingTelemetryTransport)是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT)。客户端1.发布应用消息给其它相关的客户端。2.订阅以请求接受相关的应用消息3.取消订阅以移除接受应用消息的请求。4.从服务端断开连接。服务端1.接受来自客户端的网络连接2.接受客户端发布的应用消息3.处理客户端的订阅和取消订阅请求。4.转发应用消息给符合条件的客户端订阅。MQTTvsHTTPS:•吞吐量:93倍•发送数据电量消耗:1/11•接收数据电量消耗:1/170•连接保持电量消耗:1/2•网络开销:1/86物接入IoTHub–操作流程目前每个账户只能创建2个endpoint,100个things,100个principal。7物接入IoTHub–连接类型•IoTHub为每个实例提供3种默认连接方式1.TCP:端口1883,不支持传输数据加密,可以通过MQTT.fx客户端连接。2.SSL:端口1884,支持SSL/TLS加密传输,MQTT.fx客户端连接3.WSS:端口8884,支持WebSocket浏览器方式连接,同样包含SSL加密tcp://yourendpoint.mqtt.iot.gz.baiduce.com:1883ssl://yourendpoint.mqtt.iot.gz.baiduce.com:1884wss://yourendpoint.mqtt.iot.gz.baidubce.com:88848物接入IoTHub–运维界面创建设备创建身份创建策略生成秘钥9物接入IoTHub–MQTT客户端类型•WebsocketsClient:百度开放云基于浏览器开发的mqtt客户端•MQTT.fx:目前主流的mqtt客户端,可以快速验证是否可以与IoTHub服务交流发布或订阅消息•Paho:Eclipse基金会提供的开源MQTT客户端实现,可以很好的支持百度开放云物接入IoTHub服务以实现设备互联和物联网应用。10物接入IoTHub–Paho客户端源码示例packagecom.baidu.iot;importjava.io.InputStream;importjava.security.KeyStore;importjava.security.cert.Certificate;importjava.security.cert.CertificateFactory;importjavax.net.ssl.SSLContext;importjavax.net.ssl.TrustManager;importjavax.net.ssl.TrustManagerFactory;importorg.eclipse.paho.client.mqttv3.MqttClient;importorg.eclipse.paho.client.mqttv3.MqttConnectOptions;importorg.eclipse.paho.client.mqttv3.MqttMessage;publicclassThermometer{publicstaticvoidmain(String[]args)throwsException{Stringendpoint=hostname;//输入创建实例endpoint返回的hostnameStringusername=yourendpoint/yourthing;//输入创建thing返回的usernameStringpassword=Dm3yyvOHb7zt/uRWsPgsfsgbnj7CxuVMc+uDbf4j960=;//输入创建principal返回的passwordStringtopic=building-b/floor-5/temperature-1;//订阅的消息主题,本例是指订阅b号楼第五层的温度TrustManagerFactorytmf=TrustManagerFactory.getInstance(X509);tmf.init((KeyStore)null);TrustManager[]trustManagers=tmf.getTrustManagers();SSLContextctx=SSLContext.getInstance(TLS);ctx.init(null,trustManagers,null);MqttConnectOptionsoptions=newMqttConnectOptions();options.setCleanSession(true);options.setUserName(username);options.setPassword(password.toCharArray());options.setSocketFactory(ctx.getSocketFactory());MqttClientclient=newMqttClient(endpoint,java-client);client.connect(options);MqttMessagemessage=newMqttMessage();message.setPayload(15.getBytes());client.publish(topic,message);client.disconnect();}}订阅一栋办公楼内第五层的温度值通过NetBeans来展示如何通过代码来与物接入服务发送或者接受消息。新建一个Java应用程序类型的Maven项目,右击“依赖关系”选择添加依赖关系,查询org.eclipse.paho,并加入对org.eclipse.paho.client.mqttv3的依赖。11物接入IoTHub–与大数据分析服务对接12物接入IoTHub–定价•目前免费使用谢谢
本文标题:国内物联网平台初探(一)百度物接入IoT Hub
链接地址:https://www.777doc.com/doc-4831955 .html