实战百度天工云
来源:互联网 发布:湖南银楼软件下载 编辑:程序博客网 时间:2024/04/30 15:08
一、概要
1.平台架构
2.DEMO介绍
外部数据 接口(入) 百度云 接口(出) 应用
天气数据 MQTT 物接入 规则引擎 TSDB Restful API 个人或者企业应用
二、物接入
1.概念
物接入IoT Hub 是全托管的云服务,可以在智能设备与云端之间建立安全的双向连接,并通过主流的物联网协议(如MQTT)通讯,快速实现物联网项目(抄的官方介绍)。
简单描述:抽象了物的概念,使得外部数据通过mqtt协议接入云端。
2.mqtt
MQTT(Message Queuing Telemetry Transport Protocol)的全称是消息队列遥感传输协议的缩写,是一种基于轻量级代理的发布/订阅模式的消息传输协议,运行在TCP协议栈之上,为其提供有序、可靠、双向连接的网络连接保证。
2.1 MQTT模型
客户端只需要把数据发给代理服务器,代理服务器会将数据传给订阅客户端。这里的客户端既可以是发布者又可以是订阅者。
百度云物接入配置参照文档:
https://cloud.baidu.com/doc/IOT/GettingStarted.html#.E5.88.9B.E5.BB.BA.E7.89.A9.E6.8E.A5.E5.85.A5.E5.AE.9E.E4.BE.8B
三、规则引擎
1.概览
2.目的
规则引擎可以简单的理解将物接入的数据做简单处理后,放入TSDB。
四、时序数据库
1.概念
在物联网时代,企业需要处理各种设备产生的带有时间标签的数据,即时间序列数据。时间序列数据主要由各类型实时监测、检查与分析设备所采集或产生,涉及电力行业、化工等行业。这些工业数据的典型特点是:产生频率快、严重依赖于采集时间、测点多信息量大等。普通关系型数据库无法高效地处理此类数据。为了更好的处理时间序列数据,时序数据库(Time Series Database,下简称TSDB)应运而生。TSDB是用于管理时间序列数据的专业化数据库。区别于传统的关系型数据库,TSDB针对时间序列数据的存储、查询和展现进行了专门的优化,从而获得极高的数据压缩能力、极优的查询性能,特别适用于物联网应用场景。
2.作为数据云端存储的路径,为其他应用提供接口。
五、代码
1.外部数据(入口)
1.1功能:获取实时pm2.5数据传给百度云物接入
1.2 代码:
# -*- coding: utf8 -*-import timeimport paho.mqtt.client as mqttimport datetimeimport sys, urllib, urllib2, jsondef on_publish(msg, rc): #成功发布消息的操作 if rc == 0: print("publish success, msg = " + msg)def on_connect(client, userdata, flags, rc): #连接后的操作 0为成功 print("Connection returned " + str(rc))client = mqtt.Client( client_id="test_mqtt_sender_1", #用来标识设备的ID,用户可自己定义,在同一个实例下,每个实体设备需要有一个唯一的ID clean_session=True, userdata=None, protocol='MQTTv311')trust = "./root_cert.pem" #开启TLS时的认证文件目录user = "weather/thing1"pwd = "XXXXXXXXXXXXXXXXXXXXXXXXXX" #换成自己的endpoint = "weather.mqtt.iot.gz.baidubce.com"port = 1884topic = "test-iot-server"client.tls_set(trust) #设置认证文件client.tls_insecure_set(True) #检查hostname的cert认证# client.tls_set_context()client.username_pw_set(user, pwd) #设置用户名,密码client.connect(endpoint, port, 60) #连接服务 keepalive=60client.on_connect = on_connect #连接后的操作client.loop_start()time.sleep(2)count = 0area = "suzhou"url = 'http://www.pm25.in/api/querys/pm2_5.json?city=%s&token=5j1znBVAsnSf5xQyNQyq'%areawhile True: req = urllib2.Request(url) resp = urllib2.urlopen(req) content = resp.read() msg = str(json.loads(content)[0]["pm2_5"]) send_mseg = '{"pm_25": %s,"area":"%s","time":"%s"}'%(msg,area,datetime.datetime.now()) print(send_mseg) rc , mid = client.publish(topic, payload=send_mseg, qos=1) #qos on_publish(send_mseg, rc) time.sleep(10)
2.数据读取(TSDB restful api)
1.1功能:通过调用TSDB restful api来查询数据
1.2代码:
# -*- coding: UTF-8 -*-import hashlibimport hmacimport stringimport datetimeimport timefrom baidubce.auth.bce_credentials import BceCredentialsfrom baidubce.auth import bce_v1_signerimport sys, urllib, urllib2, jsonif __name__ == "__main__": credentials = BceCredentials("XXXXXXX","XXXXXXXXXXXXXXXX") #换成自己的 http_method = "PUT" path = "/v1/datapoint" headers = {"host": "dbtest.tsdb.iot.gz.baidubce.com"} params = {'query':''} timestamp = 0 headers_to_sign = {"host"} result = bce_v1_signer.sign(credentials, http_method, path, headers, params, timestamp, 1800, headers_to_sign) print result # 请求百度TSDB的目录 url = 'https://dbtest.tsdb.iot.gz.baidubce.com' # half_url = u'/v1/metric' half_url = u'/v1/datapoint?query' #构造get请求 req = urllib2.Request(url+half_url.encode('utf-8')) #添加header req.add_header('Authorization', result) req.add_header('Host','dbtest.tsdb.iot.gz.baidubce.com') req.add_header('Content-Type','application/json; charset=utf-8') # req.get_body("") # 构造put req.get_method = lambda: 'PUT' req_data = "{\"queries\": [{\"metric\": \"pm_25\",\"filters\": {\"start\": 0},\"limit\":1000}],\"disablePresampling\":false}" response = urllib2.urlopen(req,req_data) print response.read()
参考:
百度云官方文档:https://cloud.baidu.com/doc/index.html
- 实战百度天工云
- 百度天工云mqtt测试中的一个BUG
- 百度天工IoT 快速上手
- 一文入门百度天工IOT平台
- 迈思德网关+百度天工为远程监控保驾护航
- 百度云推送项目实战
- 从传统工控软件角度对百度天工平台解读
- [传智播客][4天工作流之JBPM项目实战全套(价值1000)][F]
- 天工架构
- WAMP+百度Echarts实战
- 继百度天工物联网平台对接之后,迈思德网关成功与中国联通APN移动应用平台对接
- 百度无人车和天工物联网都使用了时序数据库,但是你有多了解时序数据库?
- REST实战——调用百度语音的云服务
- android studio集成 百度云推送项目实战 注意事项
- Citrix Provisioning Services 7.13企业实战 百度云下载
- 百度开发平台实战讲解
- 第二天工作感想
- 第一天工作
- AngularJs购物车删除和计算总金额
- 【论文阅读】Superpixel-based Tracking-by-Segmentation using Markov Chains
- HBase最佳实践-HBase中的写性能优化策略
- Spring Boo之helloworld(myeclipse版本)
- PAT甲1010 最大进制不一定是36
- 实战百度天工云
- spark
- NO.1 基于verilogHDL的时钟分频与任意占空比调节
- 前导码,时域测量和频域测量
- AngularJs请求json字符串
- 初学线性规划
- C++ REST SDK(C++语言客户端-服务器通信库)
- (QT)QT跳转页面(信号-槽机制)
- HDU 2844:Coins (完全背包)