赞
踩
最近要使用mqtt进行android设备和esp8266进行通信,出个教程怕自己忘记。
1、在阿里云平台创建产品
2、在阿里云平台创建设备
4、Android获取云平台数据
5、esp8266和Android通过云平台进行通讯——云流转
填写”产品名称“并且修改为自定义品类后,点击确认即为创建成功。
随后出现的界面,点击“返回产品列表”。
注意:标准品类中有很多模板,很多都可以直接拿来用。
在产品界面点击“产品名称”或者点击“查看”,进入界面。
进入产品界面后,点击”功能定义“后,再点击”编辑草稿“。
点击”添加自定义功能“
”属性、服务、事件“功能类型三选一,随后输入功能名称、标识符、选择数据类型、选择读写类型即可完成最简单的自定义功能。填写完成后,点击”确定“即可。
在编辑草稿界面,默认模块显示了设备,说明添加成功。
接下来点击左下角的“发布上线”即可。
产品注意选择之前新建的test,设备名称注意填写英文的。
显示未激活,说明没有连接过任何设备
关于passed的获取方法 mqtt工具
查看三元组数据
arduino代码示例:
- //---------------------esp8266联网
- #include <ESP8266WiFi.h>
- const char* ssid = "*********"; //wifi名称
- const char* password = "*********"; //wifi密码
- //---------------------JS解析
- #include <ArduinoJson.h>
- StaticJsonDocument<200> jsonBuffer;
- //---------------------阿里云部分
- #include <PubSubClient.h>
- //设备的三元组信息
- #define PRODUCT_KEY "*********"
- #define DEVICE_NAME "*********"
- #define DEVICE_SECRET "*********"
- #define REGION_ID "cn-shanghai"
- //线上环境域名和端口号,无需修改
- #define MQTT_SERVER PRODUCT_KEY ".iot-as-mqtt." REGION_ID ".aliyuncs.com"
- #define MQTT_PORT 1883
-
- #define CLIENT_ID "*********|securemode=3,signmethod=hmacsha1,timestamp=789|"
- #define MQTT_USRNAME DEVICE_NAME "&" PRODUCT_KEY
- #define MQTT_PASSWD "*********"
-
- #define ALINK_BODY_FORMAT "{\"id\":\"123456\",\"version\":\"1.0\",\"params\":%s,\"method\":\"thing.event.property.set\"}"
- #define SET_TOPIC "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/service/property/set"
- #define PROP_POST "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post"
-
- unsigned long lastMs = 0;
- WiFiClient espClient; //创建一个tcp client连接
- PubSubClient client(espClient); //发送消息的对象
- //---------------------
-
- void WIFI_Connect();
- void MQTT_Check_Connect();
- void callback(char* topic, byte* payload, unsigned int length);
-
- void setup() {
- //-------------------------------------------设置串口
- Serial.begin(115200);
- //-------------------------------------------连接&初始化
- WIFI_Connect();
- SendMessage();
- MQTT_Check_Connect();
- }
-
- void loop() {
- if (millis() - lastMs >= 3000) {
- lastMs = millis();
- MQTT_Check_Connect();
- //上报数据//
- SendMessage();
- //delay(5000);
- }
- client.loop();
- }
-
- //-------------------------------------------MQTT回调函数
- void callback(char* topic, byte* payload, unsigned int length) {
- if (strstr(topic, SET_TOPIC)) {
- Serial.print("Message arrived [");
- Serial.print(topic); // 打印主题信息
- Serial.print("] ");
- for (int i = 0; i < length; i++) {
- Serial.print((char)payload[i]); // 打印主题内容
- }
- Serial.println();
-
- // //-----------------------------------JS解析
- // DeserializationError error = deserializeJson(jsonBuffer, payload);
- // if (error) {
- // Serial.print(F("deserializeJson() failed: "));
- // Serial.println(error.f_str());
- // return;
- // }
- // int LED_FLAG = jsonBuffer["params"][Ali_JSON];
-
- // if (LED_FLAG) {
- // digitalWrite(LED, LOW); // 亮灯
- // } else {
- // digitalWrite(LED, HIGH); // 熄灯
- // }
- }
- }
-
- //-------------------------------------------联网
- void WIFI_Connect() {
- WiFi.mode(WIFI_STA);
- WiFi.begin(ssid, password);
- Serial.println(" ");
- while (WiFi.status() != WL_CONNECTED) {
- delay(1000);
- Serial.print(".");
- }
- Serial.println(" ");
- Serial.print("WIFI连接成功,IP地址为:");
- Serial.println(WiFi.localIP());
- client.setServer(MQTT_SERVER, MQTT_PORT); //设置MQTT服务器
- Serial.println("MQTT服务器设置成功");
- client.setCallback(callback); //设置MQTT订阅回调函数
- Serial.println("MQTT订阅设置成功");
- }
-
- //-------------------------------------------MQTT连接
- void MQTT_Check_Connect() {
- while (!client.connected()) {
- client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD);
- }
- Serial.println("MQTT服务器连接中");
- }
-
- //-------------------------------------------获取MPU6050数据
- void SendMessage() {
- char param[32] = "";
- char jsonBuf[128] = "";
-
- sprintf(param, "{\"Brightness\":%s}","asdf123");
- sprintf(jsonBuf, ALINK_BODY_FORMAT, param);
- client.publish(PROP_POST, jsonBuf);
- }
具体看其他文章Android接入阿里云
这部分使用消息转发功能,使用“云产品流转”功能,注意因为是两个设备消息流转,所以要创建两个设备。
流程:创建数据源-->创建数据目的-->创建解析器-->关联解析器
填写数据源名称。
编辑数据源,给数据源添加Topic。
阿里云官方文档,记得启动触发器!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。