最近对物联网上传数据产生了兴趣,成功上传数据到云平台了,这里跟大家分享下心得。

为什么选用ESPDUINO,因为arduino yun太贵,arduino+wifi模块也挺麻烦的也比较贵ESPDUINO只要40多+传感器不超过50元就可以实现了

这里可以看看 ESPDUINO的介绍http://bbs.doit.am/forum.php?mod=forumdisplay&fid=69&page=2

先来展示下成果吧

先贴arduino端的代码吧

/*Name:      OneNetTest.inoCreated:  2017/11/22 星期三 21:38:48Author:  蓝色魅影
*/
#include <dht11.h>
#include <ESP8266WiFi.h>const char *ssid = "路由器账号";
const char *password = "路由器密码";dht11 DHT11;
#define DHT11PIN 2 //DHT11 PIN 2 连接ARDUINO 2WiFiClient client;
#define DebugSerial Serialconst unsigned int WIFIRxBufferLength = 1000;
char WIFIRxBuffer[WIFIRxBufferLength];
unsigned int WIFIBufferCount = 0;#define Success 1U
#define Failure 0Uchar OneNetServer[] = "183.230.40.33";       //服务器地址
char device_id[] = "******";    //修改为自己的设备ID
char API_KEY[] = "******";    //修改为自己的API_KEY
char sensor_temp[] = "TEMP";  //不需要修改
char sensor_humi[] = "HUMI";  //不需要修改void setup() {Serial.begin(115200);delay(10);WifiConnected();
}void loop() {int chk = DHT11.read(DHT11PIN);                              //读取温湿度值//串口调试DHT11输出信息DebugSerial.println("Read sensor: " + chk);delay(5000);if (chk == DHTLIB_OK) {Serial.println(DHT11.temperature);Serial.print("connecting to ");Serial.println(OneNetServer);// Use WiFiClient class to create TCP connectionsconst int httpPort = 80;if (!client.connect(OneNetServer, httpPort)) {Serial.println("connection failed");return;}postDataToOneNet(API_KEY, device_id, sensor_temp, DHT11.temperature);//上传温度数据postDataToOneNet(API_KEY, device_id, sensor_humi, DHT11.humidity);//上传湿度数据Serial.println();Serial.println("closing connection");}else{DebugSerial.print("Read sensor: ERROR");}
}//链接WIFI
void WifiConnected()
{WiFi.disconnect();WiFi.mode(WIFI_STA);Serial.println();Serial.print("Connecting to");Serial.println(ssid);WiFi.begin(ssid, password);while (WiFi.status() != WL_DISCONNECTED){delay(500);Serial.print(".");}Serial.println("");Serial.println("WIFI connected");Serial.println(WiFi.localIP());}void clrWIFIRxBuffer(void)
{memset(WIFIRxBuffer, 0, WIFIRxBufferLength);      //清空WIFIBufferCount = 0;
}//发送数据到云平台
void postDataToOneNet(char* API_VALUE_temp, char* device_id_temp, char* sensor_id_temp, double data_value)
{char send_buf[400] = {0 };char text[100] = {0 };char tmp[25] = {0 };char value_str[15] = {0 };dtostrf(data_value, 3, 2, value_str); //转换成字符串输出//连接服务器memset(send_buf, 0, 400);    //清空/*准备JSON串*///ARDUINO平台不支持sprintf的double的打印,只能转换到字符串然后打印sprintf(text, "{\"datastreams\":[{\"id\":\"%s\",\"datapoints\":[{\"value\":%s}]}]}", sensor_id_temp, value_str);/*准备HTTP报头*/send_buf[0] = 0;strcat(send_buf, "POST /devices/");strcat(send_buf, device_id_temp);strcat(send_buf, "/datapoints HTTP/1.1\r\n"); //注意后面必须加上\r\nstrcat(send_buf, "api-key:");strcat(send_buf, API_VALUE_temp);strcat(send_buf, "\r\n");strcat(send_buf, "Host:");strcat(send_buf, OneNetServer);strcat(send_buf, "\r\n");sprintf(tmp, "Content-Length:%d\r\n\r\n", strlen(text)); //计算JSON串长度strcat(send_buf, tmp);strcat(send_buf, text);//client.print(send_buf);if (sendCommand(send_buf, "\"succ\"}", 3000, 1) == Success);else errorLog(10);}void(*resetFunc) (void) = 0; //制造重启命令//错误日志
void errorLog(int num)
{DebugSerial.print("ERROR");DebugSerial.println(num);//resetFunc();
}unsigned int sendCommand(char *Command, char *Response, unsigned long Timeout, unsigned char Retry)
{clrWIFIRxBuffer();for (unsigned char n = 0; n < Retry; n++){DebugSerial.print("\r\n---------send AT Command:---------\r\n");DebugSerial.write(Command);client.println(Command);WIFIReadBuffer();if (strstr(WIFIRxBuffer, Response) != NULL){DebugSerial.print("\r\n==========receive AT Command:==========\r\n");DebugSerial.print(WIFIRxBuffer); //输出接收到的信息clrWIFIRxBuffer();return Success;}  }DebugSerial.print("\r\n==========receive AT Command:==========\r\n");DebugSerial.print(WIFIRxBuffer);//输出接收到的信息clrWIFIRxBuffer();return Failure;
}void WIFIReadBuffer() {while (client.available()){WIFIRxBuffer[WIFIBufferCount++] = client.read();if (WIFIBufferCount == WIFIRxBufferLength)clrWIFIRxBuffer();}
}

平时人很懒,难得写写纹章,如果有人有兴趣的话,哪部分理解不充分我会谢谢详细的

ESPDUINO上传数据到oneNet云平台相关推荐

  1. 树莓派上传数据到onenet云平台

    背景:通过树莓派上传数据到onenet云平台 操作:看代码 # -*- coding:utf-8 -*- # File: cputemp.py #向平台已经创建的数据流发送数据点 import url ...

  2. 【开源】ESP32怎样连接NEO6M模块接收GPS数据并显示在oled小屏幕上并可上传数据至Onenet云平台

    esp32连接neo6m在oled上显示定位数据 第一部分 ESP32怎样连接NEO6M模块接收GPS数据并显示在oled小屏幕上并可上传数据至Onenet云平台 一.软件部分 安装Arduino 我 ...

  3. 【stm32c8t6+esp8266上传温湿度到Onenet云平台】

    stm32c8t6+esp8266上传温湿度到Onenet云平台 最近做的一个小项目中需要将获取的数据到云平台,我选择的是onenet平台,下面会根据个人学习过程分享如何使用onenet平台以及如何通 ...

  4. 掌控板上传数据到阿里云平台

    前言 掌控板数据上云本来是一个很容易的事情,但在参考了多个博客之后,仍然无法上传成功,诡异的是MQTT一直无法连接,开始的时候我以为是我自己的WiFi的问题,后来切换了多个热点,最后来到学校用宿舍的W ...

  5. RS485设备通过DTU上传数据到阿里云物联网平台

    在开始之前,首先需要搞明白以下几个概念,RS485, Modbus协议和DTU. RS485,基础概念自行度娘,这里如果简单理解的话就是一种串行通信标准.非硬件工程师其实记住RS485有4条线,A,B ...

  6. 上传GPS数据到ONENET云平台

    本文是对已经了解怎么去上传单个数据流但不知道怎么同时上传多个数据流的的读者,若还不了解怎么上传单个数据流请跳过本文.  使用MQTT Simulate Device 进行模拟配置(在没有实体设备或者不 ...

  7. 传感器上传数据到阿里云Iot,然后从阿里云Iot传输数据到我的服务器和数据库

    整个系统架构如下: MQTT 和RocketMQ的区别: 1.传感器采用GPRS传输数据,采用微消息队列MQTT,微消息队列 MQTT 主要承担移动端连接接入.连接管理.数据转发等工作,相当于一个无限 ...

  8. 树莓派CM4 Sensing(包含485接口)+python+继电器+水质仪+阿里云物联网平台ito实现实时检测水质并上传数据到阿里云ito和远程控制灯光

    一.硬件设备 1.树莓派CM4 Sensing(包含485接口) 2.带485接口的继电器 继电器的mdobus指令 3.水质仪 水质仪线路需要改造一下 下图中1是水质仪自带的线,2是给水质仪提供电源 ...

  9. python上传数据到坚果云_django开发环境搭建(参考流程)

    对于一个初学者,在实际的开发环境中,应该采用什么的样的工具来开发django呢? 我想环境至少应该具备的特性有: 多版本python环境的支持 版本控制 自动测试框架 数据库支持迁移 部署的自动化 参 ...

  10. 利用串口网络助手上传数据、图片到OneNet平台以及获取数据(HTTP)

    利用串口网络助手上传数据.图片到OneNet平台以及获取数据(HTTP) 使用网络助手连接OneNet服务器 HTTP上传数据至OneNet 获取数据 上传图片至OneNet 使用网络助手连接OneN ...

最新文章

  1. Java在linux新建png_教你如何使用libpng显示PNG图片
  2. 聚焦机器学习和数据科学大佬工作的一天
  3. 百度发布智能电视伴侣,并公布短视频计划
  4. 万网mysql中文乱码_Linux下MySQL出现乱码的解决方法-阿里云开发者社区
  5. 论文集 | 精选133篇知识图谱论文
  6. python产生随机数列表_python如何产生10个不同的随机数
  7. STM32 GPIO应用
  8. C#在foreach中重用变量是否有原因?
  9. Opencv之缺少api-ms-win-downlevel-shlwapi-l1-1-0
  10. Python报错unindent does not match any outer indentation level如何解决?
  11. 为什么说程序员的前三年不要太看重工资水平?
  12. 基于hyperleger fabric区块链的校园化妆品交易平台搭建
  13. 狂神说SpringMVC
  14. 聚焦云+人工智能,纳德拉宣布微软重大重组
  15. 翘首期盼的3D仿真练实操全面开启线上学理论,3D练实操,为您插上考证成功的翅膀
  16. 扫码点餐小程序项目后端开发之“01.搭建服务器基础设施”
  17. Win 10 无法锁屏,快捷键win+L失效
  18. 焱融全闪存储轻松构建百亿私募量化投研平台
  19. Nature文章:纠缠不是量子计算的必要条件
  20. 小程序社交电商案例分享

热门文章

  1. netty权威指南---编解码技术
  2. xlsread服务器出现意外情况
  3. 毕业论文中计算机代码重复吗,知网查重程序代码算重复吗?
  4. 《C语言运算符100例》优先级面试错题
  5. 老男孩python作业_老男孩python学习之作业一购物小程序
  6. python MySQL操作(增删改查)
  7. 【Java】按要求编程输出2018年日历
  8. 高项 双代号时标网络图
  9. 【墨墨英语单词库免费开源无偿分享】小学、初中、高中、大学四六级专四专八、考研、托福、雅思等词书文本大合集
  10. C++中vector初始化