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

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

在阿里云物联网平台创建dev-esp8266设备(本测试是在ESP8266-TEST产品下创建)
具体操作请参考ESP8266基础应用之阿里云物联网平台创建产品与设备
在这里插入图片描述

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发布消息到阿里云物联网平台

  1. ESP8266周期性发布消息到阿里云平台
    在这里插入图片描述
    发布的消息为如下内容
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

  1. 阿里云物联网平台发布消息
    在这里插入图片描述

  2. ESP8266收到消息,并通过串口打印
    在这里插入图片描述

  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);
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值