Master RS485 Cummunication Protocol

From OpenMotics
Jump to: navigation, search

General

The communication between Master controller and slave device is going over RS485. This document describes the communication protocol between both

Versioning

This document describes the RS485 communication protocol available on the Master Controller interface.

Gateway Module FW version
3.143.x

Notation

Every RS485 instruction from Master to Slave must start with string characters ST, the return message (from Slave to Master) must start with RC. Some exception exist and are explained in the document below.

Example: Aksing Firmware Version

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
ST ID0 ID1 ID2 ID3 F V 0 0 0 0 0 0 0 0 0 0 13 10
  • M->S: Master to Slave
  • Master to slave message will start with "ST"
  • The ID0..3 is the destination slave address
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
RC ID0 ID1 ID2 ID3 255 V Hw F1 F2 F3 0 0 0 0 0 0 13 10
  • S->M: Slave to Master
  • Slave to Master message will start with "RC"
  • The ID0..ID3 address is the originating slave address but all RC messages are always for the Master Controller since this controller is the Master of the RS485 bus.

Instruction Set

Messages in Normal Mode

Request state of Input Module

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 I Indicate F InputFilter 0 0 0 0 0 0 0 0 0 0 13 10 13 10
  • The ID0..3 is the destination slave address
  • Since this instruction is used to check Input module, ID0 must be equal to "I"
  • Indicate: Does the Input status leds needs any flashing. When Indicate=255, leds at normal state. When Indicate.Bit0=0 -> Led1 flashing, Indicate.Bit1=0 -> Led2 flashing etc
  • InputFilter: When an InputFilter is used, byte6 must be equal to "F". InputFilter (for example 10) represents the number of Inputcycles (The input module scans his inputs) the inputmodule will do before it accepts an input change. This value is used to filter unwanted spikes or noise on the cables of the switches. See also Memory Model Page 0 Byte 92.
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
RC ID0 ID1 ID2 ID3 InputState P PC PulseCounter(PC).Byte1 PulseCounter(PC).Byte0 C CRC.Byte1 CRC.Byte0 13 10 13 10
  • The ID0..ID3 address is the originating slave address but all RC messages are always for the Master Controller since this controller is the Master of the RS485 bus. In this case, ID0="I".
  • PC: Every input Module will keep a PulseCounter for the 8 inputs of this module. During every scan, one of the 8 (0-7) PulseCounters (PC) will be sent over to the Master Controller. PC (0-7) will indicate which pulsecounter information of which input is sent over.
  • PulseCounter(PC).Byte1 and Byte0: PulseCounter variable, Pulsecounter will keep track of the number of times an input is activated. Pulsecounter value ranges from 0 to 65535. When the 65535 is reached and the input is activated again, Pulsecounter will go to 0 and will continue counting.
  • CRC.Byte1 and Byte0: Sum of byte 4 to 9

Request state of Oled Module

The Oled Module is a display module with touch screen capable is displaying all information available on the bus. To accomplish this and make programming simple, the Oled display acts as a scanner on the bus listening to all messages. In this way, the Oled module knows the state of all outputs, know the input states etc. To have also all ID information of the modules, output names, thermostat configurations etc, the Oled Module will receive a copy of the Master Controller Eeprom. Every time the Master controller sends a message to the Oled Module, a byte of the Master eeprom is sent over.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 I EepromAddress.Byte1 EepromAddress.Byte0 EepromData ThermostatNr SetPoint(ThermostatNr) ThermostatMode TemperatureNr Temperature(TemperatureNr) OledActionType OLedActionNr Hours Minutes Day 13 10 13 10
  • Since this instruction is used to check Oled module, ID0 must be equal to "L"
  • EepromAddress.Byte1: Page of the Master Controller eeprom
  • EepromAddress.Byte0: Byte nr of the Master Controller eeprom
  • Data: Byte that is programmed at EepromAddress.Byte0 and 1 in the eeprom of the Master controller (see Memory Model for more details)
    • With every scan, a new byte is sent over
    • When new info is programmed in the Master Eeprom, that data is first sent over to the Oled Module
  • ThermostatNr: Number (0-23) for which thermostat information is sent over
  • Setpoint(ThermsotatNr): Sent over the Setpoint temperature (in System Value format) of ThermostatNr
  • ThermostatMode: See Thermostat Mode
  • TemperatureNr: Number (0-31) for which temperature sensor information is sent over
  • Temperature(TemperatureNr): Temperature (in System Value format) of sensor TemperatureNr
  • OledActionType and OledActionNr: The Master can request is Oled Module to execute certain actions like Switch ON/OFF display, enable/disable touchscreen, set the automatic switch off time etc.
  • Hours: Current time -> Hour
  • Minutes: Current time -> minutes
  • Day: Current time -> Day of the week (1 Mon, ... , 7 Sun)
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13
RC ID0 ID1 ID2 ID3 0 0 Action Type Action Nr OledInstruction 0 OledInstruction 1 13 10 13 10
  • Action Type and Action Number: The Oled display can sent basic actions to be executed on the Master (switch on/off lights, all off, increase setpoint etc)
  • OledInstruction 0 and 1: Additional instructions can be sent like setting setpoints or program other parameters

Request Temp/Hum/ADC of 8 ports Sensor Module

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
ST ID0 ID1 ID2 ID3 Type Indicate 0 0 0 0 0 13 10 13 10
  • Since this instruction is used to check Temperature module, ID0 must be equal to "T"
  • Type: "T" to request Temperature values, "H" to request Humidity values and "A" to request ADC value
  • Indicate: Does the Input status leds needs any flashing. When Indicate=255, leds at normal state. When Indicate.Bit0=0 -> Led1 flashing, Indicate.Bit1=0 -> Led2 flashing etc
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
RC ID0 ID1 ID2 ID3 Type Value0 Value1 Value2 Value3 Value4 Value5 Value6 Value7 C CRC.Byte1 CRC.Byte0 13 10 13 10
  • Value0..7: All 8 values of the 8 sensors will be transmitted. The value content depends on the Type (Temperature, Humidity or ADC) selected.
  • CRC.Byte1 and Byte0: Sum of byte 4 to 12
  • All values are in [System Value] format

Request Temperature of 16 ports Temperature Module

This is the communication protocol for the 16 ports (not in production anymore) temperature module. Since only 1 of those modules can be connected on 1 Master controller, this module doesn't have a specific address. These modules can be enabled/disabled by using CLI command temperature module enable and temperature module disable. For more information, see CLI Reference Guide.

Request M->S
' 0 1 2 3 4 5 6 7 8 9
ST T 0 0 0 T 0 13 10 13 10
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
ST T 0 0 0 T Temp0 Temp1 Temp2 Temp3 Temp4 Temp5 Temp6 Temp7 Temp8 Temp9 Temp10 Temp11 Temp12 Temp13 Temp14 Temp15 13 10 13 10
  • Temp0..15: Temperature information of all 16 temperature probes connected
  • All temperature values are in System Value format

Sent Output command to Output Module

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 Out Indicate Dim Value0 Dim Value1 Dim Value2 Dim Value3 Dim Value4 Dim Value5 Dim Value6 Dim Value7 C CRC.Byte1 CRC.Byte0 0 13 10 13 10
  • Since this instruction is used to check an Output module, ID0 must be equal to "O" or "R"
  • Indicate: Does the Output status leds needs any flashing. When Indicate=255, leds at normal state. When Indicate.Bit0=0 -> Led1 flashing, Indicate.Bit1=0 -> Led2 flashing etc
  • Out: Output status of the 8 outputs, each bit represents 1 output.
  • Dim Value0..7: For each output, the dimmer value (0-63) is transmitted as well.
  • CRC.Byte1 and Byte0: Sum of byte 4 to 13
Response S->M
' 0 1 2 3 4 5 6 7 8 9
RC ID0 ID1 ID2 ID3 K Out 13 10 13 10

Sent Output command to Dim Control Module

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 Out Indicate Dim Value0 Dim Value1 Dim Value2 Dim Value3 Dim Value4 Dim Value5 Dim Value6 Dim Value7 C CRC.Byte1 CRC.Byte0 0 13 10 13 10
  • Since this instruction is used to check an Output module, ID0 must be equal to "D"
  • Indicate: Does the Output status leds needs any flashing. When Indicate=255, leds at normal state. When Indicate.Bit0=0 -> Led1 flashing, Indicate.Bit1=0 -> Led2 flashing etc
  • Out: Output status of the 8 outputs, each bit represents 1 output.
  • Dim Value0..7: For each output, the dimmer value (0-63) is transmitted as well.
  • CRC.Byte1 and Byte0: Sum of byte 4 to 13
Response S->M
' 0 1 2 3 4 5 6 7 8 9
RC ID0 ID1 ID2 ID3 K Out 13 10 13 10

BroadCast Messages

Sent Broadcast Message

Broadcast message will be sent by the Master controller and interpreted by all modules on the RS485 bus. Some broadcasts are intended for certain modules and will be only executed by those modules.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST BroadID 0 0 0 Broad1 Broad2 0 0 0 0 0 0 0 0 0 0 0 0 13 10 13 10

Below, you can find the table of the different Broadcast messages that exist:

BroadID Broad1 Broad2 Description
0
L
L
Put Bus in Live Mode (Normal operations)
0
I
I
Put Bus in Init Mode (Normal operations is not possible, new modules can be added in this mode)
0
P
F
Switch 5V output (Sensors are connected to this feed) OFF of all 8ports temperature modules
0
P
N
Switch 5V output (Sensors are connected to this feed) ON of all 8ports temperature modules
0
C
C
Put all Pulse counters of all input modules to 0
0
N
N
Put all modules on Normal Power mode (leave Power Save mode) so all leds that needs to be ON will be ON
0
S
S
Put all modules on Power Save Mode and only keep Power and status led ON, all the rest must be switched OFF
0
M
M
Start the measuring process of the connected Sensors (on the Temperature Modules)

Messages in Discovery Mode

Message when pushing Init button

When the Init button is pressed (or when an input of the Input module is activated) when the Bus is in initialization mode, the below message will be sent from the slave to the Master controller. In the event the module doesn't exist yet, the module will be added in the module list of the Master and the message xxx will be returned to the Slave.

sent when init button is pressed S->M
' 0 1 2 3 4 5 6 7 8 9
RC ID0 ID1 ID2 ID3 InputState Module NE 13 10 13 10
  • ID0..3: This is the ID of the module. This ID is randomly generated except for ID0 which indicate the module type ("I" for Input module, "O" for output module, "D" for dimmer mdoule etc)
  • Inputstate: When one of the inputs of an input module is activated, Inputstate will indicate which of the 8 inputs is activated.
  • Module NE: When a module is new (N) and not yet added to the Module list of the Master controller, Module NE="N". When the module is an existing module, Module NE="N".
  • See Init Process for more detailed explanation.
Response M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST A D ID0 ID1 ID2 ID3 0 0 0 0 0 0 0 0 0 0 0 0 13 10 13 10
  • This message will be sent when a new module has been added in the Module list of the Master Controller.
  • See Init Process for more detailed explanation.

Sent Broadcast Message

Broadcast message will be sent by the Master controller and interpreted by all modules on the RS485 bus. Some broadcasts are intended for certain modules and will be only executed by those modules.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST BroadID 0 0 0 Broad1 Broad2 0 0 0 0 0 0 0 0 0 0 0 0 13 10 13 10

Below, you can find the table of the different Broadcast messages that exist:

BroadID Broad1 Broad2 Description
0
L
L
Put Bus in Live Mode (Normal operations)
0
I
I
Put Bus in Init Mode (Normal operations is not possible, new modules can be added in this mode)
0
P
F
Switch 5V output (Sensors are connected to this feed) OFF of all 8ports temperature modules
0
P
N
Switch 5V output (Sensors are connected to this feed) ON of all 8ports temperature modules
0
C
C
Put all Pulse counters of all input modules to 0
0
N
N
Put all modules on Normal Power mode (leave Power Save mode) so all leds that needs to be ON will be ON
0
S
S
Put all modules on Power Save Mode and only keep Power and status led ON, all the rest must be switched OFF
0
M
M
Start the measuring process of the connected Sensors (on the Temperature Modules)

Messages in Bootloader Mode

Put messages on the CAN bus

This instruction will forward messages through the CAN control directly on the connected CAN bus. The response will return through the CAN control towards the Master. These messages will not be interpreted by the CAN Control and will only be forwarded to the Master. All these messages will be sent with SID=0.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 F M Nr Of Bytes C_Byte0 C_Byte1 C_Byte2 C_Byte3 C_Byte4 C_Byte5 C_Byte6 C_Byte7 C CRC.Byte1 CRC.Byte0 13 10 13 10
  • ID0..3: ID of the CAN Control Module
  • Nr Of Bytes: These are the number of bytes that will be sent on the CAN Bus (Min 2, Max 8)
  • C_Byte0..C_Byte7: These are the bytes that will be put on the CAN bus
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte14
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
RC ID0 ID1 ID2 ID3 F M Nr Of Bytes C_Byte0 C_Byte1 C_Byte2 C_Byte3 C_Byte4 C_Byte5 C_Byte6 C_Byte7 C CRC.Byte1 CRC.Byte0 13 10 13 10
  • See Micro CAN Bootloader for more information how the Bootloader of the Micro CAN Remote Modules works
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte14

Request Information from the CAN Control to prepare boot loading of a Micro CAN

This instruction will request information from the CAN control like the number of Micro CAN's are connected to a certain CAN control as well as the ID of the Micro CAN.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 F S Instr can_nr 0 0 0 0 0 0 0 C CRC.Byte1 CRC.Byte0 13 10 13 10
  • ID0..3: ID of the CAN Control Module
  • Instr: If Instr=0 -> Request number of connected Micro CAN's (can_nr is ignored), If instr=1 -> Request ID of Micro CAN with can_nr
  • If for example the received number of connected Micro CAN's is 7, the software should request the ID of can_nr 0 to 6.
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte14
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
RC ID0 ID1 ID2 ID3 F S Instr can_nr data0 data1 data2 C CRC.Byte1 CRC.Byte0 13 10 13 10
  • data0..2: These are the 3 data bytes containing the requested information:
    • Instr=0: data0 contains the number of Micro CAN's connected to the CAN Control with ID0..3. data1 and data2 can be ignored.
    • Instr=1: data0 contains ID0 of the requested Micro CAN, data1 contains ID1, data2 contains ID2
  • See Micro CAN Bootloader for more information how the Bootloader of the Micro CAN Remote Modules works
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte10

Reset Slave and wait x seconds

This instruction will reset the addressed RS485 slave module and put them in bootloader mode for x seconds.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 F R x C CRC.Byte1 CRC.Byte0 0 0 0 0 0 0 0 0 13 10 13 10
  • ID0..3 =ID of the module that needs to be brought in bootload mode
  • x= number of seconds the module will remain in bootloader mode.
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte6
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13
RC ID0 ID1 ID2 ID3 F R Err C CRC.Byte1 CRC.Byte0 13 10 13 10
  • Err: Error code received from module in Bootloader, see Bootloader Error Codes
  • See Bootloader for more information how the Bootloader of the Remote Modules works
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte6

Erase External Eeprom Slave Module

This instruction will erase the external Eeprom of the slave module and bring it back to factory reset. This instruction is only applicable for the CAN Control since this is the only module with an external eeprom built-in.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 F X Instr C CRC.Byte1 CRC.Byte0 0 0 0 0 0 0 0 0 13 10 13 10
  • ID0..3 =ID of the module that needs the eeprom to be erased.
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte6
  • Instr: Instruction will indicate which type of erase is requested. If Instr=0 then full erase is performed (=ID of the CAN modules will be erased, Eeprom of the CAN module will be erased, connected uCAN's will be erased), if instr=1 then only the Number of Inputs of the CAN control will be erased (the connected uCAN's inputs will be set to factory reset), if instr=2 then only the Number of sensors of the CAN control will be erased (the connected uCAN's sensors will be set to factory reset)
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13
RC ID0 ID1 ID2 ID3 F X Err C CRC.Byte1 CRC.Byte0 13 10 13 10
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte6
  • The response will be sent before the process of erasing starts so the response is not an indication of a successful erase. The erase typically takes multiple minutes and during the erase, the status led will flash until the process is done. Once done, the module internal and external eeprom will be erased including the module ID (the master can only communicate again with this module after the discovery process is executed).
  • Err: Error code received from module in Bootloader, see Bootloader Error Codes

Set Fw version of the new firmware to be loaded

This instruction will prepare the RS485 slave modules to receive new firmware. This instruction will only work when the remote module is in boot loader mode.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 F N F1N F2N F3N C CRC.Byte1 CRC.Byte0 0 0 0 0 0 0 13 10 13 10
  • ID0..3 = ID of the Slave module addressed
  • F1N, F2N and F3N: Major firmware version, minor and built of the new code section that will be loaded
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte8
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13
RC ID0 ID1 ID2 ID3 F N Err C CRC.Byte1 CRC.Byte0 13 10 13 10
  • Err: Error code received from module in Bootloader, see Bootloader Error Codes
  • See Bootloader for more information how the Bootloader of the Remote Modules works
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte6

Set CRC of the new firmware to be loaded

This instruction will write the full CRC of the new firmware version to be loaded. This instruction will only work when the remote module is in Bootloader mode.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 F C CRC3C CRC2C CRC1C CRC0C C CRC.Byte1 CRC.Byte0 0 0 0 0 0 13 10 13 10
  • ID0..3 = ID of the Slave module addressed
  • CRC3C, CRC2C, CRC1C and CRC0C: 4 bytes CRC of the new firmware to be written
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte9
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13
RC ID0 ID1 ID2 ID3 F C Err C CRC.Byte1 CRC.Byte0 13 10 13 10
  • Err: Error code received from module in Bootloader, see Bootloader Error Codes
  • See Bootloader for more information how the Bootloader of the Remote Modules works
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte6

Sent a block (64 bytes) of firmware

This instruction will upload 1 block (64 bytes) of new RS485 slave firmware to 1 RS485 slave. This instruction will only work when the remote module is in boot loader mode and when the API communication protocol of the Master Controller is put on 77 bytes (See API instruction “cm” in the API Reference Guide).

The goal of this instruction is to sent 1 block (64 bytes) of new firmware to 1 module.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 ... 71 72 73 74 75 76 77 78
ST ID0 ID1 ID2 ID3 F D Addr1 Addr0 Data0 Data1 ... Data63 C CRC.Byte1 CRC.Byte0 13 10 13 10
  • Addr1-0: Address of block to be written
  • Data0-63: This contains 1 block (64 bytes) of firmware.
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte71
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13
RC ID0 ID1 ID2 ID3 F D Err C CRC.Byte1 CRC.Byte0 13 10 13 10
  • Err: Error code received from module in Bootloader, see Bootloader Error Codes
  • See Bootloader for more information how the Bootloader of the Remote Modules works
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte6

End the Firmware upload and check integrity of the firmware with the programmed CRC

This instruction will end the firmware download operation of the RS485 slave module and will trigger the integrity check of the downloaded firmware. The variable ‘Err’ will indicate the result of the downloaded firmware. This instruction must be executed after full firmware download.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 F E C CRC.Byte1 CRC.Byte0 0 0 0 0 0 0 0 0 0 13 10 13 10
  • ID0..3 = ID of the Slave module addressed
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte5
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13
RC ID0 ID1 ID2 ID3 F E Err C CRC.Byte1 CRC.Byte0 13 10 13 10
  • Err: Error code received from module in Bootloader, see Bootloader Error Codes
  • See Bootloader for more information how the Bootloader of the Remote Modules works
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte6

Check Firmware version of the current firmware

This instruction will request version information from any RS485 slave device active on the RS485 bus.

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 F V C CRC.Byte1 CRC.Byte0 0 0 0 0 0 0 0 0 0 13 10 13 10
  • ID0..3 = ID of the Slave module addressed
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte5
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
RC ID0 ID1 ID2 ID3 F V Err Hw F1 F2 F3 Stat C CRC.Byte1 CRC.Byte0 13 10 13 10
  • Hw: Hardware version type
  • F1, F2 and F3: Major firmware version, minor and built of the active code section
  • Stat: status of the application firmware code and the Total CRC. (0 if match, 1 if some mismatch) (only updated if the FE command is send)
  • Err: Error code received from module in Bootloader, see Bootloader Error Codes
  • See Bootloader for more information how the Bootloader of the Remote Modules works
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte11

Goto to App mode (leave bootloader mode)

This instruction will put the slave module back in normal (App) mode (leave bootloader mode)

Request M->S
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ST ID0 ID1 ID2 ID3 F G C CRC.Byte1 CRC.Byte0 0 0 0 0 0 0 0 0 0 13 10 13 10
  • ID0..3 = ID of the Slave module addressed
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte5
Response S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13
RC ID0 ID1 ID2 ID3 F G Err C CRC.Byte1 CRC.Byte0 13 10 13 10
  • Err: Error code received from module in Bootloader, see Bootloader Error Codes
  • See Bootloader for more information how the Bootloader of the Remote Modules works
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte6

Message when pushing Init button

When the module is in Bootloader mode and the init button is pressed, the below message is sent.

Sent when init button is pressed S->M
' 0 1 2 3 4 5 6 7 8 9 10 11 12 13
RC ID0 ID1 ID2 ID3 F B Err C CRC.Byte1 CRC.Byte0 13 10 13 10
  • Err: Error code received from module in Bootloader, see Bootloader Error Codes
  • See Bootloader for more information how the Bootloader of the Remote Modules works
  • CRC.Byte1 (MSB) and CRC.Byte0 (LSB): Sum of Byte0 to Byte6