久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2044|回復: 0
打印 上一主題 下一主題
收起左側

阿里云MQTT數據云流轉,實現多個終端控制某一個設備

[復制鏈接]
跳轉到指定樓層
樓主
ID:1051816 發表于 2022-11-14 00:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一、在阿里云注冊登錄,并在控制臺建好項目
二、在arduinoIDE上傳代碼至arduino系列單片機或者ESP8266或ESP32
三、可以在本地按鍵操作硬件,也可以在阿里云端進行設備模擬查看最終效果。
附上代碼,僅供參考
  1. #include <ESP8266WiFi.h>
  2. #include <PubSubClient.h>//這個沒有回調函數
  3. #include <ArduinoJson.h>
  4. #include "DHT.h"
  5. WiFiClient espClient;
  6. PubSubClient  client(espClient);
  7. PubSubClient mqttClient(espClient);
  8. #define sensor_Pin   0
  9. #define DHTPIN 2
  10. #define DHTTYPE DHT11
  11. DHT dht(DHTPIN, DHTTYPE);
  12. float h;
  13. float t;
  14. long s;
  15. // 連接WIFI和密碼
  16. #define WIFI_SSID         "-------------"
  17. #define WIFI_PASSWD       "-----------"


  18. //設備的三元組信息
  19. #define PRODUCT_KEY "-----------"
  20. #define DEVICE_NAME "---------"
  21. #define DEVICE_SECRET "-----------"

  22. #define REGION_ID         "cn-shanghai"

  23. //不需要改
  24. #define MQTT_SERVER       PRODUCT_KEY ".iot-as-mqtt." REGION_ID ".aliyuncs diancom"
  25. #define MQTT_PORT         1883

  26. /////
  27. #define MQTT_USRNAME      DEVICE_NAME "&" PRODUCT_KEY
  28. #define CLIENT_ID     "h8v70q9rDqp.center|securemode=2,signmethod=hmacsha256,timestamp=1652631576537|"//這里使用技小新可以生成,注意密碼和密鑰一定要對否則連不上MQTT    "FESA234FBDS24|securemode=3,timestamp=789,signmethod=hmacsha1|"
  29. #define MQTT_PASSWD       "180866dbe114bb5cedd3a3dc1f27dccdadeaf0dbc51bd3873a26c88bef98cf08"



  30. #define ALINK_TOPIC_PROP_SET "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/service/property/set"
  31. #define ALINK_BODY_FORMAT         "{\"id\":\"ESP8266\",\"version\":\"1.0\",\"method\":\"thing.event.property.post\",\"params\":%s}"
  32. #define ALINK_TOPIC_PROP_POST     "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post"


  33. ////a1JKlnw6EP0/postion1/user/update
  34. unsigned long lastMs = 0;



  35. float soil_data = 0;


  36. //連接wifi
  37. void wifiInit()
  38. {
  39.   WiFi.mode(WIFI_STA);
  40.   WiFi.begin(WIFI_SSID, WIFI_PASSWD);
  41.   while (WiFi.status() != WL_CONNECTED)
  42.   {
  43.     delay(1000);
  44.     Serial.println("WiFi not Connect");
  45.   }
  46.   client.setServer(MQTT_SERVER, MQTT_PORT);   //連接MQTT服務器
  47. }

  48. //mqtt連接
  49. void mqttCheckConnect()
  50. {
  51.   while (!client.connected())
  52.   {
  53.     client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD);
  54.   }

  55.   Serial.println("MQTT connect succeed!");
  56.   // client.subscribe(ALINK_TOPIC_PROP_POSTRSP);
  57.   mqttClient.subscribe(ALINK_TOPIC_PROP_SET);
  58.   Serial.println("subscribe done");
  59. }

  60. void mqttIntervalPost()
  61. {
  62.   soil_data = analogRead(sensor_Pin);   //模擬數據讀取(A0腳輸入的數據)385-1024
  63.   soil_data -= 385;         //0-639
  64.   soil_data /= 6.39;        //0.00-100.00,變為百分比
  65.   soil_data = 100 - soil_data;         //修改為百分比越大濕度越大
  66.   char param[32];
  67.   char jsonBuf[128];
  68.   read_data();


  69.   //這里\"**"\要選擇對應的標識符,否則數據上報不了。
  70.   sprintf(param, "{\"wendu\":%f}", t);
  71.   sprintf(jsonBuf, ALINK_BODY_FORMAT, param);
  72.   Serial.println(jsonBuf);
  73.   boolean e = client.publish(ALINK_TOPIC_PROP_POST, jsonBuf);

  74.   sprintf(param, "{\"CurrentHumidity\":%f}", h);
  75.   sprintf(jsonBuf, ALINK_BODY_FORMAT, param);
  76.   Serial.println(jsonBuf);
  77.   boolean f = client.publish(ALINK_TOPIC_PROP_POST, jsonBuf);


  78.   ///以下///上報給另一個設備///////////
  79.   

  80. }

  81. void callback(char *topic, byte *payload, unsigned int length)//mqtt回調函數
  82. {
  83.   Serial.print("Message arrived [");
  84.   Serial.print(topic);
  85.   Serial.print("] ");
  86.   payload[length] = '\0';
  87.   Serial.println((char *)payload);

  88.   if (strstr(topic, ALINK_TOPIC_PROP_SET))
  89.   {
  90.     StaticJsonBuffer<100> jsonBuffer;


  91.     JsonObject &root = jsonBuffer.parseObject(payload);
  92.     if (!root.success())
  93.     {
  94.       Serial.println("parseObject() failed");
  95.       return;
  96.     }
  97.   }
  98. }



  99. void setup()
  100. {
  101.   Serial.begin(115200);
  102.   wifiInit();
  103.   dht.begin();
  104. }

  105. void read_data()
  106. {
  107.   float read_h = dht.readHumidity();//濕度
  108.   float read_t = dht.readTemperature();//溫度
  109.   h = read_h;
  110.   t = read_t;
  111.   Serial.print("濕度:");
  112.   Serial.print(h);
  113.   Serial.println("%");
  114.   Serial.print("溫度:");
  115.   Serial.println(t);
  116. }

  117. void loop()
  118. {
  119.   s = millis();
  120.   delay(500);
  121.   read_data();
  122.   Serial.println(millis() - s);
  123.   if (millis() - lastMs >= 5000)
  124.   {
  125.     lastMs = millis();
  126.     mqttCheckConnect();
  127.     mqttIntervalPost();
  128.   }
  129.   client.loop();
  130.   delay(2000);
  131. }
復制代碼


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品久久久久久 | 国产高清在线精品 | 爱爱视频在线观看 | 日韩精品在线免费 | 在线观看中文字幕视频 | 中文字幕一区二区三区精彩视频 | 国产精品视频一区二区三区四区国 | 亚洲精品视频在线观看视频 | 国产激情一区二区三区 | 亚洲国产高清高潮精品美女 | 午夜影院网站 | 国产精品久久影院 | 一区二区三区在线 | 黄网站涩免费蜜桃网站 | 免费成人午夜 | 亚洲精品欧美精品 | 精品日韩在线 | 久久久av| 91人人看 | 性欧美hd| 日韩一级免费观看 | 91激情视频 | 亚洲精品乱码 | 亚洲人在线 | 岛国毛片| 欧美色人 | 日韩视频一区在线观看 | 特黄毛片视频 | 一区二区免费 | 永久免费av | 久久中文视频 | 亚洲自拍偷拍视频 | 精品一区二区三区在线观看国产 | www.日本在线观看 | 欧美xxxx黑人又粗又长 | 国产亚洲成av人在线观看导航 | 久久综合香蕉 | 91精品久久久久久久久久入口 | www国产成人免费观看视频 | 精品少妇一区二区三区在线播放 | 免费在线观看一级毛片 |