diff --git a/plugins/inputs/knx_listener/knx_listener.go b/plugins/inputs/knx_listener/knx_listener.go index f013fe638..f81dc9e1a 100644 --- a/plugins/inputs/knx_listener/knx_listener.go +++ b/plugins/inputs/knx_listener/knx_listener.go @@ -187,6 +187,8 @@ func (kl *KNXListener) listen(acc telegraf.Accumulator) { value = vi.Uint() case reflect.Float32, reflect.Float64: value = vi.Float() + case reflect.String: + value = vi.String() default: kl.Log.Errorf("Type conversion %v failed for address %q", vi.Kind(), ga) continue diff --git a/plugins/inputs/knx_listener/knx_listener_test.go b/plugins/inputs/knx_listener/knx_listener_test.go index d7fd90ff2..6391bbc4a 100644 --- a/plugins/inputs/knx_listener/knx_listener_test.go +++ b/plugins/inputs/knx_listener/knx_listener_test.go @@ -30,6 +30,8 @@ func setValue(data dpt.DatapointValue, value interface{}) error { d.SetInt(v) case uint64: d.SetUint(v) + case string: + d.SetString(v) default: return fmt.Errorf("unknown type '%T' when setting value for DPT", value) } @@ -104,6 +106,7 @@ func TestRegularReceives_DPT(t *testing.T) { {"14/0/4", "14.004", false, 1.00794, 1.00794}, {"14/1/0", "14.010", false, 5963.78, 5963.78}, {"14/1/1", "14.011", false, 150.95, 150.95}, + {"16/0/0", "16.000", false, "hello world", "hello world"}, } acc := &testutil.Accumulator{}