From 56daf48162625bf1a7c9d8634b79464cf1fb7299 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 25 Oct 2018 22:28:13 +0000 Subject: [PATCH] Fix gateway color adjustment when prefix more than one subtopic --- src/mqtt.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/mqtt.py b/src/mqtt.py index 5d0de22..a63e9a2 100644 --- a/src/mqtt.py +++ b/src/mqtt.py @@ -131,19 +131,22 @@ class Mqtt: def _mqtt_process_message(self, client, userdata, msg): _LOGGER.info("Processing message in " + str(msg.topic) + ": " + str(msg.payload) + ".") - parts = msg.topic.split("/") - if len(parts) < 4: + + # need to strip prefix to make parts assignment reliable + parts = msg.topic.replace(self.prefix+"/","").split("/") + partlen = len(parts) + if len(parts) < 3: # should we return an error message ? return - model = parts[1] - query_sid = parts[2] # sid or name part - param = parts[3] # param part + model = parts[0] + query_sid = parts[1] # sid or name part + param = parts[2] # param part method = None - if len(parts) > 4: - method = parts[4] - else: + if len(parts) > 3: method = parts[3] + else: + method = parts[2] name = "" # we will find it next sid = query_sid @@ -160,6 +163,7 @@ class Mqtt: sid = current_sid name = sidname isFound = True + _LOGGER.debug("Found " + sid + " = " + name) break else: _LOGGER.debug(sidmodel + "-" + sidname + " is not " + model + "-" + query_sid + ".")