diff --git a/main.c b/main.c index 68413b1..2c55d24 100644 --- a/main.c +++ b/main.c @@ -1762,6 +1762,78 @@ void *thread_mqtt_recv(void *arg){ }else{ mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"labelconfig is empty",0,productid); } + }else if(strcmp(mqtt_parm.msg_type,"3027")==0){ + LOG_I("3027 All light on/off\n"); + get_string_from_json_string_by_key_unescape(msg_data, "scene", mqtt_parm.msg_scene, sizeof(mqtt_parm.msg_scene)); + LOG_I("scene:%s\n",mqtt_parm.msg_scene); + + get_string_from_json_string_by_key_unescape(msg_data, "lights", mqtt_parm.msg_lights, sizeof(mqtt_parm.msg_lights)); + LOG_I("lights:%s\n",mqtt_parm.msg_lights); + + get_size_from_json_string_arry_by_key(msg_data, "lights", &mqtt_parm.msg_opNumber); + LOG_I("lights size = %d\n", mqtt_parm.msg_opNumber); + lightsnNum=mqtt_parm.msg_opNumber; + for(int i = 0; i < mqtt_parm.msg_opNumber; i++){ + get_string_from_json_string_arry_by_key(msg_data,"lights",msg_lightsn_value,128,i); + snprintf(msg_lightsn, sizeof(msg_lightsn), "{%s}", msg_lightsn_value); + get_string_from_json_string_by_key_unescape(msg_lightsn, "sn", mqtt_parm.msg_sn,sizeof(mqtt_parm.msg_sn)); + LOG_I("sn:%s\n",mqtt_parm.msg_sn); + if(i==0){ + memset(lightsn1,0,9); + memcpy(lightsn1,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==1){ + memset(lightsn2,0,9); + memcpy(lightsn2,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==2){ + memset(lightsn3,0,9); + memcpy(lightsn3,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==3){ + memset(lightsn4,0,9); + memcpy(lightsn4,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==4){ + memset(lightsn5,0,9); + memcpy(lightsn5,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + } + } + + get_string_from_json_string_by_key_unescape(msg_data, "color", mqtt_parm.msg_color, sizeof(mqtt_parm.msg_color)); + LOG_I("color:%s\n",mqtt_parm.msg_color); + + get_string_from_json_string_by_key_unescape(msg_data, "sound", mqtt_parm.msg_sound, sizeof(mqtt_parm.msg_sound)); + LOG_I("sound:%s\n",mqtt_parm.msg_sound); + strcpy(mqtt_parm.msg_sound, "0"); + + get_string_from_json_string_by_key_unescape(msg_data, "flash", mqtt_parm.msg_flash, sizeof(mqtt_parm.msg_flash)); + strcpy(mqtt_parm.msg_flash, "0"); + LOG_I("flash:%s\n",mqtt_parm.msg_flash); + + get_string_from_json_string_by_key_unescape(msg_data, "flashInterval", mqtt_parm.msg_flashInterval, + sizeof(mqtt_parm.msg_flashInterval)); + LOG_I("flashInterval:%s\n",mqtt_parm.msg_flashInterval); + + get_string_from_json_string_by_key_unescape(msg_data, "lightDuration", mqtt_parm.msg_lightDuration, + sizeof(mqtt_parm.msg_lightDuration)); + strcpy(mqtt_parm.msg_lightDuration, "60"); + LOG_I("lightDuration:%s\n",mqtt_parm.msg_lightDuration); + + if(isLightEnable && (mqtt_parm.msg_opNumber>0)){ + mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"ok",1,productid); + isSendComEnd=false; + isLightOn=false; + isLightOnByRule=true; // 使用规则控制 + isLabelUp=false; + + // 设置label1和label2不参与匹配 + strcpy(mqtt_parm.msg_label1Rule, "04"); // ∅ 不参与匹配 + strcpy(mqtt_parm.msg_label2Rule, "04"); // ∅ 不参与匹配 + // 设置label3不等于386cd300的规则 + strcpy(mqtt_parm.msg_label3Rule, "03"); // ≠ 不等于 + strcpy(mqtt_parm.msg_label3, "386cd300"); + + uart_data_send_head_lightonrule(&uartSend,5); + }else{ + mqtt_service_reply(stationsn,mqtt_parm.msg_messageId,"light disabled or sn is null",0,productid); + } } } }