Skip to content

Commit e030549

Browse files
committed
fix: fix resource manager load SINGLETON error
1 parent b40546a commit e030549

File tree

15 files changed

+354
-269
lines changed

15 files changed

+354
-269
lines changed

device/generic_modbus_device.go

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"errors"
66
"fmt"
77
golog "log"
8+
89
"sync"
910
"time"
1011

@@ -138,11 +139,8 @@ func (mdev *generic_modbus_device) Start(cctx typex.CCTX) error {
138139
// timeout 最大不能超过20, 不然无意义
139140
mdev.rtuHandler.Timeout = time.Duration(mdev.mainConfig.RtuConfig.Timeout) * time.Microsecond
140141
if core.GlobalConfig.AppDebugMode {
141-
if mdev.mainConfig.CommonConfig.Mode == "RTU" {
142-
mdev.rtuHandler.Logger = golog.New(glogger.GLogger.Writer(),
143-
"Modbus RTU Mode: ", golog.LstdFlags)
144-
}
145-
142+
mdev.rtuHandler.Logger = golog.New(glogger.GLogger.Writer(),
143+
"Modbus RTU Mode: "+mdev.PointId+", ", golog.LstdFlags)
146144
}
147145

148146
if err := mdev.rtuHandler.Connect(); err != nil {
@@ -158,10 +156,8 @@ func (mdev *generic_modbus_device) Start(cctx typex.CCTX) error {
158156
fmt.Sprintf("%s:%v", mdev.mainConfig.TcpConfig.Host, mdev.mainConfig.TcpConfig.Port),
159157
)
160158
if core.GlobalConfig.AppDebugMode {
161-
if mdev.mainConfig.CommonConfig.Mode == "TCP" {
162-
mdev.tcpHandler.Logger = golog.New(glogger.GLogger.Writer(),
163-
"Modbus TCP Mode: ", golog.LstdFlags)
164-
}
159+
mdev.tcpHandler.Logger = golog.New(glogger.GLogger.Writer(),
160+
"Modbus TCP Mode: "+mdev.PointId+", ", golog.LstdFlags)
165161
}
166162

167163
if err := mdev.tcpHandler.Connect(); err != nil {
@@ -181,8 +177,6 @@ func (mdev *generic_modbus_device) Start(cctx typex.CCTX) error {
181177
}
182178
mdev.retryTimes = 0
183179
go func(ctx context.Context, Driver typex.XExternalDriver) {
184-
185-
mdev.status = typex.DEV_UP
186180
buffer := make([]byte, common.T_64KB)
187181
for {
188182
select {
@@ -204,6 +198,7 @@ func (mdev *generic_modbus_device) Start(cctx typex.CCTX) error {
204198
}
205199

206200
}(mdev.Ctx, mdev.driver)
201+
mdev.status = typex.DEV_UP
207202
return nil
208203
}
209204

@@ -232,7 +227,7 @@ func (mdev *generic_modbus_device) Status() typex.DeviceState {
232227
if mdev.retryTimes > 0 {
233228
return typex.DEV_DOWN
234229
}
235-
return mdev.status
230+
return typex.DEV_UP
236231
}
237232

238233
// 停止设备

engine/engine.go

Lines changed: 64 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,9 @@ func (e *RuleEngine) Stop() {
175175
e.OutEnds.Range(func(key, value interface{}) bool {
176176
outEnd := value.(*typex.OutEnd)
177177
if outEnd.Target != nil {
178-
glogger.GLogger.Info("Stop Target:", outEnd.Name, outEnd.UUID)
178+
glogger.GLogger.Info("Stop NewTarget:", outEnd.Name, outEnd.UUID)
179179
outEnd.Target.Stop()
180-
glogger.GLogger.Info("Stop Target:", outEnd.Name, outEnd.UUID, " Successfully")
180+
glogger.GLogger.Info("Stop NewTarget:", outEnd.Name, outEnd.UUID, " Successfully")
181181
}
182182
return true
183183
})
@@ -534,80 +534,80 @@ func (e *RuleEngine) RestartDevice(uuid string) error {
534534
func (e *RuleEngine) InitDeviceTypeManager() error {
535535
e.DeviceTypeManager.Register(typex.TSS200V02,
536536
&typex.XConfig{
537-
Engine: e,
538-
Device: device.NewTS200Sensor(e),
537+
Engine: e,
538+
NewDevice: device.NewTS200Sensor,
539539
},
540540
)
541541
e.DeviceTypeManager.Register(typex.YK08_RELAY,
542542
&typex.XConfig{
543-
Engine: e,
544-
Device: device.NewYK8Controller(e),
543+
Engine: e,
544+
NewDevice: device.NewYK8Controller,
545545
},
546546
)
547547
e.DeviceTypeManager.Register(typex.RTU485_THER,
548548
&typex.XConfig{
549-
Engine: e,
550-
Device: device.NewRtu485Ther(e),
549+
Engine: e,
550+
NewDevice: device.NewRtu485Ther,
551551
},
552552
)
553553
e.DeviceTypeManager.Register(typex.S1200PLC,
554554
&typex.XConfig{
555-
Engine: e,
556-
Device: device.NewS1200plc(e),
555+
Engine: e,
556+
NewDevice: device.NewS1200plc,
557557
},
558558
)
559559
e.DeviceTypeManager.Register(typex.GENERIC_MODBUS,
560560
&typex.XConfig{
561-
Engine: e,
562-
Device: device.NewGenericModbusDevice(e),
561+
Engine: e,
562+
NewDevice: device.NewGenericModbusDevice,
563563
},
564564
)
565565
e.DeviceTypeManager.Register(typex.GENERIC_UART,
566566
&typex.XConfig{
567-
Engine: e,
568-
Device: device.NewGenericUartDevice(e),
567+
Engine: e,
568+
NewDevice: device.NewGenericUartDevice,
569569
},
570570
)
571571
e.DeviceTypeManager.Register(typex.GENERIC_SNMP,
572572
&typex.XConfig{
573-
Engine: e,
574-
Device: device.NewGenericSnmpDevice(e),
573+
Engine: e,
574+
NewDevice: device.NewGenericSnmpDevice,
575575
},
576576
)
577577
e.DeviceTypeManager.Register(typex.USER_G776,
578578
&typex.XConfig{
579-
Engine: e,
580-
Device: device.NewUsrG776DTU(e),
579+
Engine: e,
580+
NewDevice: device.NewUsrG776DTU,
581581
},
582582
)
583583
e.DeviceTypeManager.Register(typex.ICMP_SENDER,
584584
&typex.XConfig{
585-
Engine: e,
586-
Device: device.NewIcmpSender(e),
585+
Engine: e,
586+
NewDevice: device.NewIcmpSender,
587587
},
588588
)
589589
e.DeviceTypeManager.Register(typex.GENERIC_PROTOCOL,
590590
&typex.XConfig{
591-
Engine: e,
592-
Device: device.NewCustomProtocolDevice(e),
591+
Engine: e,
592+
NewDevice: device.NewCustomProtocolDevice,
593593
},
594594
)
595595
e.DeviceTypeManager.Register(typex.GENERIC_OPCUA,
596596
&typex.XConfig{
597-
Engine: e,
598-
Device: device.NewGenericOpcuaDevice(e),
597+
Engine: e,
598+
NewDevice: device.NewGenericOpcuaDevice,
599599
},
600600
)
601601
e.DeviceTypeManager.Register(typex.GENERIC_CAMERA,
602602
&typex.XConfig{
603-
Engine: e,
604-
Device: device.NewVideoCamera(e),
603+
Engine: e,
604+
NewDevice: device.NewVideoCamera,
605605
},
606606
)
607607
e.DeviceTypeManager.Register(typex.GENERIC_AIS,
608608
&typex.XConfig{
609-
Engine: e,
610-
Device: device.NewAISDevice(e),
609+
Engine: e,
610+
NewDevice: device.NewAISDevice,
611611
},
612612
)
613613
return nil
@@ -621,56 +621,56 @@ func (e *RuleEngine) InitDeviceTypeManager() error {
621621
func (e *RuleEngine) InitSourceTypeManager() error {
622622
e.SourceTypeManager.Register(typex.MQTT,
623623
&typex.XConfig{
624-
Engine: e,
625-
Source: source.NewMqttInEndSource(e),
624+
Engine: e,
625+
NewSource: source.NewMqttInEndSource,
626626
},
627627
)
628628
e.SourceTypeManager.Register(typex.HTTP,
629629
&typex.XConfig{
630-
Engine: e,
631-
Source: source.NewHttpInEndSource(e),
630+
Engine: e,
631+
NewSource: source.NewHttpInEndSource,
632632
},
633633
)
634634
e.SourceTypeManager.Register(typex.COAP,
635635
&typex.XConfig{
636-
Engine: e,
637-
Source: source.NewCoAPInEndSource(e),
636+
Engine: e,
637+
NewSource: source.NewCoAPInEndSource,
638638
},
639639
)
640640
e.SourceTypeManager.Register(typex.GRPC,
641641
&typex.XConfig{
642-
Engine: e,
643-
Source: source.NewGrpcInEndSource(e),
642+
Engine: e,
643+
NewSource: source.NewGrpcInEndSource,
644644
},
645645
)
646646
e.SourceTypeManager.Register(typex.NATS_SERVER,
647647
&typex.XConfig{
648-
Engine: e,
649-
Source: source.NewNatsSource(e),
648+
Engine: e,
649+
NewSource: source.NewNatsSource,
650650
},
651651
)
652652
e.SourceTypeManager.Register(typex.RULEX_UDP,
653653
&typex.XConfig{
654-
Engine: e,
655-
Source: source.NewUdpInEndSource(e),
654+
Engine: e,
655+
NewSource: source.NewUdpInEndSource,
656656
},
657657
)
658658
e.SourceTypeManager.Register(typex.TENCENT_IOT_HUB,
659659
&typex.XConfig{
660-
Engine: e,
661-
Source: source.NewTencentIothubSource(e),
660+
Engine: e,
661+
NewSource: source.NewTencentIothubSource,
662662
},
663663
)
664664
e.SourceTypeManager.Register(typex.GENERIC_IOT_HUB,
665665
&typex.XConfig{
666-
Engine: e,
667-
Source: source.NewGenericIothubSource(e),
666+
Engine: e,
667+
NewSource: source.NewGenericIothubSource,
668668
},
669669
)
670670
e.SourceTypeManager.Register(typex.ITHINGS_IOT_HUB,
671671
&typex.XConfig{
672-
Engine: e,
673-
Source: source.NewIThingsSource(e),
672+
Engine: e,
673+
NewSource: source.NewIThingsSource,
674674
},
675675
)
676676
return nil
@@ -684,56 +684,56 @@ func (e *RuleEngine) InitSourceTypeManager() error {
684684
func (e *RuleEngine) InitTargetTypeManager() error {
685685
e.TargetTypeManager.Register(typex.MONGO_SINGLE,
686686
&typex.XConfig{
687-
Engine: e,
688-
Target: target.NewMongoTarget(e),
687+
Engine: e,
688+
NewTarget: target.NewMongoTarget,
689689
},
690690
)
691691
e.TargetTypeManager.Register(typex.MQTT_TARGET,
692692
&typex.XConfig{
693-
Engine: e,
694-
Target: target.NewMqttTarget(e),
693+
Engine: e,
694+
NewTarget: target.NewMqttTarget,
695695
},
696696
)
697697
e.TargetTypeManager.Register(typex.NATS_TARGET,
698698
&typex.XConfig{
699-
Engine: e,
700-
Target: target.NewNatsTarget(e),
699+
Engine: e,
700+
NewTarget: target.NewNatsTarget,
701701
},
702702
)
703703
e.TargetTypeManager.Register(typex.HTTP_TARGET,
704704
&typex.XConfig{
705-
Engine: e,
706-
Target: target.NewHTTPTarget(e),
705+
Engine: e,
706+
NewTarget: target.NewHTTPTarget,
707707
},
708708
)
709709
e.TargetTypeManager.Register(typex.TDENGINE_TARGET,
710710
&typex.XConfig{
711-
Engine: e,
712-
Target: target.NewTdEngineTarget(e),
711+
Engine: e,
712+
NewTarget: target.NewTdEngineTarget,
713713
},
714714
)
715715
e.TargetTypeManager.Register(typex.GRPC_CODEC_TARGET,
716716
&typex.XConfig{
717-
Engine: e,
718-
Target: target.NewCodecTarget(e),
717+
Engine: e,
718+
NewTarget: target.NewCodecTarget,
719719
},
720720
)
721721
e.TargetTypeManager.Register(typex.UDP_TARGET,
722722
&typex.XConfig{
723-
Engine: e,
724-
Target: target.NewUdpTarget(e),
723+
Engine: e,
724+
NewTarget: target.NewUdpTarget,
725725
},
726726
)
727727
e.TargetTypeManager.Register(typex.SQLITE_TARGET,
728728
&typex.XConfig{
729-
Engine: e,
730-
Target: target.NewSqliteTarget(e),
729+
Engine: e,
730+
NewTarget: target.NewSqliteTarget,
731731
},
732732
)
733733
e.TargetTypeManager.Register(typex.USER_G776_TARGET,
734734
&typex.XConfig{
735-
Engine: e,
736-
Target: target.NewUserG776(e),
735+
Engine: e,
736+
NewTarget: target.NewUserG776,
737737
},
738738
)
739739
return nil

engine/load_device.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func (e *RuleEngine) LoadBuiltinDevice(deviceInfo *typex.Device) error {
7272
*/
7373
func (e *RuleEngine) LoadDevice(deviceInfo *typex.Device) error {
7474
if config := e.DeviceTypeManager.Find(deviceInfo.Type); config != nil {
75-
return loadDevices(config.Device, deviceInfo, e)
75+
return loadDevices(config.NewDevice(e), deviceInfo, e)
7676
}
7777
return fmt.Errorf("unsupported Device type:%s", deviceInfo.Type)
7878

@@ -88,6 +88,7 @@ func loadDevices(abstractDevice typex.XDevice, deviceInfo *typex.Device, e *Rule
8888
deviceInfo.Device = abstractDevice
8989
e.SaveDevice(deviceInfo)
9090
// Load config
91+
// 要从数据库里面查Config
9192
config := e.GetDevice(deviceInfo.UUID).Config
9293
if config == nil {
9394
e.RemoveDevice(deviceInfo.UUID)
@@ -161,8 +162,7 @@ func startDevice(abstractDevice typex.XDevice, e *RuleEngine) error {
161162
// 2023-06-14新增: 重启成功后数据会丢失,还得加载最新的Rule到设备中
162163
device := abstractDevice.Details()
163164
if device != nil {
164-
// bind 最新的规则
165-
// FIX ME: 要从数据库拿刚更新的
165+
// bind 最新的规则 要从数据库拿刚更新的
166166
for _, rule := range device.BindRules {
167167
glogger.GLogger.Debugf("Load rule:%s", rule.Name)
168168
RuleInstance := typex.NewLuaRule(e,

engine/load_source.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func (e *RuleEngine) LoadBuiltInEnd(in *typex.InEnd) error {
3636
*/
3737
func (e *RuleEngine) LoadInEnd(in *typex.InEnd) error {
3838
if config := e.SourceTypeManager.Find(in.Type); config != nil {
39-
return startSources(config.Source, in, e)
39+
return startSources(config.NewSource(e), in, e)
4040
}
4141
return fmt.Errorf("unsupported InEnd type:%s", in.Type)
4242
}

engine/load_target.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func (e *RuleEngine) LoadBuiltinOutEnd(out *typex.OutEnd) error {
2929
}
3030
func (e *RuleEngine) LoadOutEnd(out *typex.OutEnd) error {
3131
if config := e.TargetTypeManager.Find(out.Type); config != nil {
32-
return loadTarget(config.Target, out, e)
32+
return loadTarget(config.NewTarget(e), out, e)
3333
}
3434
return errors.New("unsupported target type:" + out.Type.String())
3535
}

0 commit comments

Comments
 (0)