Skip to content

Commit cd3e59d

Browse files
Various updates (#111)
- Update Github workflow to stable gosec - Update SHIP and SPINE - Add CS LPC / LPP logging - Change default `IsValueChangeable` of CS LPC/LPP for failsafe power limits to `true` - Check for subscriptions and bindings before requesting them
2 parents 5cf478f + 974c8ea commit cd3e59d

File tree

20 files changed

+229
-107
lines changed

20 files changed

+229
-107
lines changed

.github/workflows/default.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
file: coverage.out
4949

5050
- name: Run Gosec Security Scanner
51-
uses: securego/gosec@11d69032b0856c96afd4c493967ab7a30e20ff5e
51+
uses: securego/gosec@v2.20.0
5252
with:
5353
# we let the report trigger content trigger a failure using the GitHub Security features.
5454
args: '-no-fail -fmt sarif -out results.sarif ./...'

go.mod

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ module github.com/enbility/eebus-go
33
go 1.21.1
44

55
require (
6-
github.com/enbility/ship-go v0.5.3
7-
github.com/enbility/spine-go v0.6.2
6+
github.com/enbility/ship-go v0.0.0-20240904104254-04d944c4f825
7+
github.com/enbility/spine-go v0.0.0-20240907194637-0024041a4f36
88
github.com/stretchr/testify v1.9.0
99
)
1010

@@ -35,7 +35,3 @@ retract (
3535
v0.2.2 // Contains retractions only.
3636
v0.2.1 // Published accidentally.
3737
)
38-
39-
replace github.com/enbility/ship-go => github.com/enbility/ship-go v0.0.0-20240904104254-04d944c4f825
40-
41-
replace github.com/enbility/spine-go => github.com/enbility/spine-go v0.0.0-20240903070433-dd8261993071

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ github.com/enbility/go-avahi v0.0.0-20240829083637-9ae2ef5f5ed2 h1:voP4zFVNvVWxl
66
github.com/enbility/go-avahi v0.0.0-20240829083637-9ae2ef5f5ed2/go.mod h1:KJXUEgg/b4XZzS+OFfqnykHREsinuNSL/IzJ+nU43P8=
77
github.com/enbility/ship-go v0.0.0-20240904104254-04d944c4f825 h1:i/n9UFYf660TyC8Y48P3MDxLaWWKRNW3pFjEOVzPzto=
88
github.com/enbility/ship-go v0.0.0-20240904104254-04d944c4f825/go.mod h1:dzymc1D7BDZUTLVHVt9JRRkFLlBrlUmRKyLJvAe07Mc=
9-
github.com/enbility/spine-go v0.0.0-20240903070433-dd8261993071 h1:rjvpnD3xTrSPdU6AQK4miwl/gZQ84CJ6gv/kEEguBME=
10-
github.com/enbility/spine-go v0.0.0-20240903070433-dd8261993071/go.mod h1:6AbRXzd0fLVGFJdT60YQACe1WskwdjiznCfljQ+Ud6s=
9+
github.com/enbility/spine-go v0.0.0-20240907194637-0024041a4f36 h1:Y44hzp5uIYSEyBMe/zwFzlXKokgZHQ9cv2NiIF1NkZs=
10+
github.com/enbility/spine-go v0.0.0-20240907194637-0024041a4f36/go.mod h1:BDvhbs+XsWDGYwd8eQOzPXc8w/avVFmWKLlSKV/gx9k=
1111
github.com/enbility/zeroconf/v2 v2.0.0-20240827101515-f3956627c450 h1:39tnpfiV5OVfYb9sOqYmoivBzTHyNLWSYIxd9Qng1eg=
1212
github.com/enbility/zeroconf/v2 v2.0.0-20240827101515-f3956627c450/go.mod h1:1sUbJ+VE7yLNyRzGoCMjoDWtdZ+bW4aYBKx2+Rw+9hs=
1313
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=

usecases/cem/cevc/events.go

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,10 @@ func (e *CEVC) HandleEvent(payload spineapi.EventPayload) {
4949
func (e *CEVC) evConnected(entity spineapi.EntityRemoteInterface) {
5050
// initialise features, e.g. subscriptions, descriptions
5151
if evDeviceConfiguration, err := client.NewDeviceConfiguration(e.LocalEntity, entity); err == nil {
52-
if _, err := evDeviceConfiguration.Subscribe(); err != nil {
53-
logging.Log().Debug(err)
52+
if !evDeviceConfiguration.HasSubscription() {
53+
if _, err := evDeviceConfiguration.Subscribe(); err != nil {
54+
logging.Log().Debug(err)
55+
}
5456
}
5557

5658
// get device configuration descriptions
@@ -60,12 +62,16 @@ func (e *CEVC) evConnected(entity spineapi.EntityRemoteInterface) {
6062
}
6163

6264
if evTimeSeries, err := client.NewTimeSeries(e.LocalEntity, entity); err == nil {
63-
if _, err := evTimeSeries.Subscribe(); err != nil {
64-
logging.Log().Debug(err)
65+
if !evTimeSeries.HasSubscription() {
66+
if _, err := evTimeSeries.Subscribe(); err != nil {
67+
logging.Log().Debug(err)
68+
}
6569
}
6670

67-
if _, err := evTimeSeries.Bind(); err != nil {
68-
logging.Log().Debug(err)
71+
if !evTimeSeries.HasBinding() {
72+
if _, err := evTimeSeries.Bind(); err != nil {
73+
logging.Log().Debug(err)
74+
}
6975
}
7076

7177
// get time series descriptions
@@ -80,12 +86,16 @@ func (e *CEVC) evConnected(entity spineapi.EntityRemoteInterface) {
8086
}
8187

8288
if evIncentiveTable, err := client.NewIncentiveTable(e.LocalEntity, entity); err == nil {
83-
if _, err := evIncentiveTable.Subscribe(); err != nil {
84-
logging.Log().Debug(err)
89+
if !evIncentiveTable.HasSubscription() {
90+
if _, err := evIncentiveTable.Subscribe(); err != nil {
91+
logging.Log().Debug(err)
92+
}
8593
}
8694

87-
if _, err := evIncentiveTable.Bind(); err != nil {
88-
logging.Log().Debug(err)
95+
if !evIncentiveTable.HasBinding() {
96+
if _, err := evIncentiveTable.Bind(); err != nil {
97+
logging.Log().Debug(err)
98+
}
8999
}
90100

91101
// get incentivetable descriptions

usecases/cem/evcc/events.go

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,10 @@ func (e *EVCC) HandleEvent(payload spineapi.EventPayload) {
5858
func (e *EVCC) evConnected(payload spineapi.EventPayload) {
5959
// initialise features, e.g. subscriptions, descriptions
6060
if evDeviceClassification, err := client.NewDeviceClassification(e.LocalEntity, payload.Entity); err == nil {
61-
if _, err := evDeviceClassification.Subscribe(); err != nil {
62-
logging.Log().Debug(err)
61+
if !evDeviceClassification.HasSubscription() {
62+
if _, err := evDeviceClassification.Subscribe(); err != nil {
63+
logging.Log().Debug(err)
64+
}
6365
}
6466

6567
// get manufacturer details
@@ -69,18 +71,23 @@ func (e *EVCC) evConnected(payload spineapi.EventPayload) {
6971
}
7072

7173
if evDeviceConfiguration, err := client.NewDeviceConfiguration(e.LocalEntity, payload.Entity); err == nil {
72-
if _, err := evDeviceConfiguration.Subscribe(); err != nil {
73-
logging.Log().Debug(err)
74+
if !evDeviceConfiguration.HasSubscription() {
75+
if _, err := evDeviceConfiguration.Subscribe(); err != nil {
76+
logging.Log().Debug(err)
77+
}
7478
}
79+
7580
// get ev configuration data
7681
if _, err := evDeviceConfiguration.RequestKeyValueDescriptions(nil, nil); err != nil {
7782
logging.Log().Debug(err)
7883
}
7984
}
8085

8186
if evDeviceDiagnosis, err := client.NewDeviceDiagnosis(e.LocalEntity, payload.Entity); err == nil {
82-
if _, err := evDeviceDiagnosis.Subscribe(); err != nil {
83-
logging.Log().Debug(err)
87+
if !evDeviceDiagnosis.HasSubscription() {
88+
if _, err := evDeviceDiagnosis.Subscribe(); err != nil {
89+
logging.Log().Debug(err)
90+
}
8491
}
8592

8693
// get device diagnosis state
@@ -90,8 +97,10 @@ func (e *EVCC) evConnected(payload spineapi.EventPayload) {
9097
}
9198

9299
if evElectricalConnection, err := client.NewElectricalConnection(e.LocalEntity, payload.Entity); err == nil {
93-
if _, err := evElectricalConnection.Subscribe(); err != nil {
94-
logging.Log().Debug(err)
100+
if !evElectricalConnection.HasSubscription() {
101+
if _, err := evElectricalConnection.Subscribe(); err != nil {
102+
logging.Log().Debug(err)
103+
}
95104
}
96105

97106
// get electrical connection parameter descriptions
@@ -106,8 +115,10 @@ func (e *EVCC) evConnected(payload spineapi.EventPayload) {
106115
}
107116

108117
if evIdentification, err := client.NewIdentification(e.LocalEntity, payload.Entity); err == nil {
109-
if _, err := evIdentification.Subscribe(); err != nil {
110-
logging.Log().Debug(err)
118+
if !evIdentification.HasSubscription() {
119+
if _, err := evIdentification.Subscribe(); err != nil {
120+
logging.Log().Debug(err)
121+
}
111122
}
112123

113124
// get identification

usecases/cem/evcem/events.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,10 @@ func (e *EVCEM) evConnected(entity spineapi.EntityRemoteInterface) {
4343
// initialise features, e.g. subscriptions, descriptions
4444

4545
if evElectricalConnection, err := client.NewElectricalConnection(e.LocalEntity, entity); err == nil {
46-
if _, err := evElectricalConnection.Subscribe(); err != nil {
47-
logging.Log().Debug(err)
46+
if !evElectricalConnection.HasSubscription() {
47+
if _, err := evElectricalConnection.Subscribe(); err != nil {
48+
logging.Log().Debug(err)
49+
}
4850
}
4951

5052
// get electrical connection descriptions
@@ -59,8 +61,10 @@ func (e *EVCEM) evConnected(entity spineapi.EntityRemoteInterface) {
5961
}
6062

6163
if evMeasurement, err := client.NewMeasurement(e.LocalEntity, entity); err == nil {
62-
if _, err := evMeasurement.Subscribe(); err != nil {
63-
logging.Log().Debug(err)
64+
if !evMeasurement.HasSubscription() {
65+
if _, err := evMeasurement.Subscribe(); err != nil {
66+
logging.Log().Debug(err)
67+
}
6468
}
6569

6670
// get measurement descriptions

usecases/cem/opev/events.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,16 @@ func (e *OPEV) HandleEvent(payload spineapi.EventPayload) {
4343
func (e *OPEV) evConnected(entity spineapi.EntityRemoteInterface) {
4444
// initialise features, e.g. subscriptions, descriptions
4545
if evLoadControl, err := client.NewLoadControl(e.LocalEntity, entity); err == nil {
46-
if _, err := evLoadControl.Subscribe(); err != nil {
47-
logging.Log().Debug(err)
46+
if !evLoadControl.HasSubscription() {
47+
if _, err := evLoadControl.Subscribe(); err != nil {
48+
logging.Log().Debug(err)
49+
}
4850
}
4951

50-
if _, err := evLoadControl.Bind(); err != nil {
51-
logging.Log().Debug(err)
52+
if !evLoadControl.HasBinding() {
53+
if _, err := evLoadControl.Bind(); err != nil {
54+
logging.Log().Debug(err)
55+
}
5256
}
5357

5458
// get descriptions

usecases/cem/vabd/events.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ func (e *VABD) HandleEvent(payload spineapi.EventPayload) {
3939
// process required steps when a grid device is connected
4040
func (e *VABD) inverterConnected(entity spineapi.EntityRemoteInterface) {
4141
if electricalConnection, err := client.NewElectricalConnection(e.LocalEntity, entity); err == nil {
42-
if _, err := electricalConnection.Subscribe(); err != nil {
43-
logging.Log().Error(err)
42+
if !electricalConnection.HasSubscription() {
43+
if _, err := electricalConnection.Subscribe(); err != nil {
44+
logging.Log().Error(err)
45+
}
4446
}
4547

4648
// get electrical connection parameter
@@ -54,8 +56,10 @@ func (e *VABD) inverterConnected(entity spineapi.EntityRemoteInterface) {
5456
}
5557

5658
if measurement, err := client.NewMeasurement(e.LocalEntity, entity); err == nil {
57-
if _, err := measurement.Subscribe(); err != nil {
58-
logging.Log().Error(err)
59+
if !measurement.HasSubscription() {
60+
if _, err := measurement.Subscribe(); err != nil {
61+
logging.Log().Error(err)
62+
}
5963
}
6064

6165
// get measurement parameters

usecases/cem/vapd/events.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ func (e *VAPD) HandleEvent(payload spineapi.EventPayload) {
4545
// process required steps when a grid device is connected
4646
func (e *VAPD) inverterConnected(entity spineapi.EntityRemoteInterface) {
4747
if deviceConfiguration, err := client.NewDeviceConfiguration(e.LocalEntity, entity); err == nil {
48-
if _, err := deviceConfiguration.Subscribe(); err != nil {
49-
logging.Log().Error(err)
48+
if !deviceConfiguration.HasSubscription() {
49+
if _, err := deviceConfiguration.Subscribe(); err != nil {
50+
logging.Log().Error(err)
51+
}
5052
}
5153

5254
// get configuration data
@@ -56,8 +58,10 @@ func (e *VAPD) inverterConnected(entity spineapi.EntityRemoteInterface) {
5658
}
5759

5860
if electricalConnection, err := client.NewElectricalConnection(e.LocalEntity, entity); err == nil {
59-
if _, err := electricalConnection.Subscribe(); err != nil {
60-
logging.Log().Error(err)
61+
if !electricalConnection.HasSubscription() {
62+
if _, err := electricalConnection.Subscribe(); err != nil {
63+
logging.Log().Error(err)
64+
}
6165
}
6266

6367
// get electrical connection parameter
@@ -71,8 +75,10 @@ func (e *VAPD) inverterConnected(entity spineapi.EntityRemoteInterface) {
7175
}
7276

7377
if measurement, err := client.NewMeasurement(e.LocalEntity, entity); err == nil {
74-
if _, err := measurement.Subscribe(); err != nil {
75-
logging.Log().Error(err)
78+
if !measurement.HasSubscription() {
79+
if _, err := measurement.Subscribe(); err != nil {
80+
logging.Log().Error(err)
81+
}
7682
}
7783

7884
// get measurement parameters

usecases/cs/lpc/events.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,10 @@ func (e *LPC) deviceConnected(payload spineapi.EventPayload) {
102102
if len(deviceDiagEntities) == 1 {
103103
if localDeviceDiag, err := client.NewDeviceDiagnosis(e.LocalEntity, deviceDiagEntities[0]); err == nil {
104104
e.heartbeatDiag = localDeviceDiag
105-
if _, err := localDeviceDiag.Subscribe(); err != nil {
106-
logging.Log().Debug(err)
105+
if !localDeviceDiag.HasSubscription() {
106+
if _, err := localDeviceDiag.Subscribe(); err != nil {
107+
logging.Log().Debug(err)
108+
}
107109
}
108110

109111
if _, err := localDeviceDiag.RequestHeartbeat(); err != nil {
@@ -126,8 +128,10 @@ func (e *LPC) subscribeHeartbeatWorkaround(payload spineapi.EventPayload) {
126128
if e.heartbeatKeoWorkaround {
127129
if localDeviceDiag, err := client.NewDeviceDiagnosis(e.LocalEntity, payload.Entity); err == nil {
128130
e.heartbeatDiag = localDeviceDiag
129-
if _, err := localDeviceDiag.Subscribe(); err != nil {
130-
logging.Log().Debug(err)
131+
if !localDeviceDiag.HasSubscription() {
132+
if _, err := localDeviceDiag.Subscribe(); err != nil {
133+
logging.Log().Debug(err)
134+
}
131135
}
132136

133137
if _, err := localDeviceDiag.RequestHeartbeat(); err != nil {

0 commit comments

Comments
 (0)