|
@@ -0,0 +1,74 @@
|
|
|
+Tasmota Serial (MQTT) Bridge for MQTT-CUL
|
|
|
+==========================================
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## Hardware
|
|
|
+
|
|
|
+- Wemos D1 mini or equivalent ESP8266 board running Tasmota (tested with v9.3.1)
|
|
|
+- DIY-CUL device (Arduino Pro Mini with aCULfw + C1101 Transceiver)
|
|
|
+ - RX/TX connected to Wemos D1 mini hardware UART (TX->RX and vice versa) using level shifters
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## Tasmota-Configuration
|
|
|
+
|
|
|
+##### Set baudrate for Hardware-UART
|
|
|
+
|
|
|
+CUL-Device uses 38400 bps
|
|
|
+
|
|
|
+```
|
|
|
+baudrate 38400
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+##### Set serial delimiter
|
|
|
+
|
|
|
+```
|
|
|
+serialdelimiter 128
|
|
|
+```
|
|
|
+
|
|
|
+- CUL finishes every message with CR+LF (*\r\n*)
|
|
|
+- *serialdelimiter 128* filters all unprintable chars and seems to take both CR and LF as a delimiter - at least both are filtered out and consequent messages are not concatenated, which happens if using NO serialdelimiter (value set to >128)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+##### Set serial config
|
|
|
+
|
|
|
+```
|
|
|
+SerialConfig 8N1
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+##### Initialize CUL on Tasmota startup
|
|
|
+
|
|
|
+Additionally, Tasmota´s Serial bridge is only active after the *SerialSend* function was used once after startup.
|
|
|
+
|
|
|
+In my setup I need to get also "RAW" data from CUL, as I am using remote controls not directly supported by the aCULfw firmware, so I use the X05 command. If this is not needed, the right command is likely to be X21.
|
|
|
+For details see: http://culfw.de/commandref.html
|
|
|
+
|
|
|
+```
|
|
|
+rule1 on system#boot do serialsend X05\r\n endon
|
|
|
+```
|
|
|
+
|
|
|
+activate the rule:
|
|
|
+
|
|
|
+```
|
|
|
+rule1 1
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+##### Additional rule for publishing SerialReceived output on another topic
|
|
|
+
|
|
|
+```
|
|
|
+rule2 on SerialReceived#Data do publish MQTTCUL/received %value% endon
|
|
|
+```
|
|
|
+
|
|
|
+- Unfortunately this rule will only work if ther is NO control char in the received string, so it is mandatory to use a *SerialDelimiter* setting that filters out all of them (i.E. SerialDelimiter 128 does the job).
|
|
|
+- The output of this rule is ALWAYS UPPERCASE. Don´t know why, but that´s how Tasmota handles it. Regarding CUL output this could be a problem, as it outputs lowercase chars in most messages.
|
|
|
+ - **CUL2MQTT.py** handles this by putting all data received from MQTT-CUL topic to lowercase (as all of the logic has already been completed and was written based on the normal lowercase output seen on any CUL device).
|
|
|
+ - **CUL2MQTT.py** now also supports the Tasmota ***tele/TOPIC/RESULT*** output in JSON format directly. It is preferred to use it this way, without the additional rule.
|
|
|
+
|