diff --git a/config.go b/config.go index 4e2e92bf49d548fdb8044c16176ba713ecdbbc09..e8495488883af26f1488c51478d7b570b8796c3b 100644 --- a/config.go +++ b/config.go @@ -10,7 +10,6 @@ import ( ) var ( - mqttTopic = "zigbee2mqtt" mqttClientID = "z2m-" + uuid.New().String() ignoredTopics = []string{ "bridge/groups", diff --git a/gateway.go b/gateway.go index 198ada61822e494b2125c83fb1f96801ef0530c3..f44ce43c48235c75df36a794fa887428f9289c0e 100644 --- a/gateway.go +++ b/gateway.go @@ -34,8 +34,8 @@ func (gw *Gateway) AddZDevice(zDev *Z2MDevice) { slog.Debug("Adding device", "dev", dev.String()) gw.Engine.AddDevice(dev) } - gw.Devices[zDev.FriendlyName] = zDev zDev.Gateway = gw + gw.Devices[zDev.FriendlyName] = zDev } func (gw *Gateway) RemoveZDevice(zDev *Z2MDevice) { diff --git a/z2m.go b/z2m.go index c8fab244c4e259af03c54e6378c8f81757bb437b..86926fe0836e6f5cb330a814fa90b3985bc8fdfe 100644 --- a/z2m.go +++ b/z2m.go @@ -61,7 +61,7 @@ type Feature struct { // returns the topic for the device func (zDev *Z2MDevice) getTopic() string { - return mqttTopic + "/" + zDev.FriendlyName + return zDev.Gateway.Config.topic + "/" + zDev.FriendlyName } // return the expose with the given name @@ -90,6 +90,8 @@ func (zDev *Z2MDevice) HandleMessage(msg mqtt.Message) { // creates new xAAL devices from a bridge device func (zDev *Z2MDevice) FindXAALDevices(gw *Gateway) { + // There is a trick here. We call FindXAALDevices w/ gw argument, but the Gateway is only set + // in the AddZDevice method. This is not mandatory but avoid to have Gateway at random place baseAddr := gw.Config.baseAddr ieeeAddr, _ := hexStringToInteger(zDev.IeeeAddress) baseAddr, _ = baseAddr.Add(int64(ieeeAddr))