新增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类型
|
Type int `json:"type"` // 改为int类型
|
||||||
Facility string `json:"facility"`
|
Facility string `json:"facility"`
|
||||||
SlaveID int `json:"slave_id"`
|
SlaveID int `json:"slave_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSensorType 获取传感器类型枚举
|
// GetSensorType 获取传感器类型枚举
|
||||||
|
|||||||
@ -32,6 +32,8 @@ type DeviceData struct {
|
|||||||
Facility string `json:"facility"`
|
Facility string `json:"facility"`
|
||||||
Address string `json:"address"`
|
Address string `json:"address"`
|
||||||
Value any `json:"value"` // string 或 array
|
Value any `json:"value"` // string 或 array
|
||||||
|
Name string `json:"name"`
|
||||||
|
HostUUID string `json:"host_uuid"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type EventData struct {
|
type EventData struct {
|
||||||
|
|||||||
@ -38,7 +38,7 @@ func NewBusinessManager(sensorConfigs []SensorConfig) (*BusinessManager, error)
|
|||||||
// 创建数据采集器、处理器和上报管理器
|
// 创建数据采集器、处理器和上报管理器
|
||||||
dataCollector := NewDataCollector(modbusConfig)
|
dataCollector := NewDataCollector(modbusConfig)
|
||||||
dataProcessor := NewDataProcessor()
|
dataProcessor := NewDataProcessor()
|
||||||
reportManager := NewReportManager(hostUUID)
|
reportManager := NewReportManager(hostUUID, sensorConfigs)
|
||||||
|
|
||||||
logger.Logger.Printf("DEBUG: Business manager created, isFirstCollect initialized to: true")
|
logger.Logger.Printf("DEBUG: Business manager created, isFirstCollect initialized to: true")
|
||||||
|
|
||||||
|
|||||||
@ -12,13 +12,15 @@ import (
|
|||||||
type ReportManager struct {
|
type ReportManager struct {
|
||||||
hostUUID string
|
hostUUID string
|
||||||
faultDetector *FaultDetector
|
faultDetector *FaultDetector
|
||||||
|
sensorConfigs []SensorConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewReportManager 创建数据上报管理器
|
// NewReportManager 创建数据上报管理器
|
||||||
func NewReportManager(hostUUID string) *ReportManager {
|
func NewReportManager(hostUUID string, sensorConfigs []SensorConfig) *ReportManager {
|
||||||
return &ReportManager{
|
return &ReportManager{
|
||||||
hostUUID: hostUUID,
|
hostUUID: hostUUID,
|
||||||
faultDetector: NewFaultDetector(hostUUID),
|
faultDetector: NewFaultDetector(hostUUID),
|
||||||
|
sensorConfigs: sensorConfigs,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,7 +121,15 @@ func (rm *ReportManager) ReportEventData(event *EventData) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if event.DeviceUUID != "" {
|
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 != "" {
|
if event.LastSuccessfulTime != "" {
|
||||||
item["last_successful_time"] = 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)),
|
Type: strconv.Itoa(int(data.SensorType)),
|
||||||
Facility: sensorConfig.Facility,
|
Facility: sensorConfig.Facility,
|
||||||
Address: sensorConfig.Address,
|
Address: sensorConfig.Address,
|
||||||
|
Name: sensorConfig.Name,
|
||||||
|
HostUUID: sensorConfig.HostUUID,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据传感器类型设置value字段
|
// 根据传感器类型设置value字段
|
||||||
switch data.SensorType {
|
switch data.SensorType {
|
||||||
case SensorTypeTemperatureHumidity:
|
case SensorTypeTemperatureHumidity:
|
||||||
if len(data.Values) >= 2 {
|
if len(data.Values) >= 2 {
|
||||||
// 直接构造 map,不包数组!!
|
|
||||||
valueMap := map[string]string{
|
valueMap := map[string]string{
|
||||||
"temp": fmt.Sprintf("%.1f", data.Values[0]),
|
"temp": fmt.Sprintf("%.1f", data.Values[0]),
|
||||||
"humidity": fmt.Sprintf("%.1f", data.Values[1]),
|
"humidity": fmt.Sprintf("%.1f", data.Values[1]),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user