|
@@ -2120,7 +2120,7 @@ cJSON* json_to_sensor_manage(const char* str,_OverSensorRequest* _overSensorRequ
|
|
|
/// @brief 返回传感器信息
|
|
/// @brief 返回传感器信息
|
|
|
/// @param _over_all_pwr_back_info
|
|
/// @param _over_all_pwr_back_info
|
|
|
/// @return
|
|
/// @return
|
|
|
-char* over_all_sensor_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_info)
|
|
|
|
|
|
|
+char* over_all_sensor_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_info,int nWSType)
|
|
|
{
|
|
{
|
|
|
char* str = NULL;
|
|
char* str = NULL;
|
|
|
struct list_head *pos;
|
|
struct list_head *pos;
|
|
@@ -2129,9 +2129,21 @@ char* over_all_sensor_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_in
|
|
|
// 创建 JSON 对象
|
|
// 创建 JSON 对象
|
|
|
cJSON* root = cJSON_CreateObject();
|
|
cJSON* root = cJSON_CreateObject();
|
|
|
// 添加基本键值对
|
|
// 添加基本键值对
|
|
|
- cJSON_AddNumberToObject(root, "code", 200);
|
|
|
|
|
- //创建数据
|
|
|
|
|
- cJSON* data_root_array = cJSON_CreateArray();
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 添加基本键值对
|
|
|
|
|
+ cJSON* sdata_filed = cJSON_CreateObject();
|
|
|
|
|
+ // 创建数据
|
|
|
|
|
+ cJSON *data_root_array = cJSON_CreateArray();
|
|
|
|
|
+ if (nWSType)
|
|
|
|
|
+ {
|
|
|
|
|
+ cJSON_AddNumberToObject(sdata_filed, "code", 200);
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ cJSON_AddNumberToObject(root, "code", 200);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
//循环添加数据
|
|
//循环添加数据
|
|
|
list_for_each_entry(_temp, &_over_all_sensor_back_info->list, list)
|
|
list_for_each_entry(_temp, &_over_all_sensor_back_info->list, list)
|
|
|
{
|
|
{
|
|
@@ -2196,16 +2208,125 @@ char* over_all_sensor_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_in
|
|
|
cJSON_AddNumberToObject(data_filed, "waterImmersionState",_temp->waterImmersionState);
|
|
cJSON_AddNumberToObject(data_filed, "waterImmersionState",_temp->waterImmersionState);
|
|
|
cJSON_AddItemToObject(data_root_array, "data", data_filed);
|
|
cJSON_AddItemToObject(data_root_array, "data", data_filed);
|
|
|
}
|
|
}
|
|
|
- //添加汇总
|
|
|
|
|
- cJSON_AddItemToObject(root, "data", data_root_array);
|
|
|
|
|
- //添加结果
|
|
|
|
|
- cJSON_AddStringToObject(root, "msg", "操作成功");
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if (nWSType)
|
|
|
|
|
+ {
|
|
|
|
|
+ // 添加汇总
|
|
|
|
|
+ cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
|
|
|
|
|
+ // 添加结果
|
|
|
|
|
+ cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
|
|
|
|
|
+ cJSON_AddItemToObject(root, "data", sdata_filed);
|
|
|
|
|
+ // 添加内容
|
|
|
|
|
+ cJSON_AddStringToObject(root, "message", "操作成功");
|
|
|
|
|
+ cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
|
|
|
|
|
+ cJSON_AddBoolToObject(root, "success", true);
|
|
|
|
|
+ cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");
|
|
|
|
|
+ }else
|
|
|
|
|
+ {
|
|
|
|
|
+ cJSON_AddItemToObject(root, "data", data_root_array);
|
|
|
|
|
+ // 添加内容
|
|
|
|
|
+ cJSON_AddStringToObject(root, "message", "操作成功");
|
|
|
|
|
+ }
|
|
|
//转换
|
|
//转换
|
|
|
str = cJSON_Print(root);
|
|
str = cJSON_Print(root);
|
|
|
//释放资源
|
|
//释放资源
|
|
|
cJSON_Delete(root);
|
|
cJSON_Delete(root);
|
|
|
return str;
|
|
return str;
|
|
|
}
|
|
}
|
|
|
|
|
+/**
|
|
|
|
|
+ * @brief 将传感器状态应答转换为 JSON 字符串
|
|
|
|
|
+ *
|
|
|
|
|
+ * 将给定的传感器状态应答结构体转换为 JSON 格式的字符串。
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param _over_all_sensor_back_info 传感器状态应答结构体指针
|
|
|
|
|
+ *
|
|
|
|
|
+ * @return 转换后的 JSON 字符串,若转换失败则返回 nullptr
|
|
|
|
|
+ */
|
|
|
|
|
+char *ws_sensor_status_ack_to_json(GlobalSensorManger *_globalSensorManger)
|
|
|
|
|
+{
|
|
|
|
|
+ _OverSensorBackInfo _over_all_sensor_back_info;
|
|
|
|
|
+ INIT_LIST_HEAD(&_over_all_sensor_back_info.list);
|
|
|
|
|
+ // 获取传感器当前的最新值
|
|
|
|
|
+ GlobalSensorInfo _globalSensorInfo;
|
|
|
|
|
+ GlobalSensorManger *_globalSensorManagerTemp = NULL;
|
|
|
|
|
+ list_for_each_entry(_globalSensorManagerTemp, &_globalSensorManger->list, list)
|
|
|
|
|
+ {
|
|
|
|
|
+ _OverSensorBackInfo *_overSensorBackInfoTemp = (_OverSensorBackInfo *)malloc(sizeof(_OverSensorBackInfo));
|
|
|
|
|
+ if (_overSensorBackInfoTemp == NULL)
|
|
|
|
|
+ log_e("_OverSensorBackInfo malloc error.");
|
|
|
|
|
+ memset(_overSensorBackInfoTemp, 0, sizeof(_OverSensorBackInfo));
|
|
|
|
|
+ // 基本信息
|
|
|
|
|
+ _overSensorBackInfoTemp->sensorId = _globalSensorManagerTemp->sensor_id;
|
|
|
|
|
+ memcpy(&_overSensorBackInfoTemp->sensorName, &_globalSensorManagerTemp->sensor_name, sizeof(_overSensorBackInfoTemp->sensorName));
|
|
|
|
|
+ // strcpy(_overSensorBackInfoTemp->sensorName,_globalSensorManagerTemp->sensor_name);
|
|
|
|
|
+ _overSensorBackInfoTemp->sensorType = _globalSensorManagerTemp->sensor_type;
|
|
|
|
|
+ memcpy(&_overSensorBackInfoTemp->comSlogan, &_globalSensorManagerTemp->sensor_port_name, sizeof(_overSensorBackInfoTemp->comSlogan));
|
|
|
|
|
+ // strcpy(_overSensorBackInfoTemp->comSlogan,_globalSensorManagerTemp->sensor_port_name);
|
|
|
|
|
+
|
|
|
|
|
+ // 485独有
|
|
|
|
|
+ _overSensorBackInfoTemp->connectionStatus = _globalSensorManagerTemp->sensor_status;
|
|
|
|
|
+ _overSensorBackInfoTemp->nodeNumber = __globalDeviceManage._globalSensorManger.sensor_node_number;
|
|
|
|
|
+ if (_globalSensorManagerTemp->sensor_interface_type == 1)
|
|
|
|
|
+ {
|
|
|
|
|
+ _overSensorBackInfoTemp->sensorAddr = _globalSensorManagerTemp->sensor_addr;
|
|
|
|
|
+ _overSensorBackInfoTemp->sensorBaud = _globalSensorManagerTemp->sensor_baud;
|
|
|
|
|
+ strcpy(_overSensorBackInfoTemp->sensorvaluech, "RS485");
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ _overSensorBackInfoTemp->connectionStatus = -1;
|
|
|
|
|
+ strcpy(_overSensorBackInfoTemp->sensorvaluech, "IN");
|
|
|
|
|
+ _overSensorBackInfoTemp->nodeNumber = _globalSensorManagerTemp->sensor_addr;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 拿数据
|
|
|
|
|
+ memset(&_globalSensorInfo, 0, sizeof(_globalSensorInfo));
|
|
|
|
|
+ switch (_globalSensorManagerTemp->sensor_type)
|
|
|
|
|
+ {
|
|
|
|
|
+ case 0: // 温湿度传感器 2个值
|
|
|
|
|
+ {
|
|
|
|
|
+ _overSensorBackInfoTemp->temperatureValue = _globalSensorManagerTemp->Cur_sensor_info.val1;
|
|
|
|
|
+ _overSensorBackInfoTemp->humidityValue = _globalSensorManagerTemp->Cur_sensor_info.val2;
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 1: // 烟雾传感器 1个值
|
|
|
|
|
+ {
|
|
|
|
|
+
|
|
|
|
|
+ _overSensorBackInfoTemp->alarmStatus = !(bool)_globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 2: // 水浸传感器 1个值 c
|
|
|
|
|
+ {
|
|
|
|
|
+ _overSensorBackInfoTemp->waterImmersionState = !(bool)_globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 3: // 门禁传感器
|
|
|
|
|
+ {
|
|
|
|
|
+ _overSensorBackInfoTemp->accessControlStatus = !(bool)_globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 4: // 气体传感器 1个值
|
|
|
|
|
+ {
|
|
|
|
|
+ _overSensorBackInfoTemp->gasConcentration = _globalSensorManagerTemp->Cur_sensor_info.val1; // 气体浓度
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 5: // 气压气流传感器 2个值
|
|
|
|
|
+ {
|
|
|
|
|
+ _overSensorBackInfoTemp->airPressureValue = _globalSensorManagerTemp->Cur_sensor_info.val1; // 气压
|
|
|
|
|
+ _overSensorBackInfoTemp->airflowValue = _globalSensorManagerTemp->Cur_sensor_info.val2; // 气流
|
|
|
|
|
+ };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 6: // 空调遥控器 没有值
|
|
|
|
|
+ {
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 入队
|
|
|
|
|
+ list_add_tail(&_overSensorBackInfoTemp->list, &_over_all_sensor_back_info.list);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 转换
|
|
|
|
|
+ return over_all_sensor_info_to_json(&_over_all_sensor_back_info,1);
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
/// @brief 返回传感器历史信息
|
|
/// @brief 返回传感器历史信息
|
|
|
/// @param _over_all_pwr_back_info
|
|
/// @param _over_all_pwr_back_info
|
|
@@ -2660,7 +2781,15 @@ char* ws_over_status_ack_to_json(int type,_OverAllPwrAckInfo* _over_all_pwr_back
|
|
|
cJSON_AddNumberToObject(sdata_filed, "code", 200);
|
|
cJSON_AddNumberToObject(sdata_filed, "code", 200);
|
|
|
cJSON* sub_data_root_array = cJSON_CreateArray();
|
|
cJSON* sub_data_root_array = cJSON_CreateArray();
|
|
|
cJSON* data_filed = cJSON_CreateObject();
|
|
cJSON* data_filed = cJSON_CreateObject();
|
|
|
- cJSON_AddStringToObject(data_filed,"productName",_over_all_pwr_back_info->product_name);
|
|
|
|
|
|
|
+ if (_over_all_pwr_back_info->product_id == 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ sprintf(temp, "%s", _over_all_pwr_back_info->product_name);
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ sprintf(temp, "%s %d", _over_all_pwr_back_info->product_name, _over_all_pwr_back_info->product_id);
|
|
|
|
|
+ }
|
|
|
|
|
+ cJSON_AddStringToObject(data_filed,"productName",temp);
|
|
|
cJSON_AddStringToObject(data_filed,"productNumber",_over_all_pwr_back_info->product_number);
|
|
cJSON_AddStringToObject(data_filed,"productNumber",_over_all_pwr_back_info->product_number);
|
|
|
sprintf(temp,"%d",_over_all_pwr_back_info->product_id);
|
|
sprintf(temp,"%d",_over_all_pwr_back_info->product_id);
|
|
|
cJSON_AddStringToObject(data_filed,"productId",temp);
|
|
cJSON_AddStringToObject(data_filed,"productId",temp);
|
|
@@ -2693,7 +2822,7 @@ char* ws_over_status_ack_to_json(int type,_OverAllPwrAckInfo* _over_all_pwr_back
|
|
|
//添加汇总
|
|
//添加汇总
|
|
|
cJSON_AddItemToObject(root, "data", sdata_filed);
|
|
cJSON_AddItemToObject(root, "data", sdata_filed);
|
|
|
//添加内容
|
|
//添加内容
|
|
|
- cJSON_AddStringToObject(root, "msg", "操作成功");
|
|
|
|
|
|
|
+ cJSON_AddStringToObject(root, "message", "操作成功");
|
|
|
cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
|
|
cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
|
|
|
cJSON_AddBoolToObject(root, "success",true);
|
|
cJSON_AddBoolToObject(root, "success",true);
|
|
|
switch (type)
|
|
switch (type)
|
|
@@ -2789,7 +2918,7 @@ char* ws_chn_status_ack_to_json(int type,_OverChnPwrAckInfo* _over_chn_pwr_back_
|
|
|
//添加汇总
|
|
//添加汇总
|
|
|
cJSON_AddItemToObject(root, "data", sdata_filed);
|
|
cJSON_AddItemToObject(root, "data", sdata_filed);
|
|
|
//添加内容
|
|
//添加内容
|
|
|
- cJSON_AddStringToObject(root, "msg", "操作成功");
|
|
|
|
|
|
|
+ cJSON_AddStringToObject(root, "message", "操作成功");
|
|
|
cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
|
|
cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
|
|
|
cJSON_AddBoolToObject(root, "success",true);
|
|
cJSON_AddBoolToObject(root, "success",true);
|
|
|
switch (type)
|
|
switch (type)
|