mirror of https://github.com/arendst/Tasmota.git
Updated Tuya Protocols (markdown)
parent
1ddf62566f
commit
5ad397946d
|
@ -1,157 +1,49 @@
|
||||||
Common dpId's and what they're used for in Tuya devices
|
The MCU communicates with the Wi-Fi module through the serial port. Protocols are classified into basic and functional protocols.
|
||||||
|
|
||||||
### Switches or plugs/power strips
|
## Basic protocols
|
||||||
```
|
They are common protocols integrated in Tasmota's TuyaMCU module. They stay the same for each product and are mandatory for Tuya module to work correctly.
|
||||||
| DP ID | Identifier | Data type | Function type | Properties |
|
|
||||||
|-------|-------------|--------------------|---------------|----------------------------------------------|
|
|
||||||
| 1 | switch_1 | Control and report | Boolean | |
|
|
||||||
| 2 | switch_2 | Control and report | Boolean | |
|
|
||||||
| 3 | switch_3 | Control and report | Boolean | |
|
|
||||||
| 4 | switch_4 | Control and report | Boolean | |
|
|
||||||
| 5 | switch_5 | Control and report | Boolean | |
|
|
||||||
| 9 | countdown_1 | Control and report | Integer | undefined0-86400, undefined1, Scale0, Unit:s |
|
|
||||||
| 10 | countdown_2 | Control and report | Integer | undefined0-86400, undefined1, Scale0, Unit:s |
|
|
||||||
| 11 | countdown_3 | Control and report | Integer | undefined0-86400, undefined1, Scale0, Unit:s |
|
|
||||||
| 12 | countdown_4 | Control and report | Integer | undefined0-86400, undefined1, Scale0, Unit:s |
|
|
||||||
| 13 | countdown_5 | Control and report | Integer | undefined0-86400, undefined1, Scale0, Unit:s |
|
|
||||||
```
|
|
||||||
|
|
||||||
### Aromatherapy machine (Oil Diffuser)
|
## Functional protocols
|
||||||
```
|
Functional protocols are used for delivering and reporting data of functions. These protocols differ between devices and manufacturers and might require configuration in Tasmota using [`TuyaMCU`](#tuyamcu) command or with [`TuyaSend<x>`](#tuyasend) command.
|
||||||
| DP ID | Function points | Identifier | Data type | Function type | Properties
|
|
||||||
| 1 | Switch | Power | Issue and report | Boolean | |
|
|
||||||
| 6 | Amount of fog | fog | Issue and report | Enum | Enumerated values:small, large|
|
|
||||||
| 11 | Light | Light | Issue and report | Boolean | |
|
|
||||||
| 12 | Fault alarm | fault | Only report | Fault | Barrier values:1|
|
|
||||||
| 13 | Countdown | countdown | Issue and report | Enum | Enumerated values: 0, 1, 2, 3|
|
|
||||||
| 14 | Countdown remaining time | countdown_left | Only report | Integer | Values range: 0-360, Pitch1, Scale0, Unit:min|
|
|
||||||
| 101 | Light mode | work_mode | Issue and report | Enum | Enumerated values: white, colour, scene, scene1, scene2, scene3, scene4 |
|
|
||||||
| 102 | Color value | colour_data | Issue and report | Char type | *see below |
|
|
||||||
| 103 | Light mode | lightmode | Issue and report | Enum | Enumerated values: 1, 2, 3|
|
|
||||||
| 104 | Brightness setting | setlight | Issue and report | Integer | Values range: 0-255, Pitch1, Scale0, Unit:\%|
|
|
||||||
```
|
|
||||||
> `colour_data` format of the lights is a string of 14 characters, for example, 00112233334455, where 00 indicates R, 11 indicates G, 22 indicates B, 3333 indicates the hue, 44 indicates the saturation, and 55 indicates the value. The initial value is saved by default. If you do not want to adjust the light, set the data to the maximum value 100% (0x64). The last four characters have fixed values.
|
|
||||||
|
|
||||||
### Curtain motor
|
### Anatomy of functional protocols
|
||||||
```
|
|
||||||
| DP ID | Function points | Identifier | Data type | Function type | Properties |
|
|
||||||
|-------|-----------------|---------------|------------------|---------------|-----------------------------------------------|
|
|
||||||
| 1 | Percentage | percent_state | Only report | Integer | Values range:0-100, Pitch1, Scale0, Unit:% |
|
|
||||||
| 2 | Motor Direction | control_back | Issue and report | Boolean | |
|
|
||||||
| 3 | Auto Power | auto_power | Issue and report | Boolean | |
|
|
||||||
| 4 | Left time | countdown | Issue and report | Enum | Enumerated values:cancel, 1, 2, 3, 4 |
|
|
||||||
| 5 | Total Time | time_total | Only report | Integer | Values range:0-120000, Pitch1, Scale0, Unit:m |
|
|
||||||
```
|
|
||||||
> [Complete document on protocols](https://github.com/arendst/Sonoff-Tasmota/files/3658412/protocol_CurtainM_20190926.pdf)
|
|
||||||
|
|
||||||
### Power monitoring plug
|
|Name|Description|
|
||||||
```
|
|---|---|
|
||||||
| DP ID | Function points | Identifier | Data type | Function type | Properties | | |
|
|Frame Header Version|Fixed value of 0x55aa |
|
||||||
|-------|------------------------|-----------------|--------------------|---------------|-----------------------------------------------|---|---|
|
|Command Word | `0x06` - send commands<br>`0x07` - report status|
|
||||||
| 1 | switch_1 | switch_1 | Control and report | Boolean | | | |
|
|Data Length | defines expected length of data
|
||||||
| 9 | countdown_1 | countdown_1 | Control and report | Integer | undefined0-86400, undefined1, Scale0, Unit:s | | |
|
|dpID|numbered ID of a function (DP = Data Point or Define Product)|
|
||||||
| 17 | statistics Function | add_ele | Control and report | Integer | undefined0-50000, undefined100, Scale3, Unit: | | |
|
|Data Type|[see Data Type table below](#data-type-table)|
|
||||||
| 18 | current | cur_current | Data report | Integer | undefined0-30000, undefined1, Scale0, Unit:mA | | |
|
|Function Length|length of command|
|
||||||
| 19 | power | cur_power | Data report | Integer | undefined0-50000, undefined1, Scale1, Unit:W | | |
|
|Function Command|formatted according to Data Type|
|
||||||
| 20 | voltage | cur_voltage | Data report | Integer | undefined0-5000, undefined1, Scale1, Unit:V | | |
|
|Verification Method| checksum = remainder of the byte sum starting from Frame Header to 256|
|
||||||
| 21 | test flag | test_bit | Data report | Integer | undefined0-5, undefined1, Scale0, Unit: | | |
|
|
||||||
| 22 | voltage coefficient | voltage_coe | Data report | Integer | undefined0-1000000, undefined1, Scale0, Unit: | | |
|
|
||||||
| 23 | current coefficient | electric_coe | Data report | Integer | undefined0-1000000, undefined1, Scale0, Unit: | | |
|
|
||||||
| 24 | power coefficient | power_coe | Data report | Integer | undefined0-1000000, undefined1, Scale0, Unit: | | |
|
|
||||||
| 25 | statistics coefficient | electricity_coe | Data report | Integer | undefined0-1000000, undefined1, Scale0, Unit: | | |
|
|
||||||
| 26 | warning | fault | Data report | Fault | Barrier values:ov_cr | | |
|
|
||||||
```
|
|
||||||
|
|
||||||
### Dehumidifier
|
<a id="data-type-table"></a>
|
||||||
```
|
#### Data Type
|
||||||
| DP ID | Function points | Identifier | Data type | Function type | Properties |
|
|Hex|Tasmota Command|Decription|Max length|
|
||||||
|-------|-----------------|-------------|------------------|---------------|----------------------------------------------------------|
|
|---|---|---|---|
|
||||||
| 1 | Switch | Switch | Issue and report | Boolean | |
|
|0x01|TuyaSend1|boolean data `0/1`|1 byte|
|
||||||
| 2 | PM2.5 | PM25 | Only report | Integer | Values range:0-999, Pitch1, Scale0, Unit: |
|
|0x02|TuyaSend2|value data. If a value contains less than 4 bytes, 0 is supplemented before|4 bytes|
|
||||||
| 3 | Work mode | Mode | Issue and report | Enum | Enumerated values:Manual, Auto, Sleep |
|
|0x00|TuyaSend3|string data|unknown|
|
||||||
| 4 | Wind speed | Speed | Issue and report | Enum | Enumerated values:speed1, speed2, speed3, speed4, speed5 |
|
|0x04|TuyaSend4|enum data `0/1/2/3/4/5`|1 byte|
|
||||||
| 5 | Filter usage | Filter | Only report | Integer | Values range:0-100, Pitch1, Scale0, Unit:% |
|
|0x05|###|fault data, report only|8 bytes|
|
||||||
| 6 | Fresh | Anion | Issue and report | Boolean | |
|
|
||||||
| 7 | Child lock | Lock | Issue and report | Boolean | |
|
|
||||||
| 9 | UV light | UV | Issue and report | Boolean | |
|
|
||||||
| 11 | Filter reset | FilterReset | Issue and report | Boolean | |
|
|
||||||
| 12 | indoor temp | Temp | Only report | Integer | Values range:-20-50, Pitch1, Scale0, Unit:℃ |
|
|
||||||
| 13 | Indoor humidity | Humidity | Only report | Integer | Values range:0-100, Pitch1, Scale0, Unit:% |
|
|
||||||
```
|
|
||||||
|
|
||||||
### Lighting
|
Let's dissect and explain the MCU protocol using serial command `55aa0006000501010001010e`:
|
||||||
```
|
|
||||||
| DP ID | Function points | Identifier | Data type | Function type | Properties |
|
|
||||||
|-------|-----------------|---------------|--------------------|---------------|----------------------------------------------------------------------------|
|
|
||||||
| 1 | Switch | led_switch | Control and report | Boolean | |
|
|
||||||
| 2 | Mode | work_mode | Control and report | Enum | Enumerated values:white, colour, scene, scene_1, scene_2, scene_3, scene_4 |
|
|
||||||
| 3 | Bright | bright_value | Control and report | Integer | undefined25-255, undefined1, Scale0, Unit: |
|
|
||||||
| 5 | Colour mode | colour_data | Control and report | Char type | |
|
|
||||||
| 6 | Scene | scene_data | Control and report | Char type | |
|
|
||||||
| 7 | Scene1 | flash_scene_1 | Control and report | Char type | |
|
|
||||||
| 8 | Scene2 | flash_scene_2 | Control and report | Char type | |
|
|
||||||
| 9 | Scene3 | flash_scene_3 | Control and report | Char type | |
|
|
||||||
| 10 | Scene4 | flash_scene_4 | Control and report | Char type | |
|
|
||||||
```
|
|
||||||
|
|
||||||
### Air purifier
|
| Frame Header Version | Command Word | Data Length | dpID | Data Type | Function Length | Function Command | Verification Method |
|
||||||
```
|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
||||||
| DP ID | Function points | Identifier | Data type | Function type | Properties |
|
| 55aa00| 06| 0005| 01 | 01| 0001| 01| 0e|
|
||||||
|-------|-----------------|-------------|------------------|---------------|----------------------------------------------------------|
|
|
||||||
| 1 | Switch | Switch | Issue and report | Boolean | |
|
|
||||||
| 2 | PM2.5 | PM25 | Only report | Integer | Values range:0-999, Pitch1, Scale0, Unit: |
|
|
||||||
| 3 | Work mode | Mode | Issue and report | Enum | Enumerated values:Manual, Auto, Sleep |
|
|
||||||
| 4 | Wind speed | Speed | Issue and report | Enum | Enumerated values:speed1, speed2, speed3, speed4, speed5 |
|
|
||||||
| 5 | Filter usage | Filter | Only report | Integer | Values range:0-100, Pitch1, Scale0, Unit:% |
|
|
||||||
| 6 | Fresh | Anion | Issue and report | Boolean | |
|
|
||||||
| 7 | Child lock | Lock | Issue and report | Boolean | |
|
|
||||||
| 9 | UV light | UV | Issue and report | Boolean | |
|
|
||||||
| 11 | Filter reset | FilterReset | Issue and report | Boolean | |
|
|
||||||
| 12 | indoor temp | Temp | Only report | Integer | Values range:-20-50, Pitch1, Scale0, Unit:℃ |
|
|
||||||
| 13 | Indoor humidity | Humidity | Only report | Integer | Values range:0-100, Pitch1, Scale0, Unit:% |
|
|
||||||
```
|
|
||||||
|
|
||||||
### Heater
|
This is the command which powers on the device sending Function Command = `1` to dpID 1 (Switch):
|
||||||
```
|
- Frame Header Version = `0x55aa00` which is a fixed value and always the same
|
||||||
| DP ID | Function points | Identifier | Data type | Function type | Properties |
|
- Command Word = `0x06` because we're sending a command
|
||||||
|-------|---------------------|-------------|------------------|---------------|--------------------------------------------|
|
- Data Type = `0x01` since the command sent is a 1 byte boolean
|
||||||
| 1 | Switch | Power | Issue and report | Boolean | |
|
- Function Length = `0x001` instruct 1 character only for function command length
|
||||||
| 2 | Target temperature | TempSet | Issue and report | Integer | Values range:0-37, Pitch1, Scale0, Unit:℃ |
|
- Function Command = `0x01` in hex which equals `1` in int
|
||||||
| 3 | Current Temperature | TempCurrent | Only report | Integer | Values range:-9-99, Pitch1, Scale0, Unit:℃ |
|
- Verification Method = `0e` is calculated
|
||||||
| 4 | Mode | Mode | Issue and report | Enum | Enumerated values:m, p |
|
|
||||||
| 5 | Fault alarm | Fault | Only report | Fault | Barrier values:1, 2, 3 |
|
|
||||||
| 6 | Gear position | gear | Issue and report | Enum | Enumerated values:low, mid, high, off |
|
|
||||||
| 7 | Conservation | eco_mode | Issue and report | Boolean | |
|
|
||||||
```
|
|
||||||
|
|
||||||
### Smart fan
|
### Protocol flow
|
||||||
```
|
On device boot, TuyaMCU executes the required basic protocols and reads the functional protocol data received, which are used to update status of components mapped in TuyaMCU (Relays, dimmer, power monitoring data).
|
||||||
| DP ID | Function points | Identifier | Data type | Function type | Properties |
|
|
||||||
|-------|----------------------|----------------|------------------|---------------|-------------------------------------------|
|
After receiving a command from Tasmota (Command Word `0x06`), the MCU performs corresponding logical control. When the dpID status is changed, the MCU reports the data (Command Word `0x07`) to TuyaMCU component.
|
||||||
| 1 | Switch | switch | Issue and report | Boolean | |
|
|
||||||
| 2 | Wind Speed Level | fan_speed | Issue and report | Enum | Enumerated values:1, 2, 3, 4 |
|
|
||||||
| 3 | Left-and-Right Swing | fan_horizontal | Issue and report | Enum | Enumerated values:on, off |
|
|
||||||
| 4 | Up-and-Down Swing | fan_vertical | Issue and report | Enum | Enumerated values:on, off |
|
|
||||||
| 5 | Fault Alarm | fault | Only report | Fault | Barrier values:1, 2 |
|
|
||||||
| 6 | Anion | anion | Issue and report | Boolean | |
|
|
||||||
| 7 | Humidify | humidifier | Issue and report | Boolean | |
|
|
||||||
| 8 | Oxygen | oxygan | Issue and report | Boolean | |
|
|
||||||
| 9 | Child Lock | lock | Issue and report | Boolean | |
|
|
||||||
| 10 | Cool | fan_cool | Issue and report | Boolean | |
|
|
||||||
| 11 | Set Temperate | temp | Issue and report | Integer | Values range:0-50, Pitch1, Scale0, Unit:℃ |
|
|
||||||
| 12 | Current Temperature | temp_current | Only report | Integer | Values range:0-50, Pitch1, Scale0, Unit:℃ |
|
|
||||||
```
|
|
||||||
### Kettle
|
|
||||||
```
|
|
||||||
| DP ID | Function points | Identifier | Data type | Function type | Properties |
|
|
||||||
|-------|------------------------------------------------------------|----------------------|------------------|---------------|---------------------------------------------------------------------|
|
|
||||||
| 1 | Working switch | start | Issue and report | Boolean | |
|
|
||||||
| 2 | Heat to target temperature shortcut (°C) | temp_setting_quick_c | Issue and report | Enum | Enumerated values:50, 65, 85, 90, 100 |
|
|
||||||
| 3 | Heat to target temperature shortcut (°F) | temp_setting_quick_f | Issue and report | Enum | Enumerated values:122, 149, 185, 194, 212 |
|
|
||||||
| 4 | Cool to the target temperature shortcut after boiling (°C) | temp_boiling_quick_c | Issue and report | Enum | Enumerated values:50, 65, 85, 90, 100 |
|
|
||||||
| 5 | Cool to the target temperature shortcut after boiling (°F) | temp_boiling_quick_f | Issue and report | Enum | Enumerated values:122, 149, 185, 194, 212 |
|
|
||||||
| 6 | Temperature scale switching | temp_unit_convert | Issue and report | Enum | Enumerated values:c, f |
|
|
||||||
| 7 | Insulation switch | switch_keep_warm | Issue and report | Boolean | |
|
|
||||||
| 8 | Holding time setting | keep_warm_setting | Issue and report | Integer | Values range:0-360, Pitch1, Scale0, Unit:min |
|
|
||||||
| 9 | Mode | work_type | Issue and report | Enum | Enumerated values:setting_quick, boiling_quick, temp_setting, temp_ |
|
|
||||||
```
|
|
Loading…
Reference in New Issue