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
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
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
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
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.
