赞
踩
产品-设备-编辑物模型-设备端开发-查看上报数据
在产品上添加物模型,然后设备是继承自产品的,因此也具有物模型
添加产品、添加设备、产品上添加物模型
绘制图形化界面,添加数据来源
在直接使用单片机与阿里云通信前,先利用mqtt.fx工具模拟客户端确认阿里云这边配置无问题。
可以看到设备状态变化
填写主题
设置发布主题后,客户端发送数据,阿里云平台收到数据,温度表和湿度表显示,点击开关,客户端mqtt.fx收到数据
利用sscom串口工具,测试esp8266通过at指令发布订阅消息
stm32与esp8266通过串口连接,通过串口发送at命令完成8266初始化,和上述通过串口工具直接向esp8266发送at命令一样,确保了stm32单片机和esp8266的成功通信。
利用定时器定时每5s,esp8266发送一次DHT11的数据
void esp8266_init(void) { __HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE); //打开串口2接收中断 printf("1.SETTING STATION MODE\r\n"); OLED_printf(0,0,"1.SETTING STATION MODE "); while(esp8266_send_cmd((uint8_t *)"AT+CWMODE=1\r\n",strlen("AT+CWMODE=1\r\n"),"OK")!=0) { HAL_Delay(1000); } printf("2.CLOSE ESP8266 ECHO\r\n"); OLED_printf(0,0,"2.CLOSE ESP8266 ECHO "); while(esp8266_send_cmd((uint8_t *)"ATE0\r\n",strlen("ATE0\r\n"),"OK")!=0) { HAL_Delay(1000); } printf("3.NO AUTO CONNECT WIFI\r\n"); OLED_printf(0,0,"3.NO AUTO CONNECT WIFI "); while(esp8266_send_cmd((uint8_t *)"AT+CWAUTOCONN=0\r\n",strlen("AT+CWAUTOCONN=0\r\n"),"OK")!=0) { HAL_Delay(1000); } printf("4.RESET ESP8266\r\n"); OLED_printf(0,0,"4.RESET ESP8266 "); while(esp8266_reset() != 0) { HAL_Delay(5000); } printf("5.CONFIG WIFI NETWORK\r\n"); OLED_printf(0,0,"5.CONFIG WIFI NETWORK "); while(esp8266_config_network() != 0) { HAL_Delay(8000); } //发送消息到阿里云 printf("6.MQTT USER CONFIG\r\n"); OLED_printf(0,0,"6.MQTT USER CONFIG "); while(esp8266_send_cmd((uint8_t *)"AT+MQTTUSERCFG=0,1,\""MQTT_CLIENT_ID"\",\""MQTT_USER_NAME"\",\""MQTT_PASSWD"\",0,0,\"\"\r\n", strlen("AT+MQTTUSERCFG=0,1,\""MQTT_CLIENT_ID"\",\""MQTT_USER_NAME"\",\""MQTT_PASSWD"\",0,0,\"\"\r\n"),"OK")!=0) { HAL_Delay(2000); } printf("7.CONNECT MQTT BROKER\r\n"); OLED_printf(0,0,"7.CONNECT MQTT BROKER "); while(esp8266_connect_server() != 0) { HAL_Delay(8000); } printf("8.SUBSCRIBE TOPIC\r\n"); OLED_printf(0,0,"8.SUBSCRIBE TOPIC "); while(esp8266_send_cmd((uint8_t *)"AT+MQTTSUB=0,\""SUB_TOPIC"\",0\r\n",strlen("AT+MQTTSUB=0,\""SUB_TOPIC"\",0\r\n"),"OK")!=0) { HAL_Delay(2000); } printf("9.ESP8266 INIT OK!!!\r\n"); OLED_printf(0,0,"9.ESP8266 INIT OK!!! "); }
/** * @brief 解析json数据 * @param[in] json_msg:json数据,json_len:json数据长度 * @retval 返回0找到指定json数据,否则返回1 */ uint8_t parse_json_msg(uint8_t *json_msg,uint8_t json_len) { uint8_t retval =0; JSONStatus_t result; char query[] = "params.light"; size_t queryLength = sizeof( query ) - 1; char * value; size_t valueLength; result = JSON_Validate((const char *)json_msg, json_len); if( result == JSONSuccess) { result = JSON_Search((char *)json_msg, json_len, query, queryLength,&value, &valueLength ); if( result == JSONSuccess) { char save = value[valueLength]; value[valueLength] = '\0'; printf("Found: %s %d-> %s\n", query, valueLength,value); value[valueLength] = save; retval = 0; } else { retval = 1; } } else { retval = 1; } return retval; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。