This software between the Mitsubishi Ecodan FTC controller and a MQTT Broker allows data to be read and commands to be sent.
Supported Hardware is ESP8266 ebay sold hardware: https://www.ebay.co.uk/itm/325967595655
M5Stack Atom S3 Lite
Download the files from the /build folder.
Download esptool.exe from Espressif.
Place all the files in the same folder, press and hold the side button of the M5Stack, locate the COM port your M5Stack is on
Open CMD prompt in the folder with the files saved and run:
esptool.exe --chip esp32s3 --port "COM12" --baud 921600 --before default_reset --after hard_reset write_flash -e -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x0 "ECODAN_Bridge_v5.2.0.bootloader.bin" 0x8000 "ECODAN_Bridge_v5.2.0.partitions.bin" 0xe000 "boot_app0.bin" 0x10000 "ECODAN_Bridge_v5.2.0.bin"
The Pins on the M5Stack are: 1 = Tx, 2 = Rx
Wemos D1 Mini
Download the files from the /build folder.
Download upload.py from Github
Place all the files in the same folder, locate the COM port your Wemos D1 Mini is on
Open CMD prompt in the folder with the files saved and run:
python upload.py --chip esp8266 --port "COM4" --baud "115200" "" erase_flash --before default_reset --after hard_reset write_flash 0x0 "ECODAN_Bridge_v5.2.1_WemosD1.bin"
The Pins on the Wemos D1 Mini are: D0 = Tx, D5 = Rx
For Ecodan ASHP Units this is the protocol decode information https://gitter.im/Mitsubishi-CN105-Protocol-Decode/community
Serial, 2400, 8, E, 1
Header | Payload | Checksum |
---|---|---|
5 Bytes | 16 Bytes | 1 Byte |
Sync Byte | Packet Type | Uknown | Unknown | Payload Size |
---|---|---|---|---|
0xfc | Type | 0x02 | 0x7a | Length |
0xfc
Value | Packet Type | Direction |
---|---|---|
0x41 | Set Request | To Heat Pump |
0x61 | Set Response | From Heat Pump |
0x42 | Get Request | To Heat Pump |
0x62 | Get Response | From Heat Pump |
0x5A | Connect Request | To Heat Pump |
0x5B | Get Request | To Heat Pump |
0x7A | Connect Response | From Heat Pump |
0x7B | Get Response | From Heat Pump |
0x5B | Extended Connect Request | To Heat Pump |
0x7B | Extended Connect Response | To Heat Pump |
Payload Size (Bytes)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Command | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | CHK |
Checksum = 0xfc - Sum ( PacketBytes[0..20]) ;
Active commands so far identified. | Command | Brief Description |
---|---|---|
0x32 | Update Settings | |
0x34 | Hot Water, Holiday and Prohibits | |
0x35 | Thermostat Setpoints |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x32 | Flags | Flags | P | Unk | DHW | HC1 | HC2 | DHWSP | DHWSP | Z1SP | Z1SP | Z2SP | Z2SP | MRC | MRC | CHK |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x34 | Flags | Flags | DHW | HOL | IDHW | Z1HI | Z1CI | Z2HI | CZ2I | SCM | Unk1 | Unk2 | Unk3 | Unk4 | Unk5 | CHK |
Flags (2 Bytes) : Flags to Indicate which fields are active
DHW : On (1) / Off (0)
HOL : On (1) / Off (0)
SCM : Server Control Mode On (1) / Off (0)
IDHW : Inhibit DHW On (1) / Off (0)
Unk1 : Unused (Sets 0x28 Byte 11)
Unk2 : Unused (Sets 0x28 Byte 12 - suspected)
Unk3 : Unused (Sets 0x28 Byte 13 - suspected)
Unk4 : Unused (Sets 0x28 Byte 14 - suspected)
Unk5 : Unused (Sets 0x28 Byte 15 - suspected)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x35 | Flags | Flags | CH | Z1SP | Z1SP | Z2SP | Z2SP | CHK |
Flags (2 Bytes) : Flags to Indicate which fields are active
CH : Cooling (1) /Heating (0)
Z1SP : Zone 1 Setpoint (* 100)
Z2SP : Zone 2 Setpoint (* 100)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0xC9 | 0x5F |
0x5F: Request
Active commands so far identified, 0x00 to 0xff. Commands not listed appear to generate no resaponse. Some command listed have empty, payload 0x00, response. | Command | Brief Description |
---|---|---|
0x01 | Time & Date | |
0x02 | Defrost | |
0x03 | Refrigerant and Zone Running Information | |
0x04 | Compressor Frequency | |
0x05 | Hot Water Boot Flag | |
0x06 | Unknown - Empty Response | |
0x07 | Output Power | |
0x08 | Unknown - Empty Response | |
0x09 | Zone 1 & 2 Temperatures and Setpoints, Hot Water Setpoint | |
0x0b | Zone 1 & 2 and Outside | Temperature |
0x0c | Water Flow Temperatures | |
0x0d | Boiler Flow Temperatures | |
0x0e | Thermistors 2 | |
0x0f | Thermistors 3 (FTC6+ Only) | |
0x10 | External sources | |
0x11 | Unknown | |
0x13 | Run Hours | |
0x14 | Primary Flow Rate | |
0x15 | Unknown Flags | |
0x16 | Running Pumps | |
0x17 | Unknown - Empty Response | |
0x18 | Unknown - Empty Response | |
0x19 | Unknown - Empty Response | |
0x1a | Unknown - Empty Response | |
0x1c | Unknown - Empty Response | |
0x1d | Unknown - Empty Response | |
0x1e | Unknown - Empty Response | |
0x1f | Unknown - Empty Response | |
0x20 | Unknown - Empty Response | |
0x26 | Various Operantion Mode Flags | |
0x27 | Unknown | |
0x28 | Various Operantion Mode Flags | |
0x29 | Zone 1 & 2 Temperatures | |
0xa1 | Consumed Energy | |
0xa2 | Delivered Energy |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Command | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Active commands so far identified. | Command | Brief Description |
---|---|---|
0x00 | OK |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Command | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Responses so far identified. | Command | Brief Description |
---|---|---|
0x01 | Time & Date | |
0x05 | Various Flags | |
0x09 | Zone 1 & 2 Temperatures and Setpoints, Hot Water Setpoint | |
0x0b | Zone 1 & 2 and Outside Temperature | |
0x0c | Water Flow Temperatures | |
0x0d | Boiler Flow Temperatures | |
0x26 | Various Operantion Mode Flags | |
0x28 | Various Operantion Mode Flags | |
0x29 | Zone 1 & 2 Temperatures |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x01 | Y | M | D | h | m | s |
Y: Year
M: Month
D: Day
h: Hour
m: Minute
s: Second
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x02 | R | D | HR? |
R: Own Refrigerant Address
D: Defrost
HR: Residual Heat Removal?
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x03 | RF | F1 | F2 | F3 | F4 | M | MF |
RF: Refrigerant Flt Code
F1: Fault Code * 100 + Flt Code (F2) (Numbers)
F3: Fault Code (Letter) 1
F4: Fault Code (Letter) 2
M: Multi Zone Running Parameter (3 = Z2 Working, 2 = Z1 Working, 1 = Both Zones working, 0 = Idle)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x04 | CF |
CF : Compressor Frequency
Slave Frequency in other bytes
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x05 | DE | HS | HW |
DE : Value of 7 given in various running modes
HS : Heat Source (Suspected) 0 = H/P, 1 = IH, 2 = BH, 3 = IH + BH, 4 = Boiler
HW : Hot Water Running Mode (0 = Off, 1 = Heat Pump Phase, 2 = Heater Phase (e.g. Immersion or Booster))
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x07 | I | P |
I : Input Power (kW) - 0 = 0-1kW, 1 = 1-2kW, 2 = 2-3kW etc.
P : Heater Power (to nearest kW)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x09 | Z1T | Z1T | Z2T | Z2T | Z1ST | Z1SP | Z2SP | Z2SP | LSP | LSP | HWD | FMx | FMn |
Z1T : Zone1 Target Temperature * 100
Z2T : Zone2 Target Temperature * 100;
Z1SP : Zone 1 Flow SetFlow Setpoint * 100
Z2SP : Zone 2 Flow SetFlow Setpoint * 100
LSP : Legionella Setpoint * 100
HWD : DHW Max Temp Drop -40 / 2
FMx : Flow Maximum Temperature -40 / 2
FMn : Flow Minimum Temperature -40 / 2
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0b | Z1T | Z1T | Z2T | Z2T | ? | ? | RT | RT | CT | O |
Z1T : Zone1 Temperature * 100
Z2T : Zone2 Temperature * 100
RT : Refrigerant Temperature * 100 (Where TH2 is installed)
CT : Condensing Temperature /2 - 40
O : Outside Temp /2 - 40
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0c | OF | OF | RF | RF | HW | HW | HW2 | HW2 |
OF : Heater Water Out Flow * 100
RF : Heater Return Flow Temperature * 100
HW : Hot Water Temperature * 100 (THW5 or THW5B)
HW2 : Hot Water Temperature * 100 (THW5A if installed)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0d | F1 | F1 | R1 | R1 | F2 | F2 | R2 | R2 |
F1 : Zone 1 Flow Temperature * 100 (Where THW6 installed)
R1 : Zone 1 Return Temperature * 100 (Where THW7 is installed)
F1 : Zone 2 Flow Temperature * 100 (Where THW8 installed)
R1 : Zone 2 Return Temperature * 100 (Where THW9 is installed)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0e | F | F | R | R |
F : Boiler Flow Temperature * 100 (Where THWB1 installed)
R : Boiler Return Temperature * 100 (Where THWB2 is installed)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0f | M | M | C | C |
M : Mixing Tank Temperature * 100 (Where THW10 is installed)
C : Condensing Temperature * 100
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x10 | Z1T | Z2T | OT |
Z1T: Hardwired/External (IN1) Thermostat 1 Demand (On/Off)
Z2T: Hardwired/External (IN6) Thermostat 2 Demand (On/Off)
OT: Hardwired/External (IN5) Outdoor Thermostat Demand (On/Off)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x10 | 1 | 3 | 4 | 5 | 6 |
Switch 1
Switch 3
Switch 4
Switch 5
Switch 6
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x13 | U | RH | RH | RH |
U : Unknown
RH: Run Hours
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x14 | B | I | PF |
B : Booster Heater Active
I : Immersion Heater Active
PF : Primary Flow Rate (l/min)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x15 | PP | U2 | U2 | P2 | TWV | TWV2 | U5 |
PP : Primary Water Pump (Pump 1/OUT1)
U2 : Unknown Int (3+4 Two Bytes?)
P2 : Water Pump 2 (OUT2)
TWV : Three Way Valve Active
TWV2 : Three Way Valve 2 Active (Suspected, if installed)
U5 : Unknown - Always shows 04?
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x16 | O4 | O3 | O13 |
O4 : Pump 4 (CPN4)
O13 : Pump Output (Out13)
O3 : Pump Output (Out3)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x26 | Pwr | OM | HW | OpZ1 | OpZ2 | HWSP | HWSP | HSP | HSP | SP | SP | ?? |
Pwr - Power
OM Operation Mode
HW - Hot Water Mode
Op - Operation Mode (Zone 1 / Zone 2):
HWSP : HotWater SetPoint * 100;
HSP : Heating Flow SetPoint * 100;
SP : External Flow SetPoint
?? : 1 for a few cycles when writing to 0x32 byte 14
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x28 | FHW | HM | HT | PHZ1 | PCZ1 | PHZ2 | PCZ2 | SC |
FHW : Forced DHW Mode Active
HM : Holiday Mode
HT : Prohibit DHW
PHZ1 : Prohibit Heating Zone1
PCZ1 : Prohibit Cooling Zone1
PHZ2 : Prohibit Heating Zone2
PCZ2 : Prohibit Cooling Zone2
SC : Server Control Mode Active
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x29 | HC | Z1T | Z1T | Z2T | Z2T |
HC : Heating (0) / Cooling (1)
Z1T : Zone1 Temperature * 100
Z2T : Zone2 Temperature * 100
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0xA1 | Y | M | D | Heat | Cool | DHW |
Y: Year
M: Month
D: Day
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0xA2 | Y | M | D | Heat | Cool | DHW |
Y: Year
M: Month
D: Day
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0xC9 | U1 | U2 | U3 | V |
U1: Version of Protocol (Upper/Lower) BCD
U2: Version of Model (Upper/Lower) BCD
U3: Capacity of Supply
V: FTC Version: 0: FTC2B 1: FTC4 2: FTC5 3: FTC6 5: FTC7 128: CAHV1A 129: CAHV1B 130: CRHV1A 131: CRHV1B 132: EAHV1A 133: EAHV1B 134: QAHV1A 135: QAHV1B 144: PWFY1