通过mqtt再利用移动oneNet平台的连接与数据收发
这里oneNet平台作为服务器esp8266作为下位机将获得的数据上传至移动oneNet平台。上位机方面做了一个简单的c#winform程序来获取设备状态和下位机上传的数据。
一、整个项目使用的通讯协议。
上位机与服务器使用的是http协议,下位机与服务器使用的mqtt协议。
二、oneNet平台的搭建
首相是注册一个平台账号,然后再登录,之后就是创建设备,在创建设备这里使用的是多协议接入设备(相关注册与数据流之类的详情就不在赘述)。下面是注册好之后的效果图。
这个时候可以用mqtt.fx程序测试以下能否连接上。
连接设置如下
三、库文件准备
#include <PubSubClient.h>主要用到mqtt的库
四、功能代码
4.1 连接
const char *Device_ID = "xxxxxx"; //设备ID
const char *Product_ID = "xxxxxx"; //产品ID
const char *Api_KEY = "xxxxxxx"; //鉴权信息
const char *WiFi_SSID = "xxx"; //WiFi名称
const char *WiFi_Password = "xxxxxxxx"; //WiFi密码
char* pub="$dp"; //发布主题名
4.2上传数据
上传我也是估摸着用,不是很了解,只是知道能够这样上传,而且手册里也没说到这种上传我就只能瞎用了,各位可以自己深入了解再来教教我!!!嘻嘻
//这是我其中一个上传部分的代码
void pubBmp()
{if (millis() - Last_Updata_Time >= 0){Last_Updata_Time = millis();memset(Upload_Package, 0, 100);String Json_Buffer = ",;temp2,"+String(temp2)+",;pressure,"+String(pressure)+",;altitude,"+String(altitude)+";";
//由于不太会jason语句就直接使用网上其他大佬提供的办法,这里格式都是固定的,都是“,;变量名,”+格式类型(变量值)最后以";"结尾就行,一次可以上传多个。Upload_Package[0] = 5;Upload_Package[1] = highByte(Json_Buffer.length());Upload_Package[2] = lowByte(Json_Buffer.length()); for (int i = 0; i < Json_Buffer.length(); i++)Upload_Package[i + 3] = Json_Buffer.c_str()[i];client.publish(pub, Upload_Package, Json_Buffer.length() + 3);}
}
4.3获取数据
这里获取数据用的是http协议在上位机获取。同时还有上位机发送数据。
首先是获取数据。这里用的是c#的代码用到的协议是http,将获取的Jason语句解析后调用。
public void getDevDate(){string url = "http://api.heclouds.com/devices/datapoints?devIds=932938880";//请求地址HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.Method = "GET";SetHeaderValue(request.Headers, "api-key", "DmeBqDy=wOEj3oreThNecuJKv1g=");//设备API地址和 首部参数request.Host = "api.heclouds.com";request.ProtocolVersion = new Version(1, 1);request.ContentType = "text/html;charset=UTF-8";HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream myResponseStream = response.GetResponseStream();StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));string retString = myStreamReader.ReadToEnd();AnalysisT(retString);//Console.WriteLine(retString);myStreamReader.Close();myResponseStream.Close();}
第二个是通过http协议上传数据。
public void UpGps(string lon,string lat){string url = "http://api.heclouds.com/devices/932938880/datapoints";HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.Method = "POST";SetHeaderValue(request.Headers, "api-key", "DNDuXRJFXk7FXEytb7=lxKcncZM=");//设备API地址和 首部参数request.Host = "api.heclouds.com";request.ProtocolVersion = new Version(1, 1);string Cod = "{\"datastreams\":[{\"id\":\"location\",\"datapoints\":[{\"value\":{\"lon\":"+lon.ToString()+",\"lat\":"+lat.ToString()+"}}]}]}";byte[] data = Encoding.UTF8.GetBytes(Cod);request.ContentLength = data.Length;using (Stream reqStream = request.GetRequestStream()){reqStream.Write(data, 0, data.Length);reqStream.Close();}HttpWebResponse resp = (HttpWebResponse)request.GetResponse();Stream stream = resp.GetResponseStream();//获取响应内容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)){//label1.Text = reader.ReadToEnd();Console.WriteLine(reader.ReadToEnd());}}
这就是项目的大概内容,写得比较乱请见谅,有问题欢迎私信或者qq331388572
通过mqtt再利用移动oneNet平台的连接与数据收发相关推荐
- 基于STM32与OneNet平台的智能家居系统设计(代码开源含自制APP代码)
前言:本文为手把手教学的基础物联网开发设计,项目包含对下位机(MCU对外设数据读取与控制)和上位机(包含服务平台和APP端)的设计.下位机选取STM32作为MCU,外设有LED灯和DHT11温湿度传 ...
- NBIOT模组M5310接入OneNET平台
一.OneNET平台介绍 中国移动物联网开放平台OneNET是由中国移动打造的PaaS物联网开放平台.平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件.智能家居产品提供完 ...
- 电信iot平台和移动oneNet平台使用心得
最近在做智能设备,设备跟服务器通信,用到Iot技术通信方式,先使用到电信iot平台,再使用移动oneNet平台,,期间遇到很多问题,不过在一次又一次的迭代,终于找到一个比较好的方法,兼容两个平台,可以 ...
- 做好数据再利用,让企业数据价值发挥最大
2020年我们最常用到的数据种类有哪些呢?这些数据你应该都有使用到: 防疫复工( 病情.治安.城市服务.基础设施运营等): 卫生健康(公共卫生.医疗保险.医疗资源.药品安全等): 交通出行( 实时位置 ...
- ESP01 连接OneNet平台
ESP01 连接OneNet平台 ESP01 连接OneNet平台 1.硬件准备 2.ESP8266 Arudino环境搭建 3. ESP8266采集DHT11数据 4.OneNet平台搭建 5.ES ...
- NBIOT模块 BC26 openCPU LWM2M协议传输数据到OneNet平台
BC26支持openCPU是一个特点.openCPU的意思就是向芯片编程,既是通信芯片又可以当MCU来使用.下面分享一下我使用BC26进行openCPU的实现过程. 软件: ①.sublimetext ...
- NBIOT模块 BC20 OPENCPU LWM2M协议传输数据到OneNet平台
BC20支持OPENCPU是一个特点.OPENCPU的意思就是向芯片编程,既是通信芯片又可以当MCU来使用.下面分享一下我使用BC20进行openCPU的实现过程. 软件: ①.sublimetext ...
- 【IoT】NB-IoT模块对接移动oneNET平台流程
Onenet 基础通信如此下图所示,可以看到这个是没有UDP层的,所以需要把Coap层和UDP层进行对接: SDK移植到NB芯片:其他两种凡是请参考 Blog: MCU+NB模组 在NB芯片中移植基础 ...
- 利用延时处理实现表单系统数据通过微信公众号自动发送消息提醒
延时处理是指在流程搭建过程中,在第一个步骤完成后不需要立即开启后续步骤,需要几个小时或者几天后再执行,这时可以利用延时处理功能,来实现数据流程. 如:利用集简云无代码软件集成平台, 连接金数据表单系统 ...
最新文章
- 机器学习——聚类算法
- Android 使用自带的HttpClient进行https请求出现403的解决过程记录
- .pyc文件_python专题shutil高阶文件操作
- 财务审批流程都有哪些步骤呢?
- 隐藏JqueryMobile中的Header与Footer
- 自定义一个springboot启动器
- “云原生”为什么对云计算生态充满吸引力?
- 1583. 统计不开心的朋友
- leetcode 706. 设计哈希映射
- python死磕八之迭代器与生成器
- 华为,百度豪投,这类程序员要再次上榜了!
- NSArray和NSString的联合使用
- iphone9发布_苹果将发布iPhone9!配置升级价格公道,期待官网亮相!
- Linux之操作系统杂谈
- GitHub冲突解决
- chmod 更改文件的权限
- 【结课报告】游戏中的知识产权
- 03惯性导航系统误差分析
- Python学习笔记——python基础之Python实现名片管理系统
- win10 uwp 打电话