Isaver pool pump speed control MODBUS => Waveshare USB to RS485

Ah gotcha, there is a sensor already added in my code for this.
It’s a binary sensor called Pump On.

Makes sense, thanks! I’ve replaced both the esp32 and modbus matching your components but unfortunately I’m still having an issue with the “running” state. When the pump is off, the RPM is still reporting what it was previously so “Pump running” always reports “Running”

At the start of this log, the pump is actually off. Then I turn the pump on updates the pump RPM correctly to 2900rpm. I then turn the pump off (which does actually turn off the pump), but the reported RPM doesn’t update:

I’m using your code directly except for ota/api/wifi sections. Any idea what could be wrong here?

INFO ESPHome 2025.12.6
INFO Reading configuration /config/esphome/pool-pump.yaml...
INFO Starting log output from 172.16.44.156 using esphome API
INFO Successfully resolved pool-pump @ 172.16.44.156 in 0.000s
INFO Successfully connected to pool-pump @ 172.16.44.156 in 0.157s
INFO Successful handshake with pool-pump @ 172.16.44.156 in 0.300s
[21:15:18.133][I][app:194]: ESPHome version 2025.12.6 compiled on Jan 15 2026, 18:39:01
[21:15:18.135][C][logger:261]: Logger:
[21:15:18.135][C][logger:261]:   Max Level: DEBUG
[21:15:18.135][C][logger:261]:   Initial Level: DEBUG
[21:15:18.139][C][logger:267]:   Log Baud Rate: 115200
[21:15:18.139][C][logger:267]:   Hardware UART: USB_SERIAL_JTAG
[21:15:18.143][C][logger:274]:   Task Log Buffer Size: 768
[21:15:18.149][C][uart.idf:238]: UART Bus 0:
[21:15:18.152][C][uart.idf:239]:   TX Pin: GPIO21
[21:15:18.154][C][uart.idf:240]:   RX Pin: GPIO20
[21:15:18.159][C][uart.idf:243]:   RX Buffer Size: 256
[21:15:18.159][C][uart.idf:243]:   RX Full Threshold: 1
[21:15:18.159][C][uart.idf:243]:   RX Timeout: 2
[21:15:18.168][C][uart.idf:249]:   Baud Rate: 1200 baud
[21:15:18.168][C][uart.idf:249]:   Data Bits: 8
[21:15:18.168][C][uart.idf:249]:   Parity: NONE
[21:15:18.168][C][uart.idf:249]:   Stop bits: 1
[21:15:18.182][C][gpio.output:010]: Binary Output:
[21:15:18.188][C][gpio.output:011]:   Pin: GPIO5
[21:15:18.221][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:18.226][C][template.text_sensor:016]: Template Sensor 'Uptime (friendly)'
[21:15:18.228][C][template.number:016]: Template Number 'Pool Pump RPM'
[21:15:18.228][C][template.number:049]:   Optimistic: NO
[21:15:18.228][C][template.number:399]:   Update Interval: 60.0s
[21:15:18.233][C][template.sensor:017]: Template Sensor 'Current Pool Pump RPM'
[21:15:18.233][C][template.sensor:017]:   State Class: ''
[21:15:18.233][C][template.sensor:017]:   Unit of Measurement: 'RPM'
[21:15:18.233][C][template.sensor:017]:   Accuracy Decimals: 0
[21:15:18.239][C][template.sensor:395]:   Update Interval: never
[21:15:18.252][C][template.sensor:017]: Template Sensor 'Pump Power (W)'
[21:15:18.252][C][template.sensor:017]:   State Class: 'measurement'
[21:15:18.252][C][template.sensor:017]:   Unit of Measurement: 'W'
[21:15:18.252][C][template.sensor:017]:   Accuracy Decimals: 1
[21:15:18.253][C][template.sensor:027]:   Device Class: 'power'
[21:15:18.258][C][template.sensor:031]:   Icon: 'mdi:flash'
[21:15:18.265][C][template.sensor:399]:   Update Interval: 1.0s
[21:15:18.269][C][template.sensor:017]: Template Sensor 'Pump Flow (L/min)'
[21:15:18.269][C][template.sensor:017]:   State Class: ''
[21:15:18.269][C][template.sensor:017]:   Unit of Measurement: 'L/min'
[21:15:18.269][C][template.sensor:017]:   Accuracy Decimals: 1
[21:15:18.272][C][template.sensor:031]:   Icon: 'mdi:water-pump'
[21:15:18.276][C][template.sensor:399]:   Update Interval: 1.0s
[21:15:18.282][C][template.sensor:017]: Template Sensor 'Pump Energy (kWh, current run)'
[21:15:18.282][C][template.sensor:017]:   State Class: 'measurement'
[21:15:18.282][C][template.sensor:017]:   Unit of Measurement: 'kWh'
[21:15:18.282][C][template.sensor:017]:   Accuracy Decimals: 3
[21:15:18.290][C][template.sensor:027]:   Device Class: 'energy'
[21:15:18.290][C][template.sensor:399]:   Update Interval: 2.0s
[21:15:18.316][C][template.sensor:017]: Template Sensor 'WiFi Signal (%)'
[21:15:18.316][C][template.sensor:017]:   State Class: ''
[21:15:18.316][C][template.sensor:017]:   Unit of Measurement: '%'
[21:15:18.316][C][template.sensor:017]:   Accuracy Decimals: 1
[21:15:18.323][C][template.sensor:031]:   Icon: 'mdi:wifi'
[21:15:18.324][C][template.sensor:399]:   Update Interval: 30.0s
[21:15:18.325][C][uptime.sensor:017]: Uptime Sensor 'Uptime (s)'
[21:15:18.325][C][uptime.sensor:017]:   State Class: 'total_increasing'
[21:15:18.325][C][uptime.sensor:017]:   Unit of Measurement: 's'
[21:15:18.325][C][uptime.sensor:017]:   Accuracy Decimals: 0
[21:15:18.326][C][uptime.sensor:027]:   Device Class: 'duration'
[21:15:18.327][C][uptime.sensor:031]:   Icon: 'mdi:timer-outline'
[21:15:18.330][C][uptime.sensor:033]:   Type: Seconds
[21:15:18.333][C][template.binary_sensor:016]: Template Binary Sensor 'Pump Running'
[21:15:18.334][C][template.binary_sensor:019]:   Device Class: 'running'
[21:15:18.342][C][template.text_sensor:016]: Template Sensor 'Modbus Status'
[21:15:18.371][C][template.switch:092]: Template Switch 'Modbus Enabled'
[21:15:18.371][C][template.switch:092]:   Restore Mode: always OFF
[21:15:18.376][C][template.switch:055]:   Optimistic: YES
[21:15:18.379][C][template.switch:092]: Template Switch 'Pool Pump Power'
[21:15:18.379][C][template.switch:092]:   Restore Mode: always OFF
[21:15:18.383][C][template.switch:055]:   Optimistic: YES
[21:15:18.448][C][wifi_info:016]: SSID 'WiFi SSID'
[21:15:18.449][C][wifi_info:016]: BSSID 'WiFi BSSID'
[21:15:18.459][C][wifi_info:016]: MAC Address 'MAC Address'
[21:15:18.459][C][wifi_info:016]: IP Address 'IP Address'
[21:15:18.459][C][version.text_sensor:016]: Version Text Sensor 'ESPHome Version'
[21:15:18.460][C][version.text_sensor:023]:   Icon: 'mdi:new-box'
[21:15:18.460][C][internal_temperature:017]: Internal Temperature Sensor 'ESP Internal Temperature'
[21:15:18.460][C][internal_temperature:017]:   State Class: 'measurement'
[21:15:18.460][C][internal_temperature:017]:   Unit of Measurement: '°C'
[21:15:18.460][C][internal_temperature:017]:   Accuracy Decimals: 1
[21:15:18.464][C][internal_temperature:027]:   Device Class: 'temperature'
[21:15:18.482][C][restart.button:014]: Restart Button 'Restart ESP32'
[21:15:18.487][C][restart.button:017]:   Icon: 'mdi:restart'
[21:15:18.495][C][safe_mode.button:014]: Safe Mode Button 'Boot to Safe Mode'
[21:15:18.495][C][safe_mode.button:017]:   Icon: 'mdi:restart-alert'
[21:15:18.528][C][status:016]: Status Binary Sensor 'ESP32 Status'
[21:15:18.528][C][status:019]:   Device Class: 'connectivity'
[21:15:18.568][C][captive_portal:118]: Captive Portal:
[21:15:18.577][C][wifi:1132]: WiFi:
[21:15:18.577][C][wifi:1132]:   Connected: YES
[21:15:18.578][C][wifi:897]:   Local MAC: E4:B3:23:C0:17:6C
[21:15:18.582][C][wifi:904]:   IP Address: 172.16.44.156
[21:15:18.587][C][wifi:908]:   SSID: 'WifiOT'[redacted]
[21:15:18.587][C][wifi:908]:   BSSID: 6A:22:32:F7:31:A2[redacted]
[21:15:18.587][C][wifi:908]:   Hostname: 'pool-pump'
[21:15:18.587][C][wifi:908]:   Signal strength: -84 dB ▂▄▆█
[21:15:18.587][C][wifi:908]:   Channel: 6
[21:15:18.587][C][wifi:908]:   Subnet: 255.255.255.0
[21:15:18.587][C][wifi:908]:   Gateway: 172.16.44.254
[21:15:18.587][C][wifi:908]:   DNS1: 172.16.44.254
[21:15:18.587][C][wifi:908]:   DNS2: 0.0.0.0
[21:15:18.594][C][web_server:335]: Web Server:
[21:15:18.594][C][web_server:335]:   Address: pool-pump.local:80
[21:15:18.631][C][esphome.ota:092]: Over-The-Air updates:
[21:15:18.631][C][esphome.ota:092]:   Address: pool-pump.local:3232
[21:15:18.631][C][esphome.ota:092]:   Version: 2
[21:15:18.631][C][esphome.ota:099]:   Password configured
[21:15:18.633][C][safe_mode:018]: Safe Mode:
[21:15:18.633][C][safe_mode:018]:   Successful after: 60s
[21:15:18.633][C][safe_mode:018]:   Invoke after: 10 attempts
[21:15:18.633][C][safe_mode:018]:   Duration: 300s
[21:15:18.644][C][web_server.ota:241]: Web Server OTA
[21:15:18.644][C][api:211]: Server:
[21:15:18.644][C][api:211]:   Address: pool-pump.local:6053
[21:15:18.644][C][api:211]:   Listen backlog: 4
[21:15:18.644][C][api:211]:   Max connections: 8
[21:15:18.644][C][api:218]:   Noise encryption: YES
[21:15:18.655][C][wifi_signal.sensor:017]: WiFi Signal 'WiFi Signal (dB)'
[21:15:18.655][C][wifi_signal.sensor:017]:   State Class: 'measurement'
[21:15:18.655][C][wifi_signal.sensor:017]:   Unit of Measurement: 'dBm'
[21:15:18.655][C][wifi_signal.sensor:017]:   Accuracy Decimals: 0
[21:15:18.660][C][wifi_signal.sensor:027]:   Device Class: 'signal_strength'
[21:15:18.664][C][mdns:177]: mDNS:
[21:15:18.664][C][mdns:177]:   Hostname: pool-pump
[21:15:18.835][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[21:15:18.836][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[21:15:18.887][D][uart_debug:113]: <<< FC
[21:15:19.071][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:19.189][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:19.859][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[21:15:19.859][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[21:15:19.888][D][uart_debug:113]: <<< FC
[21:15:20.064][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:20.087][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57297 kWh with 3 decimals of accuracy
[21:15:20.178][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:20.582][D][switch:022]: 'Pool Pump Power' Turning ON.
[21:15:20.587][D][number:064]: 'Pool Pump RPM': Setting value
[21:15:20.594][D][number:123]:   New value: 2100.000000
[21:15:20.595][D][uart_debug:113]: <<< FC
[21:15:20.678][D][switch:065]: 'Pool Pump Power': Sending state ON
[21:15:20.721][D][uart_debug:113]: >>> AA:D0:0B:B9:08:34:0C:15
[21:15:20.829][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[21:15:20.835][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[21:15:21.830][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[21:15:21.837][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[21:15:21.900][D][uart_debug:113]: <<< AA:D0:0B:B9:00:02:00:FF
[21:15:22.076][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:22.111][D][sensor:135]: 'Current Pool Pump RPM': Sending state 2900.00000 RPM with 0 decimals of accuracy
[21:15:22.111][D][number:034]: 'Pool Pump RPM': Sending state 2900.000000
[21:15:22.111][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:22.112][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57320 kWh with 3 decimals of accuracy
[21:15:22.212][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:22.831][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:22.838][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:22.899][D][uart_debug:113]: <<< FF
[21:15:23.078][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:23.090][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:23.244][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:23.851][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:23.852][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:23.892][D][uart_debug:113]: <<< FF
[21:15:24.078][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:24.092][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:24.108][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57374 kWh with 3 decimals of accuracy
[21:15:24.199][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:24.838][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:24.844][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:24.894][D][uart_debug:113]: <<< FF
[21:15:25.080][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:25.092][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:25.199][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:25.842][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:25.849][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:25.900][D][uart_debug:113]: <<< FF
[21:15:26.074][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:26.098][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:26.116][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57429 kWh with 3 decimals of accuracy
[21:15:26.206][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:26.843][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:26.846][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:26.933][D][uart_debug:113]: <<< FF
[21:15:27.076][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:27.129][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:27.199][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:27.846][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:27.846][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:27.897][D][uart_debug:113]: <<< FF
[21:15:28.078][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:28.091][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:28.120][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57483 kWh with 3 decimals of accuracy
[21:15:28.200][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:28.871][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:28.871][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:28.898][D][uart_debug:113]: <<< FF
[21:15:29.085][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:29.097][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:29.207][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:29.842][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:29.848][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:29.900][D][uart_debug:113]: <<< FF
[21:15:30.099][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:30.099][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:30.118][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57537 kWh with 3 decimals of accuracy
[21:15:30.219][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:30.843][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:30.849][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:30.911][D][uart_debug:113]: <<< FF
[21:15:31.119][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:31.119][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:31.224][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:31.844][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:31.850][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:31.902][D][uart_debug:113]: <<< FF
[21:15:32.082][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:32.095][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:32.146][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57592 kWh with 3 decimals of accuracy
[21:15:32.216][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:32.863][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:32.864][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:32.913][D][uart_debug:113]: <<< FF
[21:15:33.086][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:33.097][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:33.205][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:33.852][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:33.887][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:33.905][D][uart_debug:113]: <<< FF
[21:15:34.091][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:34.098][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:34.119][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57646 kWh with 3 decimals of accuracy
[21:15:34.219][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:34.855][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:34.861][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:34.910][D][uart_debug:113]: <<< FF
[21:15:35.121][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:35.122][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:35.217][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:35.862][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:35.871][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:35.935][D][uart_debug:113]: <<< FF
[21:15:36.106][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:36.139][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:36.142][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57701 kWh with 3 decimals of accuracy
[21:15:36.242][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:36.870][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:36.876][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:36.926][D][uart_debug:113]: <<< FF
[21:15:37.113][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:37.128][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:37.234][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:37.888][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:37.889][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:37.927][D][uart_debug:113]: <<< FF
[21:15:38.113][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:38.124][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:38.130][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57755 kWh with 3 decimals of accuracy
[21:15:38.226][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:38.904][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:38.904][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:38.932][D][uart_debug:113]: <<< FF
[21:15:39.112][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:39.125][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[21:15:39.234][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[21:15:39.628][D][switch:026]: 'Pool Pump Power' Turning OFF.
[21:15:39.630][D][number:064]: 'Pool Pump RPM': Setting value
[21:15:39.634][D][number:123]:   New value: 0.000000
[21:15:39.642][D][uart_debug:113]: <<< FF
[21:15:39.723][D][switch:065]: 'Pool Pump Power': Sending state OFF
[21:15:39.767][D][uart_debug:113]: >>> AA:D0:0B:B9:00:01:CB:C2
[21:15:39.878][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:39.928][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:40.140][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57810 kWh with 3 decimals of accuracy
[21:15:40.881][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:40.888][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:40.952][D][uart_debug:113]: <<< AA:D0:0B:B9:00:02:00:FF
[21:15:41.117][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:41.262][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:41.884][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:41.895][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:41.945][D][uart_debug:113]: <<< FC
[21:15:42.129][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:42.145][D][sensor:135]: 'Uptime (s)': Sending state 4990.39600 s with 0 decimals of accuracy
[21:15:42.145][D][text_sensor:097]: 'Uptime (friendly)': Sending state '1 h 23 m 10 s'
[21:15:42.182][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57864 kWh with 3 decimals of accuracy
[21:15:42.283][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:42.899][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:42.899][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:42.942][D][uart_debug:113]: <<< FC
[21:15:43.127][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:43.138][D][sensor:135]: 'WiFi Signal (%)': Sending state 10.00000 % with 1 decimals of accuracy
[21:15:43.239][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:43.894][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:43.921][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:43.947][D][uart_debug:113]: <<< FE
[21:15:44.136][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:44.152][D][sensor:135]: 'ESP Internal Temperature': Sending state 38.90000 °C with 1 decimals of accuracy
[21:15:44.157][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57918 kWh with 3 decimals of accuracy
[21:15:44.257][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:44.893][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:44.899][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:44.948][D][uart_debug:113]: <<< FE
[21:15:45.145][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:45.151][D][sensor:135]: 'WiFi Signal (dB)': Sending state -78.00000 dBm with 0 decimals of accuracy
[21:15:45.255][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:45.893][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:45.900][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:45.972][D][uart_debug:113]: <<< FE
[21:15:46.136][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:46.175][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.57973 kWh with 3 decimals of accuracy
[21:15:46.278][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:46.896][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:46.902][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:46.954][D][uart_debug:113]: <<< FE
[21:15:47.134][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:47.251][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:47.916][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:47.917][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:47.954][D][uart_debug:113]: <<< FC
[21:15:48.143][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:48.171][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.58027 kWh with 3 decimals of accuracy
[21:15:48.254][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:48.896][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:48.906][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:48.953][D][uart_debug:113]: <<< FC
[21:15:49.145][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:49.254][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:49.905][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:49.912][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:49.963][D][uart_debug:113]: <<< FE
[21:15:50.168][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:50.170][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.58081 kWh with 3 decimals of accuracy
[21:15:50.273][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:50.905][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:50.911][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[21:15:50.990][D][uart_debug:113]: <<< FC
[21:15:51.151][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[21:15:51.292][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[21:15:51.911][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[21:15:51.912][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy

Does this happen all of the time or just sometimes?

I’ve had that occur maybe once a week, I’m adding some error checking to help find out why this occurs.

It’s a permanent issue on my setup.

I’m testing a fix for which also has more diagnostics
If it’s stable for 24 hours I’ll share it and maybe that can help show what’s going on with your setup.

1 Like

Looking to do something similar for my pool setup; Norsup Variable pool pump.

I’ve purchased this: Industrial RS485 to Ethernet Serial Server Modbus Gateway MQTT Gateway TCP/IP to Serial Module, Supports PoE Ethernet Port Power Supply, with Power and Signal Isolation Protection, Rail Mount : Amazon.co.uk: Computers & Accessories

14hrs in, fail fail fail :frowning:

If you look at earlier posts in this thread, it seems that these Aquagem devices don’t strictly follow modbus protocol. Because of that, they don’t work well or at all with out-of-the-box modbus gateways.

Hi there,

Thank you very much for all this work ! I have installed it and made it work correctly.

I did have some issues with the wiring (my previous deleted post), 20 minutes after posting I realized that I had badly wired RO and DI the other way round which needed to be wired with RX and TX respectively. Once that was resolved, it worked perfectly.

ESP wroom32 from SP cow (spare esp in my drawer)
5V MAX485 / RS485 TTL from Dollatek
Aqualux → French isaver+ reseller

Thank you !

Can you please try to the update I pushed to Github? It treats the states a little different and accounts for errors etc.

2 Likes

Thanks so much, I’ve only tested a few on/off cycles but it seems to be working perfectly now!

Thanks last update works great


My version of how to externalize the esp32 outside the isaver was to replace the contact sec (2 cables) with a thickness equivalent wire but with 4 cables (4G1.5mm) to avoid adding a new hole to the isaver. I then used a larger external wire box to host the esp32 / 485 set up and gave it enough wire length to place it somewhere with better wireless coverage.

I was hoping to have it all inside the isaver but that meant adding a 5v transformer inside and I was a little skeptical with how hot that can get during summer.

Since this update, when turning off “Pool pump power” it does turn off the actual pump, however, the last RPM in used is kept as well as power consumption and water flow (see image attached).

The following changes fixed the issue for me

Enabling reading low RPM Values:

// Treat very low readings as "stopped"
if (raw < 50) {
  raw = 0;
}

// Sanity filter: accept 0 (off) or plausible running range
if ((raw == 0) || (raw > 500 && raw < 4000)) {
  if (raw != (uint16_t)id(pump_rpm_state).state) {
    id(pump_rpm_state).publish_state(raw);
    id(pump_rpm).publish_state(raw);
  }
  id(modbus_status).publish_state("Online");
} else {
  // Still ignore obviously bad values if needed
}

set pump_rpm_state manually to 0 after turning off the pump power.

  - platform: template
    name: "Pool Pump Power"
    id: pump_power
    optimistic: true
    turn_on_action:
      - if:
          condition:
            lambda: |-
              return id(modbus_enabled);
          then:
            - lambda: |-
                id(pump_rpm).make_call().set_value(2100).perform();
          else:
            - logger.log: "Modbus disabled: skipping Power ON"
    turn_off_action:
      - if:
          condition:
            lambda: |-
              return id(modbus_enabled);
          then:
            - lambda: |-
                id(pump_rpm).make_call().set_value(0).perform();
                id(pump_rpm_state).publish_state(0);
          else:
            - logger.log: "Modbus disabled: skipping Power OFF"

Technically the first change should have been enough but I think it does not read the 0 value once it’s off. Second change forces the value to change to 0 and makes the rest of the values update accordingly (power consumption and water flow)

Hope this helps

Regards

Great, do we insert these lines anywhere? Otherwise, can you paste the entire hall file? Thanks