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

I put it on Github:

Enjoy :smiley:

1 Like

Absolute LEGEND.

Thank you

Hi, I have just installed this variable speed drive and all is working well. Thank you for your work on this. I have seen that the unit displays the power consumption in watts, is it possible to send this information back to HA?

No, this is not possible. I track the power consumption with an PZEM-004T.

OK Thanks I will just put a power meter on the feed to my pool tech space.

I am a noob +++.
I am only starting with HA on a raspberry pi.
I want to be able to control this frequency inverter through HA, and also set some automations later on.
I want to connect the saver with a usb to rs485 connector. That worked. HA ‘sees’ it on usb0.
If I’m right , the code provided here is written for using an esp (so wirelessly?) instead of a usb-connection. Is there a way to get somewhere this code for a direct usb connection ?

For starters, this is my configuration (chatgpt helped)
modbus:

  • name: “isaver”
    type: serial
    method: rtu
    port: /dev/ttyUSB0
    baudrate: 9600
    stopbits: 1
    bytesize: 8
    parity: N
    delay: 2
    timeout: 1

    sensors:

    • name: “Pump Power Consumption”
      slave: 1
      address: 0x1004
      input_type: holding
      unit_of_measurement: “W”
      data_type: uint16
      unique_id: “pump_power_consumption_sensor”

    • name: “Pump Frequency”
      slave: 1
      address: 0x1001
      input_type: holding
      unit_of_measurement: “Hz”
      data_type: uint16
      unique_id: “pump_frequency_sensor”

    switches:

    • name: “Pump On/Off”
      slave: 1
      write_type: holding
      address: 0x1000
      command_on: 1
      command_off: 0
      unique_id: “switch.pump_on_off_2”

(But it’s not working yet)

if someone wan’t to retrofit the external control (modbus,digital,analog) for the newer iSaverX models, like:

you can find this and also a more advanced esphome (8266) configuration here:

bye

I have Rapid X20 inverter. I’ve implemented the interface as described, but it doesn’t work as expected. The state of Modbus is “Online”, but the value of RPM is most of the time “0”, sometimes it shows different values like 512, 4096, 16384, 32768. I’ll be grateful for some advise how to improve it.
Here is my config:

esphome:
  name: isaver-my-pool
  friendly_name: iSaver My Pool
  on_boot:
    priority: -100
    then:
      - lambda: |-
          if (id(pump_rpm).state > 0) {
            id(pump_rpm).make_call().set_value(id(pump_rpm).state).perform();
          }

esp32:
  board: esp32dev
  framework:
    type: arduino

logger:

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

ota:
  - platform: esphome
    password: "XXXXXXXXXXXXX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Isaver-Nasz-Basen"
    password: "XXXXXXXXXXXXX"

web_server:
  port: 80

captive_portal:

uart:
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 1200
  stop_bits: 1
  data_bits: 8
  parity: NONE
  id: modbus_uart
  debug:
    after:
      delimiter: "\n"

output:
  - platform: gpio
    pin: GPIO05
    id: modbus_write_enable

text_sensor:
  - platform: template
    name: "Modbus Status"
    id: modbus_status

number:
  - platform: template
    name: "Pool Pump RPM"
    id: pump_rpm
    min_value: 0
    max_value: 2900
    step: 1
    set_action:
      then:
        - lambda: |-
            id(modbus_write_enable).turn_on();
            uint16_t rpm = (uint16_t)x;
            if (rpm < 1200) {
              rpm = 1;
            }
            uint8_t rpm0 = (rpm >> 8) & 0xFF;
            uint8_t rpm1 = rpm & 0xFF;
            uint8_t data[6] = {0xAA, 0xD0, 0x0B, 0xB9, rpm0, rpm1};
            uint16_t crc = 0xFFFF;
            for (int i = 0; i < 6; i++) {
              crc ^= data[i];
              for (int j = 0; j < 8; j++) {
                if (crc & 0x0001) {
                  crc >>= 1;
                  crc ^= 0xA001;
                } else {
                  crc >>= 1;
                }
              }
            }
            uint8_t crc0 = crc & 0xFF;
            uint8_t crc1 = (crc >> 8) & 0xFF;
            uint8_t packet[8] = {0xAA, 0xD0, 0x0B, 0xB9, rpm0, rpm1, crc0, crc1};
            auto uart = id(modbus_uart);
            uart->write_array(packet, 8);
            uart->flush();
            id(modbus_write_enable).turn_off();

sensor:
  - platform: template
    name: "Current Pool Pump RPM"
    id: pump_rpm_state
    unit_of_measurement: "RPM"
    accuracy_decimals: 0
    update_interval: never
    force_update: false

interval:
  - interval: 2s
    then:
      - lambda: |-
          id(modbus_write_enable).turn_on();
          uint8_t data[6] = {0xAA, 0xC3, 0x07, 0xD1, 0x00, 0x00};
          uint16_t crc = 0xFFFF;
          for (int i = 0; i < 6; i++) {
            crc ^= data[i];
            for (int j = 0; j < 8; j++) {
              if (crc & 0x0001) {
                crc >>= 1;
                crc ^= 0xA001;
              } else {
                crc >>= 1;
              }
            }
          }
          uint8_t crc0 = crc & 0xFF;
          uint8_t crc1 = (crc >> 8) & 0xFF;
          uint8_t packet[8] = {0xAA, 0xC3, 0x07, 0xD1, 0x00, 0x00, crc0, crc1};
          auto uart = id(modbus_uart);
          while(uart->available() > 0) {
            uint8_t t;
            uart->read_array(&t, 1);
          }
          uart->write_array(packet, 8);
          uart->flush();
          id(modbus_write_enable).turn_off();
          uint32_t start_time = millis();
          while (uart->available() < 8 && (millis() - start_time) < 500) {
            delay(1);
          }
          if (uart->available() >= 7) {
            uint8_t response[7];
            uart->read_array(response, 7);
            id(modbus_status).publish_state("Online");
            float value = (float)((uint16_t)response[5] << 8 | (uint16_t)response[6]);
            if (value != id(pump_rpm_state).state) {
              id(pump_rpm_state).publish_state(value);
              id(pump_rpm).publish_state(value);
            }
          } else {
            id(modbus_status).publish_state("No Response");
          }

switch:
  - platform: template
    name: "Pool Pump Power"
    id: pump_power
    optimistic: true
    turn_on_action:
      - lambda: |-
          id(pump_rpm).make_call().set_value(2100).perform();
    turn_off_action:
      - lambda: |-
          id(pump_rpm).make_call().set_value(0).perform();

button:
  - platform: template
    name: "Pool Pump ECO"
    on_press:
      - lambda: |-
          id(pump_rpm).make_call().set_value(1350).perform();

  - platform: template
    name: "Pool Pump NORMAL"
    on_press:
      - lambda: |-
          id(pump_rpm).make_call().set_value(1700).perform();

  - platform: template
    name: "Pool Pump MAX"
    on_press:
      - lambda: |-
          id(pump_rpm).make_call().set_value(2900).perform();

and logs:

[22:18:04][D][uart_debug:114]: <<< 00:00:00:00:00:00:40:00:00:00:00:40:00:00:00:00:40:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:10:00:00:00:00:00:00:02:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00
[22:18:04][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00
[22:18:04][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:04][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:04][D][uart_debug:114]: <<< 00:00:00:00:00:00:00
[22:18:06][D][uart_debug:114]: <<< 00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:04:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[22:18:06][D][uart_debug:114]: <<< 02:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:FF
[22:18:06][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:06][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:06][D][sensor:104]: 'Current Pool Pump RPM': Sending state 512.00000 RPM with 0 decimals of accuracy
[22:18:06][D][number:012]: 'Pool Pump RPM': Sending state 512.000000
[22:18:06][D][uart_debug:114]: <<< 00:00:00:00:00:02:00
[22:18:08][D][uart_debug:114]: <<< 00:00:00:02:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:04:00:00:00:00:00:00:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:20:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:04:00
[22:18:08][D][uart_debug:114]: <<< 00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:20:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:C0
[22:18:08][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:08][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:08][D][sensor:104]: 'Current Pool Pump RPM': Sending state 0.00000 RPM with 0 decimals of accuracy
[22:18:08][D][number:012]: 'Pool Pump RPM': Sending state 0.000000
[22:18:08][D][uart_debug:114]: <<< 00:00:00:00:00:00:00
[22:18:10][D][uart_debug:114]: <<< 00:00:00:10:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:10:00:00:00:00:10:20:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00
[22:18:10][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:E0
[22:18:10][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:10][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:10][D][uart_debug:114]: <<< 00:00:00:80:00:00:00
[22:18:12][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:10:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:20:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00
[22:18:12][D][uart_debug:114]: <<< 00:00:10:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:10:00:02:00:FC
[22:18:12][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:12][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:12][D][uart_debug:114]: <<< 00:00:00:00:00:00:00
[22:18:14][D][uart_debug:114]: <<< 10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:40:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:10:00:00:00:00:00:00:00:00:02:00:00:10:02:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[22:18:14][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:20:00:00:00:00:20:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:FE
[22:18:14][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:14][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:14][D][uart_debug:114]: <<< 00:00:00:00:00:00:00
[22:18:16][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:01:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:10:00:00:00:00:10:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02
[22:18:16][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[22:18:16][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:16][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:16][D][uart_debug:114]: <<< 00:00:00:00:00:00:00
[22:18:18][D][uart_debug:114]: <<< 00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:00:00:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:08:00:00:00:00:20:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[22:18:18][D][uart_debug:114]: <<< 00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:E0
[22:18:18][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:18][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:18][D][uart_debug:114]: <<< 00:00:00:01:00:00:00
[22:18:20][D][uart_debug:114]: <<< 00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:08:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[22:18:20][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:20:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:F0
[22:18:20][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:20][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:20][D][uart_debug:114]: <<< 00:00:00:00:00:00:00
[22:18:22][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:10:00:02:00:00:10:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[22:18:22][D][uart_debug:114]: <<< 02:00:00:00:00:00:00:20:00:00:00:10:00:00:00:00:00:20:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:10:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:FE
[22:18:22][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:22][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:22][D][uart_debug:114]: <<< 00:00:00:00:00:00:00
[22:18:24][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:20:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:10:00:00:00:00:10:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:10:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[22:18:24][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:02:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02
[22:18:24][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:24][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:24][D][uart_debug:114]: <<< 00:00:02:00:00:00:00
[22:18:26][D][uart_debug:114]: <<< 02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:10:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:40:00:00:00:01:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:20:00:00:00:00:00:00:00:02:10:00:00:00:00:00:20:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:10:00:00:00:02:00:00:00:00:00:10:00:00:02:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00
[22:18:26][D][uart_debug:114]: <<< 00:00:00:00:00:04:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:20:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00
[22:18:26][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:26][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:26][D][uart_debug:114]: <<< 00:00:00:00:00:00:00
[22:18:28][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:10:20:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:00:00:00:00:00:08:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[22:18:28][D][uart_debug:114]: <<< 00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[22:18:28][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:28][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:28][D][sensor:104]: 'Current Pool Pump RPM': Sending state 512.00000 RPM with 0 decimals of accuracy
[22:18:28][D][number:012]: 'Pool Pump RPM': Sending state 512.000000
[22:18:28][D][uart_debug:114]: <<< 00:00:00:00:00:02:00
[22:18:30][D][uart_debug:114]: <<< 00:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:10:00:00:00:02:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00
[22:18:30][D][uart_debug:114]: <<< 00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:10:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:00:00:00:00:00:40:00:00:02:00:00:00:00:00:00:00:00:00:00:FF
[22:18:30][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:30][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:30][D][sensor:104]: 'Current Pool Pump RPM': Sending state 0.00000 RPM with 0 decimals of accuracy
[22:18:30][D][number:012]: 'Pool Pump RPM': Sending state 0.000000
[22:18:30][D][uart_debug:114]: <<< 00:00:02:00:00:00:00
[22:18:32][D][uart_debug:114]: <<< 00:00:00:00:00:10:00:00:00:00:10:00:00:00:00:00:80:00:00:01:00:00:00:00:01:00:00:00:00:00:02:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:20:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00
[22:18:32][D][uart_debug:114]: <<< 00:00:00:02:00:00:00:00:00:00:40:00:00:00:00:00:00:00:00:00:40:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:20:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:10:00:80
[22:18:32][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:32][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:32][D][uart_debug:114]: <<< 00:00:00:00:00:00:00
[22:18:34][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:04:00:00:02:00:00:00:00:00:00:00:00:00:00:10:04:00:00:00:10:00:00:00:02:00:00:00:00:00:00:02:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:10:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:40:00:00:00:00:40:00:00:00:00:00:00:00:02:00:00:00:00
[22:18:34][D][uart_debug:114]: <<< 00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:10:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:E0
[22:18:34][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:34][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:34][D][uart_debug:114]: <<< 00:00:00:02:00:00:00
[22:18:36][D][uart_debug:114]: <<< 00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:10:00:00:00:00:10:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:04:00:00:00:00:04:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01:00:00:00:00:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:20:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:10
[22:18:36][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:00:00:00:00:02:00:00:00:00:F0
[22:18:36][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:36][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:36][D][uart_debug:114]: <<< 00:00:00:00:00:00:00
[22:18:38][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[22:18:38][D][uart_debug:114]: <<< 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:02:00:00:00:00:02:10:00:00:00:00:10:00:00:00:00:00:00:FE
[22:18:38][D][uart_debug:114]: >>> AA:C3:07:D1:00:00:0D:4D
[22:18:38][D][text_sensor:069]: 'Modbus Status': Sending state 'Online'
[22:18:38][D][uart_debug:114]: <<< 00:00:00:00:00:00:00
[22:18:40][D][uart_debug:114]: <<< 

Hello everyone! I have an InverMaster pump and an iWash valve. I was wondering if any of you had the modbus protocol for these products and/or if you were already been able to integrate them in to HA

Thank you for the help!

Update: I since worked out it was a broken packet issue where it was fragmented sometimes, so I’ve added some error checking smarts to disregard those values. Works great now.


I have the same Madimack Pump, and tested your code however it seems a little unstable, not sure if you’re getting the same results?

I’m using an ESP32c3 with EVTSCAN TTL to RS485 Converter Module

1 Like

Great to hear! I personaly haven’t seen this happen on my pump controller, but would still be interested to see how you fixed it if you wouldn’t mind sharing the updated snippet. Cheers!

G’day @milwhite

I’ve made a fair few changes as I’ve added extra functionality like Watt and Flow throughput as well.

To make it easy to see the changes I’ve forked your github and have a file diff for comparison.

FYI all this is for Madimack Inverter Plus

2 Likes

Thanks for uploading that. Looks like you’ve added quite a bit of cool stuff!

Thanks to all contributors. I have the Madimack Inverter Plus pump controller. @Anton2079, I had the same modbus message instability and your updates fixed this. However with both versions I’m having a separate issue where ESPHome will successfully turn off the Madimack via Modbus, but 15-30 seconds later, the pump will start up again by itself. At that point the ESPHome switch remains “off” even though power has returned. When esphome switch is turned “on” again, current_rpm values start to update correctly.

I have power cycled the Madimack and confirmed that when I turn off using the Madimack control panel, the device stays off. There are no timers set.

In logs below I am turning off via ESPHome at 15:19:03, it turns back on around 15 seconds later.

I’m using Olimex ESP32-POE-ISO (not using PoE), and this for rs485:
https://www.ebay.com.au/itm/303970122565

Is it worth sourcing alternatives for these?

INFO ESPHome 2025.12.5
INFO Reading configuration /config/esphome/pool-pump.yaml...
WARNING GPIO5 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq/#why-am-i-getting-a-warning-about-strapping-pins
WARNING Captive portal is enabled but no WiFi AP is configured. The captive portal will not be accessible. Add 'ap:' to your WiFi configuration to enable the captive portal.
INFO Starting log output from pool-pump.local using esphome API
INFO Successfully resolved pool-pump.local in 0.179s
INFO Successfully connected to pool-pump @ 172.16.44.194 in 0.047s
INFO Successful handshake with pool-pump @ 172.16.44.194 in 0.310s
[15:18:16.621][D][uart_debug:113]: <<< FF:AA:C3:00:00:01:0B
[15:18:16.633][I][app:194]: ESPHome version 2025.12.5 compiled on Jan  9 2026, 13:39:16
[15:18:16.637][C][logger:261]: Logger:
[15:18:16.637][C][logger:261]:   Max Level: DEBUG
[15:18:16.637][C][logger:261]:   Initial Level: DEBUG
[15:18:16.654][C][logger:267]:   Log Baud Rate: 115200
[15:18:16.654][C][logger:267]:   Hardware UART: UART0
[15:18:16.655][C][logger:274]:   Task Log Buffer Size: 768
[15:18:16.656][C][uart.idf:238]: UART Bus 1:
[15:18:16.660][C][uart.idf:239]:   TX Pin: GPIO4
[15:18:16.664][C][uart.idf:240]:   RX Pin: GPIO3
[15:18:16.667][C][uart.idf:243]:   RX Buffer Size: 256
[15:18:16.667][C][uart.idf:243]:   RX Full Threshold: 1
[15:18:16.667][C][uart.idf:243]:   RX Timeout: 2
[15:18:16.669][C][uart.idf:249]:   Baud Rate: 1200 baud
[15:18:16.669][C][uart.idf:249]:   Data Bits: 8
[15:18:16.669][C][uart.idf:249]:   Parity: NONE
[15:18:16.669][C][uart.idf:249]:   Stop bits: 1
[15:18:16.704][C][gpio.output:010]: Binary Output:
[15:18:16.704][C][gpio.output:011]:   Pin: GPIO5
[15:18:16.706][C][template.text_sensor:016]: Template Sensor 'Uptime (friendly)'
[15:18:16.715][C][template.number:016]: Template Number 'Pool Pump RPM'
[15:18:16.726][C][template.number:049]:   Optimistic: NO
[15:18:16.730][C][template.number:399]:   Update Interval: 60.0s
[15:18:16.730][C][template.sensor:017]: Template Sensor 'Current Pool Pump RPM'
[15:18:16.730][C][template.sensor:017]:   State Class: ''
[15:18:16.730][C][template.sensor:017]:   Unit of Measurement: 'RPM'
[15:18:16.730][C][template.sensor:017]:   Accuracy Decimals: 0
[15:18:16.733][C][template.sensor:395]:   Update Interval: never
[15:18:16.743][C][template.sensor:017]: Template Sensor 'Pump Power (W)'
[15:18:16.743][C][template.sensor:017]:   State Class: 'measurement'
[15:18:16.743][C][template.sensor:017]:   Unit of Measurement: 'W'
[15:18:16.743][C][template.sensor:017]:   Accuracy Decimals: 1
[15:18:16.756][C][template.sensor:027]:   Device Class: 'power'
[15:18:16.757][C][template.sensor:031]:   Icon: 'mdi:flash'
[15:18:16.758][C][template.sensor:399]:   Update Interval: 1.0s
[15:18:16.759][C][template.sensor:017]: Template Sensor 'Pump Flow (L/min)'
[15:18:16.759][C][template.sensor:017]:   State Class: ''
[15:18:16.759][C][template.sensor:017]:   Unit of Measurement: 'L/min'
[15:18:16.759][C][template.sensor:017]:   Accuracy Decimals: 1
[15:18:16.764][C][template.sensor:031]:   Icon: 'mdi:water-pump'
[15:18:16.769][C][template.sensor:399]:   Update Interval: 1.0s
[15:18:16.808][C][template.sensor:017]: Template Sensor 'Pump Energy (kWh, current run)'
[15:18:16.808][C][template.sensor:017]:   State Class: 'measurement'
[15:18:16.808][C][template.sensor:017]:   Unit of Measurement: 'kWh'
[15:18:16.808][C][template.sensor:017]:   Accuracy Decimals: 3
[15:18:16.812][C][template.sensor:027]:   Device Class: 'energy'
[15:18:16.816][C][template.sensor:399]:   Update Interval: 2.0s
[15:18:16.826][C][template.sensor:017]: Template Sensor 'WiFi Signal (%)'
[15:18:16.826][C][template.sensor:017]:   State Class: ''
[15:18:16.826][C][template.sensor:017]:   Unit of Measurement: '%'
[15:18:16.826][C][template.sensor:017]:   Accuracy Decimals: 1
[15:18:16.835][C][template.sensor:031]:   Icon: 'mdi:wifi'
[15:18:16.840][C][template.sensor:399]:   Update Interval: 30.0s
[15:18:16.840][C][uptime.sensor:017]: Uptime Sensor 'Uptime (s)'
[15:18:16.840][C][uptime.sensor:017]:   State Class: 'total_increasing'
[15:18:16.840][C][uptime.sensor:017]:   Unit of Measurement: 's'
[15:18:16.840][C][uptime.sensor:017]:   Accuracy Decimals: 0
[15:18:16.840][C][uptime.sensor:027]:   Device Class: 'duration'
[15:18:16.841][C][uptime.sensor:031]:   Icon: 'mdi:timer-outline'
[15:18:16.845][C][uptime.sensor:033]:   Type: Seconds
[15:18:16.850][C][template.binary_sensor:016]: Template Binary Sensor 'Pump Running'
[15:18:16.861][C][template.binary_sensor:019]:   Device Class: 'running'
[15:18:16.871][C][template.text_sensor:016]: Template Sensor 'Modbus Status'
[15:18:16.912][C][template.switch:092]: Template Switch 'Modbus Enabled'
[15:18:16.912][C][template.switch:092]:   Restore Mode: always OFF
[15:18:16.916][C][template.switch:055]:   Optimistic: YES
[15:18:16.937][C][template.switch:092]: Template Switch 'Pool Pump Power'
[15:18:16.937][C][template.switch:092]:   Restore Mode: always OFF
[15:18:16.942][C][template.switch:055]:   Optimistic: YES
[15:18:16.943][C][wifi_info:016]: SSID 'WiFi SSID'
[15:18:16.944][C][wifi_info:016]: BSSID 'WiFi BSSID'
[15:18:16.955][C][wifi_info:016]: MAC Address 'MAC Address'
[15:18:16.962][C][wifi_info:016]: IP Address 'IP Address'
[15:18:16.975][C][version.text_sensor:016]: Version Text Sensor 'ESPHome Version'
[15:18:17.049][C][version.text_sensor:023]:   Icon: 'mdi:new-box'
[15:18:17.062][C][internal_temperature:017]: Internal Temperature Sensor 'ESP Internal Temperature'
[15:18:17.062][C][internal_temperature:017]:   State Class: 'measurement'
[15:18:17.062][C][internal_temperature:017]:   Unit of Measurement: '°C'
[15:18:17.062][C][internal_temperature:017]:   Accuracy Decimals: 1
[15:18:17.066][C][internal_temperature:027]:   Device Class: 'temperature'
[15:18:17.121][C][restart.button:014]: Restart Button 'Restart ESP32'
[15:18:17.121][C][restart.button:017]:   Icon: 'mdi:restart'
[15:18:17.121][C][safe_mode.button:014]: Safe Mode Button 'Boot to Safe Mode'
[15:18:17.122][C][safe_mode.button:017]:   Icon: 'mdi:restart-alert'
[15:18:17.124][C][status:016]: Status Binary Sensor 'ESP32 Status'
[15:18:17.124][C][status:019]:   Device Class: 'connectivity'
[15:18:17.124][C][captive_portal:118]: Captive Portal:
[15:18:17.125][C][wifi:1132]: WiFi:
[15:18:17.125][C][wifi:1132]:   Connected: YES
[15:18:17.125][C][wifi:897]:   Local MAC: 10:97:BD:36:C2:A0
[15:18:17.148][C][wifi:904]:   IP Address: 172.16.44.194
[15:18:17.152][C][wifi:908]:   SSID: 'WifiOT'[redacted]
[15:18:17.152][C][wifi:908]:   BSSID: 6A:22:32:F7:31:A2[redacted]
[15:18:17.152][C][wifi:908]:   Hostname: 'pool-pump'
[15:18:17.152][C][wifi:908]:   Signal strength: -86 dB ▂▄▆█
[15:18:17.152][C][wifi:908]:   Channel: 6
[15:18:17.152][C][wifi:908]:   Subnet: 255.255.255.0
[15:18:17.152][C][wifi:908]:   Gateway: 172.16.44.254
[15:18:17.152][C][wifi:908]:   DNS1: 172.16.44.254
[15:18:17.152][C][wifi:908]:   DNS2: 0.0.0.0
[15:18:17.163][C][web_server:335]: Web Server:
[15:18:17.163][C][web_server:335]:   Address: pool-pump.local:80
[15:18:17.171][C][esphome.ota:092]: Over-The-Air updates:
[15:18:17.171][C][esphome.ota:092]:   Address: pool-pump.local:3232
[15:18:17.171][C][esphome.ota:092]:   Version: 2
[15:18:17.172][C][esphome.ota:099]:   Password configured
[15:18:17.174][C][safe_mode:018]: Safe Mode:
[15:18:17.174][C][safe_mode:018]:   Successful after: 60s
[15:18:17.174][C][safe_mode:018]:   Invoke after: 10 attempts
[15:18:17.174][C][safe_mode:018]:   Duration: 300s
[15:18:17.175][C][web_server.ota:241]: Web Server OTA
[15:18:17.200][C][api:211]: Server:
[15:18:17.200][C][api:211]:   Address: pool-pump.local:6053
[15:18:17.200][C][api:211]:   Listen backlog: 4
[15:18:17.200][C][api:211]:   Max connections: 8
[15:18:17.202][C][api:218]:   Noise encryption: YES
[15:18:17.226][C][wifi_signal.sensor:017]: WiFi Signal 'WiFi Signal (dB)'
[15:18:17.226][C][wifi_signal.sensor:017]:   State Class: 'measurement'
[15:18:17.226][C][wifi_signal.sensor:017]:   Unit of Measurement: 'dBm'
[15:18:17.226][C][wifi_signal.sensor:017]:   Accuracy Decimals: 0
[15:18:17.226][C][wifi_signal.sensor:027]:   Device Class: 'signal_strength'
[15:18:17.242][C][mdns:177]: mDNS:
[15:18:17.242][C][mdns:177]:   Hostname: pool-pump
[ ... cut for post length ... ]
[15:18:58.439][D][uart_debug:113]: <<< FF:FF:FF:FF:FF:FF
[15:18:58.619][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:18:58.634][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:18:58.672][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:18:58.689][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:18:58.732][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35529 kWh with 3 decimals of accuracy
[15:18:58.743][D][uart_debug:113]: <<< AA:C3:00:00:01:08:34
[15:18:59.438][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:18:59.448][D][uart_debug:113]: <<< FF
[15:18:59.628][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:18:59.638][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:18:59.644][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:18:59.742][D][uart_debug:113]: <<< AA:C3:00:00:01:08:34
[15:19:00.447][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:00.447][D][uart_debug:113]: <<< FF:FF:FF:FF:FF
[15:19:00.638][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:00.652][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:00.653][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:00.741][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35554 kWh with 3 decimals of accuracy
[15:19:00.743][D][uart_debug:113]: <<< AA:C3:00:00:01:08:34
[15:19:01.453][D][uart_debug:113]: <<< FF:FF:FF:7F
[15:19:01.625][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:01.680][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:01.680][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:01.746][D][uart_debug:113]: <<< FF:AA:C3:00:00:01:08
[15:19:02.463][D][uart_debug:113]: <<< 34:FF:7F:FF
[15:19:02.627][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:02.663][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:02.663][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:02.664][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:02.749][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35577 kWh with 3 decimals of accuracy
[15:19:02.751][D][uart_debug:113]: <<< AA:C3:00:00:01:08:34
[15:19:03.405][D][switch:026]: 'Pool Pump Power' Turning OFF.
[15:19:03.408][D][number:064]: 'Pool Pump RPM': Setting value
[15:19:03.412][D][number:123]:   New value: 0.000000
[15:19:03.417][D][uart_debug:113]: <<< FF:FF:FF:FF:FF
[15:19:03.486][D][switch:065]: 'Pool Pump Power': Sending state OFF
[15:19:03.507][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:03.507][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:03.535][D][uart_debug:113]: >>> AA:D0:0B:B9:00:01:CB:C2
[15:19:04.510][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:04.511][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:04.511][D][uart_debug:113]: <<< AA:D0:0B:B9:00:02:00:FF:FF:FF:FF:FF
[15:19:04.693][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:04.744][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35601 kWh with 3 decimals of accuracy
[15:19:04.838][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:05.498][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:05.506][D][uart_debug:113]: <<< FE:FF:FF:FF:FF:FF:FF
[15:19:05.686][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:05.715][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:05.720][D][sensor:135]: 'Uptime (s)': Sending state 2376.58398 s with 0 decimals of accuracy
[15:19:05.813][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:06.503][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:06.514][D][uart_debug:113]: <<< FE:FF:FF:FF
[15:19:06.694][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:06.708][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:06.720][D][sensor:135]: 'WiFi Signal (%)': Sending state 5.00000 % with 1 decimals of accuracy
[15:19:06.745][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35621 kWh with 3 decimals of accuracy
[15:19:06.824][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:07.508][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:07.512][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:07.520][D][uart_debug:113]: <<< FC:FF
[15:19:07.720][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:07.838][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:08.527][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:08.528][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:08.532][D][uart_debug:113]: <<< FC:FF:FF:FF
[15:19:08.727][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:08.728][D][sensor:135]: 'WiFi Signal (dB)': Sending state -95.00000 dBm with 0 decimals of accuracy
[15:19:08.742][D][text_sensor:097]: 'Uptime (friendly)': Sending state '39 m 36 s'
[15:19:08.759][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35644 kWh with 3 decimals of accuracy
[15:19:08.832][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:09.524][D][uart_debug:113]: <<< FE:FF:FF
[15:19:09.703][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:09.714][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:09.728][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:09.834][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:10.515][D][uart_debug:113]: <<< FE:FF
[15:19:10.705][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:10.728][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:10.728][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:10.755][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35670 kWh with 3 decimals of accuracy
[15:19:10.830][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:11.522][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:11.530][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:11.541][D][uart_debug:113]: <<< FC:FF:FF
[15:19:11.714][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:11.838][D][uart_debug:113]: <<< FF:AA:C3:00:00:00:00
[15:19:12.531][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:12.534][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:12.541][D][uart_debug:113]: <<< 00:FE:FF:FF
[15:19:12.729][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:12.764][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35693 kWh with 3 decimals of accuracy
[15:19:12.862][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:13.536][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:13.539][D][uart_debug:113]: <<< FC:FF
[15:19:13.727][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:13.743][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:13.845][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:14.560][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:14.561][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:14.564][D][uart_debug:113]: <<< FE:FF:FF:FF
[15:19:14.766][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:14.771][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35713 kWh with 3 decimals of accuracy
[15:19:14.875][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:15.542][D][uart_debug:113]: <<< FC:FF:FF
[15:19:15.722][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:15.748][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:15.811][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:15.844][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:16.538][D][uart_debug:113]: <<< FE:FF:FF:FF:FF
[15:19:16.731][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:16.745][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:16.754][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:16.766][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35736 kWh with 3 decimals of accuracy
[15:19:16.857][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:17.548][D][uart_debug:113]: <<< FC:FF:FF
[15:19:17.736][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:17.756][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:17.756][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:17.855][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:18.581][D][uart_debug:113]: <<< FC:FF:FF:FF:FF
[15:19:18.743][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:18.758][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:18.760][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:18.777][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35762 kWh with 3 decimals of accuracy
[15:19:18.861][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:19.562][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:19.563][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:19.563][D][uart_debug:113]: <<< FE:FF
[15:19:19.739][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:19.869][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00
[15:19:20.554][D][sensor:135]: 'Pump Flow (L/min)': Sending state 166.55171 L/min with 1 decimals of accuracy
[15:19:20.565][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:20.583][D][uart_debug:113]: <<< FC:FF:FF:FF
[15:19:20.754][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:20.791][D][number:064]: 'Pool Pump RPM': Setting value
[15:19:20.791][D][number:123]:   New value: 2800.000000
[15:19:20.793][D][uart_debug:113]: <<< AA:C3:00:00:00:00:00:FC:FF
[15:19:20.793][D][uart_debug:113]: >>> AA:D0:0B:B9:0A
[15:19:20.853][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35785 kWh with 3 decimals of accuracy
[15:19:20.909][D][uart_debug:113]: >>> F0:0C:E6
[15:19:21.556][D][sensor:135]: 'Pump Power (W)': Sending state 412.85052 W with 1 decimals of accuracy
[15:19:21.566][D][uart_debug:113]: <<< AA:D0:0B:B9:00:02:00:FF:FF
[15:19:21.749][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:21.759][D][sensor:135]: 'Current Pool Pump RPM': Sending state 2900.00000 RPM with 0 decimals of accuracy
[15:19:21.771][D][number:034]: 'Pool Pump RPM': Sending state 2900.000000
[15:19:21.772][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:21.780][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:21.863][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:22.565][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:22.572][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:22.575][D][uart_debug:113]: <<< FF:FF:FF
[15:19:22.755][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:22.773][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:22.863][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35821 kWh with 3 decimals of accuracy
[15:19:22.879][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:23.571][D][uart_debug:113]: <<< FF:FF:FF
[15:19:23.740][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:23.760][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:23.775][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:23.863][D][uart_debug:113]: <<< FF:AA:C3:00:00:01:0B
[15:19:24.577][D][uart_debug:113]: <<< 54:FF:FF:FF
[15:19:24.753][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:24.785][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:24.810][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:24.810][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:24.854][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35875 kWh with 3 decimals of accuracy
[15:19:24.889][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:25.578][D][uart_debug:113]: <<< FF:FF:FF:FF:FF
[15:19:25.765][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:25.774][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:25.781][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:25.791][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:25.890][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:26.577][D][uart_debug:113]: <<< FF:FF:FF:FF
[15:19:26.759][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:26.784][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:26.784][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:26.785][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:26.880][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35936 kWh with 3 decimals of accuracy
[15:19:26.881][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:27.587][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:27.588][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:27.590][D][uart_debug:113]: <<< FF:FF
[15:19:27.783][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:27.791][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:27.897][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:28.594][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:28.594][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:28.598][D][uart_debug:113]: <<< FF:FF:FF:FF
[15:19:28.801][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:28.801][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:28.878][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.35990 kWh with 3 decimals of accuracy
[15:19:28.899][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:29.597][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:29.615][D][uart_debug:113]: <<< FF:FF:FF:FF
[15:19:29.781][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:29.802][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:29.803][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:29.921][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:30.595][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:30.601][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:30.621][D][uart_debug:113]: <<< FF:FF:7F
[15:19:30.786][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:30.860][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.36039 kWh with 3 decimals of accuracy
[15:19:30.907][D][uart_debug:113]: <<< FF:AA:C3:00:00:01:0B
[15:19:31.597][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:31.606][D][uart_debug:113]: <<< 54:FF:FF:FF:FF
[15:19:31.786][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:31.799][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:31.806][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:31.902][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:32.602][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:32.607][D][uart_debug:113]: <<< FF:FF:FF:FF:FF:FF:FF
[15:19:32.794][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:32.800][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:32.805][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:32.889][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.36099 kWh with 3 decimals of accuracy
[15:19:32.909][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:33.607][D][uart_debug:113]: <<< FF:FF:FF:FF:FF
[15:19:33.779][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:33.796][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:33.813][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:33.915][D][uart_debug:113]: <<< FF:AA:C3:00:00:01:0B
[15:19:34.615][D][uart_debug:113]: <<< 54:FF:FF:FF:FF:FF:FF:FF
[15:19:34.795][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:34.819][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:34.836][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:34.836][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:34.871][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.36153 kWh with 3 decimals of accuracy
[15:19:34.924][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:35.616][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:35.622][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:35.641][D][uart_debug:113]: <<< FF:FF:FF:FF:FF:FF:FF
[15:19:35.819][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:35.844][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:35.844][D][sensor:135]: 'Uptime (s)': Sending state 2406.70703 s with 0 decimals of accuracy
[15:19:35.946][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:36.616][D][uart_debug:113]: <<< FF:FF:FF:FF:FF:FF:FF
[15:19:36.803][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:36.813][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:36.820][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:36.846][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:36.846][D][sensor:135]: 'WiFi Signal (%)': Sending state 0.00000 % with 1 decimals of accuracy
[15:19:36.867][D][sensor:135]: 'Pump Energy (kWh, current run)': Sending state 0.36202 kWh with 3 decimals of accuracy
[15:19:36.928][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:37.619][D][uart_debug:113]: <<< FF:FF:FF:FF
[15:19:37.824][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:37.828][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'
[15:19:37.828][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:37.834][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:37.926][D][uart_debug:113]: <<< AA:C3:00:00:01:0B:54
[15:19:38.606][D][sensor:135]: 'ESP Internal Temperature': Sending state 60.00000 °C with 1 decimals of accuracy
[15:19:38.632][D][sensor:135]: 'Pump Flow (L/min)': Sending state 230.00000 L/min with 1 decimals of accuracy
[15:19:38.632][D][sensor:135]: 'Pump Power (W)': Sending state 975.99902 W with 1 decimals of accuracy
[15:19:38.636][D][uart_debug:113]: <<< FF:FF:FF
[15:19:38.833][D][uart_debug:113]: >>> AA:C3:07:D1:00:00:0D:4D
[15:19:38.843][D][text_sensor:097]: 'Modbus Status': Sending state 'Online'


edit: Just realised I had a spare RS-485 module - tried this but it appears to not receive any modbus signals at all as the RPM was never updated. It does transmit modbus however, but I still had the issue of the pump turning back on.

I’m wondering if the dry contacts would be more reliable.

Good to hear some of the fixes assisted.

To clarify are you using a blend of both code or all of mine?

I asked because my code removed the read write limitation which was originally on because of the RS485 chip, didn’t exist on my RS485 which manages that for me.

Also did you have this power issue with the original code or only message fragmentation issue?

Not a blend - I’ve tried both versions of the code now. I don’t know if it will help but I’ve just ordered the XIAO ESP32C3 and EVTSCAN RS485 chip.

I had the power issue with both versions of the code.

Hmm I’ll wait until you match the components first and then I can review the logs.

Oops, how embarassing. It turns out I had a test automation that was triggering the speed change buttons while the pump was off. This physically turns the device on (which is good and will make my automations have less steps). The thing that was throwing me is that while the ISaver/Madimack was physically turning on, the ESPHome switch entity was still off.

Can I suggest having the switch entity update in this scenario as an enhancement?

Ah that will do it. Glad to hear that’s sorted.
To clarify you want the speed change buttons to be disabled when off?

I don’t mind it turning it on personally, kinda like how you press a number on the TV remote instead of going power on first.

I agree that turning the pump on when a speed is selected is a bonus. I was more asking that if the pump turns on, could that be reflected by turning on the switch.pool_pump_power entity? At the moment the switch and the actual power state of the device can be out-of-sync. To illustrate, here my pool pump is actually on (via using a preset speed button), but the pump appears to be off:

(Ideally the switch would update based on the actual status of the pump from modbus, because other things outside the ESPHome device could have turned on the pump. But if that’s not possible then using the speed controls while the pump switch is off should turn the switch on)