Skip to content

Commit

Permalink
Convert old handling of time/duration to use converter.
Browse files Browse the repository at this point in the history
  • Loading branch information
pwood committed May 21, 2024
1 parent bd20188 commit 273c33e
Show file tree
Hide file tree
Showing 12 changed files with 81 additions and 78 deletions.
5 changes: 3 additions & 2 deletions attribute/monitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/shimmeringbee/da"
"github.com/shimmeringbee/logwrap"
"github.com/shimmeringbee/persistence"
"github.com/shimmeringbee/persistence/converter"
"github.com/shimmeringbee/zcl"
"github.com/shimmeringbee/zcl/commands/global"
"github.com/shimmeringbee/zcl/communicator"
Expand Down Expand Up @@ -146,7 +147,7 @@ func (z *zclMonitor) reattach(ctx context.Context) error {

// If polling, start timer.
if v, ok := z.config.Bool(PollingConfiguredKey); ok && v {
interval, _ := z.config.Int(PollingIntervalKey, int((5 * time.Minute).Milliseconds()))
interval, _ := converter.Retrieve(z.config, PollingIntervalKey, converter.DurationDecoder, time.Duration(5)*time.Minute)
duration := time.Duration(interval) * time.Millisecond

z.logger.Info(ctx, "Polling configured, starting...", logwrap.Datum("intervalMs", duration.Milliseconds()))
Expand Down Expand Up @@ -197,7 +198,7 @@ func (z *zclMonitor) Attach(ctx context.Context, e zigbee.Endpoint, c zigbee.Clu

if (failedReporting && pc.Mode == PollIfReportingFailed) || pc.Mode == AlwaysPoll {
z.config.Set(PollingConfiguredKey, true)
z.config.Set(PollingIntervalKey, pc.Interval.Milliseconds())
converter.Store(z.config, PollingIntervalKey, pc.Interval, converter.DurationEncoder)
}

return z.reattach(ctx)
Expand Down
14 changes: 7 additions & 7 deletions attribute/monitor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,16 +94,16 @@ func Test_zclMonitor_Attach(t *testing.T) {
assert.Equal(t, zcl.TypeUnsignedInt8, z.attributeDataType)

remoteEndpointSetting, _ := z.config.Int(RemoteEndpointKey)
assert.Equal(t, int(z.remoteEndpoint), remoteEndpointSetting)
assert.Equal(t, int64(z.remoteEndpoint), remoteEndpointSetting)

clusterIdSetting, _ := z.config.Int(ClusterIdKey)
assert.Equal(t, int(z.clusterID), clusterIdSetting)
assert.Equal(t, int64(z.clusterID), clusterIdSetting)

attributeIdSetting, _ := z.config.Int(AttributeIdKey)
assert.Equal(t, int(z.attributeID), attributeIdSetting)
assert.Equal(t, int64(z.attributeID), attributeIdSetting)

attributeDataTypeSetting, _ := z.config.Int(AttributeDataTypeKey)
assert.Equal(t, int(z.attributeDataType), attributeDataTypeSetting)
assert.Equal(t, int64(z.attributeDataType), attributeDataTypeSetting)

assert.NotNil(t, z.match)
})
Expand Down Expand Up @@ -184,7 +184,7 @@ func Test_zclMonitor_Attach(t *testing.T) {
assert.True(t, pollingConfiguredSetting)

pollingIntervalSetting, _ := z.config.Int(PollingIntervalKey)
assert.Equal(t, 60000, pollingIntervalSetting)
assert.Equal(t, int64(60000), pollingIntervalSetting)
assert.NotNil(t, z.ticker)
})

Expand Down Expand Up @@ -227,7 +227,7 @@ func Test_zclMonitor_Attach(t *testing.T) {
assert.True(t, pollingConfiguredSetting)

pollingIntervalSetting, _ := z.config.Int(PollingIntervalKey)
assert.Equal(t, 60000, pollingIntervalSetting)
assert.Equal(t, int64(60000), pollingIntervalSetting)
assert.NotNil(t, z.ticker)
})

Expand Down Expand Up @@ -267,7 +267,7 @@ func Test_zclMonitor_Attach(t *testing.T) {
assert.True(t, pollingConfiguredSetting)

pollingIntervalSetting, _ := z.config.Int(PollingIntervalKey)
assert.Equal(t, 60000, pollingIntervalSetting)
assert.Equal(t, int64(60000), pollingIntervalSetting)
assert.NotNil(t, z.ticker)
})
}
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ module github.com/shimmeringbee/zda
go 1.22.0

require (
github.com/davecgh/go-spew v1.1.1
github.com/expr-lang/expr v1.16.2
github.com/shimmeringbee/callbacks v0.0.0-20221001135028-b85b5f89d5d6
github.com/shimmeringbee/da v0.0.0-20240510193548-96e721e05984
github.com/shimmeringbee/logwrap v0.1.3
github.com/shimmeringbee/persistence v0.0.0-20240318205009-b8100e7c3887
github.com/shimmeringbee/persistence v0.0.0-20240521193653-bb35128b5cdf
github.com/shimmeringbee/retry v0.0.0-20221006193055-2ce01bf139c2
github.com/shimmeringbee/zcl v0.0.0-20240509210644-817a66d91348
github.com/shimmeringbee/zigbee v0.0.0-20221016122511-6c2328db0d94
Expand All @@ -16,7 +17,6 @@ require (
)

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/shimmeringbee/bytecodec v0.0.0-20210228205504-1e9e0677347b // indirect
Expand Down
12 changes: 2 additions & 10 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,14 @@ github.com/shimmeringbee/bytecodec v0.0.0-20210228205504-1e9e0677347b h1:8q7X6JQ
github.com/shimmeringbee/bytecodec v0.0.0-20210228205504-1e9e0677347b/go.mod h1:WYnxfxTJ45UQ+xeAuuTSIalcEepgP8Rb7T/OhCaDdgo=
github.com/shimmeringbee/callbacks v0.0.0-20221001135028-b85b5f89d5d6 h1:A1t2A3OrXEEdZqMw+zmwe6r7LbeZWP256es5TY9/k3Y=
github.com/shimmeringbee/callbacks v0.0.0-20221001135028-b85b5f89d5d6/go.mod h1:1AzT3lP4dAEaqWDdWsldhRtcl0+jyCGcZaBTHTjtA9w=
github.com/shimmeringbee/da v0.0.0-20240322212622-c67427c56547 h1:9MK/0t807gjD/CRX+C9GVsONHjt2OJTM6eBIxqR5iC0=
github.com/shimmeringbee/da v0.0.0-20240322212622-c67427c56547/go.mod h1:jUKTa353LvJT3TAdwtmfGEbcxkYbG58h0gbASRf0FIs=
github.com/shimmeringbee/da v0.0.0-20240509200857-9bc6e803b355 h1:PptwVabaH9bHK4tTvUhK0h3mCBQUv/WV8AFrATmOhbc=
github.com/shimmeringbee/da v0.0.0-20240509200857-9bc6e803b355/go.mod h1:jUKTa353LvJT3TAdwtmfGEbcxkYbG58h0gbASRf0FIs=
github.com/shimmeringbee/da v0.0.0-20240509203136-43e10c41719b h1:jX65bNLVsPy2IS+lmbwFYUCWJOpdF0uozU/GCL59E4w=
github.com/shimmeringbee/da v0.0.0-20240509203136-43e10c41719b/go.mod h1:jUKTa353LvJT3TAdwtmfGEbcxkYbG58h0gbASRf0FIs=
github.com/shimmeringbee/da v0.0.0-20240510193548-96e721e05984 h1:9PagEv7kb8Rk5jt1MYNpOgMllDbos/vulQzYIepJvM8=
github.com/shimmeringbee/da v0.0.0-20240510193548-96e721e05984/go.mod h1:jUKTa353LvJT3TAdwtmfGEbcxkYbG58h0gbASRf0FIs=
github.com/shimmeringbee/logwrap v0.1.3 h1:1PqPGdgbeQxACQqc6RUWERn7EnpA1jbiHzXVYFa7q2A=
github.com/shimmeringbee/logwrap v0.1.3/go.mod h1:NBAcZCUl6aFOGnWTs8m67EUAmWFZXRhoRQf5nknY8W0=
github.com/shimmeringbee/persistence v0.0.0-20240318205009-b8100e7c3887 h1:hr+n6DzP37QYzCf3FN8bcuPoNSsbQe3u4QztdHjOq3I=
github.com/shimmeringbee/persistence v0.0.0-20240318205009-b8100e7c3887/go.mod h1:dKKEj8uVcBM/CArQRE4yLw5DFRfAAzabI7mbgD1ZLeI=
github.com/shimmeringbee/persistence v0.0.0-20240521193653-bb35128b5cdf h1:6qwSES3dm64Js7StXNsMg9QlCkSsx/Bt/GgysZeSdx8=
github.com/shimmeringbee/persistence v0.0.0-20240521193653-bb35128b5cdf/go.mod h1:dKKEj8uVcBM/CArQRE4yLw5DFRfAAzabI7mbgD1ZLeI=
github.com/shimmeringbee/retry v0.0.0-20221006193055-2ce01bf139c2 h1:HxpPz7w7SxVf1GmcM5oTK1JK64TGpK1UflweYRSOwC4=
github.com/shimmeringbee/retry v0.0.0-20221006193055-2ce01bf139c2/go.mod h1:KYvVq5b7/BSSlWng+AKB5jwNGpc0D7eg8ySWrdPAlms=
github.com/shimmeringbee/zcl v0.0.0-20240417200034-8400e0c91ac4 h1:GCVNQWBKxpzYvZGswUPyp++vqMvDSnk7JPKf85iMvk8=
github.com/shimmeringbee/zcl v0.0.0-20240417200034-8400e0c91ac4/go.mod h1:oy+15b56Rms5RnwY/Ik4NlXSYusoAObOIVjfieLRfjQ=
github.com/shimmeringbee/zcl v0.0.0-20240509210644-817a66d91348 h1:J0kBfQom8P2bXAychpcd8PN2qjvgxuqcJi3DktvTm+0=
github.com/shimmeringbee/zcl v0.0.0-20240509210644-817a66d91348/go.mod h1:oy+15b56Rms5RnwY/Ik4NlXSYusoAObOIVjfieLRfjQ=
github.com/shimmeringbee/zigbee v0.0.0-20201027194100-4e53cafc0f7a/go.mod h1:GMA6rVpzvUK16cZwi8uW11JUTx8xUGOk5DbkXYWvm/8=
Expand Down
13 changes: 7 additions & 6 deletions implcaps/zcl/humidity_sensor/impl.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"github.com/shimmeringbee/da"
"github.com/shimmeringbee/da/capabilities"
"github.com/shimmeringbee/persistence"
"github.com/shimmeringbee/persistence/converter"
"github.com/shimmeringbee/zcl"
"github.com/shimmeringbee/zcl/commands/local/relative_humidity_measurement"
"github.com/shimmeringbee/zda/attribute"
Expand Down Expand Up @@ -98,24 +99,24 @@ func (i *Implementation) update(_ zcl.AttributeID, v zcl.AttributeDataTypeValue)

if math.Abs(newRatio-currentRatio) > 0.01 {
i.s.Set(implcaps.ReadingKey, newRatio)
i.s.Set(implcaps.LastChangedKey, time.Now().UnixMilli())
converter.Store(i.s, implcaps.LastChangedKey, time.Now(), converter.TimeEncoder)

i.zi.SendEvent(capabilities.RelativeHumiditySensorUpdate{Device: i.d, State: []capabilities.RelativeHumidityReading{{Value: newRatio}}})
}

i.s.Set(implcaps.LastUpdatedKey, time.Now().UnixMilli())
converter.Store(i.s, implcaps.LastUpdatedKey, time.Now(), converter.TimeEncoder)
}
}
}

func (i *Implementation) LastUpdateTime(_ context.Context) (time.Time, error) {
t, _ := i.s.Int(implcaps.LastUpdatedKey)
return time.UnixMilli(int64(t)), nil
t, _ := converter.Retrieve(i.s, implcaps.LastUpdatedKey, converter.TimeDecoder)
return t, nil
}

func (i *Implementation) LastChangeTime(_ context.Context) (time.Time, error) {
t, _ := i.s.Int(implcaps.LastChangedKey)
return time.UnixMilli(int64(t)), nil
t, _ := converter.Retrieve(i.s, implcaps.LastChangedKey, converter.TimeDecoder)
return t, nil
}

func (i *Implementation) Reading(_ context.Context) ([]capabilities.RelativeHumidityReading, error) {
Expand Down
13 changes: 7 additions & 6 deletions implcaps/zcl/humidity_sensor/impl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package humidity_sensor
import (
"context"
"github.com/shimmeringbee/da/capabilities"
"github.com/shimmeringbee/persistence/converter"
"github.com/shimmeringbee/persistence/impl/memory"
"github.com/shimmeringbee/zcl"
"github.com/shimmeringbee/zcl/commands/local/relative_humidity_measurement"
Expand Down Expand Up @@ -162,8 +163,8 @@ func TestImplementation_update(t *testing.T) {
i.s.Set(implcaps.ReadingKey, 0.51)

lastUpdated := time.Now().Add(-5 * time.Minute)
i.s.Set(implcaps.LastUpdatedKey, lastUpdated.UnixMilli())
i.s.Set(implcaps.LastChangedKey, lastUpdated.UnixMilli())
converter.Store(i.s, implcaps.LastUpdatedKey, lastUpdated, converter.TimeEncoder)
converter.Store(i.s, implcaps.LastChangedKey, lastUpdated, converter.TimeEncoder)

i.update(0, zcl.AttributeDataTypeValue{
DataType: zcl.TypeUnsignedInt16,
Expand All @@ -190,8 +191,8 @@ func TestImplementation_update(t *testing.T) {
i.s.Set(implcaps.ReadingKey, 0.50)

lastUpdated := time.UnixMilli(time.Now().UnixMilli()).Add(-5 * time.Minute)
i.s.Set(implcaps.LastUpdatedKey, lastUpdated.UnixMilli())
i.s.Set(implcaps.LastChangedKey, lastUpdated.UnixMilli())
converter.Store(i.s, implcaps.LastUpdatedKey, lastUpdated, converter.TimeEncoder)
converter.Store(i.s, implcaps.LastChangedKey, lastUpdated, converter.TimeEncoder)

i.update(0, zcl.AttributeDataTypeValue{
DataType: zcl.TypeUnsignedInt16,
Expand Down Expand Up @@ -231,8 +232,8 @@ func TestImplementation_LastTimes(t *testing.T) {
changedTime := time.UnixMilli(time.Now().UnixMilli())
updatedTime := changedTime.Add(5 * time.Minute)

i.s.Set(implcaps.LastChangedKey, changedTime.UnixMilli())
i.s.Set(implcaps.LastUpdatedKey, updatedTime.UnixMilli())
converter.Store(i.s, implcaps.LastUpdatedKey, updatedTime, converter.TimeEncoder)
converter.Store(i.s, implcaps.LastChangedKey, changedTime, converter.TimeEncoder)

lct, err := i.LastChangeTime(context.TODO())
assert.NoError(t, err)
Expand Down
27 changes: 15 additions & 12 deletions implcaps/zcl/identify/impl.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/shimmeringbee/da"
"github.com/shimmeringbee/da/capabilities"
"github.com/shimmeringbee/persistence"
"github.com/shimmeringbee/persistence/converter"
"github.com/shimmeringbee/zcl"
"github.com/shimmeringbee/zcl/commands/local/identify"
"github.com/shimmeringbee/zda/attribute"
Expand All @@ -20,7 +21,7 @@ var _ capabilities.WithLastChangeTime = (*Implementation)(nil)
var _ capabilities.WithLastUpdateTime = (*Implementation)(nil)
var _ implcaps.ZDACapability = (*Implementation)(nil)

const RemainingDurationKey = "RemainingDuration"
const EndTimeKey = "EndTime"

func NewIdentify(zi implcaps.ZDAInterface) *Implementation {
zi.ZCLRegister(identify.Register)
Expand Down Expand Up @@ -129,14 +130,13 @@ func (i *Implementation) updateDuration(duration time.Duration) {
newEndTime = newEndTime.Add(duration)
}

currentEndTimeInMs, _ := i.s.Int(RemainingDurationKey, int(time.Now().UnixMilli()))
currentEndTime := time.UnixMilli(int64(currentEndTimeInMs))
currentEndTime, _ := converter.Retrieve(i.s, EndTimeKey, converter.TimeDecoder, time.Now())

diffDuration := newEndTime.Sub(currentEndTime)

if diffDuration >= (250*time.Millisecond) || (currentEndTime != newEndTime && diffDuration < 0) {
i.s.Set(RemainingDurationKey, newEndTime.UnixMilli())
i.s.Set(implcaps.LastChangedKey, time.Now().UnixMilli())
converter.Store(i.s, EndTimeKey, newEndTime, converter.TimeEncoder)
converter.Store(i.s, implcaps.LastChangedKey, time.Now(), converter.TimeEncoder)

if diffDuration < 0 {
diffDuration = 0
Expand All @@ -148,22 +148,25 @@ func (i *Implementation) updateDuration(duration time.Duration) {
}})
}

i.s.Set(implcaps.LastUpdatedKey, time.Now().UnixMilli())
converter.Store(i.s, implcaps.LastUpdatedKey, time.Now(), converter.TimeEncoder)
}

func (i *Implementation) periodicEvent() {

}

func (i *Implementation) LastUpdateTime(_ context.Context) (time.Time, error) {
t, _ := i.s.Int(implcaps.LastUpdatedKey)
return time.UnixMilli(int64(t)), nil
t, _ := converter.Retrieve(i.s, implcaps.LastUpdatedKey, converter.TimeDecoder)
return t, nil
}

func (i *Implementation) LastChangeTime(_ context.Context) (time.Time, error) {
t, _ := i.s.Int(implcaps.LastChangedKey)
return time.UnixMilli(int64(t)), nil
t, _ := converter.Retrieve(i.s, implcaps.LastChangedKey, converter.TimeDecoder)
return t, nil
}

func (i *Implementation) Status(_ context.Context) (capabilities.IdentifyState, error) {
endTimeInMs, _ := i.s.Int(RemainingDurationKey)
endTime := time.UnixMilli(int64(endTimeInMs))
endTime, _ := converter.Retrieve(i.s, EndTimeKey, converter.TimeDecoder)

diffDuration := endTime.Sub(time.Now())

Expand Down
19 changes: 10 additions & 9 deletions implcaps/zcl/identify/impl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package identify
import (
"context"
"github.com/shimmeringbee/da/capabilities"
"github.com/shimmeringbee/persistence/converter"
"github.com/shimmeringbee/persistence/impl/memory"
"github.com/shimmeringbee/zcl"
"github.com/shimmeringbee/zcl/commands/local/identify"
Expand Down Expand Up @@ -171,8 +172,8 @@ func TestImplementation_update(t *testing.T) {
i.s = memory.New()

lastUpdated := time.Now().Add(-5 * time.Minute)
i.s.Set(implcaps.LastUpdatedKey, lastUpdated.UnixMilli())
i.s.Set(implcaps.LastChangedKey, lastUpdated.UnixMilli())
converter.Store(i.s, implcaps.LastUpdatedKey, lastUpdated, converter.TimeEncoder)
converter.Store(i.s, implcaps.LastChangedKey, lastUpdated, converter.TimeEncoder)

i.update(0, zcl.AttributeDataTypeValue{
DataType: zcl.TypeUnsignedInt16,
Expand All @@ -198,11 +199,11 @@ func TestImplementation_update(t *testing.T) {
i.zi = mzi
i.s = memory.New()

i.s.Set(RemainingDurationKey, time.Now().Add(5*time.Second).UnixMilli())
converter.Store(i.s, EndTimeKey, time.Now().Add(5*time.Second), converter.TimeEncoder)

lastUpdated := time.UnixMilli(time.Now().UnixMilli()).Add(-5 * time.Minute)
i.s.Set(implcaps.LastUpdatedKey, lastUpdated.UnixMilli())
i.s.Set(implcaps.LastChangedKey, lastUpdated.UnixMilli())
converter.Store(i.s, implcaps.LastUpdatedKey, lastUpdated, converter.TimeEncoder)
converter.Store(i.s, implcaps.LastChangedKey, lastUpdated, converter.TimeEncoder)

i.update(0, zcl.AttributeDataTypeValue{
DataType: zcl.TypeUnsignedInt16,
Expand All @@ -226,7 +227,7 @@ func TestImplementation_Status(t *testing.T) {
i := &Implementation{}
i.s = memory.New()

i.s.Set(RemainingDurationKey, time.Now().Add(5*time.Second).UnixMilli())
converter.Store(i.s, EndTimeKey, time.Now().Add(5*time.Second), converter.TimeEncoder)

d, err := i.Status(context.TODO())
assert.NoError(t, err)
Expand All @@ -244,8 +245,8 @@ func TestImplementation_LastTimes(t *testing.T) {
changedTime := time.UnixMilli(time.Now().UnixMilli())
updatedTime := changedTime.Add(5 * time.Minute)

i.s.Set(implcaps.LastChangedKey, changedTime.UnixMilli())
i.s.Set(implcaps.LastUpdatedKey, updatedTime.UnixMilli())
converter.Store(i.s, implcaps.LastUpdatedKey, updatedTime, converter.TimeEncoder)
converter.Store(i.s, implcaps.LastChangedKey, changedTime, converter.TimeEncoder)

lct, err := i.LastChangeTime(context.TODO())
assert.NoError(t, err)
Expand Down Expand Up @@ -311,7 +312,7 @@ func TestImplementation_Identify(t *testing.T) {
err := i.Identify(context.TODO(), 5*time.Second)
assert.NoError(t, err)

val, ok := i.s.Int(RemainingDurationKey)
val, ok := i.s.Int(EndTimeKey)
assert.True(t, ok)

endTime := time.UnixMilli(int64(val))
Expand Down
13 changes: 7 additions & 6 deletions implcaps/zcl/pressure_sensor/impl.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"github.com/shimmeringbee/da"
"github.com/shimmeringbee/da/capabilities"
"github.com/shimmeringbee/persistence"
"github.com/shimmeringbee/persistence/converter"
"github.com/shimmeringbee/zcl"
"github.com/shimmeringbee/zcl/commands/local/pressure_measurement"
"github.com/shimmeringbee/zda/attribute"
Expand Down Expand Up @@ -98,24 +99,24 @@ func (i *Implementation) update(_ zcl.AttributeID, v zcl.AttributeDataTypeValue)

if math.Abs(newPressure-currentPressure) > 0.1 {
i.s.Set(implcaps.ReadingKey, newPressure)
i.s.Set(implcaps.LastChangedKey, time.Now().UnixMilli())
converter.Store(i.s, implcaps.LastChangedKey, time.Now(), converter.TimeEncoder)

i.zi.SendEvent(capabilities.PressureSensorUpdate{Device: i.d, State: []capabilities.PressureReading{{Value: newPressure}}})
}

i.s.Set(implcaps.LastUpdatedKey, time.Now().UnixMilli())
converter.Store(i.s, implcaps.LastUpdatedKey, time.Now(), converter.TimeEncoder)
}
}
}

func (i *Implementation) LastUpdateTime(_ context.Context) (time.Time, error) {
t, _ := i.s.Int(implcaps.LastUpdatedKey)
return time.UnixMilli(int64(t)), nil
t, _ := converter.Retrieve(i.s, implcaps.LastUpdatedKey, converter.TimeDecoder)
return t, nil
}

func (i *Implementation) LastChangeTime(_ context.Context) (time.Time, error) {
t, _ := i.s.Int(implcaps.LastChangedKey)
return time.UnixMilli(int64(t)), nil
t, _ := converter.Retrieve(i.s, implcaps.LastChangedKey, converter.TimeDecoder)
return t, nil
}

func (i *Implementation) Reading(_ context.Context) ([]capabilities.PressureReading, error) {
Expand Down
Loading

0 comments on commit 273c33e

Please sign in to comment.