Controlling a Fairland Pool Heatpump eliminating Tuya

Here’s a picture. This is how I remember it. Maybe this is even more clear than my explanation.

1 Like

@Elwell I’ve got a Madimack heater and trying to follow your steps. I hate to ask such a dumb question, but do you remember how you got the first lid off your heater? I’ve taken the 5 screws off near the base of the panel with the LCD, but seems like there’s more to it to remove…I’m a little hesitant to apply too much force…

I’m pretty certain I just removed the top plastic cover (3 screws at back, one on each side) by removing the screws and pulling straight up. Once you’ve got that off, double check you’ve isolated the power and then each of the PCBs is in a metal box above the fan. On mine the main controller board (where the modbus connection goes) was in the largest box away from the power / water end, but I think I might have needed to unscrew one of the other lids too to get it off


(as you can see I’ve still not finished the new PCB and am still using the t-can485 board with a not terribly permanent enclosure)

Yup OK cool thanks, I’ll apply a bit more elbow grease then… :slight_smile:

Hello, i am Alexander from Germany.
My English is not so good.

I have reached a Manufactur in China about more Information about the Inverter.

The Inverter on my Machine ist extra. An this Inverter driver are controlled over Modbus from the Main PCB.

My Machine is running and heating my House. I will controll the Inverterdriver directly over an ESP32. But i cant shutdown my Heatpump for Testing this.

Maybe someone else can test it on their heat pump.

I will share the Information for everyone. I load the Pdf up on this Link.

Download - UploadNow.io[PDF Registers Inverter Driver]

Best Regards
Alex

Was für eine Pumpe hast du ? / What kind of pump do you have ?

I have finally built this, however I’m only able to switch on and off the PWP Power switch, change the temperature and change the PWP Operating mode and Power Mode.

All sensors just show ‘unknown’.

I’ve used a WEMOS S2 Mini, with pins 11 and 12 as RX/TX and pin 33 as the I2c SDA (pin D2 on the D1 Mini). Further I’ve changed the yaml file for RX/TX to GPIO11 and GPIO 12 and modbus to GPIO33.

Am I missing something?

Good evening, everyone. I managed to integrate my Fairland heat pump using the Modbus connection. I’m using a gateway purchased on AliExpress that allows me to convert Modbus RTU to Modbus TCP. I adapted the reading code from the ESP32 directly to Home Assistant and created some automations to make the error dynamic. If anyone is interested in the code, I can share it. I got some help from ChatGPT using the dedicated “Home Assistant Assistant” plugin.

Okay, success! I decided to use a NoneMCU Esp8266 and connected D5 (GPIO14) to RXD on the RS485 and D6 (GPIO12) to TXD on RS485. I changed the yaml code accordingly - it would only accept GPIOxx and not Dx.

I’m over the moon! Now to shorten all the wires to make it fit into the 3D printed case and then we’re good to go.

Thank you very much @rstcologne

1 Like

Thanks to this topic and info from various other forums (Tweakers), I was able to connect my Fairland (IPHCR45) heatpump.

I described my approach in this github repo, hope it helps others. Most info is gathered from this topic and Tweakers, credits to all of you!
https://github.com/spdr870/fairland_iphcr45_modbus/blob/c1983e31d576ac014c8a9f0d9b6d1d3f2f213594/readme.md

The result:

3 Likes
  • I have found DIP switch 4 on the MWH298 in the OFF position allows Heating only and in the ON position enables Heating/Cooling/Auto.

  • The control panel in this picture has WiFi built-in.

  • The MODBUS coil #6 is not ‘Silence’, it actually shows the status of ‘Remote Demand’, which from factory has a link between the two pins on port DIN2 on the MWH298 PCB. I use this port with a remote relay on my pool controller to signal heat pump demand.

1 Like
  • The compressor target frequency and running frequency need to be multiplied by 4 to get the true value (30-360Hz is the running range of the Mitsi compressor). This may vary depending on the compressor in your heatpump and the configuration settings.

  • OUT2 is the relay that signals the Inverter PCB to power it on or off. You could use this to define a Standby mode.

  • If you use the Waveshare RS485 to WiFi/Ethernet adapter, it can be housed within the top electrical box, with the antenna pointing through a cable hole. An ethernet cable if required can be routed through to where the power connects, negating the need to build external enclosures etc. I have used a spare JST 5 connector that I found and cut the side of the modbus JST 4 port on the main PCB to make it fit. It powers the Waveshare device with no problems.


Anybody had any success with controlling a Hydro-Pro inverter with ESPhome? I’ve got a M5Stack atom paired with a RS485. I;ve flashed below yaml:


Probably doing everything wrong :S

1 Like

I reflashed and now i’ve got some logs:

INFO ESPHome 2025.4.2
INFO Reading configuration /config/esphome/esphome-web-5e606c.yaml...
INFO Starting log output from 192.168.1.205 using esphome API
INFO Successfully connected to pool-wp @ 192.168.1.205 in 0.061s
INFO Successful handshake with pool-wp @ 192.168.1.205 in 0.019s
[16:04:32][I][app:100]: ESPHome version 2025.4.2 compiled on May 16 2025, 15:51:35
[16:04:32][C][wifi:600]: WiFi:
[16:04:32][C][wifi:428]:   Local MAC: 34:B7:DA:5E:60:6C
[16:04:32][C][wifi:433]:   SSID: 'Proost!'[redacted]
[16:04:32][C][wifi:436]:   IP Address: 192.168.1.205
[16:04:32][C][wifi:440]:   BSSID: 7A:83:C2:91:33:58[redacted]
[16:04:32][C][wifi:441]:   Hostname: 'pool-wp'
[16:04:32][C][wifi:443]:   Signal strength: -57 dB ▂▄▆█
[16:04:32][C][wifi:447]:   Channel: 6
[16:04:32][C][wifi:448]:   Subnet: 255.255.255.0
[16:04:32][C][wifi:449]:   Gateway: 192.168.1.1
[16:04:32][C][wifi:450]:   DNS1: 192.168.1.1
[16:04:32][C][wifi:451]:   DNS2: 0.0.0.0
[16:04:32][C][logger:177]: Logger:
[16:04:32][C][logger:178]:   Max Level: DEBUG
[16:04:32][C][logger:179]:   Initial Level: DEBUG
[16:04:32][C][logger:181]:   Log Baud Rate: 115200
[16:04:32][C][logger:182]:   Hardware UART: USB_CDC
[16:04:32][C][logger:186]:   Level for 'button': WARN
[16:04:32][C][logger:186]:   Level for 'component': ERROR
[16:04:32][C][logger:186]:   Level for 'esp32.preferences': WARN
[16:04:32][C][logger:186]:   Level for 'modbus.number': WARN
[16:04:32][C][logger:186]:   Level for 'modbus_controller.output': WARN
[16:04:32][C][logger:186]:   Level for 'modbus_controller.sensor': WARN
[16:04:32][C][logger:186]:   Level for 'number': WARN
[16:04:32][C][logger:186]:   Level for 'sensor': WARN
[16:04:32][C][logger:186]:   Level for 'switch': WARN
[16:04:32][C][logger:186]:   Level for 'text_sensor': WARN
[16:04:32][C][uart.arduino_esp32:151]: UART Bus 0:
[16:04:32][C][uart.arduino_esp32:152]:   TX Pin: GPIO6
[16:04:32][C][uart.arduino_esp32:153]:   RX Pin: GPIO5
[16:04:32][C][uart.arduino_esp32:155]:   RX Buffer Size: 256
[16:04:32][C][uart.arduino_esp32:157]:   Baud Rate: 9600 baud
[16:04:32][C][uart.arduino_esp32:158]:   Data Bits: 8
[16:04:32][C][uart.arduino_esp32:159]:   Parity: NONE
[16:04:32][C][uart.arduino_esp32:160]:   Stop bits: 1
[16:04:32][C][modbus:165]: Modbus:
[16:04:32][C][modbus:167]:   Send Wait Time: 250 ms
[16:04:32][C][modbus:168]:   CRC Disabled: NO
[16:04:32][C][template.sensor:022]: Template Sensor 'PWP Compressor Power'
[16:04:32][C][template.sensor:022]:   State Class: ''
[16:04:32][C][template.sensor:022]:   Unit of Measurement: 'W'
[16:04:32][C][template.sensor:022]:   Accuracy Decimals: 1
[16:04:32][C][template.sensor:023]:   Update Interval: 1.0s
[16:04:32][C][uptime.sensor:033]: Uptime Sensor 'PWP Uptime'
[16:04:32][C][uptime.sensor:033]:   Device Class: 'duration'
[16:04:32][C][uptime.sensor:033]:   State Class: 'total_increasing'
[16:04:32][C][uptime.sensor:033]:   Unit of Measurement: 'days'
[16:04:32][C][uptime.sensor:033]:   Accuracy Decimals: 1
[16:04:32][C][uptime.sensor:033]:   Icon: 'mdi:timer-outline'
[16:04:32][C][uptime.sensor:034]:   Type: Seconds
[16:04:32][C][restart.button:017]: Restart Button 'Restart'
[16:04:32][C][restart.button:017]:   Icon: 'mdi:restart'
[16:04:32][C][modbus_controller:349]: ModbusController:
[16:04:32][C][modbus_controller:350]:   Address: 0x01
[16:04:32][C][modbus_controller:351]:   Max Command Retries: 4
[16:04:32][C][modbus_controller:352]:   Offline Skip Updates: 0
[16:04:32][C][modbus_controller.switch:068]: modbus_controller.switchModbus Controller Switch 'PWP Power Switch'
[16:04:32][C][modbus_controller.switch:091]: modbus_controller.switch  Restore Mode: disabled 
[16:04:32][C][modbus_controller.select:009]: modbus_controller.selectModbus Controller Select 'PWP Operating Mode'
[16:04:32][C][modbus_controller.select:009]: modbus_controller.selectModbus Controller Select 'PWP Power Mode'
[16:04:32][C][copy.sensor:015]: Copy Sensor 'PWP Wifi'
[16:04:32][C][copy.sensor:015]:   Device Class: 'signal_strength'
[16:04:32][C][copy.sensor:015]:   State Class: 'measurement'
[16:04:32][C][copy.sensor:015]:   Unit of Measurement: '%'
[16:04:32][C][copy.sensor:015]:   Accuracy Decimals: 0
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error E0'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error E1 - High Pressure Protection'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error E2 Low Pressure Protection'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Warning E3 No Water Protection'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error E4 3 phase sequence protection'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][W][modbus_controller:186]: Duplicate modbus command found: type=0x1 address=0 count=1
[16:04:32][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=48 count=15
[16:04:32][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=64 count=32
[16:04:32][W][modbus_controller:186]: Duplicate modbus command found: type=0x3 address=0 count=5
[16:04:32][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=2 count=3
[16:04:32][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=10 count=2
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Warning E5 Power Supply Excesses Operation Range'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Warning E6 Insufficient Water Flow'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error E7 Water Outlet Temp too high or too low'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error E8 High Exhaust Temp Protection'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error E9'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error EA Evaporator overheat protection'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Warning EB Ambient Temperature too high or too low'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error EC'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Warning  ED Anti-Freezing Reminder'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error EF'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error P0 Controller Communication Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error P1 Water Inlet Temp Sensor Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error P2 Water Outlet Temp Sensor Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error P3 Gas Exhaust Temp Sensor Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error P4 Evaporator Coil Pipe Temp Sensor Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error P5 Gas Return Temp Sensor Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error P6 Cooling Coil Pipe Temp Sensor Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error P7 Ambient Temp Sensor Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error P8 Cooling Plate Sensor Failiure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error P9 Current Sensor Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error PA Restart Memory Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error PB'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error PC'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][D][modbus_controller:040]: Modbus command to device=1 register=0x02 no response received - removed from send queue
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error PD'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error PE'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error PF'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error F0'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error F1 Compressor Drive Module Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error F2 PFC Module Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error F3 Compressor Start Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error F4 Compressor Running Failure'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error F5 Inverter Board Over Current Protection'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error F6 Inverter Board Over Temperature Protection'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:32][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error F7 Current Protection'
[16:04:32][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:33][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error F8 Cooling Plate Overheat Protection'
[16:04:33][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:33][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error F9 Fan Motor Failure'
[16:04:33][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:33][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error FA PFC Module Over Current Protection'
[16:04:33][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:33][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error FB Power Filter Plate No-Power Protection'
[16:04:33][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:33][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error FC'
[16:04:33][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:33][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error FD'
[16:04:33][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:33][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error FE'
[16:04:33][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:33][C][modbus_controller.binary_sensor:009]: Modbus Controller Binary Sensor 'PWP Error FF'
[16:04:33][C][modbus_controller.binary_sensor:009]:   Device Class: 'problem'
[16:04:33][C][captive_portal:089]: Captive Portal:
[16:04:33][C][web_server:285]: Web Server:
[16:04:33][C][web_server:286]:   Address: pool-wp.local:80
[16:04:33][C][sntp:042]: SNTP Time:
[16:04:33][C][sntp:045]:   Server 0: '0.pool.ntp.org'
[16:04:33][C][sntp:045]:   Server 1: '1.pool.ntp.org'
[16:04:33][C][sntp:045]:   Server 2: '2.pool.ntp.org'
[16:04:33][C][mdns:116]: mDNS:
[16:04:33][C][mdns:117]:   Hostname: pool-wp
[16:04:33][C][esphome.ota:073]: Over-The-Air updates:
[16:04:33][C][esphome.ota:074]:   Address: pool-wp.local:3232
[16:04:33][C][esphome.ota:075]:   Version: 2
[16:04:33][C][safe_mode:018]: Safe Mode:
[16:04:33][C][safe_mode:020]:   Boot considered successful after 60 seconds
[16:04:33][C][safe_mode:021]:   Invoke after 10 boot attempts
[16:04:33][C][safe_mode:023]:   Remain in safe mode for 300 seconds
[16:04:33][C][api:140]: API Server:
[16:04:33][C][api:141]:   Address: pool-wp.local:6053
[16:04:33][C][api:145]:   Using noise encryption: NO
[16:04:33][C][wifi_signal.sensor:010]: WiFi Signal 'wifi_signal_db'
[16:04:33][C][wifi_signal.sensor:010]:   Device Class: 'signal_strength'
[16:04:33][C][wifi_signal.sensor:010]:   State Class: 'measurement'
[16:04:33][C][wifi_signal.sensor:010]:   Unit of Measurement: 'dBm'
[16:04:33][C][wifi_signal.sensor:010]:   Accuracy Decimals: 0
[16:04:34][D][modbus_controller:040]: Modbus command to device=1 register=0x30 no response received - removed from send queue
[16:04:34][W][modbus_controller:186]: Duplicate modbus command found: type=0x1 address=0 count=1
[16:04:34][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=64 count=32
[16:04:34][W][modbus_controller:186]: Duplicate modbus command found: type=0x3 address=0 count=5
[16:04:34][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=0 count=1
[16:04:34][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=10 count=2
[16:04:35][D][modbus_controller:040]: Modbus command to device=1 register=0x0A no response received - removed from send queue
[16:04:36][W][modbus_controller:186]: Duplicate modbus command found: type=0x1 address=0 count=1
[16:04:36][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=48 count=15
[16:04:36][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=64 count=32
[16:04:36][W][modbus_controller:186]: Duplicate modbus command found: type=0x3 address=0 count=5
[16:04:36][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=0 count=1
[16:04:36][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=2 count=3
[16:04:36][D][modbus_controller:040]: Modbus command to device=1 register=0x40 no response received - removed from send queue
[16:04:38][D][modbus_controller:040]: Modbus command to device=1 register=0x00 no response received - removed from send queue
[16:04:38][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=48 count=15
[16:04:38][W][modbus_controller:186]: Duplicate modbus command found: type=0x3 address=0 count=5
[16:04:38][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=0 count=1
[16:04:38][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=2 count=3
[16:04:38][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=10 count=2
[16:04:39][D][modbus_controller:040]: Modbus command to device=1 register=0x00 no response received - removed from send queue
[16:04:40][W][modbus_controller:186]: Duplicate modbus command found: type=0x1 address=0 count=1
[16:04:40][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=48 count=15
[16:04:40][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=64 count=32
[16:04:40][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=0 count=1
[16:04:40][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=2 count=3
[16:04:40][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=10 count=2
[16:04:40][D][modbus_controller:040]: Modbus command to device=1 register=0x00 no response received - removed from send queue
[16:04:42][D][modbus_controller:040]: Modbus command to device=1 register=0x30 no response received - removed from send queue
[16:04:42][W][modbus_controller:186]: Duplicate modbus command found: type=0x1 address=0 count=1
[16:04:42][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=64 count=32
[16:04:42][W][modbus_controller:186]: Duplicate modbus command found: type=0x3 address=0 count=5
[16:04:42][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=2 count=3
[16:04:42][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=10 count=2
[16:04:43][D][modbus_controller:040]: Modbus command to device=1 register=0x02 no response received - removed from send queue
[16:04:44][W][modbus_controller:186]: Duplicate modbus command found: type=0x1 address=0 count=1
[16:04:44][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=48 count=15
[16:04:44][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=64 count=32
[16:04:44][W][modbus_controller:186]: Duplicate modbus command found: type=0x3 address=0 count=5
[16:04:44][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=0 count=1
[16:04:45][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=10 count=2
[16:04:45][D][modbus_controller:040]: Modbus command to device=1 register=0x0A no response received - removed from send queue
[16:04:46][D][modbus_controller:040]: Modbus command to device=1 register=0x00 no response received - removed from send queue
[16:04:46][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=48 count=15
[16:04:46][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=64 count=32
[16:04:46][W][modbus_controller:186]: Duplicate modbus command found: type=0x3 address=0 count=5
[16:04:46][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=0 count=1
[16:04:46][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=2 count=3
[16:04:47][D][modbus_controller:040]: Modbus command to device=1 register=0x40 no response received - removed from send queue
[16:04:48][W][modbus_controller:186]: Duplicate modbus command found: type=0x1 address=0 count=1
[16:04:48][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=48 count=15
[16:04:48][W][modbus_controller:186]: Duplicate modbus command found: type=0x3 address=0 count=5
[16:04:48][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=0 count=1
[16:04:48][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=2 count=3
[16:04:48][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=10 count=2
[16:04:48][D][modbus_controller:040]: Modbus command to device=1 register=0x00 no response received - removed from send queue
[16:04:50][D][modbus_controller:040]: Modbus command to device=1 register=0x30 no response received - removed from send queue
[16:04:50][W][modbus_controller:186]: Duplicate modbus command found: type=0x1 address=0 count=1
[16:04:50][W][modbus_controller:186]: Duplicate modbus command found: type=0x2 address=64 count=32
[16:04:50][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=0 count=1
[16:04:50][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=2 count=3
[16:04:50][W][modbus_controller:186]: Duplicate modbus command found: type=0x4 address=10 count=2

Nobody who can help?

Can anyone confirm the availability of the super silent mode?
I have the big X20-40CT which seems only to have:
0 - Silent (60%)
1 - Smart (20-100%)
2 - Boost (120%)

I have a different heat pump but with the exact same main PCB. There are two PCBs, one that connects to COM1 and serves the screen and the modbus port on the outside of the box, and the main inverter PCB in your photo. The modbus commands available though this port are very limited, but you can do basic control. I have had limited success connecting directly to the COM2 port, I have connected a Waveshare RS485 device there but am getting an error for every read request. Did you get any further?

Just wanted to say thanks here, as I just successfully implemented your ESPHome Solution for my Failand Heatpump!
@rstcologne : Do you have some way for me to buy you a beer? Have Patreon or something? Just send me a DM.

1 Like

I’m a bit stuck. We’ve got a Fairland heatpump with the round 4-pin connector on the outside. I found the pin-layout on one of the forums and the ESP32 is now being powered by the heatpump, so GND and 12v are correct. I think I’ve also connected A and B correct. (I tried switching them as well.)
For the ESP32 I have a Seeed Studio XIAO ESP32-S3 with a RS485 expansion board. (see links)

The documentation of the expansion board is a bit confusing. The code example says
“mySerial.begin(115200, SERIAL_8N1, 7, 6); // RX=D4(GPIO6), TX=D5(GPIO7)”
but later it says
“mySerial.begin(115200, SERIAL_8N1, 7, 6);: RX=D4(GPIO4), TX=D5(GPIO5).”

and looking the drawing of the ESP32S3 it says that D4 is GPIO5 and D5 is GPIO6.

Now, I’ve tried all different combinations of this, but I’m not getting any response from the heatpump.

Anyone with any ideas how I can debug this some more, or do I have a mistake in my config?

uart:
  - id: uart_modbus
    tx_pin: GPIO7
    rx_pin: GPIO6
    baud_rate: 9600
    debug:
      direction: BOTH
      dummy_receiver: false
      after:
        timeout: 1s
      sequence:
        - lambda: UARTDebug::log_hex(direction, bytes,' ');

modbus:
  - uart_id: uart_modbus
    id: modbus_client

modbus_controller:
  - id: fairland
    modbus_id: modbus_client
    address: 0x0001
    update_interval: 5s

switch:
  - platform: modbus_controller
    modbus_controller_id: fairland
    name: "PWP Power Switch"
    id: pwp_power_switch
    register_type: coil
    address: 0x0

Thanks in advance.

esp32: Getting Started with Seeed Studio XIAO ESP32S3 Series | Seeed Studio Wiki
RS485: RS485 Expansion Board for XIAO | Seeed Studio Wiki