|
@@ -302,15 +302,27 @@ def on_message(client, userdata, msg):
|
|
payload = msg.payload.decode("utf-8")
|
|
payload = msg.payload.decode("utf-8")
|
|
|
|
|
|
if verbose:
|
|
if verbose:
|
|
|
|
+ log_write("")
|
|
log_write("MQTT received: " + msg.topic + " -> " + str(payload))
|
|
log_write("MQTT received: " + msg.topic + " -> " + str(payload))
|
|
|
|
|
|
# MQTT message is output from CUL
|
|
# MQTT message is output from CUL
|
|
if receive_from_mqtt_cul and msg.topic == mqtt_cul_topic_received:
|
|
if receive_from_mqtt_cul and msg.topic == mqtt_cul_topic_received:
|
|
payload = payload.rstrip()
|
|
payload = payload.rstrip()
|
|
- if verbose:
|
|
|
|
- log_write("")
|
|
|
|
- log_write("MQTT-CUL RX: '" + payload + "'")
|
|
|
|
- cul_received(payload, "MQTT")
|
|
|
|
|
|
+
|
|
|
|
+ # support output from Tasmota SerialBridge on tele/[DEVICE]/RESULT topic
|
|
|
|
+ # example: {"SerialReceived":"p10 144 80 480 48 32 1360 28 1 3 4 160 6336 0 735C1470"}
|
|
|
|
+ if payload.startswith('{"SerialReceived":'):
|
|
|
|
+ payload_json = json.loads(payload)
|
|
|
|
+ payload = payload_json.get('SerialReceived')
|
|
|
|
+ if payload != None:
|
|
|
|
+ cul_received(payload, "MQTT") # to lower case as MQTT CUL via Tasmota SerialBridge with Rule changes output to all uppercase
|
|
|
|
+ if verbose:
|
|
|
|
+ log_write("MQTT-CUL RX: '" + payload + "'")
|
|
|
|
+ elif not payload.startswith('{'):
|
|
|
|
+ # ignore everything different starting with {
|
|
|
|
+ cul_received(payload.lower(), "MQTT") # to lower case as MQTT CUL via Tasmota SerialBridge with Rule changes output to all uppercase
|
|
|
|
+ if verbose:
|
|
|
|
+ log_write("MQTT-CUL RX: '" + payload.lower() + "'")
|
|
|
|
|
|
else:
|
|
else:
|
|
for in_topic, dev in InTopicsToDevIds.items():
|
|
for in_topic, dev in InTopicsToDevIds.items():
|