// Find the device name func (self *Config) LookupDeviceName(ev *pubsub.Event) string { // silly question: is device set on the event if ev.Device() != "" { return ev.Device() } topic := ev.Topic source := ev.Source() // try: protocol.id if device, ok := self.Protocols[topic][source]; ok { return device } // fallback: topic.source // ignore dynamic topics (prefix _) if topic != "" && source != "" && !strings.HasPrefix(topic, "_") { return topic + "." + source } return "" }