新增json词条
This commit is contained in:
parent
c188c7deba
commit
18205b02df
21
Dockerfile
21
Dockerfile
@ -0,0 +1,21 @@
|
||||
FROM debian:bullseye-slim
|
||||
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
|
||||
echo "Asia/Shanghai" > /etc/timezone
|
||||
|
||||
RUN mkdir -p /usr/local/dthjjc
|
||||
ENV WORKDIR=/usr/local/dthjjc
|
||||
WORKDIR $WORKDIR
|
||||
|
||||
# 复制可执行文件和启动脚本
|
||||
COPY ./dthjjc $WORKDIR/dthjjc
|
||||
COPY ./start.sh $WORKDIR/start.sh
|
||||
COPY ./485_serial_demo $WORKDIR/485_serial_demo
|
||||
|
||||
RUN chmod +x $WORKDIR/dthjjc && \
|
||||
chmod +x $WORKDIR/start.sh && \
|
||||
chmod +x $WORKDIR/485_serial_demo
|
||||
|
||||
RUN mkdir -p /data/logs
|
||||
|
||||
# 使用start.sh作为启动脚本
|
||||
CMD ["/usr/local/dthjjc/start.sh"]
|
||||
@ -17,6 +17,7 @@ type SensorConfig struct {
|
||||
Type int `json:"type"` // 改为int类型
|
||||
Facility string `json:"facility"`
|
||||
SlaveID int `json:"slave_id"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// GetSensorType 获取传感器类型枚举
|
||||
|
||||
@ -32,6 +32,8 @@ type DeviceData struct {
|
||||
Facility string `json:"facility"`
|
||||
Address string `json:"address"`
|
||||
Value any `json:"value"` // string 或 array
|
||||
Name string `json:"name"`
|
||||
HostUUID string `json:"host_uuid"`
|
||||
}
|
||||
|
||||
type EventData struct {
|
||||
|
||||
@ -38,7 +38,7 @@ func NewBusinessManager(sensorConfigs []SensorConfig) (*BusinessManager, error)
|
||||
// 创建数据采集器、处理器和上报管理器
|
||||
dataCollector := NewDataCollector(modbusConfig)
|
||||
dataProcessor := NewDataProcessor()
|
||||
reportManager := NewReportManager(hostUUID)
|
||||
reportManager := NewReportManager(hostUUID, sensorConfigs)
|
||||
|
||||
logger.Logger.Printf("DEBUG: Business manager created, isFirstCollect initialized to: true")
|
||||
|
||||
|
||||
@ -12,13 +12,15 @@ import (
|
||||
type ReportManager struct {
|
||||
hostUUID string
|
||||
faultDetector *FaultDetector
|
||||
sensorConfigs []SensorConfig
|
||||
}
|
||||
|
||||
// NewReportManager 创建数据上报管理器
|
||||
func NewReportManager(hostUUID string) *ReportManager {
|
||||
func NewReportManager(hostUUID string, sensorConfigs []SensorConfig) *ReportManager {
|
||||
return &ReportManager{
|
||||
hostUUID: hostUUID,
|
||||
faultDetector: NewFaultDetector(hostUUID),
|
||||
sensorConfigs: sensorConfigs,
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,7 +121,15 @@ func (rm *ReportManager) ReportEventData(event *EventData) error {
|
||||
}
|
||||
|
||||
if event.DeviceUUID != "" {
|
||||
item["deviceuuid"] = event.DeviceUUID
|
||||
item["device_uuid"] = event.DeviceUUID // 修复字段名
|
||||
|
||||
// 从全局 sensorConfigs 里找对应的 name(你本来就传进来了!)
|
||||
for _, cfg := range rm.sensorConfigs { // ← 这里我们马上加一个字段
|
||||
if cfg.DeviceUUID == event.DeviceUUID {
|
||||
item["name"] = cfg.Name
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if event.LastSuccessfulTime != "" {
|
||||
item["last_successful_time"] = event.LastSuccessfulTime
|
||||
@ -176,13 +186,14 @@ func (rm *ReportManager) convertToDeviceData(data *ProcessedSensorData, sensorCo
|
||||
Type: strconv.Itoa(int(data.SensorType)),
|
||||
Facility: sensorConfig.Facility,
|
||||
Address: sensorConfig.Address,
|
||||
Name: sensorConfig.Name,
|
||||
HostUUID: sensorConfig.HostUUID,
|
||||
}
|
||||
|
||||
// 根据传感器类型设置value字段
|
||||
switch data.SensorType {
|
||||
case SensorTypeTemperatureHumidity:
|
||||
if len(data.Values) >= 2 {
|
||||
// 直接构造 map,不包数组!!
|
||||
valueMap := map[string]string{
|
||||
"temp": fmt.Sprintf("%.1f", data.Values[0]),
|
||||
"humidity": fmt.Sprintf("%.1f", data.Values[1]),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user