From 7a42d03a983b2a9c6c7ba22ab79b5690472ce489 Mon Sep 17 00:00:00 2001 From: fengyarnom Date: Fri, 16 May 2025 14:34:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/model/sensor.go | 9 ++++++++- internal/tcp/sensor.go | 22 ++++++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/internal/model/sensor.go b/internal/model/sensor.go index 7bd03ac..44400c2 100644 --- a/internal/model/sensor.go +++ b/internal/model/sensor.go @@ -12,9 +12,16 @@ type SensorData struct { WindDirection360 int `json:"wind_direction_360"` // 360度风向 Humidity int `json:"humidity"` // 湿度 Temperature int `json:"temperature"` // 温度 + Noise int `json:"noise"` // 噪声 + PM25 int `json:"pm25"` // PM2.5 + PM10 int `json:"pm10"` // PM10 AtmPressure int `json:"atm_pressure"` // 大气压 + Lux20WH int `json:"lux_20w_h"` // 20W Lux值(高16位) + Lux20WL int `json:"lux_20w_l"` // 20W Lux值(低16位) + Light20W int `json:"light_20w"` // 20W光照 + OpticalRain int `json:"optical_rain"` // 光学雨量 + CompassAngle int `json:"compass_angle"` // 电子指南针角度 SolarRadiation int `json:"solar_radiation"` // 太阳辐射 - Rainfall int `json:"rainfall"` // 累计雨量 } // AggregatedData 聚合数据结构 diff --git a/internal/tcp/sensor.go b/internal/tcp/sensor.go index 2a9926c..3af55da 100644 --- a/internal/tcp/sensor.go +++ b/internal/tcp/sensor.go @@ -229,21 +229,35 @@ func (s *SensorComm) handleData(data []byte) *model.SensorData { WindDirection360: int(binary.BigEndian.Uint16(data[9:11])), // 360度风向 Humidity: int(binary.BigEndian.Uint16(data[11:13])), // 湿度*10 Temperature: int(binary.BigEndian.Uint16(data[13:15])), // 温度*10 + Noise: int(binary.BigEndian.Uint16(data[15:17])), // 噪声*10 + PM25: int(binary.BigEndian.Uint16(data[17:19])), // PM2.5 + PM10: int(binary.BigEndian.Uint16(data[19:21])), // PM10 AtmPressure: int(binary.BigEndian.Uint16(data[21:23])), // 大气压*10 + Lux20WH: int(binary.BigEndian.Uint16(data[23:25])), // 20W Lux值(高16位) + Lux20WL: int(binary.BigEndian.Uint16(data[25:27])), // 20W Lux值(低16位) + Light20W: int(binary.BigEndian.Uint16(data[27:29])), // 20W光照 + OpticalRain: int(binary.BigEndian.Uint16(data[29:31])), // 光学雨量*10 + CompassAngle: int(binary.BigEndian.Uint16(data[31:33])), // 电子指南针角度*100 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², 光学雨量=%.1f mm", + logger.Logger.Printf("传感器数据: 风速=%.2f m/s, 风力=%d级, 风向=%d°, 湿度=%.1f%%, 温度=%.1f℃, 噪声=%.1f dB, PM2.5=%d μg/m³, PM10=%d μg/m³, 大气压=%.1f kPa, 20W Lux值=%d/%d, 20W光照=%d 百Lux, 光学雨量=%.1f mm, 电子指南针角度=%.2f°, 太阳辐射=%d W/m²", float64(sensorData.WindSpeed)/100.0, sensorData.WindForce, sensorData.WindDirection360, float64(sensorData.Humidity)/10.0, float64(sensorData.Temperature)/10.0, + float64(sensorData.Noise)/10.0, + sensorData.PM25, + sensorData.PM10, float64(sensorData.AtmPressure)/10.0, - sensorData.SolarRadiation, - float64(sensorData.Rainfall)/10.0) + sensorData.Lux20WH, + sensorData.Lux20WL, + sensorData.Light20W, + float64(sensorData.OpticalRain)/10.0, + float64(sensorData.CompassAngle)/100.0, + sensorData.SolarRadiation) // 保存数据到数据库 if err := s.dao.Insert(sensorData); err != nil {