nodemcu c语言开发,nodemcu连接到中移onenet平台

手上有一块nodemcu,这货可以用lua编译脚本语言编程,也可以用arduinoIDE来编辑,用C语言来开发,甚至可以刷入micropython系统,用python语言开发。功能多而且就价格便宜,是DIY智能硬件的首选。

b047fda9db96

nodemcu

onenet平台是中移推出的一台智能硬件连接平台,可以支持http,mqtt,edp等等协议,由于nodemcu的主芯片是esp8266,我们就使用http协议来处理数据上传。话不多说,详细说明下学习过程。

1:注册onenet平台

注册吗?就是根据页面提示操作就好,验证邮箱,手机之后,就可以了,最后,我添加了一个nodemcu设备。

b047fda9db96

我的nodemcu设备

点击设备信息,查看设备相关设备数据。

b047fda9db96

设备信息

b047fda9db96

设备湿度

b047fda9db96

设备温度

2:模拟测试数据

当我们接触新的东西的时候,首先一点,学会利用官网工具,模拟上传数据,返回结果,得到success的时候,说明已经成功一半了。在设备管理当中,点击在线设备调试。

b047fda9db96

在线调试

在数据模拟器中,我们选择数据模拟器中选择上传数据流。

b047fda9db96

模拟上传数据

设备ID:自己设备的ID号,每个设备都有自己的ID。

APIKEY:设备的API钥匙,调用接口时候需要,每个设备的API-KEY也可以唯一。

数据流:任意自己定义的数据流,我这里取名test。

数据范围:我把温度的取值定义0-100℃。

间隔时间:每个五秒发送数据。

发送日志记录:error:succ代表数据成功上传。

这样,我们就可以在数据流展示区看看我们刚刚上传的数据。

b047fda9db96

模拟数据上传成功

3:POST请求数据

post请求数据是一项比较实用的技能,几乎所有的web开发在测试API的时候都需要用到。那我们用API调试工具来测试数据上传。

b047fda9db96

POST请求成功

ApiURL地址:自己需要调用的API地址。

请求方式:选择POST请求,至于用GET还是POST请求,这两者的区别,请读者自己考虑。

APIKey:自身设备的API钥匙,跟模拟数据上传的数据一样。

返回结果:error:succ代表成功。

很多人刚开始不熟悉的时候,都会出现各种各样错误,返回值不成功的情况,我举例说明:

APIkey不对,提示APIKey非法。

b047fda9db96

数据流不对,提示datestreams非法。

b047fda9db96

数据值不对,提示datapoints非法。

b047fda9db96

基本都是以上三者,请大家仔细阅读错误提示。

4:postman工具测试

当如果我们需要测试一个新的API的时候呢,有什么好的工具吗?我这里推荐谷歌的postman插件。

b047fda9db96

postman测试

点击右上角的code,可以完整的看出本次的请求。真的很方便,随时可以验证请求是否正确,返回status=200代表数据请求成功。

b047fda9db96

post请求数据包

5:nodemcu刷入espeasy系统

由于原来已经烧写过程序,刷入系统之前先擦除原来的程序,使用esptool工具来擦除系统默认程序。下载espeasy固件。下载地址:github.com/letscontrolit/ESPEasy/releases,目前已经更新到Release v2.0.0-dev12,我们下载到最新版本就可以。固件包里面就有工具。

b047fda9db96

esptool.exe就是删除工具

首先要确认一下esp8266所连接的端口号,因为需要以端口号作为参数的,比如我的端口号是COM4,我就可以运行以下命令来擦除flash

# esptool.py    --port COM4 erase_flash

b047fda9db96

擦除程序

再使用flashesp8266烧写固件车程序,选择ESPEasy_v2.0.0-dev12_dev_4096.bin文件。

b047fda9db96

烧写程序

烧写完成之后,就会出现ESP_Easy_0的的无线wifi,用手机或是ipad连接wifi并配置wifi密码。配置好之后,设备就可以工作上传数据了。

b047fda9db96

设备配置信息

192.168.1.196是自动分配的IP地址,如果大家不知道分配的IP地址是多少的话,可以使用IPScan工具,查看局域网内的各个设备的IP。

b047fda9db96

可以看到espressif的制造商

7:配置http客户端

我们需要把nodemcu配置成http客户端,链接到onenet平台上的服务器。

b047fda9db96

http服务配置

protocol:传输协议,选择genneric htttp协议,想通过http协议传输奥其他平台上的一可以使用这个。

locate Controller:选择主机名字还是IP地址。

Controller Hostname: onenet云服务地址。

Controller Port:http的默认端口基本上都是80。

HTTP Method:http请求方式,这里选择POST请求。

HTTP URL:http请求连接地址。

HTTP Header: 添加API-key的值。

HTTP Body:请求数据包。

配置http服务之后,还需要配置DHT11温湿度传感器的信息,在Devices选项里面选择需要的配置的传感器信息。

b047fda9db96

DHT11传感器配置

Device:选择传感器类型。

Name:自定义传感器名字。

Enable:传感器使能接入设备。

GPIO:由于DHT11的Data数据只需要一个引脚就可以上传温湿度了。

DHT Type:硬件的具体型号。

Value1:   temp就是上传的数据流名字,formula就是对这个获取值的计算方式,decimals就是默认小数点位数为2位。

Value2: 跟Value1的内容差不多。

点击提交(summit)之后,在关闭(closed)传感器配置信息,我们就可以看到上传的数据信息了。

b047fda9db96

温度27.00,湿度33.00,跟上面的设置一样。很明显温度就是27℃,湿度就是33%。

8:验证数据能不能上传以及上传的数据是否正确

打开串口调试工具或者是putty,查看串口输出信息。

b047fda9db96

已经读到传感器的数值了

再回到onenet平台上来,点击设备信息,查看数据流。

b047fda9db96

温度27℃

b047fda9db96

湿度33%

最后来张现场实物图:

b047fda9db96

nodemcu和DHT11传感器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是ESP8266 NodeMCU连接OneNET的基本代码框架: ```c++ #include <ESP8266WiFi.h> #include <PubClient.h> // Replace with your network credentials const* ssid = "your_SSID"; const char password = "your_PASSWORD"; // Replace with your One MQTT server and port const char* server = ".heclouds.com"; const int port = 6002; // Replace with your OneNET device ID and API key const char* deviceId = "your_DEVICE_ID"; const char* apiKey "your_API_KEY"; // Create an instance of the WiFiClient object WiFiClient wifiClient; // Create an instance of the PubSubClient object PubSubClient mqttClient(wifiClient); // Function to connect to OneNET MQTT server void connectToMqttServer() { while (!mqttClient.connected()) { Serial.println("Connecting to OneNET MQTT server..."); // Create a unique client ID using the ESP8266 MAC address String clientId = "ESP8266Client-"; clientId += String(WiFi.macAddress()); // Connect to OneNET MQTT server if (mqttClient.connect(clientId.c_str(), deviceId, apiKey)) { Serial.println("Connected to OneNET MQTT server!"); } else { Serial.print("Failed to connect to OneNET MQTT server with error code "); Serial.println(mqttClient.state()); delay(2000); } } } void setup() { Serial.begin(9600); // Connect to Wi-Fi network WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi network..."); } Serial.println("Connected to WiFi network!"); // Set OneNET MQTT server and port mqttClient.setServer(server, port); // Connect to OneNET MQTT server connectToMqttServer(); } void loop() { // Add your code here to publish or subscribe to MQTT topics } ``` 在上面的代码中,你需要将以下变量替换为你自己的值: - `ssid` 和 `password`:你的 Wi-Fi 网络 SSID 和密码 - `server` 和 `port`:OneNET MQTT 服务器地址和端口 - `deviceId` 和 `apiKey`:你的 OneNET 设备 ID 和 API 密钥 接下来,你可以在 `loop()` 函数中添加你的代码来发布或订阅 MQTT 主题。例如,下面是一个发布消息到 OneNET 的例子: ```c++ void loop() { // Check if connected to OneNET MQTT server if (!mqttClient.connected()) { connectToMqttServer(); } // Publish a message to OneNET mqttClient.publish("topic", "message"); // Wait for a few seconds delay(5000); } ``` 这将发布一个名为 "topic" 的主题,并将消息 "message" 发送到 OneNET。你可以通过 OneNET 控制台查看接收到的消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值