当前位置:   article > 正文

【阿里云】阿里云物联网平台参数设置_阿里云物联网平台功能定义如何设置数据

阿里云物联网平台功能定义如何设置数据

最近要使用mqtt进行android设备和esp8266进行通信,出个教程怕自己忘记。

流程

1、在阿里云平台创建产品

2、在阿里云平台创建设备

3、esp8266发送数据至云平台——MQTT格式

4、Android获取云平台数据

5、esp8266和Android通过云平台进行通讯——云流转

1、在阿里云平台创建产品

第一步,点击创建产品

 第二步,填写产品名称、点击自定义品类

填写”产品名称“并且修改为自定义品类后,点击确认即为创建成功。

随后出现的界面,点击“返回产品列表”。

注意:标准品类中有很多模板,很多都可以直接拿来用。

第三步,添加默认模块(如果选择标准品类,这个步骤可以跳过)

在产品界面点击“产品名称”或者点击“查看”,进入界面。

 

 进入产品界面后,点击”功能定义“后,再点击”编辑草稿“。

 点击”添加自定义功能“

 ”属性、服务、事件“功能类型三选一,随后输入功能名称、标识符、选择数据类型、选择读写类型即可完成最简单的自定义功能。填写完成后,点击”确定“即可。

在编辑草稿界面,默认模块显示了设备,说明添加成功。

接下来点击左下角的“发布上线”即可。 

2、在阿里云平台创建设备

第一步,点击“添加设备” 

第二步,添加设备

产品注意选择之前新建的test,设备名称注意填写英文的。

 显示未激活,说明没有连接过任何设备

3、esp8266发送数据至云平台

关于passed的获取方法 mqtt工具

查看三元组数据

 arduino代码示例:

  1. //---------------------esp8266联网
  2. #include <ESP8266WiFi.h>
  3. const char* ssid = "*********"; //wifi名称
  4. const char* password = "*********"; //wifi密码
  5. //---------------------JS解析
  6. #include <ArduinoJson.h>
  7. StaticJsonDocument<200> jsonBuffer;
  8. //---------------------阿里云部分
  9. #include <PubSubClient.h>
  10. //设备的三元组信息
  11. #define PRODUCT_KEY "*********"
  12. #define DEVICE_NAME "*********"
  13. #define DEVICE_SECRET "*********"
  14. #define REGION_ID "cn-shanghai"
  15. //线上环境域名和端口号,无需修改
  16. #define MQTT_SERVER PRODUCT_KEY ".iot-as-mqtt." REGION_ID ".aliyuncs.com"
  17. #define MQTT_PORT 1883
  18. #define CLIENT_ID "*********|securemode=3,signmethod=hmacsha1,timestamp=789|"
  19. #define MQTT_USRNAME DEVICE_NAME "&" PRODUCT_KEY
  20. #define MQTT_PASSWD "*********"
  21. #define ALINK_BODY_FORMAT "{\"id\":\"123456\",\"version\":\"1.0\",\"params\":%s,\"method\":\"thing.event.property.set\"}"
  22. #define SET_TOPIC "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/service/property/set"
  23. #define PROP_POST "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post"
  24. unsigned long lastMs = 0;
  25. WiFiClient espClient; //创建一个tcp client连接
  26. PubSubClient client(espClient); //发送消息的对象
  27. //---------------------
  28. void WIFI_Connect();
  29. void MQTT_Check_Connect();
  30. void callback(char* topic, byte* payload, unsigned int length);
  31. void setup() {
  32. //-------------------------------------------设置串口
  33. Serial.begin(115200);
  34. //-------------------------------------------连接&初始化
  35. WIFI_Connect();
  36. SendMessage();
  37. MQTT_Check_Connect();
  38. }
  39. void loop() {
  40. if (millis() - lastMs >= 3000) {
  41. lastMs = millis();
  42. MQTT_Check_Connect();
  43. //上报数据//
  44. SendMessage();
  45. //delay(5000);
  46. }
  47. client.loop();
  48. }
  49. //-------------------------------------------MQTT回调函数
  50. void callback(char* topic, byte* payload, unsigned int length) {
  51. if (strstr(topic, SET_TOPIC)) {
  52. Serial.print("Message arrived [");
  53. Serial.print(topic); // 打印主题信息
  54. Serial.print("] ");
  55. for (int i = 0; i < length; i++) {
  56. Serial.print((char)payload[i]); // 打印主题内容
  57. }
  58. Serial.println();
  59. // //-----------------------------------JS解析
  60. // DeserializationError error = deserializeJson(jsonBuffer, payload);
  61. // if (error) {
  62. // Serial.print(F("deserializeJson() failed: "));
  63. // Serial.println(error.f_str());
  64. // return;
  65. // }
  66. // int LED_FLAG = jsonBuffer["params"][Ali_JSON];
  67. // if (LED_FLAG) {
  68. // digitalWrite(LED, LOW); // 亮灯
  69. // } else {
  70. // digitalWrite(LED, HIGH); // 熄灯
  71. // }
  72. }
  73. }
  74. //-------------------------------------------联网
  75. void WIFI_Connect() {
  76. WiFi.mode(WIFI_STA);
  77. WiFi.begin(ssid, password);
  78. Serial.println(" ");
  79. while (WiFi.status() != WL_CONNECTED) {
  80. delay(1000);
  81. Serial.print(".");
  82. }
  83. Serial.println(" ");
  84. Serial.print("WIFI连接成功,IP地址为:");
  85. Serial.println(WiFi.localIP());
  86. client.setServer(MQTT_SERVER, MQTT_PORT); //设置MQTT服务器
  87. Serial.println("MQTT服务器设置成功");
  88. client.setCallback(callback); //设置MQTT订阅回调函数
  89. Serial.println("MQTT订阅设置成功");
  90. }
  91. //-------------------------------------------MQTT连接
  92. void MQTT_Check_Connect() {
  93. while (!client.connected()) {
  94. client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD);
  95. }
  96. Serial.println("MQTT服务器连接中");
  97. }
  98. //-------------------------------------------获取MPU6050数据
  99. void SendMessage() {
  100. char param[32] = "";
  101. char jsonBuf[128] = "";
  102. sprintf(param, "{\"Brightness\":%s}","asdf123");
  103. sprintf(jsonBuf, ALINK_BODY_FORMAT, param);
  104. client.publish(PROP_POST, jsonBuf);
  105. }

4、Android获取云平台数据

具体看其他文章Android接入阿里云

5、esp8266和Android通过云平台进行通讯

        这部分使用消息转发功能,使用“云产品流转”功能,注意因为是两个设备消息流转,所以要创建两个设备。 

流程:创建数据源-->创建数据目的-->创建解析器-->关联解析器

创建数据源

填写数据源名称。

 编辑数据源,给数据源添加Topic。

 创建数据目的

创建解析器

 阿里云官方文档,记得启动触发器!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/335080
推荐阅读
相关标签
  

闽ICP备14008679号