From 3c32679dbba33cf14e03c74880170cc4e07b8eda Mon Sep 17 00:00:00 2001 From: helloyifa <447523396@qq.com> Date: Fri, 11 Jul 2025 01:24:10 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=A7=BB=E9=99=A4=20IOT=20=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=20=20=E5=B7=B2=E8=A2=ABMCP=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E6=9B=BF=E4=BB=A3=202.=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=8A=A9=E7=9C=A0=E4=BB=AA=E7=AD=89=E7=BA=A7=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/beken_wss_paopao/main/app_main.c | 2 +- .../beken_wss_paopao/main/application.c | 4 +- .../beken_wss_paopao/main/application.h | 2 +- .../main/beken_sdk/beken_rtc.c | 16 +- .../beken_wss_paopao/main/iot/iot_lamp.c | 125 +------- .../beken_wss_paopao/main/iot/iot_lamp.h | 2 - .../main/iot/iot_sleep_helper.c | 112 ------- .../main/iot/iot_sleep_helper.h | 2 - .../beken_wss_paopao/main/iot/iot_speaker.c | 62 ---- .../beken_wss_paopao/main/iot/iot_speaker.h | 2 - .../beken_wss_paopao/main/iot/thing.c | 276 +----------------- .../beken_wss_paopao/main/iot/thing.h | 45 --- .../main/smart_config/bk_genie_smart_config.c | 2 +- .../main/websocket_rtc_demo.c | 12 +- 14 files changed, 14 insertions(+), 650 deletions(-) diff --git a/bk_aidk/projects/beken_wss_paopao/main/app_main.c b/bk_aidk/projects/beken_wss_paopao/main/app_main.c index 4008fbcb..2db2f180 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/app_main.c +++ b/bk_aidk/projects/beken_wss_paopao/main/app_main.c @@ -676,7 +676,7 @@ static void handle_system_event(key_event_t event) app_start(); init_bat_timer(); // spi_led_init(); - bk_printf("VER:%s\r\n","1.0.6"); + bk_printf("VER:%s\r\n",APPLICATION_VERSION); #endif #endif diff --git a/bk_aidk/projects/beken_wss_paopao/main/application.c b/bk_aidk/projects/beken_wss_paopao/main/application.c index 23d5fd99..04306159 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/application.c +++ b/bk_aidk/projects/beken_wss_paopao/main/application.c @@ -49,7 +49,7 @@ static ReturnValue sleep_helper_set_mode_callback(const PropertyList* properties } static ReturnValue sleep_helper_set_level_callback(const PropertyList* properties) { - Property* level_prop = property_list_get_by_name(properties, "mode"); + Property* level_prop = property_list_get_by_name(properties, "level"); if (!level_prop || property_get_type(level_prop) != PROPERTY_TYPE_INTEGER) { return return_value_create_string("{\"error\":\"Invalid level parameter\"}"); } @@ -248,7 +248,7 @@ void app_mcp_init(){ PropertyList* props = property_list_create(); Property* brightness_prop = property_create_integer("brightness", false, 0, true, 0, 100); property_list_add_property(props, brightness_prop); - mcp_server_add_tool_with_params(mcp_server, "self.screen.set_brightness", "Set screen brightness", props, set_brightness_callback); + mcp_server_add_tool_with_params(mcp_server, "self.light.set_brightness", "设置拍拍灯的灯光亮度", props, set_brightness_callback); } // 添加拍照工具 //{ diff --git a/bk_aidk/projects/beken_wss_paopao/main/application.h b/bk_aidk/projects/beken_wss_paopao/main/application.h index d3acb7e3..3a4fd6bb 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/application.h +++ b/bk_aidk/projects/beken_wss_paopao/main/application.h @@ -80,7 +80,7 @@ enum ListeningMode { * 解决调用BLE设置灯光常亮时异常问题 */ -#define APPLICATION_VERSION "1.1.6" +#define APPLICATION_VERSION "1.1.8" #define APPLICATION_DEFULT_OTA_URL "https://xiaozhi.xa-poka.com/xiaozhi/ota/" #define APPLICATION_CONFIG_KEY_AI_URL "ai_url" /** diff --git a/bk_aidk/projects/beken_wss_paopao/main/beken_sdk/beken_rtc.c b/bk_aidk/projects/beken_wss_paopao/main/beken_sdk/beken_rtc.c index 6ada8cc4..f0995740 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/beken_sdk/beken_rtc.c +++ b/bk_aidk/projects/beken_wss_paopao/main/beken_sdk/beken_rtc.c @@ -927,21 +927,7 @@ int rtc_websocket_send_text(transport web_socket, void *str, enum MsgType msgtyp break;} - case BEKEN_RTC_SEND_IOT_DESC:{ - extern char *getGlobalSessionId(void); - - cJSON* iot_desc = (cJSON*)thing_gen_iot_descriptors(getGlobalSessionId()); - char *message = cJSON_PrintUnformatted(iot_desc); - if (message == NULL) - { - cJSON_Delete(iot_desc); - return -1; - } - LOGI("iot -->(len:%d) %s\n",strlen(message),message); - int ret = websocket_client_send_text(web_socket, message, strlen(message), 10*1000); - LOGE("send iot desc ret:%d \n",ret); - cJSON_Delete(iot_desc); - break;} + default: BK_LOGE("WebSocket", "Unsupported message type"); return -1; diff --git a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_lamp.c b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_lamp.c index ae2e530b..1f9a8484 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_lamp.c +++ b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_lamp.c @@ -43,92 +43,7 @@ void lamp_deinit(){ int lamp_get_bright(){ return ws2812_get_brightness(); } - -cJSON* iot_lamp_get_device_desc(){ - - cJSON *lamp_desc = cJSON_CreateObject(); - cJSON_AddStringToObject(lamp_desc, "name", IOT_LAMP_DEVICE_NAME); - cJSON_AddStringToObject(lamp_desc, "description", "这是拍拍灯"); - - cJSON *properties = cJSON_CreateObject(); - //定义brightness 属性 - cJSON *brightness = cJSON_CreateObject(); - cJSON_AddStringToObject(brightness, "description", "当前亮度百分比"); - cJSON_AddStringToObject(brightness, "type", "number"); - //添加brightness属性到properties - cJSON_AddItemToObjectCS(properties,"brightness",brightness); - - //定义battery 属性 - cJSON *battery = cJSON_CreateObject(); - cJSON_AddStringToObject(battery, "description", "当前电量百分比"); - cJSON_AddStringToObject(battery, "type", "number"); - cJSON_AddItemToObjectCS(properties,IOT_LAMP_DEVICE_PARAM_BATTERY,battery); - - //添加properties 到lamp_desc 描述 - cJSON_AddItemToObjectCS(lamp_desc,"properties",properties); - - - //定义version属性 - cJSON *version = cJSON_CreateObject(); - cJSON_AddStringToObject(version, "description", "当前拍拍灯软件版本"); - cJSON_AddStringToObject(version, "type", "string"); - //添加brightness属性到properties - cJSON_AddItemToObjectCS(properties,"version",version); - - //添加properties 到lamp_desc 描述 - cJSON_AddItemToObjectCS(lamp_desc,"properties",properties); - - - //定义方法methods - cJSON *methods = cJSON_CreateObject(); - - - - //定义一个设置亮度的方法 - /*"SetBrightness": { - "description": "设置亮度", - "parameters": { - "brightness": { - "description": "0到100之间的整数", - "type": "number" - } - } - } - */ - cJSON *SetBrightness = cJSON_CreateObject(); - cJSON_AddStringToObject(SetBrightness, "description", "打开关闭灯光以及设置亮度"); - - cJSON *parameters = cJSON_CreateObject(); - cJSON *p_brightness = cJSON_CreateObject(); - cJSON_AddStringToObject(p_brightness, "type", "number"); - cJSON_AddStringToObject(p_brightness, "description", "0到100之间的整数 0表示关灯 非0表示打开,默认100"); - - - cJSON_AddItemToObjectCS(parameters,IOT_LAMP_DEVICE_PARAM_BRIGHTNESS,p_brightness); - cJSON_AddItemToObjectCS(SetBrightness,"parameters",parameters); - - //cJSON_AddStringToObject(SetBrightness, "type", "number"); - cJSON_AddItemToObjectCS(methods,IOT_LAMP_DEVICE_FUNS_SET_BRIGHTNESS,SetBrightness); - - - cJSON *methods_ota = cJSON_CreateObject(); - //[警告:此操作将导致设备完全关闭,请慎重使用] - cJSON_AddStringToObject(methods_ota, "description", "升级拍拍灯最新软件[必须要用户二次确认]"); - - - //cJSON_AddStringToObject(SetBrightness, "type", "number"); - cJSON_AddItemToObjectCS(methods,IOT_LAMP_DEVICE_OTA,methods_ota); - - - cJSON_AddItemToObjectCS(lamp_desc,"methods",methods); - - //打印一下描述 - //char *json_desc = cJSON_Print(lamp_desc); - //LOGE("lamp_desc-->%s\n",json_desc); - //cJSON_Delete(lamp_desc); - return lamp_desc; -} - + void iot_lamp_report_state(int brightness){ } @@ -304,40 +219,4 @@ __exit: } return ret; -} - -void iot_lamp_parser_invoke(char* cmd,char * paramters_json){ - - //设置亮度 - if (strcmp(cmd, "SetBrightness") == 0) - { - //获取亮度值 - cJSON* params = cJSON_Parse(paramters_json); - if(params == NULL) return; - // {"brightness": 60} - int brightness = cJSON_GetObjectItem(params, IOT_LAMP_DEVICE_PARAM_BRIGHTNESS)->valueint; - LOGE("invoke brightness-->%d\n",brightness); - if(brightness == 0){ - ws2812_led_clear_all(); - }else{ - //ws2812_set_all_led(0xFFFFFF,brightness); - ws2812_set_all_led_brightness(brightness); - } - //thing_report_iot_state_number(IOT_LAMP_DEVICE_NAME,IOT_LAMP_DEVICE_PARAM_BRIGHTNESS,brightness); - cJSON_Delete(params); - } - else if (strcmp(cmd, IOT_LAMP_DEVICE_OTA) == 0){ - LOGE("invoke ota !!\n"); - //电量低于25 不允许执行OTA - int battery = battery_get_percent(); - if(battery < 25){ - LOGE("power low bat:%d ,don't ota !!\n",battery); - app_event_send_msg(APP_EVT_LOW_VOLTAGE, 0); - return ; - } - iot_lamp_check_ota(); - //ws2812_led_start_ota(); - //https_ota_start(); - } - -} +} \ No newline at end of file diff --git a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_lamp.h b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_lamp.h index e30ba204..0d0e04e8 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_lamp.h +++ b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_lamp.h @@ -34,8 +34,6 @@ void lamp_deinit(); */ int lamp_get_bright(); -cJSON * iot_lamp_get_device_desc(); -void iot_lamp_parser_invoke(char* cmd,char * paramters_json); int iot_lamp_check_ota(); #ifdef __cplusplus } diff --git a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_sleep_helper.c b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_sleep_helper.c index fb7404a0..6ef026b4 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_sleep_helper.c +++ b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_sleep_helper.c @@ -272,7 +272,6 @@ void sleep_helper_set_mode(sleep_mode mode){ sleep_msg_t msg; msg.mode = mode; rtos_push_to_queue(&sleep_helper_msg_que, &msg, BEKEN_NO_WAIT); - //thing_report_iot_state_number(IOT_SLEEP_HELPER_DEVICE_NAME,IOT_SLEEP_HELPER_DEVICE_PARAM_MODE,mode); } } @@ -339,7 +338,6 @@ void sleep_helper_set_level(sleep_model_level level){ LOGE("sleep_helper period_cycle s %d duty_cycle %d\n",config.period_cycle,config.duty_cycle); bk_pwm_set_init_signal_low(pwm_chan); bk_pwm_set_period_duty(pwm_chan,&config); - //thing_report_iot_state_number(IOT_SLEEP_HELPER_DEVICE_NAME,IOT_SLEEP_HELPER_DEVICE_PARAM_LEVEL,level); } } @@ -375,7 +373,6 @@ int sleep_helper_open(){ //默认模式1 sleep_helper_set_mode(SLEEP_MODE_1); sleep_helper_start_timer(); - //thing_report_iot_state_number(IOT_SLEEP_HELPER_DEVICE_NAME,IOT_SLEEP_HELPER_DEVICE_PARAM_MODE,SLEEP_MODE_1); return 0; } @@ -389,117 +386,8 @@ void sleep_helper_close(){ // 关闭电源输出 bk_gpio_set_output_low(GPIO_44); bk_gpio_set_output_low(GPIO_45); - - //thing_report_iot_state_number(IOT_SLEEP_HELPER_DEVICE_NAME,IOT_SLEEP_HELPER_DEVICE_PARAM_MODE,0); } -cJSON* iot_sleep_helper_get_device_desc() -{ - cJSON *sleep_helper_desc = cJSON_CreateObject(); - cJSON_AddStringToObject(sleep_helper_desc, "name", IOT_SLEEP_HELPER_DEVICE_NAME); - cJSON_AddStringToObject(sleep_helper_desc, "description", "这是助眠仪(睡眠辅助仪器)"); - - cJSON *properties = cJSON_CreateObject(); - //mode 属性 - cJSON *mode = cJSON_CreateObject(); - cJSON_AddStringToObject(mode, "description", "当前工作模式 0表示关闭 1-3表示3种不同的模式"); - cJSON_AddStringToObject(mode, "type", "number"); - //添加mode属性到properties - cJSON_AddItemToObjectCS(properties,IOT_SLEEP_HELPER_DEVICE_PARAM_MODE,mode); - - //level 属性 - cJSON *param_level = cJSON_CreateObject(); - cJSON_AddStringToObject(param_level, "description", "当前工作等级"); - cJSON_AddStringToObject(param_level, "type", "number"); - //添加mode属性到properties - cJSON_AddItemToObjectCS(properties,IOT_SLEEP_HELPER_DEVICE_PARAM_LEVEL,param_level); - - - //添加properties speaker_desc 描述 - cJSON_AddItemToObjectCS(sleep_helper_desc,"properties",properties); - - - //定义方法methods - cJSON *methods = cJSON_CreateObject(); - //设置模式的方法 - cJSON *setMode = cJSON_CreateObject(); - cJSON_AddStringToObject(setMode, "description", "设置助眠仪工作模式"); - cJSON *parameters = cJSON_CreateObject(); - cJSON *p_mode = cJSON_CreateObject(); - cJSON_AddStringToObject(p_mode, "type", "number"); - cJSON_AddStringToObject(p_mode, "description", "1到3之间的整数"); - cJSON_AddItemToObjectCS(parameters,IOT_SLEEP_HELPER_DEVICE_PARAM_MODE,p_mode); - cJSON_AddItemToObjectCS(setMode,"parameters",parameters); - cJSON_AddItemToObjectCS(methods,IOT_SLEEP_HELPER_DEVICE_FUNS_SET_MODE,setMode); - - - //设置工作等级的方法 - cJSON *setLevel = cJSON_CreateObject(); - cJSON_AddStringToObject(setLevel, "description", "设置助眠仪工作等级强度"); - cJSON *parameters_set_level = cJSON_CreateObject(); - cJSON *p_level = cJSON_CreateObject(); - cJSON_AddStringToObject(p_level, "type", "number"); - cJSON_AddStringToObject(p_level, "description", "1到9之间的整数"); - cJSON_AddItemToObjectCS(parameters_set_level,IOT_SLEEP_HELPER_DEVICE_PARAM_LEVEL,p_level); - cJSON_AddItemToObjectCS(setLevel,"parameters",parameters_set_level); - cJSON_AddItemToObjectCS(methods,IOT_SLEEP_HELPER_DEVICE_FUNS_SET_LEVEL,setLevel); - - - //打开助眠仪 - cJSON *methods_open = cJSON_CreateObject(); - cJSON_AddStringToObject(methods_open, "description", "打开助眠仪"); - cJSON_AddItemToObjectCS(methods,IOT_SLEEP_HELPER_DEVICE_OPEN,methods_open); - - //打开助眠仪 - cJSON *methods_close = cJSON_CreateObject(); - cJSON_AddStringToObject(methods_close, "description", "关闭助眠仪"); - cJSON_AddItemToObjectCS(methods,IOT_SLEEP_HELPER_DEVICE_CLOSE,methods_close); - - - cJSON_AddItemToObjectCS(sleep_helper_desc,"methods",methods); - - //打印一下描述 - //char *json_desc = cJSON_Print(speaker_desc); - //LOGE("speaker_desc-->%s\n",json_desc); - //cJSON_Delete(speaker_desc); - return sleep_helper_desc; -} - - -void iot_sleep_helper_parser_invoke(char* cmd,char * paramters_json){ - - LOGE("iot_sleep_helper_parser_invoke :%s\n",paramters_json); - cJSON* params = cJSON_Parse(paramters_json); - if(params == NULL){ - LOGE("params == NULL\n"); - //return; - } - //设置模式 - if (strcmp(cmd, IOT_SLEEP_HELPER_DEVICE_FUNS_SET_MODE) == 0) - { - // {"mode": 60} - int mode = cJSON_GetObjectItem(params, "mode")->valueint; - LOGE("mode :%d\n",mode); - sleep_helper_set_mode(mode); - } - if (strcmp(cmd, IOT_SLEEP_HELPER_DEVICE_FUNS_SET_LEVEL) == 0) - { - // {"level": 60} - int level = cJSON_GetObjectItem(params, "level")->valueint; - LOGE("level :%d\n",level); - sleep_helper_set_level(level); - - } - if (strcmp(cmd, IOT_SLEEP_HELPER_DEVICE_OPEN) == 0) - { - sleep_helper_open(); - } - if (strcmp(cmd, IOT_SLEEP_HELPER_DEVICE_CLOSE) == 0) - { - sleep_helper_close(); - } - cJSON_Delete(params); -} void sleep_helper_init(){ bk_pwm_driver_init(); diff --git a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_sleep_helper.h b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_sleep_helper.h index 695687c4..ac42812f 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_sleep_helper.h +++ b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_sleep_helper.h @@ -76,8 +76,6 @@ int sleep_helper_get_level(); int sleep_helper_get_work_timeout(); void sleep_helper_deinit(); -cJSON * iot_sleep_helper_get_device_desc(); -void iot_sleep_helper_parser_invoke(char* cmd,char * paramters_json); #ifdef __cplusplus } #endif diff --git a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_speaker.c b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_speaker.c index f440c8e9..7ee75c15 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_speaker.c +++ b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_speaker.c @@ -160,48 +160,6 @@ uint32_t speaker_volume_get_level_count() #endif -cJSON* iot_speaker_get_device_desc() -{ - cJSON *speaker_desc = cJSON_CreateObject(); - cJSON_AddStringToObject(speaker_desc, "name", IOT_SPEAKER_DEVICE_NAME); - cJSON_AddStringToObject(speaker_desc, "description", "音量调节"); - - cJSON *properties = cJSON_CreateObject(); - //volume 属性 - cJSON *volume = cJSON_CreateObject(); - cJSON_AddStringToObject(volume, "description", "当前设备音量 0-100"); - cJSON_AddStringToObject(volume, "type", "number"); - //添加brightness属性到properties - cJSON_AddItemToObjectCS(properties,IOT_SPEAKER_DEVICE_PARAM_VOL,volume); - //添加properties speaker_desc 描述 - cJSON_AddItemToObjectCS(speaker_desc,"properties",properties); - - - //定义方法methods - cJSON *methods = cJSON_CreateObject(); - cJSON *setVolume = cJSON_CreateObject(); - cJSON_AddStringToObject(setVolume, "description", "设置音量和声音大小"); - - cJSON *parameters = cJSON_CreateObject(); - cJSON *p_volume = cJSON_CreateObject(); - cJSON_AddStringToObject(p_volume, "type", "number"); - cJSON_AddStringToObject(p_volume, "description", "0到100之间的整数"); - - - cJSON_AddItemToObjectCS(parameters,"volume",p_volume); - cJSON_AddItemToObjectCS(setVolume,"parameters",parameters); - - //cJSON_AddStringToObject(SetBrightness, "type", "number"); - cJSON_AddItemToObjectCS(methods,IOT_SPEAKER_DEVICE_FUNS_SET_VOL,setVolume); - cJSON_AddItemToObjectCS(speaker_desc,"methods",methods); - - //打印一下描述 - //char *json_desc = cJSON_Print(speaker_desc); - //LOGE("speaker_desc-->%s\n",json_desc); - //cJSON_Delete(speaker_desc); - return speaker_desc; -} - void speaker_set_volume(int volume) { if (volume >= 0 && volume <= 100) @@ -212,23 +170,3 @@ void speaker_set_volume(int volume) //thing_report_iot_state_number(IOT_SPEAKER_DEVICE_NAME, IOT_SPEAKER_DEVICE_PARAM_VOL, volume); } } -void iot_speaker_parser_invoke(char* cmd,char * paramters_json){ - - LOGE("iot_speaker_parser_invoke :%s\n",paramters_json); - //设置音量 - if (strcmp(cmd, "setVolume") == 0) - { - //获取亮度值 - cJSON* params = cJSON_Parse(paramters_json); - if(params == NULL){ - LOGE("params == NULL\n"); - return; - } - // {"volume": 60} - int volume = cJSON_GetObjectItem(params, "volume")->valueint; - LOGE("volume :%d\n",volume); - speaker_set_volume(volume); - cJSON_Delete(params); - } - -} \ No newline at end of file diff --git a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_speaker.h b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_speaker.h index 1da47a0f..5ff9fd1d 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/iot/iot_speaker.h +++ b/bk_aidk/projects/beken_wss_paopao/main/iot/iot_speaker.h @@ -12,8 +12,6 @@ extern "C" { void speaker_volume_init(); -cJSON* iot_speaker_get_device_desc(); -void iot_speaker_parser_invoke(char* cmd,char * paramters_json); /** * 获取当前音量 */ diff --git a/bk_aidk/projects/beken_wss_paopao/main/iot/thing.c b/bk_aidk/projects/beken_wss_paopao/main/iot/thing.c index 5fa402bd..b386363e 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/iot/thing.c +++ b/bk_aidk/projects/beken_wss_paopao/main/iot/thing.c @@ -25,258 +25,7 @@ #define LOGW(...) BK_LOGW(TAG, ##__VA_ARGS__) #define LOGE(...) BK_LOGE(TAG, ##__VA_ARGS__) #define LOGD(...) BK_LOGD(TAG, ##__VA_ARGS__) -extern rtc_session *__get_beken_rtc(void); -extern char *getGlobalSessionId(void); -extern bool g_connected_flag; - -static beken_queue_t thing_msg_que = NULL; -static beken_thread_t thing_thread_hdl = NULL; -static int thing_start = 0; -typedef struct -{ - int type ; - char *data; - int data_len; -} thing_msg_t; - - -cJSON* thing_gen_iot_descriptors(char *session_id) -{ - // 1.判断数据合法 - // 2.发送给服务器 - cJSON *messageRoot = cJSON_CreateObject(); - cJSON_AddStringToObject(messageRoot, "session_id", session_id); - cJSON_AddStringToObject(messageRoot, "type", "iot"); - cJSON_AddBoolToObject(messageRoot, "update", true); - - cJSON *descriptorArray = cJSON_CreateArray(); - - #ifdef IOT_LAMP - cJSON* lamp_desc = iot_lamp_get_device_desc(); - //cJSON_AddItemToArray(descriptorArray, cJSON_Duplicate(descriptor, 1)); - cJSON_AddItemToArray(descriptorArray, lamp_desc); - #endif - - #ifdef IOT_SPEAKER - cJSON* speaker_desc = iot_speaker_get_device_desc(); - //cJSON_AddItemToArray(descriptorArray, cJSON_Duplicate(descriptor, 1)); - cJSON_AddItemToArray(descriptorArray, speaker_desc); - #endif - - #ifdef IOT_SLEEP_HELPER - cJSON* sleep_helper_desc = iot_sleep_helper_get_device_desc(); - cJSON_AddItemToArray(descriptorArray, sleep_helper_desc); - #endif - - - cJSON_AddItemToObject(messageRoot, "descriptors", descriptorArray); - return messageRoot; -} - -//{"session_id":"14c23594","type":"iot","update":true,"states":[{"name":"AudioSpeaker","state":{"volume":50}}]} -void thing_report_iot_state(char * device,char * properties_key, char* state){ - cJSON *messageRoot = cJSON_CreateObject(); - cJSON_AddStringToObject(messageRoot, "session_id", getGlobalSessionId()); - cJSON_AddStringToObject(messageRoot, "type", "iot"); - cJSON_AddBoolToObject(messageRoot, "update", true); - cJSON *stateArray = cJSON_CreateArray(); - - cJSON *states_desc = cJSON_CreateObject(); - cJSON_AddStringToObject(states_desc, "name", device); - - //cJSON *state_obj = cJSON_CreateObject(); - - //{"volume":50} - cJSON *param = cJSON_CreateObject(); - cJSON_AddStringToObject(param, properties_key, state); - //"state":{"volume":50}} - cJSON_AddItemToObjectCS(states_desc,"state",param); - - cJSON_AddItemToArray(stateArray, states_desc); - cJSON_AddItemToObject(messageRoot, "states", stateArray); - char *message = cJSON_PrintUnformatted(messageRoot); - LOGE("iot -->(len:%d) %s\n",strlen(message),message); - //将数据发送到队列 使用线程发送 - if (thing_msg_que != NULL) - { - thing_msg_t msg; - msg.type = 0; - msg.data = os_malloc(strlen(message)+1); - strcpy(msg.data, message); - msg.data_len = strlen(message); - rtos_push_to_queue(&thing_msg_que, &msg, BEKEN_NO_WAIT); - } - - //rtc_session *beken_rtc = __get_beken_rtc(); - //transport bk_rtc_ws = beken_rtc->bk_rtc_client; - //websocket_client_send_text(bk_rtc_ws, message, strlen(message), 10*1000); - cJSON_Delete(messageRoot); -} - -void thing_report_iot_state_number(char * device,char * properties_key, int state){ - cJSON *messageRoot = cJSON_CreateObject(); - cJSON_AddStringToObject(messageRoot, "session_id", getGlobalSessionId()); - cJSON_AddStringToObject(messageRoot, "type", "iot"); - cJSON_AddBoolToObject(messageRoot, "update", true); - cJSON *stateArray = cJSON_CreateArray(); - - cJSON *states_desc = cJSON_CreateObject(); - cJSON_AddStringToObject(states_desc, "name", device); - - //cJSON *state_obj = cJSON_CreateObject(); - - //{"volume":50} - cJSON *param = cJSON_CreateObject(); - cJSON_AddNumberToObject(param, properties_key, state); - //"state":{"volume":50}} - cJSON_AddItemToObjectCS(states_desc,"state",param); - - cJSON_AddItemToArray(stateArray, states_desc); - cJSON_AddItemToObject(messageRoot, "states", stateArray); - char *message = cJSON_PrintUnformatted(messageRoot); - LOGE("iot -->(len:%d) %s\n",strlen(message),message); - - //rtc_session *beken_rtc = __get_beken_rtc(); - //transport bk_rtc_ws = beken_rtc->bk_rtc_client; - //websocket_client_send_text(bk_rtc_ws, message, strlen(message), 10*1000); - //将数据发送到队列 使用线程发送 - if (thing_msg_que != NULL) - { - thing_msg_t msg; - msg.type = 0; - msg.data = os_malloc(strlen(message)+1); - strcpy(msg.data, message); - msg.data_len = strlen(message); - rtos_push_to_queue(&thing_msg_que, &msg, BEKEN_NO_WAIT); - } - - cJSON_Delete(messageRoot); -} - -/** - * 解析平台下发的IOT指令,获取响应的参数调用不同的硬件功能 - * 物联网指令: - * - * { - "type": "iot", - "commands": [ - { - "name": "lamp", - "method": "SetBrightness", - "parameters": { - "brightness": 50 - } - } - ] -} -*/ - -void thing_iot_invoke(char *iot_json){ - cJSON* iot_invoke = cJSON_Parse(iot_json); - cJSON *commands = cJSON_GetObjectItem(iot_invoke, "commands"); - // 检查是否为数组类型 - if (commands ==NULL && !cJSON_IsArray(commands)) { - cJSON_Delete(iot_invoke); - return ; - } - // 遍历数组并打印元素 - int arraySize = cJSON_GetArraySize(commands); - for (int i = 0; i < arraySize; i++) { - cJSON *item = cJSON_GetArrayItem(commands, i); - char *name = cJSON_GetObjectItem(item, "name")->valuestring; - char *method = cJSON_GetObjectItem(item, "method")->valuestring; - - cJSON *parameters = cJSON_GetObjectItem(item, "parameters"); - char *str_parameters =cJSON_PrintUnformatted(parameters); - LOGE("cmd:%s method:%s\n",name,method); - //灯光指令 - if (strcmp(name, "lamp") == 0) - { - iot_lamp_parser_invoke(method,str_parameters); - } - - //扬声器指令 - if (strcmp(name, "speaker") == 0) - { - iot_speaker_parser_invoke(method,str_parameters); - } - - //睡眠仪指令 - if (strcmp(name, IOT_SLEEP_HELPER_DEVICE_NAME) == 0) - { - iot_sleep_helper_parser_invoke(method,str_parameters); - } - } - // 释放内存 - cJSON_Delete(iot_invoke); -} - -// AddStringProperty -// AddNumberProperty -// AddBooleanProperty -// AddMethod - -/** - * 生成IOT 描述文件 用于意图识别控制 - */ - - -static void thing_thread_task(void *arg) -{ - bk_err_t ret = BK_OK; - while(thing_start){ - - thing_msg_t msg; - ret = rtos_pop_from_queue(&thing_msg_que, &msg, BEKEN_WAIT_FOREVER); - if (kNoErr == ret) - { - switch (msg.type) - { - // 发送数据到平台 - case 0: - { - //没有连接平台的情况下 不允许发送数据 - if(!g_connected_flag){ - break; - } - rtc_session *beken_rtc = __get_beken_rtc(); - if(beken_rtc == NULL){ - break; - } - transport bk_rtc_ws = beken_rtc->bk_rtc_client; - websocket_client_send_text(bk_rtc_ws, msg.data, msg.data_len, 10*1000); - os_free(msg.data); - break; - } - } - } - } - /* delete msg queue */ - ret = rtos_deinit_queue(&thing_msg_que); - if (ret != kNoErr) - { - bk_printf("delete spi_led_msg_que fail\n"); - } - thing_msg_que = NULL; - /* delete task */ - if(thing_thread_hdl!= NULL) { - rtos_delete_thread(&thing_thread_hdl); - thing_thread_hdl = NULL; - } - bk_printf("delete thing_thread_hdl task\n"); -} - -void thing_report_device_state(){ - //上报当前软件版本 - thing_report_iot_state(IOT_LAMP_DEVICE_NAME,"version", APPLICATION_VERSION); - //上报当前亮度 - thing_report_iot_state_number(IOT_LAMP_DEVICE_NAME,IOT_LAMP_DEVICE_PARAM_BRIGHTNESS,lamp_get_bright()); - //上报当前音量 - thing_report_iot_state_number(IOT_SPEAKER_DEVICE_NAME,IOT_SPEAKER_DEVICE_PARAM_VOL,speaker_volume_get_current()); - //上报当前电量 - thing_report_iot_state_number(IOT_LAMP_DEVICE_NAME,IOT_LAMP_DEVICE_PARAM_BATTERY,battery_get_percent()); - //thing_report_iot_state_number(IOT_SPEAKER_DEVICE_NAME,IOT_SPEAKER_DEVICE_PARAM_VOL,volume*10); -} + void thing_init() { #ifdef IOT_LAMP @@ -289,28 +38,13 @@ void thing_init() #ifdef IOT_SLEEP_HELPER sleep_helper_init(); - //sleep_helper_set_mode(SLEEP_MODE_1); #endif - thing_start = 1; - bk_err_t ret = BK_OK; - ret = rtos_init_queue(&thing_msg_que, "thing_msg_que", sizeof(thing_msg_t), 5); - if (ret != kNoErr) - { - bk_printf("create thing_msg_que queue fail\n"); - } - ret = rtos_create_thread(&thing_thread_hdl, - 4, - "spi_led", - (beken_thread_function_t)thing_thread_task, - 5 * 1024, - NULL); - if (ret != kNoErr) - { - thing_thread_hdl = NULL; - } + } void thing_deinit(){ - thing_start = 0; + lamp_deinit(); + sleep_helper_deinit(); + //speaker_volume_deinit(); } diff --git a/bk_aidk/projects/beken_wss_paopao/main/iot/thing.h b/bk_aidk/projects/beken_wss_paopao/main/iot/thing.h index 96742178..8324030d 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/iot/thing.h +++ b/bk_aidk/projects/beken_wss_paopao/main/iot/thing.h @@ -20,48 +20,3 @@ void thing_init(); void thing_deinit(); -cJSON * thing_create(char * name,char *description); - -/* -"theme": { - "description": "主题", - "type": "string" - },*/ -cJSON * thing_add_string_property(char * name,char *description); -/* -"theme": { - "description": "主题", - "type": "string" - },*/ -cJSON * thing_add_number_property(char * name,char *description); - - -/** - * # Sending IoT descriptors -[{"name":"AudioSpeaker","description":"The audio speaker of the device","properties":{"volume":{"description":"Current audio volume value","type":"number"}},"methods":{"set_volume":{"description":"Set the audio volume","parameters":{"volume":{"description":"An integer between 0 and 100","type":"number"}}}}},{"name":"Lamp","description":"A test lamp","properties":{"power":{"description":"Whether the lamp is on","type":"boolean"}},"methods":{"turn_on":{"description":"Turn on the lamp","parameters":{}},"turn_off":{"description":"Turn off the lamp","parameters":{}}}}] -# Sending IoT states -{"session_id":"14c23594","type":"iot","update":true,"states":[{"name":"AudioSpeaker","state":{"volume":50}}]} - - */ -//AddStringProperty -//AddNumberProperty -//AddBooleanProperty -//AddMethod - -void thing_report_iot_state(char * device,char * properties_key, char* state); - -void thing_report_iot_state_number(char * device,char * properties_key, int state); -/** - * 生成IOT 描述文件 用于意图识别控制 - */ -cJSON* thing_gen_iot_descriptors(char *session_id); - -/** - * 解析平台下发的IOT指令,获取响应的参数调用不同的硬件功能 - */ -void thing_iot_invoke(char *iot_json); - -/** - *连接服务器成功后 上报当前设备状态 - */ -void thing_report_device_state(); \ No newline at end of file diff --git a/bk_aidk/projects/beken_wss_paopao/main/smart_config/bk_genie_smart_config.c b/bk_aidk/projects/beken_wss_paopao/main/smart_config/bk_genie_smart_config.c index 68e048cf..a17df5f9 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/smart_config/bk_genie_smart_config.c +++ b/bk_aidk/projects/beken_wss_paopao/main/smart_config/bk_genie_smart_config.c @@ -598,7 +598,7 @@ int demo_network_auto_reconnect(bool val) // val true means from disconnect to r app_event_send_msg(APP_EVT_RECONNECT_NETWORK, 0); network_disc_evt_posted = 0; } - BK_LOGE(TAG, "bbbbbbbbbbb\n"); + BK_LOGE(TAG, "demo_sta_app_init ssid:%s\n",(char *)info.sta_ssid); demo_sta_app_init((char *)info.sta_ssid, (char *)info.sta_pwd); return 0x71l; } diff --git a/bk_aidk/projects/beken_wss_paopao/main/websocket_rtc_demo.c b/bk_aidk/projects/beken_wss_paopao/main/websocket_rtc_demo.c index dff72a3f..2c6a8d94 100755 --- a/bk_aidk/projects/beken_wss_paopao/main/websocket_rtc_demo.c +++ b/bk_aidk/projects/beken_wss_paopao/main/websocket_rtc_demo.c @@ -566,7 +566,7 @@ void rtc_websocket_msg_handle(char *json_text, unsigned int size) // 解析服务器下发的IOT 指令 else if (strcmp(type->valuestring, "iot") == 0) { - thing_iot_invoke(json_text); + //thing_iot_invoke(json_text); } else if (strcmp(type->valuestring, "llm") == 0) { @@ -809,16 +809,6 @@ void rtc_websocket_event_handler(void *event_handler_arg, char *event_base, int3 rtos_delay_milliseconds(100); rtc_websocket_send_text(client, (void *)(&audio_info), BEKEN_RTC_SEND_START_LISTEN); - //2025.07.07 - //rtos_delay_milliseconds(100); - //rtc_websocket_send_text(client, (void *)(&audio_info), BEKEN_RTC_SEND_IOT_DESC); - //rtos_delay_milliseconds(20); - //thing_report_device_state(); - - - // rtc_websocket_send_text(client, (void *)(&audio_info), BEKEN_RTC_SEND_START_LISTEN); - // rtos_delay_milliseconds(200); - // rtc_websocket_send_text(client, (void *)(&audio_info), BEKEN_RTC_SEND_LISTEN); break; case WEBSOCKET_EVENT_DISCONNECTED: //bk_printf("WEBSOCKET_EVENT_DISCONNECTED~~~~\n");