diff --git a/config.go b/config.go index b5a046900fbeac512f03767e4023c8b3b6c2930a..8d46475040f7bd92a015ab2adacc5ee9e6663530 100644 --- a/config.go +++ b/config.go @@ -1,22 +1,34 @@ package main import ( + "fmt" + "gitlab.imt-atlantique.fr/xaal/code/go/core/uuid" "gitlab.imt-atlantique.fr/xaal/code/go/core/xaal" "gopkg.in/ini.v1" ) var ( - mqttTopic = "zigbee2mqtt" - mqttClientID = "z2m-" + uuid.New().String() + mqttTopic = "zigbee2mqtt" + mqttClientID = "z2m-" + uuid.New().String() + ignoredTopics = []string{ + "bridge/groups", + "bridge/definitions", + "bridge/extensions", + "bridge/info", + "bridge/state", + "bridge/logging", + "bridge/config", + } ) type Config struct { - brokerHost string - topic string - logLevel string - brokerPort int - baseAddr uuid.UUID + brokerHost string + topic string + logLevel string + ignoredTopics []string + brokerPort int + baseAddr uuid.UUID } func parseConfig() (*Config, error) { @@ -64,5 +76,8 @@ func parseConfig() (*Config, error) { } config.baseAddr = baseAddr } + for _, topic := range ignoredTopics { + config.ignoredTopics = append(config.ignoredTopics, fmt.Sprintf("%s/%s", config.topic, topic)) + } return &config, nil } diff --git a/gateway.go b/gateway.go index 2d73965b03c3a9e4dbc36c90a4070bc383af3eaa..6bb8dd6477480449bdaa4a92d91c1cc63cbaa68b 100644 --- a/gateway.go +++ b/gateway.go @@ -60,10 +60,9 @@ func (gw *Gateway) GetZDeviceByTopic(topic string) *Z2MDevice { // Else it will find the device with the topic and call the mqttDeviceHandler func (gw *Gateway) mqttPublishHander(client MQTT.Client, msg MQTT.Message) { // we ignore some topics - if slices.Contains(ignoredTopics, msg.Topic()) { + if slices.Contains(gw.config.ignoredTopics, msg.Topic()) { return } - // slog.Debug("Received message on", "topic", msg.Topic()) // Is it devices definitions ? if msg.Topic() == gw.config.topic+"/bridge/devices" { gw.jsonParseDevices(msg.Payload()) diff --git a/z2m.go b/z2m.go index e0fa57c0bf796a2b3c6bf90eb82c98d427056bff..d403d414477db1e78723cb9b2315b423a3175f62 100644 --- a/z2m.go +++ b/z2m.go @@ -23,16 +23,6 @@ type ( AccessLevel int ) -var ignoredTopics = []string{ - mqttTopic + "/bridge/groups", - mqttTopic + "/bridge/definitions", - mqttTopic + "/bridge/extensions", - mqttTopic + "/bridge/info", - mqttTopic + "/bridge/state", - mqttTopic + "/bridge/logging", - mqttTopic + "/bridge/config", -} - // JSON structures for the z2m device from /bridge/devices type Z2MDevice struct { Definition struct {