赞
踩
这个是esp32板子,运行环境是在ardunio,服务器是在
在这里插入代码片 #include "DHT.h" #include <PubSubClient.h> #include <WiFi.h> #define WIFI_AP "**"//wifi名称 #define WIFI_PASSWORD "*******"//wifi密码 #define DHTPIN 2 // what digital pin we're connected to #define DHTTYPE DHT11 // DHT 11 char MqttServer[] = "www.chenxiky.com";//搭建的mqtt服务器域名或者ip地址都可以 // 初始化以太网客户端对象 -- WiFiClient.h WiFiClient espClient; // 初始化DHT11传感器 DHT dht(DHTPIN, DHTTYPE); // 初始化MQTT库PubSubClient.h的对象 PubSubClient client(espClient); int status = WL_IDLE_STATUS; unsigned long lastSend; void setup() { Serial.begin(9600); Serial.println("温湿度数据:"); dht.begin(); InitWiFi(); // 连接WiFi client.setServer( MqttServer, 1883 ); // 连接WiFi之后,连接MQTT服务器 lastSend = 0; } void loop() { status = WiFi.status(); if ( status != WL_CONNECTED) { while ( status != WL_CONNECTED) { Serial.print("[loop()]Attempting to connect to WPA SSID: "); Serial.println(WIFI_AP); // 连接WiFi热点 status = WiFi.begin(WIFI_AP, WIFI_PASSWORD); delay(2000); } Serial.println("[loop()]Connected to AP"); } if ( !client.connected() ) { reconnect(); } if ( millis() - lastSend > 1000 ) { // 用于定时1秒钟发送一次数据 getAndSendTemperatureAndHumidityData(); // 获取温湿度数据发送到MQTT服务器上去 lastSend = millis(); } client.loop(); } /* * * 读取温湿度数据,然后发送到MQTT服务器上去 * */ void getAndSendTemperatureAndHumidityData() { Serial.println("Collecting temperature data."); // 大概3s读取一次 delay(3000); float h = dht.readHumidity(); float t = dht.readTemperature(); // 查看是否读取温湿度失败的 if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); String temperature = String(t); String humidity = String(h); // Just debug messages Serial.print( "Sending temperature and humidity : [" ); Serial.print( temperature ); Serial.print( "," ); Serial.print( humidity ); Serial.print( "] -> " ); // 构建一个 JSON 格式的payload的字符串 String payload = "{"; payload += "\"temperature\":"; payload += temperature; payload += ","; payload += "\"humidity\":"; payload += humidity; payload += "}"; // Send payload char attributes[100]; payload.toCharArray( attributes, 100 ); // boolean publish(const char* topic, const char* payload); client.publish( "wendu", attributes );//wendu这个是发表的主题,你在 Serial.print("[publish]-->>"); Serial.println( attributes ); } void InitWiFi() { delay(10); // 尝试连接WiFi网络 while ( status != WL_CONNECTED) { Serial.print("[InitWiFi]Attempting to connect to WPA SSID: "); Serial.println(WIFI_AP); // Connect to WPA/WPA2 network status = WiFi.begin(WIFI_AP, WIFI_PASSWORD); delay(500); } Serial.println("[InitWiFi]Connected to AP"); } /** * * MQTT客户端断线重连函数 * */ void reconnect() { // 一直循环直到连接上MQTT服务器 while (!client.connected()) { Serial.print("[reconnect]Connecting to MQTT Server ..."); // 尝试连接connect是个重载函数 (clientId, username, password) if ( client.connect("liefyuan", NULL, NULL) ) { Serial.println( "[DONE]" ); } else { Serial.print( "[FAILED] [ mqtt connect error code = " ); Serial.print( client.state() ); Serial.println( " : retrying in 5 seconds]" );// Wait 5 seconds before retrying delay( 5000 ); } } }
这里是引用
本文是参考一个楼主而完善的,如有侵犯,请联系我,尊重原创、尊重作者。
库文件我就不提供了,百度上有很多。
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上
方
工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行
本地保存。
如果你想加载一篇`
`导入功能进行对应扩展名的文件导入,
继续你的创作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。