新增json词条

This commit is contained in:
gqc 2025-11-26 17:08:44 +08:00
parent c188c7deba
commit 18205b02df
7 changed files with 46 additions and 4 deletions

View File

@ -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"]

View File

@ -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 获取传感器类型枚举

View File

@ -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 {

View File

@ -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")

View File

@ -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]),

BIN
dthjjc

Binary file not shown.

View File

@ -0,0 +1,7 @@
#!/bin/sh
set -e
echo "Starting environmental detection system..."
cd /usr/local/dthjjc
exec /usr/local/dthjjc/dthjjc "$@"