AQUARK Mr.Pure Medium MPS14 -ph

All,
I am planning my pool and as I am a HA user, of course I was looking which Salt System I could use to have a good implementation into HA. Here in Germany, I can not find user experiences with the Aquark Mr. Pure MPS22. May I ask you guys before I buy? Do you have good experience with the unit? I am planning for a 25 qubicmeter pool which is 25.000 Liter, which is 6600 gallons. Does the Mr. Pure work good? Would be a MPS22 really enough for this size of pool as described by the manufacturer and would you recommend the system?

You have several models according to your pool dimension.
My pool is about 26m3 and the MPS14 production is more than enough

1 Like

Exactly, msp14 is enough for you, my experience so far is very good, I’m already in my second season, you always need to calibrate the probes at the beginning of the season, calibration is a separate chapter, you need to follow certain procedures and it goes like clockwork. There is also good support via chat on the aquark website

1 Like

Just got my kit to work.
Got exactly what was on this thread:
• M8 3-pin (male) connector
• M5Stack ATOM Lite ESP32 Development Board with Wi-Fi Programmable Kit
• M5Stack ATOM Tail485 TTL to RS485 communication module (Level conversion serial port)

My Mr Pure Manual (Version 3, December 2024), RS485 PINOUT:
PIN1 - 485-A
PIN3 - 485-GND
PIN4 - 485-N

Cant thank enough @maros22 for putting this together! It’s truly a rest to have all that info in Home Assistant!

Hi Maros,
Thanks for all the good work.
I will be installing one of these very soon.

I see you are also controlling a INVERPRO filter pump.
I will be using one of those too. How did you integrated it on HA? Also MODBUS? Do you have a adress table?

Also I am thinking of using a W32-eth0 module plus a rs485 ttl converter. Any advise for the rs485 adapter board I should use?

Thanks in advance.

Great work, mine is working perfectly, just had to adjust:

  - platform: modbus_controller
    modbus_controller_id: mrpure
    name: "Electrical conductivity"
    id: conductivity_pool
    register_type: read
    address: 0x0002
    skip_updates: 2
    value_type: U_WORD    
    unit_of_measurement: "ppm"
    filters:
       - multiply: 0.5

in the app the value was reading half of what ESP was outputting, this filter, fixes it.

Cheers

1 Like
esphome:
  name: inverpro
  friendly_name: Inverpro

esp32:
  board: m5stack-atom
  framework:
    type: arduino

# Enable logging
logger: 
  baud_rate: 0
  level: VERY_VERBOSE
  hardware_uart: UART0

# Enable Home Assistant API
api:
  encryption:
    key: "xxxx"

ota:
  - platform: esphome
    password: "xxxxxxx"

wifi:
  ssid: !secret wifi3_ssid
  password: !secret wifi3_password
  manual_ip:
    static_ip: 192.168.5.68
    gateway: 192.168.5.2
    subnet: 255.255.255.0
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Inverpro Fallback Hotspot"
    password: "xxxxx"

captive_portal:
web_server:
  port: 80
uart:
  id: mod_bus
  rx_pin: 32
  tx_pin: 26
  baud_rate: 9600
  
modbus:
#  flow_control_pin: GPIO4
  id: modbus1
  send_wait_time: 300ms

modbus_controller:
  - id: inverpro
    ## the Modbus device addr
    address: 170
    modbus_id: modbus1
    update_interval: 8s   


 


number:
  
  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: Power
    address: 3001
    use_write_multiple: true
    unit_of_measurement: "%"
    id: inverpro_power
    value_type: U_WORD
    min_value: 0
    max_value: 130
    step: 5
    mode: slider
    device_class: power
    


      
   
    
    

sensor:
  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: Power
    address: 2003
    register_type: holding
    unit_of_measurement: "%"
    id: inverpro_power_sensor
    value_type: U_WORD

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: Capacity
    address: 2004
    register_type: holding
    unit_of_measurement: "%"
    id: inverpro_capacity
    value_type: U_WORD  
    filters:
      - lambda: return x /10;
  - platform: wifi_signal
    name: "WiFi signál Inverpro"
    update_interval: 60s    
switch:
  - platform: template
    name: "Pump ON/OFF"
    id: pump_toggle
    icon: "mdi:toggle-switch"
    optimistic: true  
    turn_on_action:
      - number.set:
          id: inverpro_power
          value: 70   
    turn_off_action:
      - number.set:
          id: inverpro_power
          value: 0    
button:
  - platform: template
    name: "Pump Normal Mode"
    icon: "mdi:speedometer-slow"
    on_press:
      - number.set:
          id: inverpro_power
          value: 70

  - platform: template
    name: "Pump Boost Mode"
    icon: "mdi:speedometer-medium"
    on_press:
      - number.set:
          id: inverpro_power
          value: 90

  - platform: template
    name: "Pump Full Mode"
    icon: "mdi:speedometer"
    on_press:
      - number.set:
          id: inverpro_power
          value: 120  
select:
  - platform: template
    name: "Pump Power Preset"
    optimistic: true
    options:
      - "Normal"
      - "Boost"
      - "Full"
    initial_option: "Normal"
    on_value:
      then:
        - lambda: |-
            if (x == "Normal") {
              id(inverpro_power).make_call().set_value(70).perform();
            } else if (x == "Boost") {
              id(inverpro_power).make_call().set_value(90).perform();
            } else if (x == "Full") {
              id(inverpro_power).make_call().set_value(120).perform();
            }
 
  
text_sensor:
  - platform: modbus_controller
    modbus_controller_id: inverpro
    id: reg_2002_text
    bitmask: 0
    register_type: holding
    address: 2002
    raw_encode: HEXBYTES
    name: Čerpadlo
    icon: "mdi:pump"
    lambda: |-
      uint16_t value = modbus_controller::word_from_hex_str(x, 0);
      switch (value) {
        case 1: return std::string("ON");
        case 0: return std::string("OFF");
        
        default: return std::string("Unknown");
      }
      return x;
    
binary_sensor:
  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "DC voltage Abnormal"
    id: err01
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x1
    device_class: problem
    entity_category: diagnostic
  
  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "AC current sampling circuit failure"
    id: err02
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x2
    device_class: problem 
    entity_category: diagnostic 

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "Phase-deficient protection"
    id: err03
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x4
    device_class: problem 
    entity_category: diagnostic   

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "Master drive error"
    id: err04
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x8
    device_class: problem 
    entity_category: diagnostic  

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "Heat sink sensor error"
    id: err05
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x16
    device_class: problem 
    entity_category: diagnostic  

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "Heat sink over"
    id: err06
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x32
    device_class: problem 
    entity_category: diagnostic  

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "Output current exceeds limit"
    id: err07
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x64
    device_class: problem 
    entity_category: diagnostic  
  
  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "Input voltage abnormal"
    id: err08
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x128
    device_class: problem 
    entity_category: diagnostic  

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "No water protection"
    id: err09
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x256
    device_class: problem 
    entity_category: diagnostic    

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "Device communication failure"
    id: err10
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x512
    device_class: problem 
    entity_category: diagnostic      

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "EEPROM reading failure"
    id: err11
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x1024
    device_class: problem 
    entity_category: diagnostic        

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "RTC time reading Error"
    id: err12
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x2048
    device_class: problem 
    entity_category: diagnostic   

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "Master board EEPROM"
    id: err13
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x4096
    device_class: problem 
    entity_category: diagnostic     

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "Motor current detection Error"
    id: err14
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x8192
    device_class: problem 
    entity_category: diagnostic    

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "Motor power overload"
    id: err15
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x16384
    device_class: problem 
    entity_category: diagnostic   

  - platform: modbus_controller
    modbus_controller_id: inverpro
    name: "PFC protection"
    id: err16
    icon: "mdi:check-circle"
    register_type: holding
    address: 2001
    bitmask: 0x32768
    device_class: problem 
    entity_category: diagnostic
1 Like

Anyone tried Tuya Local? Is it working? I’m considering buying it, but want to use the integrated WiFi and I’m using Tuya Local anyway for other automations.

Hey,
These devices are advertised as using inverter technology.
I asked a dealer whether the power output is controlled via PWM or via current. The answer was that it’s controlled via current. Has anyone actually measured this?

Best

Hi maross22,

i am planing to buy MPS14 Premium and i wanna controll from HA. If I understand, I must buy connector and two device what you wrote and only cinnect to MPS14 with coonector and setup esphome? Thanks for help

Correct, i just did the same, works fine. I did have to switch the cables around a bit to the the RS485 connection going.