Zakupiłem takie cudo ELFIN-EW11 i mam pytanie czy ma ktoś konfiguracje pod modbus lub chciałby pomóc w konfiguracji
A nie chciałbyś w lupce wpisać “elfin” ?
Sinus pro ultra 10000 48/230 50000/10000w .80AmpptMoc całkowita chwilowa 10000VA Mam pytanko,mam4 baterie po 140ah.Jle mi trzeba podłaczyć Paneli.Dzieki
Hej .
Czy Myślicie że tym sposobem da się odczytać dane z regulatora ładowania SOL MPPT 30A?
Regulator jest od Volt Polska i ma ona protokół komunikacyjny Modbus Communication Protocol V3.9.
Teoretycznie da się wszystko, w praktyce musisz mieć mapę rejestrów uzyskaną od producenta sprzętu, bo metodą “na macanego” spędzisz nad tym miesiące.
Skąd masz takie wiadomości? W danych katalogowych mówią tylko o Bluetooth - nawet jeśli obsługuje modbus to BT stanowi pewien problem.
Robinl30:
Skąd masz takie wiadomości? W danych katalogowych mówią tylko o Bluetooth - nawet jeśli obsługuje modbus to BT stanowi pewien problem.
Trzynasta strona pdf-a.
Czy aby masz właściwą instrukcję lub wspomniany inwerter?
No Masz w linku pierwszego pdf-a i strona 13
A co na to wszystko “producent”, przepraszam importer?
Ok dlatego szukałem źródła, bo w drugim nie było ![]()
Do rzeczy: to tak jak pisał @angler i inni - potrzebne adresy modbus
Na razie spróbuję odczytać rejestry programem Radzia.
Co do adresów to może podejdą te z tąd:
Program Radzia niby coś odbiera ale cały czas jest “error”.
@Pier_pe … ty tu bloga prowadzisz czy o coś pytasz?
Bo nijak nie da się odpowiedzieć na Twoje wpisy.
Cześć
Czy mógłbyś udostępnić konfigurację bo próbuję zrobić to samo?
Pozdrawiam
Michał
Testuję działa jest to ten sam klon Pv1800 tylko w w/w integracji zapis jest DEC nie w HEX
Mi też działa z
Inwerter solarny falownik Off Grid z ładowarką solarną MPPT Green Cell 12VDC 1000s
Tylko z taką konfiguracją Modbus
uart:
id: mod_bus
tx_pin: GPIO12
rx_pin: GPIO13
baud_rate: 19200
stop_bits: 1
modbus_controller:
- id: pv1800
## the Modbus device addr
address: 0x4
command_throttle: 0ms
setup_priority: -10
Mam sinus pro ultra 2000 udalo mi sie nawiazac polaczenie ale mam dwa klopoty pierwszy jest taki ze nie moge modyfikowac parametrow invertera zmiany sa ignorowane, PV charger ok moge modyfikowac rejestry. Czy mozliwosc rdycji rejestrow trzeba jakims lookbitem odblokowac, czy jest na to jakis myk?
Dwa dni walki, ale są efekty…
Do połączenia użyłem dość korzystnego cenowo modułu ESP32-S3, RS485 i CAN - Waveshare 32154. Cena na dzień dzisiejszy to osiem dyszek. Przychodzi z oprogramowaniem fabrycznym realizującym tylko funkcje testowe, więc krok pierwszy to połączenie przez wbudowane usb i załadowanie podstawowego ESP32.
W pierwszej wersji próbowałem go używać jako zwykły mostek modbus dla HA (korzystałem z wzoru Embedded Garage Polska) ale nie dość że wymagało to częstego restartowania HA, to w dodatku było niestabilne i o ile w ogóle zadzaiłało to potrafiło się wywalić bez ostrzeżenia. Diagnostyka też była upierdliwa postanowiłem więc całą logikę komunikacji po modbus przerzucić na ESP. Uruchomiłem webserwer na esp (choć przy połączeniu z więcej niż jednej przeglądarki ledwo zipie)
esphome:
name: volt-sinus-ultra-2000
friendly_name: "Volt Sinus Pro Ultra"
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino # Zmiana na arduino zapewnia pełną kompatybilność z web_server v2
ota:
- platform: esphome
- platform: web_server
api:
# --- WŁĄCZENIE WEBSERVERA ---
web_server:
port: 80
version: 2
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Serwer ESPHome użyje tego IP do wgrywania OTA zamiast adresu .local
use_address: 192.168.1.133
ap:
ssid: "Volt-2000-pass-dla-iot"
password: !secret wifi_password
# Włączenie mDNS, aby można było wejść przez http://volt-sinus-ultra-2000.local
mdns:
disabled: false
logger:
level: INFO
uart:
id: modbus_uart
tx_pin: GPIO17
rx_pin: GPIO18
baud_rate: 19200
stop_bits: 1
data_bits: 8
parity: NONE
modbus:
id: modbus_hub
uart_id: modbus_uart
flow_control_pin: GPIO21
modbus_controller:
- id: volt_ultra
address: 4
modbus_id: modbus_hub
setup_priority: -10
update_interval: 10s
text_sensor:
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Work State Text"
id: Sinus2000_work_state_text
register_type: holding
address: 25201
# Dla rejestru 16-bitowego U_WORD potrzebujemy odebrać 2 bajty odpowiedzi
response_size: 2
lambda: |-
// Składanie dwóch bajtów Modbus w jedną liczbę 16-bitową
uint16_t state_value = (data[item->offset] << 8) + data[item->offset + 1];
// Mapowanie wartości liczbowej na tekst zgodnie z dokumentacją
switch (state_value) {
case 0: return {"PowerOn"};
case 1: return {"SelfTest"};
case 2: return {"OffGrid"};
case 3: return {"Grid-Tie"};
case 4: return {"ByPass"};
case 5: return {"Stop"};
case 6: return {"Grid charging"};
default: return {"Unknown state"};
}
sensor:
- platform: wifi_signal
name: "Sygnał Wi-Fi RSSI"
update_interval: 60s
# --- OGÓLNE I STATUSY ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Work State"
id: Sinus2000_work_state
register_type: holding
address: 25201
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Battery Voltage"
id: Sinus2000_battery_voltage
register_type: holding
address: 25205
unit_of_measurement: "V"
device_class: "voltage"
state_class: "measurement"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Voltage"
id: Sinus2000_inverter_voltage
register_type: holding
address: 25206
unit_of_measurement: "V"
device_class: "voltage"
state_class: "measurement"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Grid Voltage"
id: Sinus2000_grid_voltage
register_type: holding
address: 25207
unit_of_measurement: "V"
device_class: "voltage"
state_class: "measurement"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT PInverter"
id: Sinus2000_pinverter
register_type: holding
address: 25213
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT PGrid"
id: Sinus2000_pgrid
register_type: holding
address: 25214
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT PLoad"
id: Sinus2000_pload
register_type: holding
address: 25215
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
value_type: U_WORD
accuracy_decimals: 0
# --- TEMPERATURY ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT AC Radiator Temperature"
id: Sinus2000_ac_radiator_temperature
register_type: holding
address: 25233
unit_of_measurement: "°C"
device_class: "temperature"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Transformer Temperature"
id: Sinus2000_transformer_temperature
register_type: holding
address: 25234
unit_of_measurement: "°C"
device_class: "temperature"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT DC Radiator Temperature"
id: Sinus2000_dc_radiator_temperature
register_type: holding
address: 25235
unit_of_measurement: "°C"
device_class: "temperature"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
# --- ENERGIA SKUMULOWANA (ZASILANIE / ŁADOWANIE / SPRZEDAŻ) ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Charger Power High"
id: Sinus2000_accumulated_charger_power_high
register_type: holding
address: 25245
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 0
filters:
- multiply: 1000
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Charger Power Low"
id: Sinus2000_accumulated_charger_power_low
register_type: holding
address: 25246
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Discharger Power High"
id: Sinus2000_accumulated_discharger_power_high
register_type: holding
address: 25247
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 0
filters:
- multiply: 1000
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Discharger Power Low"
id: Sinus2000_accumulated_discharger_power_low
register_type: holding
address: 25248
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Buy Power High"
id: Sinus2000_accumulated_buy_power_high
register_type: holding
address: 25249
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 0
filters:
- multiply: 1000
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Buy Power Low"
id: Sinus2000_accumulated_buy_power_low
register_type: holding
address: 25250
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
# --- DODATKOWE PARAMETRY BATERII I PROTOKOŁU ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Batt Power"
id: Sinus2000_batt_power
register_type: holding
address: 25273
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Batt Current"
id: Sinus2000_batt_current
register_type: holding
address: 25274
unit_of_measurement: "A"
device_class: "current"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
number:
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Output Voltage Set"
id: Sinus2000_set_out_voltage
register_type: holding
address: 20102
value_type: U_WORD
mode: BOX
unit_of_measurement: "V"
min_value: 220.0
max_value: 240.0
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Output Frequency Set"
id: Sinus2000_set_out_frequency
register_type: holding
address: 20103
value_type: U_WORD
mode: BOX
unit_of_measurement: "Hz"
min_value: 50.00
max_value: 60.00
step: 0.01
multiply: 100
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Max Discharger Current"
id: Sinus2000_set_max_disch_curr
register_type: holding
address: 20113
value_type: U_WORD
mode: BOX
unit_of_measurement: "A"
min_value: 1.0
max_value: 21.7
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Battery Stop Discharging Voltage"
id: Sinus2000_set_stop_disch_volt
register_type: holding
address: 20118
value_type: U_WORD
mode: BOX
unit_of_measurement: "V"
min_value: 10.5
max_value: 12.0
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Battery Stop Charging Voltage"
id: Sinus2000_set_stop_chg_volt
register_type: holding
address: 20119
value_type: U_WORD
mode: BOX
unit_of_measurement: "V"
min_value: 13.6
max_value: 14.4
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Grid Max Charger Current Set"
id: Sinus2000_set_grid_max_chg_curr
register_type: holding
address: 20125
value_type: U_WORD
mode: BOX
unit_of_measurement: "A"
min_value: 5.0
max_value: 40.0
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Battery Low Voltage"
id: Sinus2000_set_batt_low_volt
register_type: holding
address: 20127
value_type: U_WORD
mode: BOX
unit_of_measurement: "V"
min_value: 11.0
max_value: 12.5
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Battery High Voltage"
id: Sinus2000_set_batt_high_volt
register_type: holding
address: 20128
value_type: U_WORD
mode: BOX
unit_of_measurement: "V"
min_value: 14.4
max_value: 15.0
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Max Combine Charger Current"
id: Sinus2000_set_max_comb_chg_curr
register_type: holding
address: 20132
value_type: U_WORD
mode: BOX
unit_of_measurement: "A"
min_value: 10.0
max_value: 80.0
step: 0.1
multiply: 10
select:
# --- WŁĄCZNIKI FUNKCJI (Opcje 0: OFF / 1: ON) ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Offgrid Work"
id: Sinus2000_offgrid_work_enable
address: 20101
value_type: U_WORD
optionsmap:
"OFF": 0
"ON": 1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Search Mode"
id: Sinus2000_search_mode_enable
address: 20104
value_type: U_WORD
optionsmap:
"OFF": 0
"ON": 1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Discharger To Grid"
id: Sinus2000_disch_to_grid_enable
address: 20108
value_type: U_WORD
optionsmap:
"OFF": 0
"ON": 1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Solar Power Balance"
id: Sinus2000_solar_power_balance
address: 20144
value_type: U_WORD
optionsmap:
"SBD (Disable)": 0
"SBE (Enable)": 1
# --- WYBORY ZAAWANSOWANE (SBU, PRIORYTETY ITD.) ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Energy Use Mode"
id: Sinus2000_energy_use_mode
address: 20109
value_type: U_WORD
optionsmap:
"SBU": 1
"SUB": 2
"UTI": 3
"SOL": 4
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Grid Protect Standard"
id: Sinus2000_grid_protect_standard
address: 20111
value_type: U_WORD
optionsmap:
"VDE4105": 0
"UPS": 1
"Home": 2
"GEN": 3
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT SolarUse Aim"
id: Sinus2000_solar_use_aim
address: 20112
value_type: U_WORD
optionsmap:
"LBU / LB": 0
"BLU / LU": 1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Charger Source Priority"
id: Sinus2000_charger_source_priority
address: 20143
value_type: U_WORD
optionsmap:
"Solar First": 0
"Solar and Utility": 2
"Only Solar": 3
# --- AKCJE SYSTEMOWE ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Remove Accumulated Data"
id: Sinus2000_remove_accumulated_data
address: 20213
value_type: U_WORD
optionsmap:
"No action": 0
"Remove data": 1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Reset Parameter"
id: Sinus2000_reset_parameter
address: 20214
value_type: U_WORD
optionsmap:
"No effect": 0
"Action Reset": 1
# słowo statusu rozbite na konkretne funkcje
switch:
- platform: modbus_controller
modbus_controller_id: volt_ultra
register_type: holding
address: 20142
# --- BIT 0 ---
name: "VOLT Forbid Overload Restart"
id: volt_overload_restart_forbid
bitmask: 0x0001
- platform: modbus_controller
modbus_controller_id: volt_ultra
register_type: holding
address: 20142
# --- BIT 1 ---
name: "VOLT Forbid OverTemp Restart"
id: volt_overtemp_restart_forbid
bitmask: 0x0002
- platform: modbus_controller
modbus_controller_id: volt_ultra
register_type: holding
address: 20142
# --- BIT 2 ---
name: "VOLT Forbid Overload Bypass"
id: volt_overload_bypass_forbid
bitmask: 0x0004
- platform: modbus_controller
modbus_controller_id: volt_ultra
register_type: holding
address: 20142
# --- BIT 3 ---
name: "VOLT Forbid Auto Turn Page"
id: volt_auto_turn_page_forbid
bitmask: 0x0008
- platform: modbus_controller
modbus_controller_id: volt_ultra
register_type: holding
address: 20142
# --- BIT 4 ---
name: "VOLT Grid Buzz Enable"
id: volt_grid_buzz_enable
bitmask: 0x0010
- platform: modbus_controller
modbus_controller_id: volt_ultra
register_type: holding
address: 20142
# --- BIT 5 ---
name: "VOLT Forbid Buzzer"
id: volt_buzz_forbid
bitmask: 0x0020
- platform: modbus_controller
modbus_controller_id: volt_ultra
register_type: holding
address: 20142
# --- BIT 6 ---
name: "VOLT LCD Light Enable"
id: volt_lcd_light_enable
bitmask: 0x0040
- platform: modbus_controller
modbus_controller_id: volt_ultra
register_type: holding
address: 20142
# --- BIT 7 ---
name: "VOLT Forbid Record Fault"
id: volt_record_fault_forbid
bitmask: 0x0080
Składnia zmienia się co jakiś czas więc wcale nie jest powiedziane że za rok lub dwa przy kolejnej wersji esphome, kod ten skopiowany 1:1 zadziała bez modyfikacji. Trzeba też pamiętać że progi są tu poustawiane dla instalacji 12V aku LFP (dla urządzenia max 2 kW) - przy większych modelach trzeba to poprawić zależnie od instalacji.
Część z sensorów trzeba wywalić bo są potrzebne jak prostytutce pięcioraczki, a generują ruch…
Będę chciał dołożyć tu obsługę innych urządzeń modbus i ciekawy jestem ile ten Waveshare jeszcze wytrzyma, może będzie trzeba wyłączyć webserwer.
Edit:
Okazało się że w poprzedniej wersji był błąd - zmiana wartości jednego z bitów powodowała automatyczne resetowanie pozostałych. Brakowało również strzałek z kierunkami przepływu energii. Poniżej wersja finalna.
esphome:
name: volt-sinus-ultra-2000
friendly_name: "Volt Sinus Pro Ultra"
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino # Zmiana na arduino zapewnia pełną kompatybilność z web_server v2
ota:
- platform: esphome
- platform: web_server
api:
# --- WŁĄCZENIE WEBSERVERA ---
web_server:
port: 80
version: 2 # Nowoczesny, responsywny interfejs graficzny w przeglądarce
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Serwer ESPHome użyje tego IP do wgrywania OTA zamiast adresu .local
use_address: 192.168.10.153
ap:
ssid: "Volt-2000-pass-dla-iot"
password: !secret wifi_password
# Włączenie mDNS, aby można było wejść przez http://volt-sinus-ultra-2000.local
mdns:
disabled: false
logger:
level: INFO
uart:
id: modbus_uart
tx_pin: GPIO17
rx_pin: GPIO18
baud_rate: 19200
stop_bits: 1
data_bits: 8
parity: NONE
modbus:
id: modbus_hub
uart_id: modbus_uart
flow_control_pin: GPIO21
modbus_controller:
- id: volt_ultra
address: 4
modbus_id: modbus_hub
setup_priority: -10
update_interval: 10s
globals:
- id: system_settings_shadow
type: uint16_t
restore_value: no
initial_value: '80' # Domyślnie włączone bity 4 i 6 (Stan fabryczny)
text_sensor:
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Work State Text"
id: Sinus2000_work_state_text
register_type: holding
address: 25201
# Dla rejestru 16-bitowego U_WORD potrzebujemy odebrać 2 bajty odpowiedzi
response_size: 2
lambda: |-
// Składanie dwóch bajtów Modbus w jedną liczbę 16-bitową
uint16_t state_value = (data[item->offset] << 8) + data[item->offset + 1];
// Mapowanie wartości liczbowej na tekst zgodnie z dokumentacją
switch (state_value) {
case 0: return {"PowerOn"};
case 1: return {"SelfTest"};
case 2: return {"OffGrid"};
case 3: return {"Grid-Tie"};
case 4: return {"ByPass"};
case 5: return {"Stop"};
case 6: return {"Grid charging"};
default: return {"Unknown state"};
}
- platform: template
name: "VOLT Battery Flow Direction"
lambda: |-
uint16_t v = (uint16_t)id(Sinus2000_arrow_flag).state;
switch ((v >> 6) & 0x03) {
case 0: return {"Disconnect"};
case 1: return {"Charging"};
case 2: return {"Discharging"};
case 3: return {"Connected"};
}
return {"Unknown"};
- platform: template
name: "VOLT Grid Flow Direction"
lambda: |-
uint16_t v = (uint16_t)id(Sinus2000_arrow_flag).state;
switch ((v >> 8) & 0x03) {
case 0: return {"Disconnect"};
case 1: return {"Export"};
case 2: return {"Import"};
case 3: return {"Connected"};
}
return {"Unknown"};
sensor:
- platform: wifi_signal
name: "Sygnał Wi-Fi RSSI"
update_interval: 60s
# --- OGÓLNE I STATUSY ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Work State"
id: Sinus2000_work_state
register_type: holding
address: 25201
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Battery Voltage"
id: Sinus2000_battery_voltage
register_type: holding
address: 25205
unit_of_measurement: "V"
device_class: "voltage"
state_class: "measurement"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Voltage"
id: Sinus2000_inverter_voltage
register_type: holding
address: 25206
unit_of_measurement: "V"
device_class: "voltage"
state_class: "measurement"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Grid Voltage"
id: Sinus2000_grid_voltage
register_type: holding
address: 25207
unit_of_measurement: "V"
device_class: "voltage"
state_class: "measurement"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT PInverter"
id: Sinus2000_pinverter
register_type: holding
address: 25213
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT PGrid"
id: Sinus2000_pgrid
register_type: holding
address: 25214
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT PLoad"
id: Sinus2000_pload
register_type: holding
address: 25215
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
value_type: U_WORD
accuracy_decimals: 0
# --- TEMPERATURY ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT AC Radiator Temperature"
id: Sinus2000_ac_radiator_temperature
register_type: holding
address: 25233
unit_of_measurement: "°C"
device_class: "temperature"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Transformer Temperature"
id: Sinus2000_transformer_temperature
register_type: holding
address: 25234
unit_of_measurement: "°C"
device_class: "temperature"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT DC Radiator Temperature"
id: Sinus2000_dc_radiator_temperature
register_type: holding
address: 25235
unit_of_measurement: "°C"
device_class: "temperature"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
# --- ENERGIA SKUMULOWANA (ZASILANIE / ŁADOWANIE / SPRZEDAŻ) ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Charger Power High"
id: Sinus2000_accumulated_charger_power_high
register_type: holding
address: 25245
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 0
filters:
- multiply: 1000
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Charger Power Low"
id: Sinus2000_accumulated_charger_power_low
register_type: holding
address: 25246
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Discharger Power High"
id: Sinus2000_accumulated_discharger_power_high
register_type: holding
address: 25247
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 0
filters:
- multiply: 1000
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Discharger Power Low"
id: Sinus2000_accumulated_discharger_power_low
register_type: holding
address: 25248
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Buy Power High"
id: Sinus2000_accumulated_buy_power_high
register_type: holding
address: 25249
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 0
filters:
- multiply: 1000
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Accumulated Buy Power Low"
id: Sinus2000_accumulated_buy_power_low
register_type: holding
address: 25250
unit_of_measurement: "kWh"
device_class: "energy"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
# --- DODATKOWE PARAMETRY BATERII I PROTOKOŁU ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Batt Power"
id: Sinus2000_batt_power
register_type: holding
address: 25273
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Batt Current"
id: Sinus2000_batt_current
register_type: holding
address: 25274
unit_of_measurement: "A"
device_class: "current"
state_class: "measurement"
value_type: S_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Raw System Settings"
id: volt_raw_system_settings
register_type: holding
address: 20142
value_type: U_WORD
internal: true # Ukrywa surową liczbę w HA, potrzebujemy jej tylko do obliczeń
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Arrow Flag"
id: Sinus2000_arrow_flag
register_type: holding
address: 25279
value_type: U_WORD
entity_category: diagnostic
- platform: template
name: "VOLT Energy Charged Total"
id: volt_energy_charged_total
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
lambda: |-
return id(Sinus2000_accumulated_charger_power_high).state +
id(Sinus2000_accumulated_charger_power_low).state;
- platform: template
name: "VOLT Energy Discharged Total"
id: volt_energy_discharged_total
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
lambda: |-
return id(Sinus2000_accumulated_discharger_power_high).state +
id(Sinus2000_accumulated_discharger_power_low).state;
- platform: template
name: "VOLT Energy Imported Total"
id: volt_energy_imported_total
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
lambda: |-
return id(Sinus2000_accumulated_buy_power_high).state +
id(Sinus2000_accumulated_buy_power_low).state;
binary_sensor:
- platform: template
name: "VOLT PV Present"
lambda: |-
return ((uint16_t)id(Sinus2000_arrow_flag).state & (1 << 0));
- platform: template
name: "VOLT Load Present"
lambda: |-
return ((uint16_t)id(Sinus2000_arrow_flag).state & (1 << 1));
- platform: template
name: "VOLT Battery Present"
lambda: |-
return ((uint16_t)id(Sinus2000_arrow_flag).state & (1 << 2));
- platform: template
name: "VOLT Grid Present"
lambda: |-
return ((uint16_t)id(Sinus2000_arrow_flag).state & (1 << 3));
- platform: template
name: "VOLT PV To Machine"
lambda: |-
return ((uint16_t)id(Sinus2000_arrow_flag).state & (1 << 4));
- platform: template
name: "VOLT Machine To Load"
lambda: |-
return ((uint16_t)id(Sinus2000_arrow_flag).state & (1 << 5));
- platform: template
name: "VOLT Machine To Battery"
lambda: |-
uint16_t v = (uint16_t)id(Sinus2000_arrow_flag).state;
return ((v >> 6) & 0x03) == 1;
- platform: template
name: "VOLT Battery To Machine"
lambda: |-
uint16_t v = (uint16_t)id(Sinus2000_arrow_flag).state;
return ((v >> 6) & 0x03) == 2;
- platform: template
name: "VOLT Machine To Grid"
lambda: |-
uint16_t v = (uint16_t)id(Sinus2000_arrow_flag).state;
return ((v >> 8) & 0x03) == 1;
- platform: template
name: "VOLT Grid To Machine"
lambda: |-
uint16_t v = (uint16_t)id(Sinus2000_arrow_flag).state;
return ((v >> 8) & 0x03) == 2;
number:
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT System Settings Transmitter"
id: volt_system_settings_transmitter
register_type: holding
address: 20142
value_type: U_WORD
mode: BOX
min_value: 0
max_value: 65535
step: 1
internal: true # Ukrywa suwak, sterujemy nim automatycznie
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Output Voltage Set"
id: Sinus2000_set_out_voltage
register_type: holding
address: 20102
value_type: U_WORD
mode: BOX
unit_of_measurement: "V"
min_value: 220.0
max_value: 240.0
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Output Frequency Set"
id: Sinus2000_set_out_frequency
register_type: holding
address: 20103
value_type: U_WORD
mode: BOX
unit_of_measurement: "Hz"
min_value: 50.00
max_value: 60.00
step: 0.01
multiply: 100
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Max Discharger Current"
id: Sinus2000_set_max_disch_curr
register_type: holding
address: 20113
value_type: U_WORD
mode: BOX
unit_of_measurement: "A"
min_value: 1.0
max_value: 21.7
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Battery Stop Discharging Voltage"
id: Sinus2000_set_stop_disch_volt
register_type: holding
address: 20118
value_type: U_WORD
mode: BOX
unit_of_measurement: "V"
min_value: 10.5
max_value: 12.0
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Battery Stop Charging Voltage"
id: Sinus2000_set_stop_chg_volt
register_type: holding
address: 20119
value_type: U_WORD
mode: BOX
unit_of_measurement: "V"
min_value: 13.6
max_value: 14.4
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Grid Max Charger Current Set"
id: Sinus2000_set_grid_max_chg_curr
register_type: holding
address: 20125
value_type: U_WORD
mode: BOX
unit_of_measurement: "A"
min_value: 5.0
max_value: 40.0
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Battery Low Voltage"
id: Sinus2000_set_batt_low_volt
register_type: holding
address: 20127
value_type: U_WORD
mode: BOX
unit_of_measurement: "V"
min_value: 11.0
max_value: 12.5
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Battery High Voltage"
id: Sinus2000_set_batt_high_volt
register_type: holding
address: 20128
value_type: U_WORD
mode: BOX
unit_of_measurement: "V"
min_value: 14.4
max_value: 15.0
step: 0.1
multiply: 10
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Max Combine Charger Current"
id: Sinus2000_set_max_comb_chg_curr
register_type: holding
address: 20132
value_type: U_WORD
mode: BOX
unit_of_measurement: "A"
min_value: 10.0
max_value: 80.0
step: 0.1
multiply: 10
select:
# --- WŁĄCZNIKI FUNKCJI (Opcje 0: OFF / 1: ON) ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Offgrid Work"
id: Sinus2000_offgrid_work_enable
address: 20101
value_type: U_WORD
optionsmap:
"OFF": 0
"ON": 1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Search Mode"
id: Sinus2000_search_mode_enable
address: 20104
value_type: U_WORD
optionsmap:
"OFF": 0
"ON": 1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Inverter Discharger To Grid"
id: Sinus2000_disch_to_grid_enable
address: 20108
value_type: U_WORD
optionsmap:
"OFF": 0
"ON": 1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Solar Power Balance"
id: Sinus2000_solar_power_balance
address: 20144
value_type: U_WORD
optionsmap:
"SBD (Disable)": 0
"SBE (Enable)": 1
# --- WYBORY ZAAWANSOWANE (SBU, PRIORYTETY ITD.) ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Energy Use Mode"
id: Sinus2000_energy_use_mode
address: 20109
value_type: U_WORD
optionsmap:
"SBU": 1
"SUB": 2
"UTI": 3
"SOL": 4
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Grid Protect Standard"
id: Sinus2000_grid_protect_standard
address: 20111
value_type: U_WORD
optionsmap:
"VDE4105": 0
"UPS": 1
"Home": 2
"GEN": 3
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT SolarUse Aim"
id: Sinus2000_solar_use_aim
address: 20112
value_type: U_WORD
optionsmap:
"LBU / LB": 0
"BLU / LU": 1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Charger Source Priority"
id: Sinus2000_charger_source_priority
address: 20143
value_type: U_WORD
optionsmap:
"Solar First": 0
"Solar and Utility": 2
"Only Solar": 3
# --- AKCJE SYSTEMOWE ---
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Remove Accumulated Data"
id: Sinus2000_remove_accumulated_data
address: 20213
value_type: U_WORD
optionsmap:
"No action": 0
"Remove data": 1
- platform: modbus_controller
modbus_controller_id: volt_ultra
name: "VOLT Reset Parameter"
id: Sinus2000_reset_parameter
address: 20214
value_type: U_WORD
optionsmap:
"No effect": 0
"Action Reset": 1
# słowo statusu rozbite na konkretne funkcje
switch:
# --- BIT 0: Odmowa restartu po przeciążeniu ---
- platform: template
name: "VOLT Forbid Overload Restart"
id: volt_sw_overload_restart_forbid
lambda: |-
if (!id(volt_raw_system_settings).has_state()) return false;
return ((int)id(volt_raw_system_settings).state & 0x0001) != 0;
turn_on_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val | 0x0001;
turn_off_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val & ~0x0001;
# --- BIT 1: Odmowa restartu po przegrzaniu ---
- platform: template
name: "VOLT Forbid OverTemp Restart"
id: volt_sw_overtemp_restart_forbid
lambda: |-
if (!id(volt_raw_system_settings).has_state()) return false;
return ((int)id(volt_raw_system_settings).state & 0x0002) != 0;
turn_on_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val | 0x0002;
turn_off_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val & ~0x0002;
# --- BIT 2: Odmowa przejścia w ByPass przy przeciążeniu ---
- platform: template
name: "VOLT Forbid Overload Bypass"
id: volt_sw_overload_bypass_forbid
lambda: |-
if (!id(volt_raw_system_settings).has_state()) return false;
return ((int)id(volt_raw_system_settings).state & 0x0004) != 0;
turn_on_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val | 0x0004;
turn_off_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val & ~0x0004;
# --- BIT 3: Zakaz automatycznego przewijania stron ekranu (AutoTurnPageForbid) ---
- platform: template
name: "VOLT Forbid Auto Turn Page"
id: volt_sw_auto_turn_page_forbid
lambda: |-
if (!id(volt_raw_system_settings).has_state()) return false;
return ((int)id(volt_raw_system_settings).state & 0x0008) != 0;
turn_on_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val | 0x0008;
turn_off_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val & ~0x0008;
# --- BIT 4: Sygnalizacja dźwiękowa sieci (GridBuzzEnable) ---
- platform: template
name: "VOLT Grid Buzz Enable"
id: volt_sw_grid_buzz_enable
lambda: |-
if (!id(volt_raw_system_settings).has_state()) return false;
return ((int)id(volt_raw_system_settings).state & 0x0010) != 0;
turn_on_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val | 0x0010;
turn_off_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val & ~0x0010;
# --- BIT 5: Całkowite wyciszenie brzęczyka (BuzzForbide) ---
- platform: template
name: "VOLT Forbid Buzzer"
id: volt_sw_buzz_forbid
lambda: |-
if (!id(volt_raw_system_settings).has_state()) return false;
return ((int)id(volt_raw_system_settings).state & 0x0020) != 0;
turn_on_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val | 0x0020;
turn_off_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val & ~0x0020;
# --- BIT 6: Podświetlenie ekranu LCD ---
- platform: template
name: "VOLT LCD Light Enable"
id: volt_sw_lcd_light_enable
lambda: |-
if (!id(volt_raw_system_settings).has_state()) return false;
return ((int)id(volt_raw_system_settings).state & 0x0040) != 0;
turn_on_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val | 0x0040;
turn_off_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val & ~0x0040;
# --- BIT 7: Zakaz rejestrowania błędów (RecordFaultForbid) ---
- platform: template
name: "VOLT Forbid Record Fault"
id: volt_sw_record_fault_forbid
lambda: |-
if (!id(volt_raw_system_settings).has_state()) return false;
return ((int)id(volt_raw_system_settings).state & 0x0080) != 0;
turn_on_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val | 0x0080;
turn_off_action:
- number.set:
id: volt_system_settings_transmitter
value: !lambda |-
uint16_t current_val = (uint16_t)id(volt_raw_system_settings).state;
return current_val & ~0x0080;



