ESP8266基础应用之使用ESP8266模块接入阿里云物联网平台

文章目录

  • 1 在阿里云物联网平台添加ESP8266设备
  • 2 ESP8266接入阿里云物联网平台
    • ESP8266发布消息到阿里云物联网平台
    • 阿里云物联网平台发布消息到ESP8266

1 在阿里云物联网平台添加ESP8266设备

在阿里云物联网平台创建dev-esp8266设备(本测试是在ESP8266-TEST产品下创建)
具体操作请参考ESP8266基础应用之阿里云物联网平台创建产品与设备
ESP8266基础应用之使用ESP8266模块接入阿里云物联网平台_第1张图片

2 ESP8266接入阿里云物联网平台

  1. 在user_aliyun.c中修改ESP8266工程相应的参数
//修改在云平台获取的设备信息
char ProductKey[16]="xxx";//替换自己的 ProductKey
char DeviceName[16]="xxx";//替换自己的 DeviceName
char DeviceSecret[40]="xxx";//替换自己的 DeviceSecret
char Region[24]="xxx";//地区,根据自己的修改
char ClientID[16]="xxx";//修改自己设置的

//连接MQTT(此处不需要填写,程序中会自动添加)
unsigned char Aliyun_IP[100]="";//IP地址/域名
unsigned int  Aliyun_Port = 1883;//端口号
unsigned char Aliyun_MQTTid[100] = "";//ClientID
unsigned char Aliyun_MQTTUserName[100] = "";//用户名
unsigned char Aliyun_MQTTPassWord[100] = "";//密码
unsigned char Aliyun_MQTTkeepAlive = 30;//心跳包时间
  1. 在user_aliyun.h中定义主题
#define AliyunSubscribeTopic_user_get     "/ProductKey/DeviceName/user/get"
#define AliyunPublishTopic_user_update    "/ProductKey/DeviceName/user/update"
  1. 烧录程序,并查看串口,ESP8266与阿里云连接成功,并订阅
    ESP8266基础应用之使用ESP8266模块接入阿里云物联网平台_第2张图片

ESP8266发布消息到阿里云物联网平台

  1. ESP8266周期性发布消息到阿里云平台
    ESP8266基础应用之使用ESP8266模块接入阿里云物联网平台_第3张图片
    发布的消息为如下内容
char mqtt_publish_buf[50] = "this is a test ,i am esp8266---";
/******************************************************************************
 * FunctionName :
 * Description  :
 * Parameters   : none
 * Returns      : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
hw_timer_cb(void)
{
	static uint8_t hw_timer_cnt;

	if (wifi_getState == STATION_GOT_IP)
	{
		if((hw_timer_cnt++) >= 30)
		{
			hw_timer_cnt = 0;
			os_printf("---hw timer inter \n");
			if(client != NULL)
			{
				MQTT_Publish(client, AliyunPublishTopic_user_update,mqtt_publish_buf, os_strlen(mqtt_publish_buf), 0, 0);//发布消息
			}
			else
			{
				os_printf("---client is null \n");
			}
		}
	}
}
  1. 在阿里云物联网平台查看发布的消息
    ESP8266基础应用之使用ESP8266模块接入阿里云物联网平台_第4张图片

阿里云物联网平台发布消息到ESP8266

  1. 阿里云物联网平台发布消息
    ESP8266基础应用之使用ESP8266模块接入阿里云物联网平台_第5张图片

  2. ESP8266收到消息,并通过串口打印
    ESP8266基础应用之使用ESP8266模块接入阿里云物联网平台_第6张图片

  3. ESP8266工程的接收函数

/******************************************************************************
 * FunctionName :
 * Description  :
 * Parameters   : none
 * Returns      : none
*******************************************************************************/
LOCAL void ICACHE_FLASH_ATTR
mqtt_receive_data_cb(uint32_t *args, const char* topic, uint32_t topic_len, const char *data, uint32_t data_len)
{
	char *topicBuf = (char*)os_zalloc(topic_len+1);
	char *dataBuf  = (char*)os_zalloc(data_len+1);//用来缓存主题和消息

	MQTT_Client* client = (MQTT_Client*)args;
	os_memcpy(topicBuf, topic, topic_len);
	topicBuf[topic_len] = 0;
	os_memcpy(dataBuf, data, data_len);
	dataBuf[data_len] = 0;

	os_printf("---Receive topic:\n %s \r\n", topicBuf);//打印接收的消息
	os_printf("---Receive data:\n  %s \r\n", dataBuf);//打印接收的消息
	os_free(topicBuf);
	os_free(dataBuf);
}

你可能感兴趣的:(ESP8266)