Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. #include<WiFi.h>
  2. #include<PubSubClient.h>
  3. #include <Ethernet.h>
  4. #include <SPI.h>
  5. #include "DHT.h"
  6. #define dhtPin 27 //讀取DHT11 Data
  7. #define dhtType DHT11 //選用DHT11
  8.  
  9. DHT dht(dhtPin, dhtType); // Initialize DHT sensor
  10.  
  11. const char*ssid = "e710-2";
  12. const char*password = "e710e710";
  13. const char*mqttServer = "broker.mqtt-dashboard.com";
  14. const int mqttPort = 1883;
  15. const char* mqttUserName = ""; // 使用者名稱,隨意設定。
  16. const char* mqttPwd = ""; // MQTT密碼
  17. const char* clientID = "";
  18. const char topic[] = "esp32/test456";
  19. String msgStr = "";
  20. char json[25];
  21.  
  22. unsigned long atime = millis();
  23. unsigned long btime;
  24.  
  25. WiFiClient espClient;
  26. PubSubClient client(espClient);
  27.  
  28. void setup_wifi() {
  29. Serial.print("Connecting to ");
  30. Serial.println(ssid);
  31. WiFi.begin(ssid, password);
  32. while (WiFi.status() != WL_CONNECTED) {
  33. delay(500);
  34. Serial.println("Connecting...");
  35. }
  36. Serial.println("");
  37. Serial.println("WiFi connected with IP address: ");
  38. Serial.println(WiFi.localIP());
  39. }
  40.  
  41. void reconnect() {
  42. while (!client.connected()) {
  43. if (client.connect(clientID, mqttUserName, mqttPwd)) {
  44. Serial.println("MQTT connected");
  45. } else {
  46. Serial.print("failed, rc=");
  47. Serial.print(client.state());
  48. Serial.println(" try again in 5 seconds");
  49. delay(5000); // 等5秒之後再重試
  50. }
  51. }
  52. }
  53.  
  54.  
  55. void setup() {
  56. Serial.begin(115200);
  57. setup_wifi();
  58. client.setServer(mqttServer, mqttPort);
  59. reconnect();
  60. client.subscribe("esp32/test456");
  61. dht.begin();
  62. }
  63.  
  64. void loop() {
  65. if (!client.connected()) {
  66. reconnect();
  67. }
  68. client.loop();
  69. btime = millis();
  70.  
  71. if ((btime - atime) >= 5000) {
  72. float h = dht.readHumidity();//讀取濕度
  73. float t = dht.readTemperature();//讀取攝氏溫度
  74. float f = dht.readTemperature(true);//讀取華氏溫度
  75. if (isnan(h) || isnan(t) || isnan(f)) {
  76. Serial.println("無法從DHT傳感器讀取!");
  77. return;
  78. }
  79. Serial.print("濕度: ");
  80. Serial.print(h);
  81. Serial.print("%\t");
  82. Serial.print("攝氏溫度: ");
  83. Serial.print(t);
  84. Serial.print("*C\t");
  85. Serial.print("華氏溫度: ");
  86. Serial.print(f);
  87. Serial.print("*F\n");
  88. msgStr = msgStr + "temp: " + t + " humid: " + h +"%";
  89. msgStr.toCharArray(json, 25);
  90. client.publish(topic, json);
  91. msgStr = "";
  92. atime = btime;
  93. }
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement