Modbus Anenji ESP

Publicat de Florin pe

Modbus Inverter Anenji

Pinii sunt alegerea voastra ! Puteti scoate anumiti senzori care nu va folosesc !

substitutions:
  name: inv
  device_description: "Monitor  Anenji inverter via RS485"

esphome:
  name: ${name}
  friendly_name: Anenji work
  comment: ${device_description}

# ESP board 
esp32:
  board: az-delivery-devkit-v4
  framework:
    type: arduino

# Enable Home Assistant API
api:
 reboot_timeout: 60s
 encryption:
   key: "j1sQbRW1BCRnNixaf00567o+CGBaNuHE0+tCbj0="

ota:
  platform: esphome


# Enable Home Assistant Mqtt

#mqtt:
#  broker: !secret mqtt_broker
#  username: !secret mqtt_username
#  password: !secret mqtt_password

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

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "ESP_Inv_iRQ"
    password: "123654"


# Enable fallback hotspot (captive portal) in case wifi connection fails

web_server:
  port: 80
  auth:
    username: admin
    password: admin

button:
  - platform: restart
    name: WiFi Anenji Reboot




captive_portal:

  
logger:
  level: DEBUG


time:
  - platform: sntp  # Folosește NTP pentru sincronizarea orei




# UART CONFIG

uart:
  id: modbus_uart
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 9600
  stop_bits: 1
  parity: NONE
    
modbus:
  - id: modbus0
    uart_id: modbus_uart
    

modbus_controller:
  - id: smg0
    address: 0x01
    modbus_id: modbus0
    command_throttle: 200ms
    update_interval: 60s


#  - id: chint_meter
#    address: 0x02
#    modbus_id: modbus0
#    command_throttle: 200ms
#    update_interval: 5s


sensor:


####################################################################
 


  - platform: total_daily_energy
    name: "${name} PV energy today"
    restore: true
    icon: mdi:counter
    power_id: smg0_pv_average_power
    filters:
      # Multiplication factor from W to kW is 0.001
      - multiply: 0.001
    unit_of_measurement: kWh

  # Fault code                                                    ULong 100 2 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} fault code"
    address: 100
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 0

  # Warning code                                                  ULong 108 2 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} warning code"
    address: 108
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 0

  # Operation Mode                                                UInt  201 1 R 0: Power On
  #                                                                             1: Standby
  #                                                                             2: Mains
  #                                                                             3: Off-Grid
  #                                                                             4: Bypass
  #                                                                             5: Charging
  #                                                                             6: Fault
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} operation mode id"
    address: 201
    register_type: holding
    value_type: U_WORD
    accuracy_decimals: 0

  # Effective mains voltage                              0.1V     Int   202 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} ac voltage"
    address: 202
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "V"
    device_class: voltage
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  # Mains Frequency                                      0.01Hz   Int   203 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} ac frequency"
    address: 203
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "Hz"
    device_class: frequency
    state_class: measurement
    accuracy_decimals: 2
    filters:
      - multiply: 0.01

  # Average mains power                                  1W       Int   204 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} mains power"
    address: 204
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    accuracy_decimals: 0

  # Effective inverter voltage                           0.1V     Int   205 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} inverter voltage"
    address: 205
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "V"
    device_class: voltage
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  # Effective inverter current                           0.1A     Int   206 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} inverter current"
    address: 206
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "A"
    device_class: current
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  # Inverter frequency                                   0.01Hz   Int   207 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} inverter frequency"
    address: 207
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "Hz"
    device_class: frequency
    state_class: measurement
    accuracy_decimals: 2
    filters:
      - multiply: 0.01

  # Average inverter power                               1W       Int   208 1 R Positive numbers indicate inverter output, negative numbers indicate inverter input
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} inverter power"
    address: 208
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    accuracy_decimals: 0

  # Inverter charging power                              1W       Int   209 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} inverter charging power"
    address: 209
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    accuracy_decimals: 0

  # Output effective voltage                             0.1V     Int   210 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} output voltage"
    address: 210
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "V"
    device_class: voltage
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  # Output effective Current                             0.1A     Int   211 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} output Current"
    address: 211
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "A"
    device_class: current
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  # Output frequency                                     0.01Hz   Int   212 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} output frequency"
    address: 212
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "Hz"
    device_class: frequency
    state_class: measurement
    accuracy_decimals: 2
    filters:
      - multiply: 0.01

  # Output active power                                  1W       Int   213 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} output active power"
    address: 213
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    accuracy_decimals: 0

  # Output apparent power                                1VA      Int   214 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} output apparent power"
    address: 214
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "VA"
    device_class: apparent_power
    state_class: measurement
    accuracy_decimals: 0

  # Battery average voltage                              0.1V     Int   215 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} battery voltage"
    address: 215
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "V"
    device_class: voltage
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  # Battery average Current                              0.1A     Int   216 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} battery Current"
    address: 216
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "A"
    device_class: current
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  # Battery average power                                1W       Int   217 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} battery power"
    address: 217
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    accuracy_decimals: 0

  # PV average voltage                                   0.1V     Int   219 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} pv voltage"
    address: 219
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "V"
    device_class: voltage
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  # PV average current                                   0.1A     Int   220 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} pv current"
    address: 220
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "A"
    device_class: current
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  # PV average power                                     1W       Int   223 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    id: smg0_pv_average_power
    name: "${name} pv power"
    address: 223
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    accuracy_decimals: 0

  # PV charging average power                            1W       Int   224 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} pv charging power"
    address: 224
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    accuracy_decimals: 0

  # Load percentage                                      1%       Int   225 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} load percentage"
    address: 225
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "%"
    # device_class: battery
    state_class: measurement
    accuracy_decimals: 0

  # DCDC Temperature                                     1°C      Int   226 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} dcdc temperature"
    address: 226
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "°C"
    device_class: temperature
    state_class: measurement
    accuracy_decimals: 0

  # Inverter Temperature                                 1°C      Int   227 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} inverter temperature"
    address: 227
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "°C"
    device_class: temperature
    state_class: measurement
    accuracy_decimals: 0

  # Battery state of charge                              1%       UInt  229 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} battery state of charge"
    address: 229
    register_type: holding
    value_type: U_WORD
    unit_of_measurement: "%"
    device_class: battery
    state_class: measurement
    accuracy_decimals: 0

  # Battery average current                              0.1A     Int   232 1 R Positive number means charging, negative number means discharging
  #- platform: modbus_controller
  #  modbus_controller_id: smg0
  #  name: "${name} battery current"
  #  address: 232
  #  register_type: holding
  #  value_type: S_WORD
  #  unit_of_measurement: "A"
  #  device_class: current
  #  state_class: measurement
  #  accuracy_decimals: 1
  #  filters:
  #    - multiply: 0.1

  # Inverter charging average current                    0.1A     Int   233 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} inverter charging current"
    address: 233
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "A"
    device_class: current
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  # PV charging average current                          0.1A     Int   234 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} pv charging current"
    address: 234
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "A"
    device_class: current
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  ######## REMOVED ##########

  # Rated power                                           W       Uint  643 1 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} rated power"
    address: 643
    register_type: holding
    value_type: U_WORD
    unit_of_measurement: "W"
    device_class: power
    # state_class: measurement
    accuracy_decimals: 0

select:
  # Output Mode                                                   Uint  300 1 R/W 0: Single, 1: Parallel, 2: 3 Phase-P1, 3: 3 Phase-P2, 4: 3 Phase-P3
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} output mode"
    use_write_multiple: true
    address: 300
    value_type: U_WORD
    optionsmap:
      "Single": 0
      "Parallel": 1
      "Phase P1": 2
      "Phase P2": 3
      "Phase P3": 4

  # Output priority                                               Uint  301 1 R/W 0: Utility-PV-Battery, 1: PV-Utility-Battery, 2: PV-Battery-Utility
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} output priority"
    use_write_multiple: true
    address: 301
    value_type: U_WORD
    optionsmap:
      "Utility-PV-Battery (UTI)": 0
      "PV-Utility-Battery (SOL)": 1
      "PV-Battery-Utility (SBU)": 2
      "PV-Utility-Battery (SUB)": 3

  # Input voltage range                                           Uint  302 1 R/W 0: Wide range, 1: Narrow range
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} input voltage range"
    use_write_multiple: true
    address: 302
    value_type: U_WORD
    optionsmap:
      "Wide range": 0
      "Narrow range": 1

  # Buzzer mode                                                   Uint  303 1 R/W 0: Mute in all situations, 1: Sound when the input source is changed or there is a specific warning or fault, 2: Sound when there is aspecific warning or fault, 3: Sound when fault occurs
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} buzzer mode"
    use_write_multiple: true
    address: 303
    value_type: U_WORD
    optionsmap:
      "Silent": 0
      "Beep on input source changes, warnings and faults": 1
      "Beep on warnings and faults": 2
      "Beep on faults": 3

  # LCD backlight                                                 Uint  305 1 R/W 0: Timed off, 1: Always on
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} lcd backlight"
    use_write_multiple: true
    address: 305
    value_type: U_WORD
    optionsmap:
      "Timed off": 0
      "Always on": 1

  # Battery charging priority                                     Uint  331 1 R/W 0: Utility priority, 1: PV priority, 2: PV is at the same level as the Utility, 3: Only PV charging is allowed
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} battery charging priority"
    use_write_multiple: true
    address: 331
    value_type: U_WORD
    optionsmap:
      "Utility priority": 0
      "PV priority": 1
      "PV is at the same level as the Utility": 2
      "Only PV charging is allowed": 3

  # Turn on mode                                                  Uint  406 1 R/W 0: Can be turn-on locally or remotely, 1: Only local turn-on, 2: Only remote turn-on
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} turn on mode"
    use_write_multiple: true
    address: 406
    value_type: U_WORD
    optionsmap:
      "Local and remotely turn-on allowed": 0
      "Local turn-on only": 1
      "Remote turn-on only": 2

switch:
  # LCD automatically returns to the homepage                     Uint  306 1 R/W 0: Do not return automatically, 1: Automatically return after 1 minute
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} lcd automatically returns to the homepage"
    use_write_multiple: true
    address: 306
    register_type: holding
    bitmask: 1

  # Energy-saving mode                                            Uint  307 1 R/W 0: Energy-saving mode is off, 1: Energy-saving mode is on
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} energy-saving mode"
    use_write_multiple: true
    address: 307
    register_type: holding
    bitmask: 1

  # Overload automatic restart                                    Uint  308 1 R/W 0: Overload failure will not restart, 1: Automatic restart after overload failure
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} overload automatic restart"
    use_write_multiple: true
    address: 308
    register_type: holding
    bitmask: 1

  # Over temperature automatic restart                            Uint  309 1 R/W 0: Over temperature failure will not restart, 1: Automatic restart after over-temperature fault
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} over temperature automatic restart"
    use_write_multiple: true
    address: 309
    register_type: holding
    bitmask: 1

  # Overload transfer to bypass enabled                           Uint  310 1 R/W 0: Disable, 1: Enable
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} overload transfer to bypass enabled"
    use_write_multiple: true
    address: 310
    register_type: holding
    bitmask: 1

  # Battery Eq mode is enabled                                    Uint  313 1 R/W 0: Disable, 1: Enable
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} battery Eq mode is enabled"
    use_write_multiple: true
    address: 313
    register_type: holding
    bitmask: 1

  # Remote switch                                                 Uint  420 1 R/W 0: Remote shutdown, 1: Remote turn-on
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} remote switch"
    use_write_multiple: true
    address: 420
    register_type: holding
    bitmask: 1

text_sensor:
  # Fault code                                                    ULong 100 2 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} fault"
    address: 100
    register_type: holding
    register_count: 2
    response_size: 4
    raw_encode: HEXBYTES
    lambda: |-
      static const uint8_t FAULTS_SIZE = 27;
      static const char *const FAULTS[FAULTS_SIZE] = {
          "Over temperature of inverter module",                     // 0000 0000 0000 0000 0000 0000 0000 0001 (1)
          "Over temperature of DCDC module",                         // 0000 0000 0000 0000 0000 0000 0000 0010 (2)
          "Battery over voltage",                                    // 0000 0000 0000 0000 0000 0000 0000 0100 (3)
          "PV module over temperature",                              // 0000 0000 0000 0000 0000 0000 0000 1000 (4)
          "Output short circuit",                                    // 0000 0000 0000 0000 0000 0000 0001 0000 (5)
          "Inverter over voltage",                                   // 0000 0000 0000 0000 0000 0000 0010 0000 (6)
          "Output over load",                                        // 0000 0000 0000 0000 0000 0000 0100 0000 (7)
          "Bus over voltage",                                        // 0000 0000 0000 0000 0000 0000 1000 0000 (8)
          "Bus soft start timed out",                                // 0000 0000 0000 0000 0000 0001 0000 0000 (9)
          "PV over current",                                         // 0000 0000 0000 0000 0000 0010 0000 0000 (10)
          "PV over voltage",                                         // 0000 0000 0000 0000 0000 0100 0000 0000 (11)
          "Battery over current",                                    // 0000 0000 0000 0000 0000 1000 0000 0000 (12)
          "Inverter over current",                                   // 0000 0000 0000 0000 0001 0000 0000 0000 (13)
          "Bus low voltage",                                         // 0000 0000 0000 0000 0010 0000 0000 0000 (14)
          "Reserve (Bit 15)",                                        // 0000 0000 0000 0000 0100 0000 0000 0000 (15)
          "Inverter DC component is too high",                       // 0000 0000 0000 0000 1000 0000 0000 0000 (16)
          "Reserve (Bit 17)",                                        // 0000 0000 0000 0001 0000 0000 0000 0000 (17)
          "The zero bias of output current is too large",            // 0000 0000 0000 0010 0000 0000 0000 0000 (18)
          "The zero bias of inverter current is too large",          // 0000 0000 0000 0100 0000 0000 0000 0000 (19)
          "The zero bias of battery current is too large",           // 0000 0000 0000 1000 0000 0000 0000 0000 (20)
          "The zero bias of PV current is too large",                // 0000 0000 0001 0000 0000 0000 0000 0000 (21)
          "Inverter low voltage",                                    // 0000 0000 0010 0000 0000 0000 0000 0000 (22)
          "Inverter negative power protection",                      // 0000 0000 0100 0000 0000 0000 0000 0000 (23)
          "The host in the parallel system is lost",                 // 0000 0000 1000 0000 0000 0000 0000 0000 (24)
          "Synchronization signal abnormal in the parallel system",  // 0000 0001 0000 0000 0000 0000 0000 0000 (25)
          "The battery type is incompatible",                        // 0000 0010 0000 0000 0000 0000 0000 0000 (26)
          "Parallel versions are incompatible",                      // 0000 0100 0000 0000 0000 0000 0000 0000 (27)
      };
      std::string values = "";

      uint32_t mask = modbus_controller::dword_from_hex_str(x, 0);
      if (mask) {
        for (int i = 0; i < FAULTS_SIZE; i++) {
          if (mask & (1 << i)) {
            values.append(FAULTS[i]);
            values.append(";");
          }
        }
        if (!values.empty()) {
          values.pop_back();
        }
      }
      return values;

  # Warning code                                                  ULong 108 2 R
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} warning"
    address: 108
    register_type: holding
    register_count: 2
    response_size: 4
    raw_encode: HEXBYTES
    lambda: |-
      static const uint8_t WARNINGS_SIZE = 19;
      static const char *const WARNINGS[WARNINGS_SIZE] = {
          "(R)",                                                         // 0000 0000 0000 0000 0000 0000 0000 0001 (1)
          "Mains waveform abnormal",                                     // 0000 0000 0000 0000 0000 0000 0000 0010 (2)
          "Reserve (Bit 2)",                                             // 0000 0000 0000 0000 0000 0000 0000 0100 (3)
          "Grid low volt",                                               // 0000 0000 0000 0000 0000 0000 0000 1000 (4)
          "Grid over freq",                                              // 0000 0000 0000 0000 0000 0000 0001 0000 (5)
          "Grid low freq",                                               // 0000 0000 0000 0000 0000 0000 0010 0000 (6)
          "PV low volt",                                                 // 0000 0000 0000 0000 0000 0000 0100 0000 (7)
          "Over temp",                                                   // 0000 0000 0000 0000 0000 0000 1000 0000 (8)
          "Battery low volt",                                            // 0000 0000 0000 0000 0000 0001 0000 0000 (9)
          "Battery is not connected",                                    // 0000 0000 0000 0000 0000 0010 0000 0000 (10)
          "Overload",                                                    // 0000 0000 0000 0000 0000 0100 0000 0000 (11)
          "Battery Eq charg",                                            // 0000 0000 0000 0000 0000 1000 0000 0000 (12)
          "Battery undervolt",                                           // 0000 0000 0000 0000 0001 0000 0000 0000 (13)
          "Output power derating",                                       // 0000 0000 0000 0000 0010 0000 0000 0000 (14)
          "Fan blocked",                                                 // 0000 0000 0000 0000 0100 0000 0000 0000 (15)
          "PV energy is too low to use",                                 // 0000 0000 0000 0000 1000 0000 0000 0000 (16)
          "Parallel communication interrupted",                          // 0000 0000 0000 0001 0000 0000 0000 0000 (17)
          "Output mode of Single and Parallel systems inconsistent",     // 0000 0000 0000 0010 0000 0000 0000 0000 (18)
          "Battery voltage difference of parallel system is too large",  // 0000 0000 0000 0100 0000 0000 0000 0000 (19)
      };
      std::string values = "";

      uint32_t mask = modbus_controller::dword_from_hex_str(x, 0);
      if (mask) {
        for (int i = 0; i < WARNINGS_SIZE; i++) {
          if (mask & (1 << i)) {
            values.append(WARNINGS[i]);
            values.append(";");
          }
        }
        if (!values.empty()) {
          values.pop_back();
        }
      }
      return values;

  # Operation Mode                                                UInt  201 1 R 0: Power On, 1: Standby, 2: Mains, 3: Off-Grid, 4: Bypass, 5: Charging, 6: Fault
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} operation mode"
    address: 201
    register_type: holding
    raw_encode: HEXBYTES
    lambda: |-
      uint16_t value = modbus_controller::word_from_hex_str(x, 0);
      switch (value) {
        case 0: return std::string("Power On");
        case 1: return std::string("Standby");
        case 2: return std::string("Mains");
        case 3: return std::string("Off-Grid");
        case 4: return std::string("Bypass");
        case 5: return std::string("Charging");
        case 6: return std::string("Fault");
      }
      return std::string("Unknown");





number:
  # Output voltage                                                0.1V    Uint  320 1 R/W
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} output voltage"
    use_write_multiple: true
    address: 320
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    # max_value: 100.0
    step: 0.1
    unit_of_measurement: "V"
    lambda: "return x * 0.1f;"
    write_lambda: |-
      return x * 10.0f;

  # Output frequency setting                                      0.01Hz  Uint  321 1 R/W
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} output frequency setting"
    use_write_multiple: true
    address: 321
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    # max_value: 100.0
    step: 0.01
    unit_of_measurement: "Hz"
    lambda: "return x * 0.01f;"
    write_lambda: |-
      return x * 100.0f;

  # Battery overvoltage protection point                          0.1V    Uint  323 1 R/W
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} battery overvoltage protection point"
    use_write_multiple: true
    address: 323
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    # max_value: 100.0
    step: 0.1
    unit_of_measurement: "V"
    lambda: "return x * 0.1f;"
    write_lambda: |-
      return x * 10.0f;

  # Max charging voltage                                          0.1V    Uint  324 1 R/W
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} max charging voltage"
    use_write_multiple: true
    address: 324
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    max_value: 100.0
    step: 0.1
    unit_of_measurement: "V"
    lambda: "return x * 0.1f;"
    write_lambda: |-
      return x * 10.0f;

  # Floating charging voltage                                     0.1V    Uint  325 1 R/W
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} floating charging voltage"
    use_write_multiple: true
    address: 325
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    # max_value: 100.0
    step: 0.1
    unit_of_measurement: "V"
    lambda: "return x * 0.1f;"
    write_lambda: |-
      return x * 10.0f;

  # Battery discharge recovery point in mains mode                0.1V    Uint  326 1 R/W
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} battery discharge recovery point in mains mode"
    use_write_multiple: true
    address: 326
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    # max_value: 100.0
    step: 0.1
    unit_of_measurement: "V"
    lambda: "return x * 0.1f;"
    write_lambda: |-
      return x * 10.0f;

  # Battery low voltage protection point in mains mode            0.1V    Uint  327 1 R/W
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} battery low voltage protection point in mains mode"
    use_write_multiple: true
    address: 327
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    # max_value: 100.0
    step: 0.1
    unit_of_measurement: "V"
    lambda: "return x * 0.1f;"
    write_lambda: |-
      return x * 10.0f;

  # Battery low voltage protection point in off-grid mode          0.1V           Uint  329 1 R/W
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} battery low voltage protection point in off-grid mode"
    use_write_multiple: true
    address: 329
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    # max_value: 100.0
    step: 0.1
    unit_of_measurement: "V"
    lambda: "return x * 0.1f;"
    write_lambda: |-
      return x * 10.0f;

  # Maximum charging current                                      0.1A    Uint  332 1 R/W
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} maximum charging current"
    use_write_multiple: true
    address: 332
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    max_value: 100.0
    step: 0.1
    unit_of_measurement: "A"
    lambda: "return x * 0.1f;"
    write_lambda: |-
      return x * 10.0f;

  # Maximum mains charging current                                0.1A    Uint  333 1 R/W
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} maximum mains charging current"
    use_write_multiple: true
    address: 333
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    max_value: 100.0
    step: 0.1
    unit_of_measurement: "A"
    lambda: "return x * 0.1f;"
    write_lambda: |-
      return x * 10.0f;

  # Eq Charging voltage                                           0.1V    Uint  334 1 R/W
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} Eq Charging voltage"
    use_write_multiple: true
    address: 334
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    max_value: 100.0
    step: 0.1
    unit_of_measurement: "V"
    lambda: "return x * 0.1f;"
    write_lambda: |-
      return x * 10.0f;

  # Battery equalization time                                     min     Uint  335 1 R/W Range: 0~900
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} battery equalization time"
    use_write_multiple: true
    address: 335
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    max_value: 900.0
    step: 1
    unit_of_measurement: "min"

  # Equalization Timeout exit                                     min     Uint  336 1 R/W Range: 0~900
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} equalization Timeout exit"
    use_write_multiple: true
    address: 336
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    max_value: 900.0
    step: 1
    unit_of_measurement: "min"

  # Two equalization charging intervals                           day     Uint  337 1 R/W Range: 1~90
  - platform: modbus_controller
    modbus_controller_id: smg0
    name: "${name} two equalization charging intervals"
    use_write_multiple: true
    address: 337
    register_type: holding
    value_type: U_WORD
    min_value: 0.0
    max_value: 90.0
    step: 1
    unit_of_measurement: "day"


0 comentarii

Lasă un răspuns

Substituent avatar

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *