修复雨量计数错误

This commit is contained in:
fengyarnom 2025-05-16 14:25:55 +08:00
parent f60077e4c2
commit cf13a05796

View File

@ -221,29 +221,29 @@ func (s *SensorComm) handleData(data []byte) *model.SensorData {
} }
// 解析数据从第4个字节开始是数据部分 // 解析数据从第4个字节开始是数据部分
// 根据原始TCP服务器代码中的单位转换
windSpeed := int(binary.BigEndian.Uint16(data[3:5])) // 风速值*100
sensorData := &model.SensorData{ sensorData := &model.SensorData{
Timestamp: time.Now(), Timestamp: time.Now(),
WindSpeed: windSpeed, // 原始值已经是*100的 WindSpeed: int(binary.BigEndian.Uint16(data[3:5])), // 风速值*100
WindForce: int(binary.BigEndian.Uint16(data[5:7])), WindForce: int(binary.BigEndian.Uint16(data[5:7])), // 风力
WindDirection8: int(binary.BigEndian.Uint16(data[7:9])), WindDirection8: int(binary.BigEndian.Uint16(data[7:9])), // 8方位风向
WindDirection360: int(binary.BigEndian.Uint16(data[9:11])), WindDirection360: int(binary.BigEndian.Uint16(data[9:11])), // 360度风向
Humidity: int(binary.BigEndian.Uint16(data[11:13])), // 湿度*10 Humidity: int(binary.BigEndian.Uint16(data[11:13])), // 湿度*10
Temperature: int(binary.BigEndian.Uint16(data[13:15])), // 温度*10 Temperature: int(binary.BigEndian.Uint16(data[13:15])), // 温度*10
AtmPressure: int(binary.BigEndian.Uint16(data[21:23])), // 大气压*10 AtmPressure: int(binary.BigEndian.Uint16(data[21:23])), // 大气压*10
SolarRadiation: int(binary.BigEndian.Uint16(data[33:35])), // 太阳辐射原始值 SolarRadiation: int(binary.BigEndian.Uint16(data[33:35])), // 太阳辐射
Rainfall: int(binary.BigEndian.Uint16(data[15:17])), // 光学雨量*10
} }
// 记录解析后的传感器数据,展示实际物理量 // 记录解析后的传感器数据,展示实际物理量
logger.Logger.Printf("传感器数据: 风速=%.2f m/s, 风力=%d级, 风向=%d°, 湿度=%.1f%%, 温度=%.1f℃, 大气压=%.1f kPa, 太阳辐射=%d W/m²", logger.Logger.Printf("传感器数据: 风速=%.2f m/s, 风力=%d级, 风向=%d°, 湿度=%.1f%%, 温度=%.1f℃, 大气压=%.1f kPa, 太阳辐射=%d W/m², 光学雨量=%.1f mm",
float64(sensorData.WindSpeed)/100.0, float64(sensorData.WindSpeed)/100.0,
sensorData.WindForce, sensorData.WindForce,
sensorData.WindDirection360, sensorData.WindDirection360,
float64(sensorData.Humidity)/10.0, float64(sensorData.Humidity)/10.0,
float64(sensorData.Temperature)/10.0, float64(sensorData.Temperature)/10.0,
float64(sensorData.AtmPressure)/10.0, float64(sensorData.AtmPressure)/10.0,
sensorData.SolarRadiation) sensorData.SolarRadiation,
float64(sensorData.Rainfall)/10.0)
// 保存数据到数据库 // 保存数据到数据库
if err := s.dao.Insert(sensorData); err != nil { if err := s.dao.Insert(sensorData); err != nil {