Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ESPHome EASun Isolar smp #161

Open
sza86 opened this issue Dec 6, 2024 · 4 comments
Open

ESPHome EASun Isolar smp #161

sza86 opened this issue Dec 6, 2024 · 4 comments

Comments

@sza86
Copy link

sza86 commented Dec 6, 2024

hello and greetings :D

I have a problem my uart data is separated by a space and not a comma. What can I do about it?

@syssi
Copy link
Owner

syssi commented Dec 8, 2024

The values of the PIP protocol are always separated by spaces. See https://github.com/esphome/esphome/blob/dev/esphome/components/pipsolar/pipsolar.cpp#L434

Could you provide some traffic examples? Why do you think you device isn't supported?

@sza86
Copy link
Author

sza86 commented Dec 8, 2024

Sending polling command : QPIGS with length 5 17:59:04 [D] [uart_debug:114] >>> 51:50:49:47:53:B7:A9:0D 17:59:05 [D] [uart_debug:114] <<< 28:32:31:37:2E:31:20:35:30:2E:30:20:32:31:37:2E:31:20:35:30:2E:30:20:30:31:39:35:20:30:31:38:31:20:30:30:33:20:32:39:39:20:30:30:2E:34:30:20:30:30:30:20:30:30:30:20:30:30:32:30:20:30:30:2E:30:20:30:30:30:2E:30:20:30:30:2E:30:30:20:30:30:30:30:30:20:30:30:30:31:30:30:30:30:20:30:30:20:30:30:20:30:30:30:30:30:20:30:31:30:20:30:20:30:31:20:30:30:30:30:44:E3:0D 17:59:05 [VV ][scheduler:226] Running interval ‘update’ with interval=1000 last_execution=5664057 (now=5665057) 17:59:06 [VV ][scheduler:226] Running interval ‘update’ with interval=1000 last_execution=5665057 (now=5666061) 17:59:07 [VV ][scheduler:226] Running interval ‘update’ with interval=1000 last_execution=5666057 (now=5667057) 17:59:08 [VV ][scheduler:226] Running interval ‘update’ with interval=1000 last_execution=5667057 (now=5668062) 17:59:09 [VV ][scheduler:226] Running interval ‘’ with interval=10000 last_execution=5658901 (now=5668901) 17:59:09 [VV ][scheduler:226] Running interval ‘update’ with interval=1000 last_execution=5668057 (now=5669057) 17:59:09 [D] [pipsolar:759] timeout command to poll: QPIGS 17:59:09 [D] [pipsolar:842]

@sza86
Copy link
Author

sza86 commented Dec 11, 2024

I wrote a small program for testing and it reads well, apart from some minor errors ;)

`

==========================

KONFIGURACJA OGÓLNA

==========================

substitutions:
name: easun-falownik-pv # Nazwa urządzenia
tx_pin: GPIO16 # Pin transmisji UART
rx_pin: GPIO17 # Pin odbioru UART

esphome:
name: ${name} # Nazwa w ESPHome
platform: ESP32 # Platforma ESP32
board: esp32dev # Typ płytki ESP32

wifi:
ssid: !secret wifi_ssid # Nazwa sieci Wi-Fi
password: !secret wifi_password # Hasło do Wi-Fi

logger:
level: DEBUG # Poziom logów: DEBUG

api:
encryption:
key: !secret key # Klucz szyfrowania API

ota:
password: !secret ota_password # Hasło do aktualizacji OTA
platform: esphome # Platforma OTA

web_server:
port: 80 # Port serwera WWW

==========================

KONFIGURACJA UART

==========================

uart:
id: uart_0 # ID interfejsu UART
baud_rate: 2400 # Szybkość transmisji UART
tx_pin: GPIO16 # Pin transmisji UART
rx_pin: GPIO17 # Pin odbioru UART
debug:
direction: BOTH # Kierunek komunikacji: Obydwa
after:
delimiter: "\r" # Delimiter końca wiadomości (znak "\r")

Wysyłanie poleceń QPIGS

interval:

  • interval: 10s # Odstęp czasowy co 10 sekund
    then:
    • logger.log:
      level: INFO
      format: "Wysyłanie QPIGS..." # Informacja o wysyłaniu danych
    • uart.write: [0x51, 0x50, 0x49, 0x47, 0x53, 0xB7, 0xA9, 0x0D] # Polecenie QPIGS
    • delay: 3s # Opóźnienie 3 sekundy
    • script.execute: parse_qpigs # Wykonanie skryptu parsującego dane QPIGS

Wysyłanie poleceń QPIRI

  • interval: 11s # Odstęp czasowy co 11 sekund
    then:
    • logger.log:
      level: INFO
      format: "Wysyłanie QPIRI..." # Informacja o wysyłaniu danych
    • uart.write: [0x51, 0x50, 0x49, 0x52, 0x49, 0xD7, 0xA9, 0x0D] # Polecenie QPIRI
    • delay: 3s # Opóźnienie 3 sekundy
    • script.execute: parse_qpiri # Wykonanie skryptu parsującego dane QPIRI

Wysyłanie poleceń QFLAG

  • interval: 12s # Odstęp czasowy co 12 sekund
    then:
    • logger.log:
      level: INFO
      format: "Wysyłanie polecenia UART QFLAG..." # Informacja o wysyłaniu polecenia QFLAG
    • uart.write: [0x51, 0x46, 0x4C, 0x41, 0x47, 0xA9, 0x0D] # Polecenie QFLAG
    • delay: 2s # Opóźnienie 2 sekundy
    • script.execute: parse_qflag # Wykonanie skryptu przetwarzającego dane QFLAG

Wysyłanie poleceń QMOD

  • interval: 15s # Odstęp czasowy co 15 sekund
    then:
    • logger.log:
      level: INFO
      format: "Wysyłanie polecenia UART QMOD..." # Informacja o wysyłaniu polecenia QMOD
    • uart.write: [0x51, 0x4D, 0x4F, 0x44, 0x49, 0x0D] # Polecenie QMOD
    • delay: 2s # Opóźnienie 2 sekundy
    • script.execute: parse_qmod # Wykonanie skryptu przetwarzającego dane QMOD

==========================

SKRYPTY DO PARSOWANIA

==========================

Skrypty parsujące dane

Skrypt przetwarzający dane QPIGS

script:

  • id: parse_qpigs
    then:
    • lambda: |-
      static std::string buffer;
      uint8_t byte;
      while (id(uart_0).read_byte(&byte)) {
      char c = static_cast(byte);
      buffer += c;

      if (c == '\r') {
        ESP_LOGI("UART", "Odebrano QPIGS: %s", buffer.c_str());
      
        if (buffer[0] == '(' && buffer.length() > 70) {
          // Parsowanie wartości i logowanie HEX oraz dziesiętnych
          double grid_voltage_value = atof(buffer.substr(1, 5).c_str());
          ESP_LOGD("UART", "Grid Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(1, 5).c_str(), grid_voltage_value);
          id(grid_voltage).publish_state(grid_voltage_value);
      
          double grid_frequency_value = atof(buffer.substr(7, 4).c_str());
          ESP_LOGD("UART", "Grid Frequency | HEX: %s | Dziesiętna: %.2f", buffer.substr(7, 4).c_str(), grid_frequency_value);
          id(grid_frequency).publish_state(grid_frequency_value);
      
          double output_voltage_value = atof(buffer.substr(12, 5).c_str());
          ESP_LOGD("UART", "Output Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(12, 5).c_str(), output_voltage_value);
          id(output_voltage).publish_state(output_voltage_value);
      
          double output_frequency_value = atof(buffer.substr(18, 4).c_str());
          ESP_LOGD("UART", "Output Frequency | HEX: %s | Dziesiętna: %.2f", buffer.substr(18, 4).c_str(), output_frequency_value);
          id(output_frequency).publish_state(output_frequency_value);
      
          double load_percent_value = atof(buffer.substr(23, 4).c_str());
          ESP_LOGD("UART", "Load Percent | HEX: %s | Dziesiętna: %.2f", buffer.substr(23, 4).c_str(), load_percent_value);
          id(load_percent).publish_state(load_percent_value);
      
          double output_power_value = atof(buffer.substr(20, 4).c_str());
          ESP_LOGD("UART", "Output Power | HEX: %s | Dziesiętna: %.2f", buffer.substr(20, 4).c_str(), output_power_value);
          id(output_power).publish_state(output_power_value);
      
          double charge_current_value = atof(buffer.substr(28, 4).c_str());
          ESP_LOGD("UART", "Charge Current | HEX: %s | Dziesiętna: %.2f", buffer.substr(28, 4).c_str(), charge_current_value);
          id(charge_current).publish_state(charge_current_value);
      
          double discharge_current_value = atof(buffer.substr(33, 3).c_str());
          ESP_LOGD("UART", "Discharge Current | HEX: %s | Dziesiętna: %.2f", buffer.substr(33, 3).c_str(), discharge_current_value);
          id(discharge_current).publish_state(discharge_current_value);
      
          double inverter_temperature_value = atof(buffer.substr(37, 3).c_str());
          ESP_LOGD("UART", "Inverter Temperature | HEX: %s | Dziesiętna: %.2f", buffer.substr(37, 3).c_str(), inverter_temperature_value);
          id(inverter_temperature).publish_state(inverter_temperature_value);
      
          double battery_voltage_value = atof(buffer.substr(41, 5).c_str());
          ESP_LOGD("UART", "Battery Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(41, 5).c_str(), battery_voltage_value);
          id(battery_voltage_qpigs).publish_state(battery_voltage_value);
      
          double battery_power_value = atof(buffer.substr(47, 3).c_str());
          ESP_LOGD("UART", "Battery Power | HEX: %s | Dziesiętna: %.2f", buffer.substr(47, 3).c_str(), battery_power_value);
          id(battery_power).publish_state(battery_power_value);
      
          double system_status_value = atof(buffer.substr(51, 3).c_str());
          ESP_LOGD("UART", "System Status | HEX: %s | Dziesiętna: %.2f", buffer.substr(51, 3).c_str(), system_status_value);
          id(system_status).publish_state(system_status_value);
      
          double recovered_grid_voltage_value = atof(buffer.substr(55, 4).c_str());
          ESP_LOGD("UART", "Recovered Grid Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(55, 4).c_str(), recovered_grid_voltage_value);
          id(recovered_grid_voltage).publish_state(recovered_grid_voltage_value);
      
          double battery_charging_voltage_value = atof(buffer.substr(60, 4).c_str());
          ESP_LOGD("UART", "Battery Charging Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(60, 4).c_str(), battery_charging_voltage_value);
          id(battery_charging_voltage).publish_state(battery_charging_voltage_value);
      
          double pv_voltage_value = atof(buffer.substr(65, 5).c_str());
          ESP_LOGD("UART", "PV Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(65, 5).c_str(), pv_voltage_value);
          id(pv_voltage).publish_state(pv_voltage_value);
      
          double pv_power_value = atof(buffer.substr(70, 5).c_str());
          ESP_LOGD("UART", "PV Power | HEX: %s | Dziesiętna: %.2f", buffer.substr(70, 5).c_str(), pv_power_value);
          id(pv_power).publish_state(pv_power_value);
      
        }
      
        buffer.clear();
        break;
      }
      

      }

Skrypt przetwarzający dane QPIRI

  • id: parse_qpiri
    then:
    • lambda: |-
      static std::string buffer;
      uint8_t byte;
      while (id(uart_0).read_byte(&byte)) {
      char c = static_cast(byte);
      buffer += c;

      if (c == '\r') {
        ESP_LOGI("UART", "Odebrano QPIRI: %s", buffer.c_str());
      
      if (buffer[0] == '(' && buffer.length() > 100) {
        // Parsowanie wartości i logowanie HEX oraz dziesiętnych
        double ac_output_voltage_value = atof(buffer.substr(1, 5).c_str());
        ESP_LOGD("UART", "AC Output Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(1, 5).c_str(), ac_output_voltage_value);
        id(ac_output_voltage).publish_state(ac_output_voltage_value);
      
        double battery_voltage_qpiri_value = atof(buffer.substr(7, 5).c_str());
        ESP_LOGD("UART", "Battery Voltage QPIRI | HEX: %s | Dziesiętna: %.2f", buffer.substr(7, 5).c_str(), battery_voltage_qpiri_value);
        id(battery_voltage_qpiri).publish_state(battery_voltage_qpiri_value);
      
        double ac_input_voltage_value = atof(buffer.substr(13, 5).c_str());
        ESP_LOGD("UART", "AC Input Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(13, 5).c_str(), ac_input_voltage_value);
        id(ac_input_voltage).publish_state(ac_input_voltage_value);
      
        double ac_output_frequency_value = atof(buffer.substr(19, 4).c_str());
        ESP_LOGD("UART", "AC Output Frequency | HEX: %s | Dziesiętna: %.2f", buffer.substr(19, 4).c_str(), ac_output_frequency_value);
        id(ac_output_frequency).publish_state(ac_output_frequency_value);
      
        double battery_charging_voltage_value = atof(buffer.substr(24, 5).c_str());
        ESP_LOGD("UART", "Battery Charging Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(24, 5).c_str(), battery_charging_voltage_value);
        id(battery_charging_voltage).publish_state(battery_charging_voltage_value);
      
        double ac_output_max_apparent_power_value = atof(buffer.substr(30, 5).c_str());
        ESP_LOGD("UART", "AC Output Max Apparent Power | HEX: %s | Dziesiętna: %.2f", buffer.substr(30, 5).c_str(), ac_output_max_apparent_power_value);
        id(ac_output_max_apparent_power).publish_state(ac_output_max_apparent_power_value);
      
        double ac_output_max_active_power_value = atof(buffer.substr(36, 5).c_str());
        ESP_LOGD("UART", "AC Output Max Active Power | HEX: %s | Dziesiętna: %.2f", buffer.substr(36, 5).c_str(), ac_output_max_active_power_value);
        id(ac_output_max_active_power).publish_state(ac_output_max_active_power_value);
      
        double battery_max_voltage_value = atof(buffer.substr(42, 5).c_str());
        ESP_LOGD("UART", "Battery Max Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(42, 5).c_str(), battery_max_voltage_value);
        id(battery_max_voltage).publish_state(battery_max_voltage_value);
      
        double battery_min_voltage_value = atof(buffer.substr(48, 5).c_str());
        ESP_LOGD("UART", "Battery Min Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(48, 5).c_str(), battery_min_voltage_value);
        id(battery_min_voltage).publish_state(battery_min_voltage_value);
      
        double battery_cutoff_voltage_value = atof(buffer.substr(54, 5).c_str());
        ESP_LOGD("UART", "Battery Cutoff Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(54, 5).c_str(), battery_cutoff_voltage_value);
        id(battery_cutoff_voltage).publish_state(battery_cutoff_voltage_value);
      
        double battery_recovery_voltage_value = atof(buffer.substr(60, 5).c_str());
        ESP_LOGD("UART", "Battery Recovery Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(60, 5).c_str(), battery_recovery_voltage_value);
        id(battery_recovery_voltage).publish_state(battery_recovery_voltage_value);
      
        double battery_float_charge_voltage_value = atof(buffer.substr(66, 5).c_str());
        ESP_LOGD("UART", "Battery Float Charge Voltage | HEX: %s | Dziesiętna: %.2f", buffer.substr(66, 5).c_str(), battery_float_charge_voltage_value);
        id(battery_float_charge_voltage).publish_state(battery_float_charge_voltage_value);
      
        int battery_number_value = atoi(buffer.substr(72, 2).c_str());
        ESP_LOGD("UART", "Battery Number | HEX: %s | Dziesiętna: %d", buffer.substr(72, 2).c_str(), battery_number_value);
        id(battery_number).publish_state(battery_number_value);
      
        double max_battery_charging_current_value = atof(buffer.substr(75, 3).c_str());
        ESP_LOGD("UART", "Max Battery Charging Current | HEX: %s | Dziesiętna: %.2f", buffer.substr(75, 3).c_str(), max_battery_charging_current_value);
        id(max_battery_charging_current).publish_state(max_battery_charging_current_value);
      
        double inverter_temperature_value = atof(buffer.substr(78, 5).c_str());
        ESP_LOGD("UART", "Inverter Temperature | HEX: %s | Dziesiętna: %.2f", buffer.substr(78, 5).c_str(), inverter_temperature_value);
        id(inverter_temperature).publish_state(inverter_temperature_value);
      
        int fan_mode_value = atoi(buffer.substr(84, 1).c_str());
        ESP_LOGD("UART", "Fan Mode | HEX: %s | Dziesiętna: %d", buffer.substr(84, 1).c_str(), fan_mode_value);
        id(fan_mode).publish_state(fan_mode_value);
      
        int end_code_value = atoi(buffer.substr(86, 3).c_str());
        ESP_LOGD("UART", "End Code | HEX: %s | Dziesiętna: %d", buffer.substr(86, 3).c_str(), end_code_value);
        id(end_code).publish_state(end_code_value);
      

      }

        buffer.clear();
        break;
      }
      

      }

QFLAG

  • id: parse_qflag
    then:
    • lambda: |-
      static std::string buffer;
      uint8_t byte;
      while (id(uart_0).read_byte(&byte)) {
      char c = static_cast(byte);
      buffer += c;

      if (c == '\r') {
        ESP_LOGI("UART", "Odebrano QFLAG: %s", buffer.c_str());
      
        if (buffer[0] == '(' && buffer.length() > 15) {
          // Flaga bypassu sieci
          int grid_bypass_flag_value = atoi(buffer.substr(0, 1).c_str());
          ESP_LOGD("UART", "Flaga bypassu sieci | HEX: %s | Dziesiętna: %d", buffer.substr(0, 1).c_str(), grid_bypass_flag_value);
          id(grid_bypass_flag).publish_state(grid_bypass_flag_value);
      
          // Flaga zwarcia wyjścia
          int output_short_circuit_flag_value = atoi(buffer.substr(1, 1).c_str());
          ESP_LOGD("UART", "Flaga zwarcia wyjścia | HEX: %s | Dziesiętna: %d", buffer.substr(1, 1).c_str(), output_short_circuit_flag_value);
          id(output_short_circuit_flag).publish_state(output_short_circuit_flag_value);
      
          // Flaga trybu oszczędzania energii
          int power_saving_mode_flag_value = atoi(buffer.substr(2, 1).c_str());
          ESP_LOGD("UART", "Flaga trybu oszczędzania energii | HEX: %s | Dziesiętna: %d", buffer.substr(2, 1).c_str(), power_saving_mode_flag_value);
          id(power_saving_mode_flag).publish_state(power_saving_mode_flag_value);
      
          // Flaga słabej baterii
          int battery_weak_flag_value = atoi(buffer.substr(3, 1).c_str());
          ESP_LOGD("UART", "Flaga słabej baterii | HEX: %s | Dziesiętna: %d", buffer.substr(3, 1).c_str(), battery_weak_flag_value);
          id(battery_weak_flag).publish_state(battery_weak_flag_value);
      
          // Flaga włączenia obciążenia
          int load_on_flag_value = atoi(buffer.substr(4, 1).c_str());
          ESP_LOGD("UART", "Flaga włączenia obciążenia | HEX: %s | Dziesiętna: %d", buffer.substr(4, 1).c_str(), load_on_flag_value);
          id(load_on_flag).publish_state(load_on_flag_value);
      
          // Flaga przeładowania baterii
          int battery_overcharge_flag_value = atoi(buffer.substr(5, 1).c_str());
          ESP_LOGD("UART", "Flaga przeładowania baterii | HEX: %s | Dziesiętna: %d", buffer.substr(5, 1).c_str(), battery_overcharge_flag_value);
          id(battery_overcharge_flag).publish_state(battery_overcharge_flag_value);
      
          // Flaga przegrzania systemu
          int system_overheat_flag_value = atoi(buffer.substr(6, 1).c_str());
          ESP_LOGD("UART", "Flaga przegrzania systemu | HEX: %s | Dziesiętna: %d", buffer.substr(6, 1).c_str(), system_overheat_flag_value);
          id(system_overheat_flag).publish_state(system_overheat_flag_value);
      
          // Flaga wyłączenia systemu
          int system_shutdown_flag_value = atoi(buffer.substr(7, 1).c_str());
          ESP_LOGD("UART", "Flaga wyłączenia systemu | HEX: %s | Dziesiętna: %d", buffer.substr(7, 1).c_str(), system_shutdown_flag_value);
          id(system_shutdown_flag).publish_state(system_shutdown_flag_value);
      
          // Flaga awarii falownika
          int inverter_fault_flag_value = atoi(buffer.substr(8, 1).c_str());
          ESP_LOGD("UART", "Flaga awarii falownika | HEX: %s | Dziesiętna: %d", buffer.substr(8, 1).c_str(), inverter_fault_flag_value);
          id(inverter_fault_flag).publish_state(inverter_fault_flag_value);
      
          // Flaga awarii ładowarki
          int charger_fault_flag_value = atoi(buffer.substr(9, 1).c_str());
          ESP_LOGD("UART", "Flaga awarii ładowarki | HEX: %s | Dziesiętna: %d", buffer.substr(9, 1).c_str(), charger_fault_flag_value);
          id(charger_fault_flag).publish_state(charger_fault_flag_value);
      
          // Flaga oszczędzania PV
          int pv_power_saving_flag_value = atoi(buffer.substr(10, 1).c_str());
          ESP_LOGD("UART", "Flaga oszczędzania PV | HEX: %s | Dziesiętna: %d", buffer.substr(10, 1).c_str(), pv_power_saving_flag_value);
          id(pv_power_saving_flag).publish_state(pv_power_saving_flag_value);
      
          // Flaga błędu komunikacji wewnętrznej
          int internal_com_error_flag_value = atoi(buffer.substr(11, 1).c_str());
          ESP_LOGD("UART", "Flaga błędu komunikacji wewnętrznej | HEX: %s | Dziesiętna: %d", buffer.substr(11, 1).c_str(), internal_com_error_flag_value);
          id(internal_com_error_flag).publish_state(internal_com_error_flag_value);
      
          // Flaga awaryjnego wyłączenia
          int emergency_shutdown_flag_value = atoi(buffer.substr(12, 1).c_str());
          ESP_LOGD("UART", "Flaga awaryjnego wyłączenia | HEX: %s | Dziesiętna: %d", buffer.substr(12, 1).c_str(), emergency_shutdown_flag_value);
          id(emergency_shutdown_flag).publish_state(emergency_shutdown_flag_value);
      
          // Flaga niskiej częstotliwości
          int low_frequency_flag_value = atoi(buffer.substr(13, 1).c_str());
          ESP_LOGD("UART", "Flaga niskiej częstotliwości | HEX: %s | Dziesiętna: %d", buffer.substr(13, 1).c_str(), low_frequency_flag_value);
          id(low_frequency_flag).publish_state(low_frequency_flag_value);
        }
      
        // Czyszczenie bufora
        buffer.clear();
        break;
      }
      

      }

QMODE

  • id: parse_qmod
    then:
    • lambda: |-
      static std::string buffer;
      uint8_t byte;

      // Odczyt danych z UART
      while (id(uart_0).read_byte(&byte)) {
      char c = static_cast(byte);
      buffer += c;

      // Sprawdzenie końca wiadomości ('\r' oznacza koniec ramki)
      if (c == '\r') {
        ESP_LOGI("UART", "Odebrano QMOD: %s", buffer.c_str());
      
        // Walidacja formatu odpowiedzi
        if (buffer.length() >= 3 && buffer[0] == '(' && buffer[buffer.length() - 1] == '\r') {
          char mode = buffer[1];  // Drugi znak określa tryb pracy
          std::string mode_str;
      
          // Mapowanie trybu na opis w języku polskim
          switch (mode) {
            case 'S': mode_str = "Tryb oczekiwania"; break; // Standby
            case 'L': mode_str = "Zasilanie z sieci"; break; // Line mode
            case 'B': mode_str = "Zasilanie z baterii"; break; // Battery mode
            case 'F': mode_str = "Awaria"; break; // Fault
            case 'P': mode_str = "Oszczędzanie energii"; break; // Power Saving
            case 'H': mode_str = "Oczekiwanie na grzanie"; break; // Heating Standby
            default: mode_str = "Nieznany tryb"; break; // Unknown
          }
      
          // Publikacja poprawnego trybu
          ESP_LOGI("QMOD", "Zinterpretowany tryb: %s", mode_str.c_str());
          id(inverter_mode).publish_state(mode_str);
      
        } else {
          // Logowanie błędnej odpowiedzi
          ESP_LOGW("QMOD", "Nieprawidłowy format odpowiedzi: %s", buffer.c_str());
          id(inverter_mode).publish_state("Nieprawidłowe dane");
        }
      
        // Czyszczenie bufora po przetworzeniu wiadomości
        buffer.clear();
        break;
      }
      

      }

==========================

SENSORY

==========================

sensor:

Sensory dla QPIGS

  • platform: template
    name: "Napięcie Sieci (AC)"
    id: grid_voltage
    unit_of_measurement: "V"

  • platform: template
    name: "Częstotliwość Sieci (AC)"
    id: grid_frequency
    unit_of_measurement: "Hz"

  • platform: template
    name: "Napięcie Wyjściowe (AC)"
    id: output_voltage
    unit_of_measurement: "V"

  • platform: template
    name: "Częstotliwość Wyjściowa (AC)"
    id: output_frequency
    unit_of_measurement: "Hz"

  • platform: template
    name: "Moc Wyjściowa (W)"
    id: output_power
    unit_of_measurement: "W"

  • platform: template
    name: "Obciążenie (%)"
    id: load_percent
    unit_of_measurement: "%"

  • platform: template
    name: "Napięcie Baterii (QPIGS)"
    id: battery_voltage_qpigs
    unit_of_measurement: "V"

  • platform: template
    name: "Prąd Ładowania (A)"
    id: charge_current
    unit_of_measurement: "A"

  • platform: template
    name: "Prąd Rozładowania (A)"
    id: discharge_current
    unit_of_measurement: "A"

  • platform: template
    name: "Napięcie PV (V)"
    id: pv_voltage
    unit_of_measurement: "V"

  • platform: template
    name: "Moc PV (W)"
    id: pv_power
    unit_of_measurement: "W"

  • platform: template
    name: "Stan Systemu"
    id: system_status
    unit_of_measurement: ""

  • platform: template
    name: "Moc Baterii (W)"
    id: battery_power
    unit_of_measurement: "W"

  • platform: template
    name: "Napięcie Odzyskanego Zasilania (V)"
    id: recovered_grid_voltage
    unit_of_measurement: "V"

Sensory QPIRI

  • platform: template
    name: "Napięcie Wyjściowe (AC)"
    id: ac_output_voltage
    unit_of_measurement: "V"

  • platform: template
    name: "Napięcie Wejściowe (AC)"
    id: ac_input_voltage
    unit_of_measurement: "V"

  • platform: template
    name: "Częstotliwość Wyjściowa (AC)"
    id: ac_output_frequency
    unit_of_measurement: "Hz"

  • platform: template
    name: "Napięcie Ładowania Baterii (V)"
    id: battery_charging_voltage
    unit_of_measurement: "V"

  • platform: template
    name: "Maksymalna Moc Wyjściowa (VA)"
    id: ac_output_max_apparent_power
    unit_of_measurement: "VA"

  • platform: template
    name: "Maksymalna Moc Wyjściowa (W)"
    id: ac_output_max_active_power
    unit_of_measurement: "W"

  • platform: template
    name: "Maksymalne Napięcie Akumulatora (V)"
    id: battery_max_voltage
    unit_of_measurement: "V"

  • platform: template
    name: "Minimalne Napięcie Akumulatora (V)"
    id: battery_min_voltage
    unit_of_measurement: "V"

  • platform: template
    name: "Napięcie Odcięcia Akumulatora (V)"
    id: battery_cutoff_voltage
    unit_of_measurement: "V"

  • platform: template
    name: "Napięcie Odzysku Zasilania (V)"
    id: battery_recovery_voltage
    unit_of_measurement: "V"

  • platform: template
    name: "Napięcie Zakończenia Ładowania (V)"
    id: battery_float_charge_voltage
    unit_of_measurement: "V"

  • platform: template
    name: "Liczba Podłączonych Akumulatorów"
    id: battery_number
    unit_of_measurement: ""

  • platform: template
    name: "Maksymalny Prąd Ładowania Akumulatorów (A)"
    id: max_battery_charging_current
    unit_of_measurement: "A"

  • platform: template
    name: "Temperatura Falownika (°C)"
    id: inverter_temperature
    unit_of_measurement: "°C"

  • platform: template
    name: "Tryb Wentylatora"
    id: fan_mode
    unit_of_measurement: ""

  • platform: template
    name: "Kod Końcowy"
    id: end_code
    unit_of_measurement: ""

  • platform: template
    name: "Napięcie Baterii (QPIGS)"
    id: battery_voltage_qpiri
    unit_of_measurement: "V"

binary_sensor:

Flagi QFLAG

  • platform: template
    name: "Bypass Sieci"
    id: grid_bypass_flag
    lambda: |-
    return id(grid_bypass_flag).state == 1;
    device_class: power

  • platform: template
    name: "Zwarcie Wyjścia"
    id: output_short_circuit_flag
    lambda: |-
    return id(output_short_circuit_flag).state == 1;
    device_class: safety

  • platform: template
    name: "Tryb Oszczędzania Energii"
    id: power_saving_mode_flag
    lambda: |-
    return id(power_saving_mode_flag).state == 1;
    device_class: power

  • platform: template
    name: "Słaba Bateria"
    id: battery_weak_flag
    lambda: |-
    return id(battery_weak_flag).state == 1;
    device_class: battery

  • platform: template
    name: "Obciążenie Włączone"
    id: load_on_flag
    lambda: |-
    return id(load_on_flag).state == 1;
    device_class: power

  • platform: template
    name: "Przeładowanie Baterii"
    id: battery_overcharge_flag
    lambda: |-
    return id(battery_overcharge_flag).state == 1;
    device_class: safety

  • platform: template
    name: "Przegrzanie Systemu"
    id: system_overheat_flag
    lambda: |-
    return id(system_overheat_flag).state == 1;
    device_class: problem

  • platform: template
    name: "Wyłączenie Systemu"
    id: system_shutdown_flag
    lambda: |-
    return id(system_shutdown_flag).state == 1;
    device_class: problem

  • platform: template
    name: "Awaria Falownika"
    id: inverter_fault_flag
    lambda: |-
    return id(inverter_fault_flag).state == 1;
    device_class: problem

  • platform: template
    name: "Awaria Ładowarki"
    id: charger_fault_flag
    lambda: |-
    return id(charger_fault_flag).state == 1;
    device_class: problem

  • platform: template
    name: "Tryb Oszczędzania PV"
    id: pv_power_saving_flag
    lambda: |-
    return id(pv_power_saving_flag).state == 1;
    device_class: power

  • platform: template
    name: "Błąd Komunikacji Wewnętrznej"
    id: internal_com_error_flag
    lambda: |-
    return id(internal_com_error_flag).state == 1;
    device_class: problem

  • platform: template
    name: "Awaryjne Wyłączenie"
    id: emergency_shutdown_flag
    lambda: |-
    return id(emergency_shutdown_flag).state == 1;
    device_class: safety

  • platform: template
    name: "Niska Częstotliwość"
    id: low_frequency_flag
    lambda: |-
    return id(low_frequency_flag).state == 1;
    device_class: problem

==========================

TEKSTOWE SENSORY (QMOD)

==========================

text_sensor:

  • platform: template
    name: "Tryb Pracy Falownika"
    id: inverter_mode
    icon: "mdi:transmission-tower"
    `

I don't understand why pipsolar doesn't want to cooperate with me ;(
It works in hardware so I'm doing something wrong in the software or the library doesn't match my easun isolar

@sza86
Copy link
Author

sza86 commented Jan 6, 2025

I give up ;( I have already started the system and I do not have remote reading

this is what the code I use looks like

substitutions:
  name: pipsolar
  tx_pin: GPIO16
  rx_pin: GPIO17

esphome:
  name: ${name}
  min_version: 2024.6.0
  project:
    name: "syssi.esphome-pipsolar@main"
    version: 1.0.0

esp32:
  board: esp32dev
  framework:
    type: esp-idf
wifi:
  ssid: !secret wifi_ssid  # Nazwa sieci Wi-Fi
  password: !secret wifi_password  # Hasło do Wi-Fi

  manual_ip:
    static_ip: 192.168.86.79  # Statyczny adres IP
    gateway: 192.168.86.1  # Brama sieci
    subnet: 255.255.255.0  # Maska podsieci
    dns1: 8.8.8.8  # Podstawowy serwer DNS
    dns2: 8.8.4.4  # Zapasowy serwer DNS

logger:
  level: VERY_VERBOSE  # Poziom logów: DEBUG

api:
  encryption:
    key: !secret key  # Klucz szyfrowania API

ota:
  password: !secret ota_password  # Hasło do aktualizacji OTA
  platform: esphome  # Platforma OTA

web_server:
  port: 80  # Port serwera WWW

uart:
  - id: uart_0
    baud_rate: 2400
    tx_pin: ${tx_pin}
    rx_pin: ${rx_pin}
    debug:
      direction: BOTH
      dummy_receiver: false
      after:
        delimiter: "\r"
      sequence:
        - lambda: UARTDebug::log_string(direction, bytes);

pipsolar:
  uart_id: uart_0
  id: inverter0

sensor:
  - platform: pipsolar
    pipsolar_id: inverter0
    # QPIRI
#    grid_rating_voltage:
#      name: "${name} grid_rating_voltage"
#    grid_rating_current:
#      name: "${name} grid_rating_current"
#    ac_output_rating_voltage:
#      name: "${name} ac_output_rating_voltage"
#    ac_output_rating_frequency:
#      name: "${name} ac_output_rating_frequency"
#    ac_output_rating_current:
#      name: "${name} ac_output_rating_current"
#    ac_output_rating_apparent_power:
#      name: "${name} ac_output_rating_apparent_power"
#    ac_output_rating_active_power:
#      name: "${name} ac_output_rating_active_power"
#    battery_rating_voltage:
#      name: "${name} battery_rating_voltage"
#    battery_recharge_voltage:
#      name: "${name} battery_recharge_voltage"
#    battery_under_voltage:
#      name: "${name} battery_under_voltage"
#    battery_bulk_voltage:
#      name: "${name} battery_bulk_voltage"
#    battery_float_voltage:
#      name: "${name} battery_float_voltage"
#    battery_type:
#      name: "${name} battery_type"
#    current_max_ac_charging_current:
#      name: "${name} current_max_ac_charging_current"
#    current_max_charging_current:
#      name: "${name} current_max_charging_current"
#    input_voltage_range:
#      name: "${name} input_voltage_range"
#    output_source_priority:
#      name: "${name} output_source_priority"
#    charger_source_priority:
#      name: "${name} charger_source_priority"
#    parallel_max_num:
#      name: "${name} parallel_max_num"
#    machine_type:
#      name: "${name} machine_type"
#    topology:
#      name: "${name} topology"
#    output_mode:
#      name: "${name} output_mode"
#    battery_redischarge_voltage:
#      name: "${name} battery_redischarge_voltage"
  #  pv_ok_condition_for_parallel:
  #    name: "${name} pv_ok_condition_for_parallel"
  #  pv_power_balance:
  #    name: "${name} pv_power_balance"

    # QPIGS
    grid_voltage:
      name: "${name} grid_voltage"
    grid_frequency:
      name: "${name} grid_frequency"
    ac_output_voltage:
      name: "${name} ac_output_voltage"
    ac_output_frequency:
      name: "${name} ac_output_frequency"
    ac_output_apparent_power:
      name: "${name} ac_output_apparent_power"
    ac_output_active_power:
      name: "${name} ac_output_active_power"
    output_load_percent:
      name: "${name} output_load_percent"
    bus_voltage:
      name: "${name} bus_voltage"
    battery_voltage:
      name: "${name} battery_voltage"
    battery_charging_current:
      name: "${name} battery_charging_current"
    battery_capacity_percent:
      name: "${name} battery_capacity_percent"
    inverter_heat_sink_temperature:
      name: "${name} inverter_heat_sink_temperature"
    pv_input_current_for_battery:
      name: "${name} pv_input_current_for_battery"
    pv_input_voltage:
      name: "${name} pv_input_voltage"
    battery_voltage_scc:
      name: "${name} battery_voltage_scc"
    battery_discharge_current:
      name: "${name} battery_discharge_current"
    battery_voltage_offset_for_fans_on:
      name: "${name} battery_voltage_offset_for_fans_on"
#    eeprom_version:
#      name: "${name} eeprom_version"
    pv_charging_power:
      name: "${name} pv_charging_power"

text_sensor:
  - platform: pipsolar
    pipsolar_id: inverter0
    device_mode:
      name: "${name} device_mode"
      filters:
        map:
          - P -> Power on mode
          - S -> Standby mode
          - L -> Line mode
          - B -> Battery mode
          - F -> Fault mode
          - D -> Shutdown mode
#    last_qpigs:
#      name: "${name} last_qpigs"
#    last_qpiri:
#      name: "${name} last_qpiri"
#    last_qmod:
#      name: "${name} last_qmod"
#    last_qflag:
#      name: "${name} last_qflag"

binary_sensor:
  - platform: pipsolar
    pipsolar_id: inverter0
    add_sbu_priority_version:
      name: "${name} add_sbu_priority_version"
    configuration_status:
      name: "${name} configuration_status"
#    scc_firmware_version:
#      name: "${name} scc_firmware_version"
    load_status:
      name: "${name} load_status"
    battery_voltage_to_steady_while_charging:
      name: "${name} battery_voltage_to_steady_while_charging"
    charging_status:
      name: "${name} charging_status"
    scc_charging_status:
      name: "${name} scc_charging_status"
    ac_charging_status:
      name: "${name} ac_charging_status"
    charging_to_floating_mode:
      name: "${name} charging_to_floating_mode"
    switch_on:
      name: "${name} switch_on"
#    dustproof_installed:
#      name: "${name} dustproof_installed"
    silence_buzzer_open_buzzer:
      name: "${name} silence_buzzer_open_buzzer"
    overload_bypass_function:
      name: "${name} overload_bypass_function"
    lcd_escape_to_default:
      name: "${name} lcd_escape_to_default"
    overload_restart_function:
      name: "${name} overload_restart_function"
    over_temperature_restart_function:
      name: "${name} over_temperature_restart_function"
#    backlight_on:
#      name: "${name} backlight_on"

switch:
  - platform: pipsolar
    pipsolar_id: inverter0
    output_source_priority_utility:
      name: "${name} output_source_priority_utility"
    output_source_priority_solar:
      name: "${name} output_source_priority_solar"
    output_source_priority_battery:
      name: "${name} output_source_priority_battery"
    input_voltage_range:
      name: "${name} input_voltage_range"
    pv_ok_condition_for_parallel:
      name: "${name} pv_ok_condition_for_parallel"
    pv_power_balance:
      name: "${name} pv_power_balance"

output:
  - platform: pipsolar
    pipsolar_id: inverter0
    battery_recharge_voltage:
      id: inverter0_battery_recharge_voltage_out`

It doesn't display anything from QPIGS on the website. Below is the log

14:29:45][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:29:46][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:29:46][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:29:46][D][pipsolar:776]: checking crc on incoming message
[14:29:46][D][pipsolar:779]: CRC OK
[14:29:46][D][pipsolar:475]: Decode QMOD
[14:29:46][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:29:46][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:29:46][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:29:46][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:29:46][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:29:46][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=9006 (now=10008)
[14:29:47][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:29:47][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:29:47][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:29:47][D][pipsolar:776]: checking crc on incoming message
[14:29:47][D][pipsolar:779]: CRC OK
[14:29:47][D][pipsolar:483]: Decode QFLAG
[14:29:47][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=10006 (now=11010)
[14:29:48][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:29:48][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:29:48][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:29:48][D][pipsolar:776]: checking crc on incoming message
[14:29:48][D][pipsolar:779]: CRC OK
[14:29:48][D][pipsolar:433]: Decode QPIRI
[14:29:48][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=11006 (now=12007)
[14:29:49][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:29:49][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:29:49][D][uart_debug:158]: <<< "(239.9 49.9 239.9 49.9 0503 0410 009 392 53.30 000 095 0037 01.3 267.9 00.00 00000 00010111 00 00 00360 010 0 01 0000\xC7\xE9\r"
[14:29:49][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=12006 (now=13008)
[14:29:50][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=3348 (now=13348)
[14:29:50][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=13006 (now=14008)
[14:29:51][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=14006 (now=15010)
[14:29:52][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=15006 (now=16006)
[14:29:53][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=16006 (now=17009)
[14:29:54][D][pipsolar:759]: timeout command to poll: QPIGS
[14:29:54][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:29:54][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:29:54][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:29:54][D][pipsolar:776]: checking crc on incoming message
[14:29:54][D][pipsolar:779]: CRC OK
[14:29:54][D][pipsolar:475]: Decode QMOD
[14:29:54][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:29:54][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:29:54][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:29:54][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:29:54][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:29:54][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=17006 (now=18009)
[14:29:55][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:29:55][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:29:55][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:29:55][D][pipsolar:776]: checking crc on incoming message
[14:29:55][D][pipsolar:779]: CRC OK
[14:29:55][D][pipsolar:483]: Decode QFLAG
[14:29:55][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=18006 (now=19010)
[14:29:56][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:29:56][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:29:56][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:29:56][D][pipsolar:776]: checking crc on incoming message
[14:29:56][D][pipsolar:779]: CRC OK
[14:29:56][D][pipsolar:433]: Decode QPIRI
[14:29:56][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=19006 (now=20006)
[14:29:57][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:29:57][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:29:57][D][uart_debug:158]: <<< "(240.2 50.0 240.2 50.0 0480 0371 009 394 53.30 000 095 0037 01.3 270.6 00.00 00000 00010111 00 00 00356 010 0 01 0000\xE7\xF5\r"
[14:29:57][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=20006 (now=21007)
[14:29:58][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=21006 (now=22006)
[14:29:59][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=22006 (now=23010)
[14:30:00][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=13348 (now=23348)
[14:30:00][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=23006 (now=24012)
[14:30:01][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=24006 (now=25006)
[14:30:02][D][pipsolar:759]: timeout command to poll: QPIGS
[14:30:02][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:30:02][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:30:02][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:30:02][D][pipsolar:776]: checking crc on incoming message
[14:30:02][D][pipsolar:779]: CRC OK
[14:30:02][D][pipsolar:475]: Decode QMOD
[14:30:02][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:30:02][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:30:02][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:30:02][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:30:02][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:30:02][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=25006 (now=26010)
[14:30:03][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:30:03][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:30:03][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:30:03][D][pipsolar:776]: checking crc on incoming message
[14:30:03][D][pipsolar:779]: CRC OK
[14:30:03][D][pipsolar:483]: Decode QFLAG
[14:30:03][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=26006 (now=27008)
[14:30:04][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:30:04][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:30:04][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:30:04][D][pipsolar:776]: checking crc on incoming message
[14:30:04][D][pipsolar:779]: CRC OK
[14:30:04][D][pipsolar:433]: Decode QPIRI
[14:30:04][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=27006 (now=28006)
[14:30:05][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:30:05][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:30:05][D][uart_debug:158]: <<< "(238.3 49.9 238.3 49.9 0500 0379 009 397 53.30 000 095 0037 01.3 272.7 00.00 00000 00010111 00 00 00358 010 0 01 0000\x99~\r"
[14:30:05][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=28006 (now=29009)
[14:30:06][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=29006 (now=30009)
[14:30:07][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=30006 (now=31007)
[14:30:08][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=31006 (now=32009)
[14:30:09][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=32006 (now=33006)
[14:30:10][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=23348 (now=33351)
[14:30:10][D][pipsolar:759]: timeout command to poll: QPIGS
[14:30:10][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:30:10][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:30:10][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:30:10][D][pipsolar:776]: checking crc on incoming message
[14:30:10][D][pipsolar:779]: CRC OK
[14:30:10][D][pipsolar:475]: Decode QMOD
[14:30:10][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:30:10][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:30:10][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:30:10][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:30:10][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:30:10][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=33006 (now=34009)
[14:30:11][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:30:11][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:30:11][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:30:11][D][pipsolar:776]: checking crc on incoming message
[14:30:11][D][pipsolar:779]: CRC OK
[14:30:11][D][pipsolar:483]: Decode QFLAG
[14:30:11][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=34006 (now=35009)
[14:30:12][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:30:12][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:30:12][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:30:12][D][pipsolar:776]: checking crc on incoming message
[14:30:12][D][pipsolar:779]: CRC OK
[14:30:12][D][pipsolar:433]: Decode QPIRI
[14:30:12][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=35006 (now=36010)
[14:30:13][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:30:13][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:30:13][D][uart_debug:158]: <<< "(238.8 49.9 238.8 49.9 0477 0408 009 392 53.40 001 095 0037 01.3 275.0 00.00 00000 00010111 00 00 00360 010 0 01 0000\xA1-\r"
[14:30:13][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=36006 (now=37030)
[14:30:14][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=37006 (now=38011)
[14:30:15][VV][scheduler:225]: Running interval '' with interval=60000 last_execution=4294945367 (now=38077)
[14:30:15][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=38006 (now=39010)
[14:30:16][VV][api.socket:198]: ESPHome Logs 2024.12.2 (192.168.86.3): Connection closed
[14:30:16][W][api.connection:105]: ESPHome Logs 2024.12.2 (192.168.86.3): Connection closed
[14:30:16][V][api:116]: Removing connection to ESPHome Logs 2024.12.2
[14:30:16][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=39006 (now=40007)
[14:30:17][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=40006 (now=41006)
[14:30:18][D][pipsolar:759]: timeout command to poll: QPIGS
[14:30:18][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:30:18][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:30:18][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:30:18][D][pipsolar:776]: checking crc on incoming message
[14:30:18][D][pipsolar:779]: CRC OK
[14:30:18][D][pipsolar:475]: Decode QMOD
[14:30:18][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:30:18][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:30:18][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:30:18][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:30:18][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:30:18][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=41006 (now=42006)
[14:30:19][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:30:19][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:30:19][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:30:19][D][pipsolar:776]: checking crc on incoming message
[14:30:19][D][pipsolar:779]: CRC OK
[14:30:19][D][pipsolar:483]: Decode QFLAG
[14:30:19][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=42006 (now=43006)
[14:30:20][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=33348 (now=43348)
[14:30:20][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:30:20][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:30:20][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=43006 (now=44006)
[14:30:20][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:30:20][D][pipsolar:776]: checking crc on incoming message
[14:30:20][D][pipsolar:779]: CRC OK
[14:30:20][D][pipsolar:433]: Decode QPIRI
[14:30:21][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:30:21][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:30:21][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=44006 (now=45006)
[14:30:22][D][uart_debug:158]: <<< "(238.6 49.9 238.6 49.9 0453 0339 008 396 53.50 000 095 0037 01.3 272.7 00.00 00000 00010111 00 00 00363 010 0 01 0000\x81@\r"
[14:30:22][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=45006 (now=46011)
[14:30:23][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=46006 (now=47011)
[14:30:24][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=47006 (now=48012)
[14:30:25][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=48006 (now=49006)
[14:30:26][D][pipsolar:759]: timeout command to poll: QPIGS
[14:30:26][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:30:26][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:30:26][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:30:26][D][pipsolar:776]: checking crc on incoming message
[14:30:26][D][pipsolar:779]: CRC OK
[14:30:26][D][pipsolar:475]: Decode QMOD
[14:30:26][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:30:26][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:30:26][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:30:26][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:30:26][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:30:26][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=49006 (now=50006)
[14:30:27][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:30:27][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:30:27][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:30:27][D][pipsolar:776]: checking crc on incoming message
[14:30:27][D][pipsolar:779]: CRC OK
[14:30:27][D][pipsolar:483]: Decode QFLAG
[14:30:27][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=50006 (now=51012)
[14:30:28][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:30:28][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:30:28][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=51006 (now=52006)
[14:30:29][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:30:29][D][pipsolar:776]: checking crc on incoming message
[14:30:29][D][pipsolar:779]: CRC OK
[14:30:29][D][pipsolar:433]: Decode QPIRI
[14:30:29][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:30:29][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:30:29][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=52006 (now=53006)
[14:30:30][D][uart_debug:158]: <<< "(238.9 49.9 238.9 49.9 0430 0329 008 399 53.70 000 095 0037 01.3 273.1 00.00 00000 00010111 00 00 00359 010 0 01 0000c\x00\r"
[14:30:30][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=43348 (now=53348)
[14:30:30][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=53006 (now=54010)
[14:30:31][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=54006 (now=55011)
[14:30:32][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=55006 (now=56006)
[14:30:33][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=56006 (now=57010)
[14:30:34][D][pipsolar:759]: timeout command to poll: QPIGS
[14:30:34][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:30:34][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:30:34][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:30:34][D][pipsolar:776]: checking crc on incoming message
[14:30:34][D][pipsolar:779]: CRC OK
[14:30:34][D][pipsolar:475]: Decode QMOD
[14:30:34][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:30:34][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:30:34][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:30:34][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:30:34][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:30:34][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=57006 (now=58010)
[14:30:35][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:30:35][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:30:35][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:30:35][D][pipsolar:776]: checking crc on incoming message
[14:30:35][D][pipsolar:779]: CRC OK
[14:30:35][D][pipsolar:483]: Decode QFLAG
[14:30:35][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=58006 (now=59006)
[14:30:36][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:30:36][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:30:36][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=59006 (now=60011)
[14:30:37][I][safe_mode:041]: Boot seems successful; resetting boot loop counter
[14:30:37][VV][esp32.preferences:040]: s_pending_save: key: 233825507, len: 4
[14:30:37][D][esp32.preferences:114]: Saving 1 preferences to flash...
[14:30:37][VV][esp32.preferences:123]: Checking if NVS data 233825507 has changed
[14:30:37][V][esp32.preferences:126]: sync: key: 233825507, len: 4
[14:30:37][D][esp32.preferences:142]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[14:30:37][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:30:37][D][pipsolar:776]: checking crc on incoming message
[14:30:37][D][pipsolar:779]: CRC OK
[14:30:37][D][pipsolar:433]: Decode QPIRI
[14:30:37][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:30:37][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:30:37][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=60006 (now=61009)
[14:30:38][D][uart_debug:158]: <<< "(238.8 50.0 238.8 50.0 0477 0358 009 398 53.70 000 095 0037 01.3 268.2 00.00 00000 00010111 00 00 00354 010 0 01 0000R\xEB\r"
[14:30:38][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=61006 (now=62012)
[14:30:39][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=62006 (now=63006)
[14:30:40][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=53348 (now=63348)
[14:30:40][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=63006 (now=64011)
[14:30:41][VV][api.connection:133]: Sending keepalive PING...
[14:30:41][VV][api.service:037]: send_ping_request: PingRequest {}
[14:30:41][VV][api.service:706]: on_ping_response: PingResponse {}
[14:30:41][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=64006 (now=65006)
[14:30:42][D][pipsolar:759]: timeout command to poll: QPIGS
[14:30:42][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:30:42][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:30:42][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:30:42][D][pipsolar:776]: checking crc on incoming message
[14:30:42][D][pipsolar:779]: CRC OK
[14:30:42][D][pipsolar:475]: Decode QMOD
[14:30:42][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:30:42][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:30:42][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:30:42][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:30:42][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:30:42][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=65006 (now=66013)
[14:30:43][VV][api.connection:133]: Sending keepalive PING...
[14:30:43][VV][api.service:037]: send_ping_request: PingRequest {}
[14:30:43][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:30:43][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:30:43][VV][api.service:706]: on_ping_response: PingResponse {}
[14:30:43][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:30:43][D][pipsolar:776]: checking crc on incoming message
[14:30:43][D][pipsolar:779]: CRC OK
[14:30:43][D][pipsolar:483]: Decode QFLAG
[14:30:43][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=66006 (now=67006)
[14:30:44][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:30:44][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:30:44][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=67006 (now=68012)
[14:30:45][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:30:45][D][pipsolar:776]: checking crc on incoming message
[14:30:45][D][pipsolar:779]: CRC OK
[14:30:45][D][pipsolar:433]: Decode QPIRI
[14:30:45][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:30:45][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:30:45][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=68006 (now=69012)
[14:30:46][D][uart_debug:158]: <<< "(238.0 49.9 238.0 49.9 0452 0362 008 398 53.90 000 095 0037 01.3 271.2 00.00 00000 00010111 00 00 00359 010 0 01 0000\'\x95\r"
[14:30:46][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=69006 (now=70008)
[14:30:47][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=70006 (now=71006)
[14:30:48][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=71006 (now=72008)
[14:30:49][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=72006 (now=73010)
[14:30:50][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=63348 (now=73350)
[14:30:50][D][pipsolar:759]: timeout command to poll: QPIGS
[14:30:50][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:30:50][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:30:50][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:30:50][D][pipsolar:776]: checking crc on incoming message
[14:30:50][D][pipsolar:779]: CRC OK
[14:30:50][D][pipsolar:475]: Decode QMOD
[14:30:50][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:30:50][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:30:50][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:30:50][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:30:50][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:30:50][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=73006 (now=74014)
[14:30:51][VV][web_server_idf:106][httpd]: Enter AsyncWebServer::request_handler. method=1, uri=/events
[14:30:51][V][json:038][httpd]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058][httpd]: Size after shrink 132 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 196 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 192 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 180 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 212 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 184 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 188 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 188 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 196 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 180 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 196 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 196 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 192 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 196 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 204 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 204 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 220 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 208 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 228 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 216 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 216 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 212 bytes
[14:30:51][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:30:51][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 204 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 208 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 216 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 216 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 224 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 220 bytes
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 208 bytes
[14:30:51][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=74006 (now=75015)
[14:30:51][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:51][V][json:058]: Size after shrink 212 bytes
[14:30:51][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:30:52][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:52][V][json:058]: Size after shrink 216 bytes
[14:30:52][D][pipsolar:776]: checking crc on incoming message
[14:30:52][D][pipsolar:779]: CRC OK
[14:30:52][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:52][V][json:058]: Size after shrink 228 bytes
[14:30:52][D][pipsolar:483]: Decode QFLAG
[14:30:52][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:52][V][json:058]: Size after shrink 208 bytes
[14:30:52][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:52][V][json:058]: Size after shrink 228 bytes
[14:30:52][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:52][V][json:058]: Size after shrink 224 bytes
[14:30:52][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:52][V][json:058]: Size after shrink 228 bytes
[14:30:52][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:52][V][json:058]: Size after shrink 216 bytes
[14:30:52][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:52][V][json:058]: Size after shrink 224 bytes
[14:30:52][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:52][V][json:058]: Size after shrink 212 bytes
[14:30:52][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:52][V][json:058]: Size after shrink 188 bytes
[14:30:52][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:30:52][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:30:52][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=75006 (now=76007)
[14:30:53][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:30:53][D][pipsolar:776]: checking crc on incoming message
[14:30:53][D][pipsolar:779]: CRC OK
[14:30:53][D][pipsolar:433]: Decode QPIRI
[14:30:53][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:30:53][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:30:53][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=76006 (now=77009)
[14:30:54][D][uart_debug:158]: <<< "(240.9 50.0 240.9 50.0 0481 0361 009 398 53.80 000 095 0037 01.2 275.9 00.00 00000 00010111 00 00 00354 010 0 01 0000)\x18\r"
[14:30:54][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=77006 (now=78006)
[14:30:55][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=78006 (now=79011)
[14:30:56][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=79006 (now=80006)
[14:30:57][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=80006 (now=81006)
[14:30:58][D][pipsolar:759]: timeout command to poll: QPIGS
[14:30:58][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:30:58][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:30:58][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=81006 (now=82009)
[14:30:59][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:30:59][D][pipsolar:776]: checking crc on incoming message
[14:30:59][D][pipsolar:779]: CRC OK
[14:30:59][D][pipsolar:475]: Decode QMOD
[14:30:59][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:30:59][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:30:59][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:30:59][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:30:59][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:30:59][V][json:058]: Size after shrink 116 bytes
[14:30:59][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:30:59][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:30:59][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:30:59][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=82006 (now=83019)
[14:31:00][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:31:00][D][pipsolar:776]: checking crc on incoming message
[14:31:00][D][pipsolar:779]: CRC OK
[14:31:00][D][pipsolar:483]: Decode QFLAG
[14:31:00][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=73348 (now=83349)
[14:31:00][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=83006 (now=84006)
[14:31:00][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:31:00][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:31:01][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:31:01][D][pipsolar:776]: checking crc on incoming message
[14:31:01][D][pipsolar:779]: CRC OK
[14:31:01][D][pipsolar:433]: Decode QPIRI
[14:31:01][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=84006 (now=85010)
[14:31:01][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:31:02][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:31:02][D][uart_debug:158]: <<< "(241.4 50.0 241.4 50.0 0458 0348 008 396 53.90 001 095 0037 01.3 272.8 00.00 00000 00010111 00 00 00359 010 0 01 0000\x10\xE2\r"
[14:31:02][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=85006 (now=86011)
[14:31:03][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=86006 (now=87006)
[14:31:04][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=87006 (now=88006)
[14:31:05][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=88006 (now=89011)
[14:31:06][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=89006 (now=90006)
[14:31:06][D][pipsolar:759]: timeout command to poll: QPIGS
[14:31:07][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:31:07][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:31:07][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:31:07][D][pipsolar:776]: checking crc on incoming message
[14:31:07][D][pipsolar:779]: CRC OK
[14:31:07][D][pipsolar:475]: Decode QMOD
[14:31:07][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:31:07][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:31:07][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:31:07][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:31:07][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:31:07][V][json:058]: Size after shrink 116 bytes
[14:31:07][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:31:07][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=90006 (now=91006)
[14:31:08][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:31:08][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:31:08][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:31:08][D][pipsolar:776]: checking crc on incoming message
[14:31:08][D][pipsolar:779]: CRC OK
[14:31:08][D][pipsolar:483]: Decode QFLAG
[14:31:08][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=91006 (now=92008)
[14:31:09][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:31:09][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:31:09][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:31:09][D][pipsolar:776]: checking crc on incoming message
[14:31:09][D][pipsolar:779]: CRC OK
[14:31:09][D][pipsolar:433]: Decode QPIRI
[14:31:09][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=92006 (now=93012)
[14:31:10][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:31:10][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:31:10][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=83348 (now=93348)
[14:31:10][D][uart_debug:158]: <<< "(241.5 49.9 241.5 49.9 0434 0315 008 397 54.00 001 095 0037 01.3 272.7 00.00 00000 00010111 00 00 00358 010 0 01 0000+\xD5\r"
[14:31:10][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=93006 (now=94007)
[14:31:11][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=94006 (now=95006)
[14:31:12][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=95006 (now=96009)
[14:31:13][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=96006 (now=97010)
[14:31:14][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=97006 (now=98006)
[14:31:15][VV][scheduler:225]: Running interval '' with interval=60000 last_execution=38071 (now=98074)
[14:31:15][D][pipsolar:759]: timeout command to poll: QPIGS
[14:31:15][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:31:15][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:31:15][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:31:15][D][pipsolar:776]: checking crc on incoming message
[14:31:15][D][pipsolar:779]: CRC OK
[14:31:15][D][pipsolar:475]: Decode QMOD
[14:31:15][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:31:15][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:31:15][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:31:15][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:31:15][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:31:15][V][json:058]: Size after shrink 116 bytes
[14:31:15][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:31:15][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=98006 (now=99008)
[14:31:16][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:31:16][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:31:16][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:31:16][D][pipsolar:776]: checking crc on incoming message
[14:31:16][D][pipsolar:779]: CRC OK
[14:31:16][D][pipsolar:483]: Decode QFLAG
[14:31:16][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=99006 (now=100006)
[14:31:17][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:31:17][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:31:17][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:31:17][D][pipsolar:776]: checking crc on incoming message
[14:31:17][D][pipsolar:779]: CRC OK
[14:31:17][D][pipsolar:433]: Decode QPIRI
[14:31:17][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=100006 (now=101006)
[14:31:18][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:31:18][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:31:18][D][uart_debug:158]: <<< "(241.4 50.0 241.4 50.0 0458 0336 008 399 53.90 001 095 0037 01.3 270.6 00.00 00000 00010111 00 00 00359 010 0 01 0000\xDAr\r"
[14:31:18][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=101006 (now=102006)
[14:31:19][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=102006 (now=103010)
[14:31:20][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=93348 (now=103353)
[14:31:20][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=103006 (now=104008)
[14:31:21][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=104006 (now=105008)
[14:31:22][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=105006 (now=106010)
[14:31:23][D][pipsolar:759]: timeout command to poll: QPIGS
[14:31:23][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:31:23][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:31:23][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:31:23][D][pipsolar:776]: checking crc on incoming message
[14:31:23][D][pipsolar:779]: CRC OK
[14:31:23][D][pipsolar:475]: Decode QMOD
[14:31:23][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:31:23][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:31:23][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:31:23][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:31:23][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:31:23][V][json:058]: Size after shrink 116 bytes
[14:31:23][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:31:23][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=106006 (now=107006)
[14:31:24][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:31:24][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:31:24][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:31:24][D][pipsolar:776]: checking crc on incoming message
[14:31:24][D][pipsolar:779]: CRC OK
[14:31:24][D][pipsolar:483]: Decode QFLAG
[14:31:24][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=107006 (now=108006)
[14:31:25][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:31:25][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:31:25][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:31:25][D][pipsolar:776]: checking crc on incoming message
[14:31:25][D][pipsolar:779]: CRC OK
[14:31:25][D][pipsolar:433]: Decode QPIRI
[14:31:25][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=108006 (now=109007)
[14:31:26][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:31:26][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:31:26][D][uart_debug:158]: <<< "(241.1 49.9 241.1 49.9 0505 0406 009 396 53.60 000 095 0037 01.3 271.2 00.00 00000 00010111 00 00 00356 010 0 01 0000qx\r"
[14:31:26][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=109006 (now=110008)
[14:31:27][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=110006 (now=111010)
[14:31:28][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=111006 (now=112007)
[14:31:29][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=112006 (now=113006)
[14:31:30][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=103348 (now=113348)
[14:31:30][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=113006 (now=114008)
[14:31:31][D][pipsolar:759]: timeout command to poll: QPIGS
[14:31:31][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:31:31][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:31:31][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:31:31][D][pipsolar:776]: checking crc on incoming message
[14:31:31][D][pipsolar:779]: CRC OK
[14:31:31][D][pipsolar:475]: Decode QMOD
[14:31:31][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:31:31][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:31:31][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:31:31][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:31:31][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:31:31][V][json:058]: Size after shrink 116 bytes
[14:31:31][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:31:31][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=114006 (now=115006)
[14:31:32][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:31:32][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:31:32][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:31:32][D][pipsolar:776]: checking crc on incoming message
[14:31:32][D][pipsolar:779]: CRC OK
[14:31:32][D][pipsolar:483]: Decode QFLAG
[14:31:32][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=115006 (now=116007)
[14:31:33][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:31:33][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:31:33][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:31:33][D][pipsolar:776]: checking crc on incoming message
[14:31:33][D][pipsolar:779]: CRC OK
[14:31:33][D][pipsolar:433]: Decode QPIRI
[14:31:33][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=116006 (now=117006)
[14:31:34][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:31:34][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:31:34][D][uart_debug:158]: <<< "(239.8 49.9 239.8 49.9 0480 0368 009 396 53.80 001 095 0037 01.3 271.2 00.00 00000 00010111 00 00 00362 010 0 01 0000\xA1\xDE\r"
[14:31:34][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=117006 (now=118013)
[14:31:35][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=118006 (now=119008)
[14:31:36][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=119006 (now=120011)
[14:31:37][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=120006 (now=121006)
[14:31:38][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=121006 (now=122010)
[14:31:39][D][pipsolar:759]: timeout command to poll: QPIGS
[14:31:39][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:31:39][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:31:39][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:31:39][D][pipsolar:776]: checking crc on incoming message
[14:31:39][D][pipsolar:779]: CRC OK
[14:31:39][D][pipsolar:475]: Decode QMOD
[14:31:39][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:31:39][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:31:39][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:31:39][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:31:39][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:31:39][V][json:058]: Size after shrink 116 bytes
[14:31:39][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}
[14:31:39][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=122006 (now=123006)
[14:31:40][VV][scheduler:225]: Running interval '' with interval=10000 last_execution=113348 (now=123348)
[14:31:40][D][uart_debug:158]: >>> "QFLAG\x98t\r"
[14:31:40][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[14:31:40][D][uart_debug:158]: <<< "(EauvzDbdjkxyb\xE2\r"
[14:31:40][D][pipsolar:776]: checking crc on incoming message
[14:31:40][D][pipsolar:779]: CRC OK
[14:31:40][D][pipsolar:483]: Decode QFLAG
[14:31:40][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=123006 (now=124006)
[14:31:41][D][uart_debug:158]: >>> "QPIRI\xF8T\r"
[14:31:41][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[14:31:41][VV][api.connection:133]: Sending keepalive PING...
[14:31:41][VV][api.service:037]: send_ping_request: PingRequest {}
[14:31:41][VV][api.service:706]: on_ping_response: PingResponse {}
[14:31:41][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=124006 (now=125006)
[14:31:41][D][uart_debug:158]: <<< "(230.0 22.6 230.0 50.0 22.6 5200 5200 48.0 44.0 43.0 56.9 55.0 2 10 010 1 1 2 9 00 0 0 49.0 0 1 000\xF0\x8D\r"
[14:31:41][D][pipsolar:776]: checking crc on incoming message
[14:31:42][D][pipsolar:779]: CRC OK
[14:31:42][D][pipsolar:433]: Decode QPIRI
[14:31:42][D][uart_debug:158]: >>> "QPIGS\xB7\xA9\r"
[14:31:42][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[14:31:42][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=125006 (now=126010)
[14:31:43][D][uart_debug:158]: <<< "(239.4 50.0 239.4 50.0 0454 0365 008 396 53.80 001 095 0037 01.3 268.7 00.00 00000 00010111 00 00 00358 010 0 01 0000M9\r"
[14:31:43][VV][api.connection:133]: Sending keepalive PING...
[14:31:43][VV][api.service:037]: send_ping_request: PingRequest {}
[14:31:43][VV][api.service:706]: on_ping_response: PingResponse {}
[14:31:43][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=126006 (now=127006)
[14:31:44][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=127006 (now=128006)
[14:31:45][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=128006 (now=129007)
[14:31:46][VV][scheduler:225]: Running interval 'update' with interval=1000 last_execution=129006 (now=130010)
[14:31:47][D][pipsolar:759]: timeout command to poll: QPIGS
[14:31:47][D][uart_debug:158]: >>> "QMODI\xC1\r"
[14:31:47][D][pipsolar:840]: Sending polling command : QMOD with length 4
[14:31:47][D][uart_debug:158]: <<< "(L\x06\a\r"
[14:31:47][D][pipsolar:776]: checking crc on incoming message
[14:31:47][D][pipsolar:779]: CRC OK
[14:31:47][D][pipsolar:475]: Decode QMOD
[14:31:47][V][text_sensor:013]: 'pipsolar device_mode': Received new state L
[14:31:47][VV][text_sensor.filter:013]: Filter(0x3ffc0620)::input(L)
[14:31:47][VV][text_sensor.filter:020]: Filter(0x3ffc0620)::output(Line mode) -> SENSOR
[14:31:47][D][text_sensor:064]: 'pipsolar device_mode': Sending state 'Line mode'
[14:31:47][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:31:47][V][json:058]: Size after shrink 116 bytes
[14:31:47][VV][api.service:174]: send_text_sensor_state_response: TextSensorStateResponse {
  key: 1010103678
  state: 'Line mode'
  missing_state: NO
}

Help me fix this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants