-
-
Save vladyspavlov/5ac21cb58923482eff8e7bbb2d0854b3 to your computer and use it in GitHub Desktop.
# More info and the latest version of the config are now in the repo: https://github.com/vladyspavlov/esphome-must-inverter | |
substitutions: | |
inverter_id: inverter | |
updates: 5s | |
api_key: xxx | |
ota_password: xxx | |
esphome: | |
name: inverter-monitor | |
comment: "Inverter monitor" | |
esp32: | |
board: esp32dev | |
framework: | |
type: esp-idf | |
wifi: | |
ssid: !secret wifi_ssid | |
password: !secret wifi_password | |
captive_portal: | |
logger: | |
level: DEBUG | |
api: | |
encryption: | |
key: ${api_key} | |
ota: | |
password: ${ota_password} | |
uart: | |
- id: uart_inverter | |
baud_rate: 19200 | |
tx_pin: GPIO19 | |
rx_pin: GPIO18 | |
stop_bits: 1 | |
parity: NONE | |
data_bits: 8 | |
debug: | |
direction: BOTH | |
dummy_receiver: false | |
modbus: | |
- id: modbus_inverter | |
uart_id: uart_inverter | |
send_wait_time: 200ms | |
modbus_controller: | |
- id: must_inverter | |
address: 0x04 | |
modbus_id: modbus_inverter | |
command_throttle: 200ms | |
setup_priority: -10 | |
update_interval: ${updates} | |
sensor: | |
# charger sensors | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15201 | |
name: "PV Charger Workstate" | |
register_type: holding | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15202 | |
name: "PV Charger MPPT state" | |
register_type: holding | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15203 | |
name: "PV Charger Charging state" | |
register_type: holding | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15205 | |
name: "PV Charger Voltage" | |
register_type: holding | |
unit_of_measurement: "V" | |
accuracy_decimals: 1 | |
icon: mdi:sine-wave | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15206 | |
name: "PV Charger Battery voltage" | |
register_type: holding | |
unit_of_measurement: "V" | |
accuracy_decimals: 1 | |
icon: mdi:sine-wave | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15207 | |
name: "PV Charger Current" | |
register_type: holding | |
unit_of_measurement: "A" | |
accuracy_decimals: 1 | |
icon: mdi:current-dc | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15208 | |
register_type: holding | |
name: "PV Charger power" | |
unit_of_measurement: "W" | |
accuracy_decimals: 1 | |
icon: mdi:flash | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15209 | |
register_type: holding | |
name: "PV Charger Radiator temp" | |
unit_of_measurement: "°C" | |
accuracy_decimals: 1 | |
icon: mdi:temperature-celsius | |
# - platform: modbus_controller | |
# modbus_controller_id: must_inverter | |
# address: 15210 | |
# register_type: holding | |
# name: "PV Charger External temp" | |
# unit_of_measurement: "°C" | |
# accuracy_decimals: 1 | |
# icon: mdi:temperature-celsius | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15212 | |
register_type: holding | |
name: "PV Relay" | |
icon: mdi:electric-switch | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15217 | |
register_type: holding | |
id: charger_total_mwh | |
internal: true | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15218 | |
register_type: holding | |
id: charger_total_kwh | |
internal: true | |
filters: | |
multiply: 0.1 | |
- platform: template | |
name: "PV Charger Accumulated charger power" | |
unit_of_measurement: kWh | |
lambda: !lambda 'return (id(charger_total_mwh).state * 1000.0 + id(charger_total_kwh).state );' | |
accuracy_decimals: 1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15219 | |
register_type: holding | |
name: "PV Charger Accumulated day" | |
unit_of_measurement: "W" | |
accuracy_decimals: 1 | |
icon: mdi:flash | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15220 | |
register_type: holding | |
name: "PV Charger Accumulated hour" | |
unit_of_measurement: "W" | |
accuracy_decimals: 1 | |
icon: mdi:flash | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 15221 | |
register_type: holding | |
name: "PV Charger Accumulated minute" | |
unit_of_measurement: "W" | |
accuracy_decimals: 1 | |
icon: mdi:flash | |
# inverter sensors | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25201 | |
register_type: holding | |
name: "Inverter Work state" | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25205 | |
name: "Inverter Battery Voltage" | |
register_type: holding | |
unit_of_measurement: "V" | |
accuracy_decimals: 1 | |
icon: mdi:sine-wave | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25206 | |
name: "Inverter Voltage" | |
register_type: holding | |
unit_of_measurement: "V" | |
accuracy_decimals: 1 | |
icon: mdi:sine-wave | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25207 | |
name: "Inverter Grid voltage" | |
register_type: holding | |
unit_of_measurement: "V" | |
accuracy_decimals: 1 | |
icon: mdi:sine-wave | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25207 | |
name: "Inverter Grid voltage" | |
register_type: holding | |
unit_of_measurement: "V" | |
accuracy_decimals: 1 | |
icon: mdi:sine-wave | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25208 | |
name: "Inverter BUS Voltage" | |
register_type: holding | |
unit_of_measurement: "V" | |
accuracy_decimals: 1 | |
icon: mdi:sine-wave | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25209 | |
name: "Inverter Control current" | |
register_type: holding | |
unit_of_measurement: "A" | |
accuracy_decimals: 1 | |
icon: mdi:current-dc | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25210 | |
name: "Inverter Current" | |
register_type: holding | |
unit_of_measurement: "A" | |
accuracy_decimals: 1 | |
icon: mdi:current-dc | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25211 | |
name: "Inverter Grid current" | |
register_type: holding | |
unit_of_measurement: "A" | |
accuracy_decimals: 1 | |
icon: mdi:current-ac | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25212 | |
name: "Inverter Load current" | |
register_type: holding | |
unit_of_measurement: "A" | |
accuracy_decimals: 1 | |
icon: mdi:current-ac | |
filters: | |
multiply: 0.1 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25213 | |
name: "Inverter Power" | |
register_type: holding | |
unit_of_measurement: "W" | |
accuracy_decimals: 1 | |
icon: mdi:flash | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25214 | |
name: "Inverter Grid power" | |
register_type: holding | |
unit_of_measurement: "W" | |
accuracy_decimals: 1 | |
value_type: S_WORD | |
icon: mdi:flash | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25215 | |
name: "Inverter Load power" | |
register_type: holding | |
unit_of_measurement: "W" | |
accuracy_decimals: 1 | |
icon: mdi:flash | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25216 | |
name: "Inverter System load" | |
register_type: holding | |
unit_of_measurement: "%" | |
accuracy_decimals: 1 | |
icon: mdi:flash | |
# MOST INFO | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25233 | |
register_type: holding | |
name: "Inverter AC radiator temp" | |
accuracy_decimals: 1 | |
unit_of_measurement: "°C" | |
icon: mdi:temperature-celsius | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25234 | |
register_type: holding | |
name: "Inverter Transformer temp" | |
unit_of_measurement: "°C" | |
accuracy_decimals: 1 | |
icon: mdi:temperature-celsius | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25235 | |
register_type: holding | |
name: "Inverter DC Radiator temp" | |
unit_of_measurement: "°C" | |
accuracy_decimals: 1 | |
icon: mdi:temperature-celsius | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25237 | |
register_type: holding | |
name: "Inverter Relay state" | |
icon: mdi:electric-switch | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25238 | |
register_type: holding | |
name: "Inverter Relay state Grid" | |
icon: mdi:electric-switch | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25239 | |
register_type: holding | |
name: "Inverter Relay state Load" | |
icon: mdi:electric-switch | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25240 | |
register_type: holding | |
name: "Inverter Relay state NLine" | |
icon: mdi:electric-switch | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25241 | |
register_type: holding | |
name: "Inverter Relay state DC" | |
icon: mdi:electric-switch | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25242 | |
register_type: holding | |
name: "Inverter Relay state Earth" | |
icon: mdi:electric-switch | |
# Inverter Accumulated discharge power | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25247 | |
register_type: holding | |
id: discharger_total_mwh | |
internal: true | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25248 | |
register_type: holding | |
id: discharger_total_kwh | |
internal: true | |
filters: | |
multiply: 0.1 | |
- platform: template | |
name: "Accumulated discharger power" | |
unit_of_measurement: kWh | |
accuracy_decimals: 1 | |
lambda: !lambda 'return (id(discharger_total_mwh).state * 1000.0 + id(discharger_total_kwh).state);' | |
# Inverter Accumulated buy power | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25249 | |
register_type: holding | |
id: buy_mwh | |
internal: true | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25250 | |
register_type: holding | |
id: buy_kwh | |
internal: true | |
filters: | |
multiply: 0.1 | |
- platform: template | |
name: "Accumulated buy power" | |
unit_of_measurement: kWh | |
lambda: |- | |
return (id(buy_mwh).state * 1000.0 + id(buy_kwh).state); | |
accuracy_decimals: 1 | |
# Inverter Accumulated sell power | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25251 | |
register_type: holding | |
id: sell_mwh | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25252 | |
register_type: holding | |
id: sell_kwh | |
filters: | |
multiply: 0.1 | |
- platform: template | |
name: "Accumulated sell power" | |
unit_of_measurement: kWh | |
accuracy_decimals: 1 | |
lambda: !lambda return (id(sell_mwh).state * 1000.0 + id(sell_kwh).state); | |
# Inverter Accumulated load power | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25253 | |
register_type: holding | |
id: load_mwh | |
internal: True | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25254 | |
register_type: holding | |
id: load_kwh | |
internal: True | |
filters: | |
multiply: 0.1 | |
- platform: template | |
name: "Accumulated load power" | |
unit_of_measurement: kWh | |
accuracy_decimals: 1 | |
lambda: !lambda return (id(load_mwh).state * 1000.0 + id(load_kwh).state); | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25273 | |
register_type: holding | |
value_type: S_WORD | |
name: "Inverter Battery power" | |
unit_of_measurement: "W" | |
accuracy_decimals: 1 | |
icon: mdi:flash | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25274 | |
register_type: holding | |
value_type: S_WORD | |
name: "Inverter Battery current" | |
unit_of_measurement: "A" | |
accuracy_decimals: 1 | |
icon: mdi:current-dc | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25275 | |
register_type: holding | |
value_type: S_WORD | |
name: "Inverter Battery grade" | |
unit_of_measurement: "V" | |
icon: mdi:alpha-V | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 25277 | |
register_type: holding | |
name: "Inverter Rated power" | |
unit_of_measurement: "W" | |
accuracy_decimals: 1 | |
icon: mdi:flash | |
select: | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
id: energy_use_mode | |
name: "Inverter Energy use mode (parameter 00)" | |
address: 20109 | |
optionsmap: | |
"SBU (Solar/battery/utility)": 1 | |
"SUB (Solar/utility/battery)": 2 | |
"UTI (Utility only)": 3 | |
"SOL (Solar only)": 4 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
id: charger_source_priority | |
name: "Inverter Charger source priority (parameter 10)" | |
address: 20143 | |
optionsmap: | |
"CSO (Solar first)": 0 | |
"SNU (Solar and utility)": 2 | |
"OSO (Solar only)": 3 | |
- platform: modbus_controller | |
modbus_controller_id: must_inverter | |
address: 20111 | |
id: inverter_ac_input_voltage_range | |
name: "Inverter AC input voltage range (02)" | |
optionsmap: | |
"VDE (184-253VAC)": 0 | |
"UPS (170-280VAC)": 1 | |
"APL (90-280VAC)": 2 | |
"GEN (Generator)": 3 | |
number: | |
- platform: modbus_controller | |
id: batt_float_voltage | |
name: "PV Charger Float voltage" | |
unit_of_measurement: "V" | |
address: 10103 | |
value_type: U_WORD | |
multiply: 10 | |
- platform: modbus_controller | |
id: batt_absorb_voltage | |
name: "PV Charger Absorb voltage" | |
unit_of_measurement: "V" | |
address: 10104 | |
value_type: U_WORD | |
multiply: 10 | |
- platform: modbus_controller | |
id: batt_stop_dischg | |
name: "Inverter Battery stop discharging voltage" | |
unit_of_measurement: "V" | |
address: 20118 | |
value_type: U_WORD | |
lambda: "return x * 0.1; " | |
write_lambda: |- | |
return x * 10 ; | |
- platform: modbus_controller | |
id: batt_stop_chg | |
name: "Inverter Battery stop charging voltage" | |
unit_of_measurement: "V" | |
address: 20119 | |
value_type: U_WORD | |
multiply: 10 | |
- platform: modbus_controller | |
id: batt_low_voltage | |
name: "Inverter Battery low voltage" | |
unit_of_measurement: "V" | |
address: 20127 | |
value_type: U_WORD | |
multiply: 10 | |
- platform: modbus_controller | |
id: batt_high_voltage | |
name: "Inverter Battery high voltage" | |
unit_of_measurement: "V" | |
address: 20128 | |
value_type: U_WORD | |
multiply: 10 | |
- platform: modbus_controller | |
id: solar_charger_current | |
name: "Inverter Charger current" | |
unit_of_measurement: "A" | |
address: 20132 | |
value_type: U_WORD | |
multiply: 10 |
uart->rs в термоусадку ще засунув, що б ніде не коротнув
Він на скотчі. Не коротне )
Виявляється вся основна проблема якраз в цих конверторах USB-RS485/TTL-RS485, а саме в способі генерування сигналу "TXEnable" на мікросхемі MAX485 (чи її аналог).
Гляньте сюди, можливо допоможе вам. vladyspavlov/esphome-must-inverter#9
Конкретно той варіант не допоміг, не працює і все... Хоча як я зрозумів, то там із відмінностей тільки flow_control_pin:
У мене все запрацювало в порту USB WiFi. Згідно опису https://github.com/vladyspavlov/esphome-must-inverter
Нюанси:
1. Між USB та RS485-TTL залишив тільки A+ і B-. GND прибрав. 2. Переробив шнурок між інвертором і батареєю - там був повний патчкод з відведеною парою orange-white, orange (TIA/EIA568B). Зробив новий шнурок, в якому залишив лише GND (green-white), CANH (blue) та CANL(blue-white). _В документації на батарею нічого не сказано про інші контакти в RJ45 для CAN, але є підозра, що щось там є і це щось потрапляло в RS485, що давало численні CRC error та Timeout в D+ і D- в порту USB WiFi_
Конфигурація ESPHome для ESP32 NodeMCU - моя з https://github.com/vladyspavlov/esphome-must-inverter
Все працює штатно.
PS: Залишилось знайти рішення для корпусу, в який можна охайно розташувати esp32, rs485-ttl та USB-A male, і який буде не дуже колгоспно виглядати :)
Ну, в мене батарея проста, ніяк не спілкується з інвертором, тож і перешкод немає ніяких від неї...
Гадаю, що все ж косяк із модулями 8266 в моєму випадку..
А для звязку по RS485 якраз тільки а+ і в- потрібно... GND то для живлення (ну і +5в)
Всім привіт! А поясніть будь-ласка (може де не побачив чи пропустив) чому на всіх схемах і фото бачу що підключаються і знімають дані із USB-A (куди зазвичай включається рідний Wi-Fi свисток). А чим не підходить USB-B порт, що поряд із COM-виходом?
Всім привіт! А поясніть будь-ласка (може де не побачив чи пропустив) чому на всіх схемах і фото бачу що підключаються і знімають дані із USB-A (куди зазвичай включається рідний Wi-Fi свисток). А чим не підходить USB-B порт, що поряд із COM-виходом?
Вітаю!
Та підходить і він, але тільки для прямого підєднання до хоста (ПК) через ЮСБ-кабель, а це до 5м пасивним і 10-15м активним кабелем. Додатково ще захист від перешкод та імпульсних наводок...
Таким чином він підходить якщо сервер НА поряд біля інвертора, ну і доповнення потрібно інше (не ЕСПХоме)...
Там один і той же інтерфейс, що й СОМ чи Вай-Фай, просто через конвертер на СН340. Якось так...
Ага, зрозумів. Просто в основний USB-A порт в мене підключений нативний Wi-Fi свисток. Нехай вже там і буде, у хмарі малює якісь дані. А от для себе (по інженерськи:-)) хотілося б більше даних витягувати (і у Grafana дивитись), тому в USB-B порт чи COM порт підключу якусь ESP через конвертер і буду пробувати вичитати дані.
Ага, зрозумів. Просто в основний USB-A порт в мене підключений нативний Wi-Fi свисток. Нехай вже там і буде, у хмарі малює якісь дані. А от для себе (по інженерськи:-)) хотілося б більше даних витягувати (і у Grafana дивитись), тому в USB-B порт чи COM порт підключу якусь ESP через конвертер і буду пробувати вичитати дані.
Задумка хороша, але мені здається. що так не вийде...
Справа в тому. що обмін даними на всіх трьох портах дублюється (на скільки я визначив, принаймні в моєму випадку саме так). Таким чином потрібно обирати щось одне, бо інакше вони заважатимуть одне одному - вони зєднані одним і тим же UART процесора. Можна хіба що моніторити, тобто прослуховувати в режимі R/O що "відбувається" на лінії, коли йде обмін між адаптером і інвертором...
Спробую.... Якщо таки не вийде - тоді доведеться рідний Wi-Fi модуль зняти...:( Жаль що прямо через нього не можна якось знімати якісь дані (наскільки я зрозумів).
Ага, зрозумів. Просто в основний USB-A порт в мене підключений нативний Wi-Fi свисток. Нехай вже там і буде, у хмарі малює якісь дані. А от для себе (по інженерськи:-)) хотілося б більше даних витягувати (і у Grafana дивитись), тому в USB-B порт чи COM порт підключу якусь ESP через конвертер і буду пробувати вичитати дані.
Якщо Ви готові посеред ночі прокидатися від істерики в телефоні про 100500 помилок (в т.ч. і критичних) - то пробуйте )
Одна шина rs485 - один майстер. При паралельному опитуванні шини конфлікти будуть. Періодично, не дуже часто (бо логгер опитує шину досить розслаблено і оновлює дані раз на 5 хвилин, якщо я не помиляюсь), але гарантовано. І якщо в процесі опитування шини щось не склалося, то починається істерика з генерацією 10-15 повідомлень в телефон.
Тому я просто замінив логгер на свій свисток з потрібною мені фунціональністю і вирішив одразу декілька проблем.
- Локальність моніторингу і управління поза будь-якою залежністю від чужих сервісів та інтернета взагалі.
- Гнучкість налаштувань і повна підконтрольність мого обладнання мені, а не якимсь невідомим китайцям.
- Легкість вирішення будь-яких проблем (opensource код і швидка адаптація під потреби, що можуть змінюватись з часом і обставинами.
Так що - рішення Ваше, але я після півроку експлуатації геть не бачу жодної причини триматись за їхній логгер, що працює з їхньою хмарою. Він у порівнянні з можливостями esphome+HA - повне лайно.
Всім привіт! А поясніть будь-ласка (може де не побачив чи пропустив) чому на всіх схемах і фото бачу що підключаються і знімають дані із USB-A (куди зазвичай включається рідний Wi-Fi свисток). А чим не підходить USB-B порт, що поряд із COM-виходом?
Тому що в USB-B немає +5V та GND (принаймні в моєму Must PV19 6248 EXP). А хочеться ж живлення брати із порта, а не тягнути окремий шнурок від БЖ в розетці ))
Всім привіт! А поясніть будь-ласка (може де не побачив чи пропустив) чому на всіх схемах і фото бачу що підключаються і знімають дані із USB-A (куди зазвичай включається рідний Wi-Fi свисток). А чим не підходить USB-B порт, що поряд із COM-виходом?
Тому що в USB-B немає +5V та GND (принаймні в моєму Must PV19 6248 EXP). А хочеться ж живлення брати із порта, а не тягнути окремий шнурок від БЖ в розетці ))
Це вже я теж зрозумів, дякую:)
Ага, зрозумів. Просто в основний USB-A порт в мене підключений нативний Wi-Fi свисток. Нехай вже там і буде, у хмарі малює якісь дані. А от для себе (по інженерськи:-)) хотілося б більше даних витягувати (і у Grafana дивитись), тому в USB-B порт чи COM порт підключу якусь ESP через конвертер і буду пробувати вичитати дані.
Якщо Ви готові посеред ночі прокидатися від істерики в телефоні про 100500 помилок (в т.ч. і критичних) - то пробуйте ) Одна шина rs485 - один майстер. При паралельному опитуванні шини конфлікти будуть. Періодично, не дуже часто (бо логгер опитує шину досить розслаблено і оновлює дані раз на 5 хвилин, якщо я не помиляюсь), але гарантовано. І якщо в процесі опитування шини щось не склалося, то починається істерика з генерацією 10-15 повідомлень в телефон.
Тому я просто замінив логгер на свій свисток з потрібною мені фунціональністю і вирішив одразу декілька проблем.
- Локальність моніторингу і управління поза будь-якою залежністю від чужих сервісів та інтернета взагалі.
- Гнучкість налаштувань і повна підконтрольність мого обладнання мені, а не якимсь невідомим китайцям.
- Легкість вирішення будь-яких проблем (opensource код і швидка адаптація під потреби, що можуть змінюватись з часом і обставинами.
Так що - рішення Ваше, але я після півроку експлуатації геть не бачу жодної причини триматись за їхній логгер, що працює з їхньою хмарою. Він у порівнянні з можливостями esphome+HA - повне лайно.
Дякую за розширену відповідь. Поспішив я з покупкою Wi-Fi модуля.... Ну ладно, нехай буде в запасі:)
Привіт !
Хочу поділитися інформацією. Мені вдалось знайти регістр SOC батареї.
Я використовую : MUST PH18 5448 pro + jk bms JK-PB2A16S20P Інвертор спілкується з батарею по протоколу CAN Pylontech.
Відсотки SOC батареї що відображаються на інверторі можна знайти у регістрі 44180 - це пряме значення.
Для додавання датчика використана конфігурація:
- platform: modbus_controller # Battery SOC MUST PH18 5448 PRO + CAN battery PYLON tech
name: "Battery SOC"
register_type: holding
address: 44180
unit_of_measurement: "%"
accuracy_decimals: 0
device_class: battery
value_type: U_WORD
PS: Я думаю що це буде стосуватися інверторів серії PH18 PV18 може хто підтвердить ЩЕ ?
Доброго дня всем. Кто сталкивался со сменой ID ? PC1800 3 шт - 3 ESP . Хочу оставить одну запаралелив порт modbus.
Плата для паралельного підключення наче сама комунікує між інвериорами і тоді достатньо вичитувати пвраметри тільки з 1. Це в теорії. Як воно насправді не знаю.
общался по тел указаному выше . Китайцы крутят, на вопрос толком не отвечают. А менять регистры вслепую страшно.
pv18 есть таблица .как добавить ?
pv18 есть таблица .как добавить ?
https://github.com/vladyspavlov/esphome-must-inverter
Тут може вже є, те що ви шукали.
Якщо у вас щось новеньке, то додайте пул реквест, будь ласка
добавить нечего , все есть.
может кому надо
text_sensor:
- platform: modbus_controller
modbus_controller_id: d
id: Charger_workstate_d
name: "Charger workstate"
address: 15201
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("Initialization Mode");
case 1: return std::string("Selftest Mode");
case 2: return std::string("Work Mode");
case 3: return std::string("Stop Mode");
default: return std::string("Unknown");
}
return x;
uart->rs в термоусадку ще засунув, що б ніде не коротнув