【阿里云】阿里云物联网平台参数设置

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

流程

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

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

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

4、Android获取云平台数据

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

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

第一步,点击创建产品

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

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

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

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

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

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

 

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

 点击”添加自定义功能“

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

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

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

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

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

第二步,添加设备

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

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

3、esp8266发送数据至云平台

关于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);
}

4、Android获取云平台数据

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

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

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

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

创建数据源

填写数据源名称。

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

 创建数据目的

创建解析器

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

  • 0
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值