|
|
@@ -1902,13 +1902,26 @@ static void* sensor_thread(void* arg)
|
|
|
#endif
|
|
|
if (ret == -1)
|
|
|
{
|
|
|
- _globalSensorMangerTemp->sensor_status = 1;
|
|
|
+ //log_i("485 Timeout sensorAddr=%d, ret=%d\n", _globalSensorMangerTemp->sensor_addr, ret);
|
|
|
+ _globalSensorMangerTemp->sensor_check_count++;
|
|
|
+
|
|
|
+ if (_globalSensorMangerTemp->sensor_check_count >= SENSOR_MAX_CHECK_COUNT)
|
|
|
+ {
|
|
|
+ _globalSensorMangerTemp->sensor_status = 1;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count = SENSOR_MAX_CHECK_COUNT;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _globalSensorInfo.val1 = _globalSensorMangerTemp->Cur_sensor_info.val1;
|
|
|
+ _globalSensorInfo.val2 = _globalSensorMangerTemp->Cur_sensor_info.val2;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
_globalSensorMangerTemp->sensor_status = 0;
|
|
|
_globalSensorInfo.val1 = temperature;
|
|
|
_globalSensorInfo.val2 = humidity;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count=0;
|
|
|
}
|
|
|
// log_d("sensor val:%0.2f %0.2f\n",temperature,humidity);
|
|
|
// printf("get temperature=%f humidity=%f\n",temperature,humidity);
|
|
|
@@ -2002,13 +2015,25 @@ static void* sensor_thread(void* arg)
|
|
|
&CO2);
|
|
|
if (ret == -1)
|
|
|
{
|
|
|
- _globalSensorMangerTemp->sensor_status = 1;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count++;
|
|
|
+
|
|
|
+ if (_globalSensorMangerTemp->sensor_check_count >= SENSOR_MAX_CHECK_COUNT)
|
|
|
+ {
|
|
|
+ _globalSensorMangerTemp->sensor_status = 1;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count = SENSOR_MAX_CHECK_COUNT;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _globalSensorInfo.val1 = _globalSensorMangerTemp->Cur_sensor_info.val1;
|
|
|
+ _globalSensorInfo.val2 = _globalSensorMangerTemp->Cur_sensor_info.val2;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
_globalSensorMangerTemp->sensor_status = 0;
|
|
|
_globalSensorInfo.val1 = CO2;
|
|
|
_globalSensorInfo.val2 = 0;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count = 0;
|
|
|
}
|
|
|
_globalSensorMangerTemp->Cur_sensor_info = _globalSensorInfo;
|
|
|
for(int i = 0 ; i < NOARTH_MAX_SENSOR;i++) //最多4个
|
|
|
@@ -2043,13 +2068,24 @@ static void* sensor_thread(void* arg)
|
|
|
sensor_dat_t sdat;
|
|
|
ret = sensor_get_data(SENSOR_TYPE_TEMP, SENSOR_TYPE_TEMP_BTG50H8EL3200, _globalSensorMangerTemp->sensor_addr, 0, &sdat);
|
|
|
if (ret == -1){
|
|
|
- //log_w("Relay modbus Error:%s\n", modbus_strerror(errno));
|
|
|
- _globalSensorMangerTemp->sensor_status = 1;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count++;
|
|
|
+
|
|
|
+ if (_globalSensorMangerTemp->sensor_check_count >= SENSOR_MAX_CHECK_COUNT)
|
|
|
+ {
|
|
|
+ _globalSensorMangerTemp->sensor_status = 1;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count = SENSOR_MAX_CHECK_COUNT;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _globalSensorInfo.val1 = _globalSensorMangerTemp->Cur_sensor_info.val1;
|
|
|
+ _globalSensorInfo.val2 = _globalSensorMangerTemp->Cur_sensor_info.val2;
|
|
|
+ }
|
|
|
}
|
|
|
else {
|
|
|
_globalSensorMangerTemp->sensor_status = 0;
|
|
|
_globalSensorInfo.val1 = sdat.val[0];
|
|
|
_globalSensorInfo.val2 = 0.0f;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count = 0;
|
|
|
}
|
|
|
_globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
|
|
|
set_sensor_val_modbus(_globalDeviceManager,&_globalSensorInfo,_globalSensorMangerTemp->sensor_addr);
|
|
|
@@ -2062,13 +2098,24 @@ static void* sensor_thread(void* arg)
|
|
|
sensor_dat_t sdat;
|
|
|
ret = sensor_get_data(SENSOR_TYPE_LEAK, SENSOR_TYPE_LEAK_XWDC01A, _globalSensorMangerTemp->sensor_addr, 0, &sdat);
|
|
|
if (ret == -1){
|
|
|
- //log_w("Relay modbus Error:%s\n", modbus_strerror(errno));
|
|
|
- _globalSensorMangerTemp->sensor_status = 1;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count++;
|
|
|
+
|
|
|
+ if (_globalSensorMangerTemp->sensor_check_count >= SENSOR_MAX_CHECK_COUNT)
|
|
|
+ {
|
|
|
+ _globalSensorMangerTemp->sensor_status = 1;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count = SENSOR_MAX_CHECK_COUNT;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _globalSensorInfo.val1 = _globalSensorMangerTemp->Cur_sensor_info.val1;
|
|
|
+ _globalSensorInfo.val2 = _globalSensorMangerTemp->Cur_sensor_info.val2;
|
|
|
+ }
|
|
|
}
|
|
|
else {
|
|
|
_globalSensorMangerTemp->sensor_status = 0;
|
|
|
_globalSensorInfo.val1 = sdat.flag;
|
|
|
_globalSensorInfo.val2 = 0.0f;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count = 0;
|
|
|
}
|
|
|
_globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
|
|
|
for(int i = 0 ; i < NOARTH_MAX_SENSOR;i++) //最多4个
|
|
|
@@ -2107,14 +2154,25 @@ static void* sensor_thread(void* arg)
|
|
|
|
|
|
if (ret == -1)
|
|
|
{
|
|
|
- //log_w("Relay modbus Error:%s\n", modbus_strerror(errno));
|
|
|
- _globalSensorMangerTemp->sensor_status = 1;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count++;
|
|
|
+
|
|
|
+ if (_globalSensorMangerTemp->sensor_check_count >= SENSOR_MAX_CHECK_COUNT)
|
|
|
+ {
|
|
|
+ _globalSensorMangerTemp->sensor_status = 1;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count = SENSOR_MAX_CHECK_COUNT;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _globalSensorInfo.val1 = _globalSensorMangerTemp->Cur_sensor_info.val1;
|
|
|
+ _globalSensorInfo.val2 = _globalSensorMangerTemp->Cur_sensor_info.val2;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
_globalSensorMangerTemp->sensor_status = 0;
|
|
|
_globalSensorInfo.val1 = temperature;
|
|
|
_globalSensorInfo.val2 = temperature2;
|
|
|
+ _globalSensorMangerTemp->sensor_check_count = 0;
|
|
|
}
|
|
|
// log_d("sensor val:%0.2f %0.2f\n",temperature,humidity);
|
|
|
// printf("get temperature=%f humidity=%f\n",temperature,humidity);
|