Skip to content

Commit

Permalink
Skip GroupRead events when listening for messages
Browse files Browse the repository at this point in the history
This avoids additional metrics with the address of the requesting device
and value `0` for configured group addresses.
  • Loading branch information
chr-fritz committed Oct 13, 2024
1 parent e7993ac commit 8b028fa
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 10 deletions.
5 changes: 5 additions & 0 deletions pkg/knx/listener.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@ func (l *listener) handleEvent(event knx.GroupEvent) {
return
}

if event.Command == knx.GroupRead {
logger.Debug("Skip group event as it is a GroupRead message.")
return
}

value, err := unpackEvent(event, addr)
logger = logger.With("dpt", addr.DPT)

Expand Down
37 changes: 27 additions & 10 deletions pkg/knx/listener_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,61 +33,78 @@ func Test_listener_Run(t *testing.T) {
}{
{
"bool false",
knx.GroupEvent{Destination: cemi.GroupAddr(1), Data: []byte{0}},
knx.GroupEvent{Destination: cemi.GroupAddr(1), Command: knx.GroupWrite, Data: []byte{0}},
&Snapshot{name: "knx_a", value: 0, destination: GroupAddress(1), config: &GroupAddressConfig{Name: "a", DPT: "1.001", Export: true}},
false,
},
{
"bool true",
knx.GroupEvent{Destination: cemi.GroupAddr(1), Data: []byte{1}},
knx.GroupEvent{Destination: cemi.GroupAddr(1), Command: knx.GroupWrite, Data: []byte{1}},
&Snapshot{name: "knx_a", value: 1, destination: GroupAddress(1), config: &GroupAddressConfig{Name: "a", DPT: "1.001", Export: true}},
false,
}, {
"bool false response",
knx.GroupEvent{Destination: cemi.GroupAddr(1), Command: knx.GroupResponse, Data: []byte{0}},
&Snapshot{name: "knx_a", value: 0, destination: GroupAddress(1), config: &GroupAddressConfig{Name: "a", DPT: "1.001", Export: true}},
false,
},
{
"bool true response",
knx.GroupEvent{Destination: cemi.GroupAddr(1), Command: knx.GroupResponse, Data: []byte{1}},
&Snapshot{name: "knx_a", value: 1, destination: GroupAddress(1), config: &GroupAddressConfig{Name: "a", DPT: "1.001", Export: true}},
false,
},
{
"5.*",
knx.GroupEvent{Destination: cemi.GroupAddr(2), Data: []byte{0, 255}},
knx.GroupEvent{Destination: cemi.GroupAddr(2), Command: knx.GroupWrite, Data: []byte{0, 255}},
&Snapshot{name: "knx_b", value: 100, destination: GroupAddress(2), config: &GroupAddressConfig{Name: "b", DPT: "5.001", Export: true}},
false,
},
{
"9.*",
knx.GroupEvent{Destination: cemi.GroupAddr(3), Data: []byte{0, 2, 38}},
knx.GroupEvent{Destination: cemi.GroupAddr(3), Command: knx.GroupWrite, Data: []byte{0, 2, 38}},
&Snapshot{name: "knx_c", value: 5.5, destination: GroupAddress(3), config: &GroupAddressConfig{Name: "c", DPT: "9.001", Export: true}},
false,
},
{
"12.*",
knx.GroupEvent{Destination: cemi.GroupAddr(4), Data: []byte{0, 0, 0, 0, 5}},
knx.GroupEvent{Destination: cemi.GroupAddr(4), Command: knx.GroupWrite, Data: []byte{0, 0, 0, 0, 5}},
&Snapshot{name: "knx_d", value: 5, destination: GroupAddress(4), config: &GroupAddressConfig{Name: "d", DPT: "12.001", Export: true}},
false,
},
{
"13.*",
knx.GroupEvent{Destination: cemi.GroupAddr(5), Data: []byte{0, 0, 0, 0, 5}},
knx.GroupEvent{Destination: cemi.GroupAddr(5), Command: knx.GroupWrite, Data: []byte{0, 0, 0, 0, 5}},
&Snapshot{name: "knx_e", value: 5, destination: GroupAddress(5), config: &GroupAddressConfig{Name: "e", DPT: "13.001", Export: true}},
false,
},
{
"14.*",
knx.GroupEvent{Destination: cemi.GroupAddr(6), Data: []byte{0, 63, 192, 0, 0}},
knx.GroupEvent{Destination: cemi.GroupAddr(6), Command: knx.GroupWrite, Data: []byte{0, 63, 192, 0, 0}},
&Snapshot{name: "knx_f", value: 1.5, destination: GroupAddress(6), config: &GroupAddressConfig{Name: "f", DPT: "14.001", Export: true}},
false,
},
{
"5.* can't unpack",
knx.GroupEvent{Destination: cemi.GroupAddr(2), Data: []byte{0}},
knx.GroupEvent{Destination: cemi.GroupAddr(2), Command: knx.GroupWrite, Data: []byte{0}},
nil,
true,
},
{
"bool unexported",
knx.GroupEvent{Destination: cemi.GroupAddr(7), Data: []byte{1}},
knx.GroupEvent{Destination: cemi.GroupAddr(7), Command: knx.GroupWrite, Data: []byte{1}},
nil,
true,
},
{
"unknown address",
knx.GroupEvent{Destination: cemi.GroupAddr(255), Data: []byte{0}},
knx.GroupEvent{Destination: cemi.GroupAddr(255), Command: knx.GroupWrite, Data: []byte{0}},
nil,
true,
},
{
"group read event",
knx.GroupEvent{Destination: cemi.GroupAddr(6), Command: knx.GroupRead, Data: []byte{0}},
nil,
true,
},
Expand Down

0 comments on commit 8b028fa

Please sign in to comment.