|
@@ -2852,97 +2852,101 @@ char *ws_sensor_status_ack_to_json(GlobalSensorManger *_globalSensorManger)
|
|
|
// 获取传感器当前的最新值
|
|
// 获取传感器当前的最新值
|
|
|
GlobalSensorInfo _globalSensorInfo;
|
|
GlobalSensorInfo _globalSensorInfo;
|
|
|
GlobalSensorManger *_globalSensorManagerTemp = NULL;
|
|
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;
|
|
|
|
|
- strcpy(_overSensorBackInfoTemp->sensorName,language_sensor_name[__globalDeviceManage._globalDevInfo.product.language][(int)_globalSensorManagerTemp->sensor_type]);
|
|
|
|
|
-
|
|
|
|
|
- _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, _overSensorBackInfoTemp->comSlogan);
|
|
|
|
|
- _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个值
|
|
|
|
|
|
|
+ if(!list_empty(&_globalSensorManger->list)) {
|
|
|
|
|
+ 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;
|
|
|
|
|
+ strcpy(_overSensorBackInfoTemp->sensorName,language_sensor_name[__globalDeviceManage._globalDevInfo.product.language][(int)_globalSensorManagerTemp->sensor_type]);
|
|
|
|
|
+
|
|
|
|
|
+ _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, _overSensorBackInfoTemp->comSlogan);
|
|
|
|
|
+ _overSensorBackInfoTemp->nodeNumber = _globalSensorManagerTemp->sensor_addr;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- _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: // 空调遥控器 没有值
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ // 拿数据
|
|
|
|
|
+ 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;
|
|
|
|
|
+ case 7:
|
|
|
|
|
+ {
|
|
|
|
|
+ _overSensorBackInfoTemp->temperatureValue = _globalSensorManagerTemp->Cur_sensor_info.val1;
|
|
|
|
|
+ _overSensorBackInfoTemp->temperatureValue2 = _globalSensorManagerTemp->Cur_sensor_info.val2;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // 入队
|
|
|
|
|
+ list_add_tail(&_overSensorBackInfoTemp->list, &_over_all_sensor_back_info.list);
|
|
|
}
|
|
}
|
|
|
- break;
|
|
|
|
|
- case 7:
|
|
|
|
|
|
|
+ // 转换
|
|
|
|
|
+
|
|
|
|
|
+ strRet = over_all_sensor_info_to_json(&_over_all_sensor_back_info, 1);
|
|
|
|
|
+ // 释放资源
|
|
|
|
|
+ _OverSensorBackInfo *node;
|
|
|
|
|
+ _OverSensorBackInfo *next;
|
|
|
|
|
+ list_for_each_entry_safe(node, next, &_over_all_sensor_back_info.list, list)
|
|
|
{
|
|
{
|
|
|
- _overSensorBackInfoTemp->temperatureValue = _globalSensorManagerTemp->Cur_sensor_info.val1;
|
|
|
|
|
- _overSensorBackInfoTemp->temperatureValue2 = _globalSensorManagerTemp->Cur_sensor_info.val2;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ list_del(&node->list);
|
|
|
|
|
+ free(node);
|
|
|
}
|
|
}
|
|
|
- // 入队
|
|
|
|
|
- list_add_tail(&_overSensorBackInfoTemp->list, &_over_all_sensor_back_info.list);
|
|
|
|
|
- }
|
|
|
|
|
- // 转换
|
|
|
|
|
-
|
|
|
|
|
- strRet = over_all_sensor_info_to_json(&_over_all_sensor_back_info, 1);
|
|
|
|
|
- // 释放资源
|
|
|
|
|
- _OverSensorBackInfo *node;
|
|
|
|
|
- _OverSensorBackInfo *next;
|
|
|
|
|
- list_for_each_entry_safe(node, next, &_over_all_sensor_back_info.list, list)
|
|
|
|
|
- {
|
|
|
|
|
- list_del(&node->list);
|
|
|
|
|
- free(node);
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
return strRet;
|
|
return strRet;
|
|
|
}
|
|
}
|
|
|
|
|
|