-
-
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 |
Схоже просто не вимкнули логування і воно ср@ло в 13/15 піни, або tx/rx переплутано.
Давно хотів спитати, в мене must 48100 батарея і багато разів на день вмикається зарядка з 53в до 56-57в піднімається за пів години, далі за пів години спускається до 53.4в далі години 3-4 розряжається 1 ампером і знову входить в зарядку, інвертор must 5248 pro підключений по can, як це виправить та що з ним не так?
Давно хотів спитати, в мене must 48100 батарея і багато разів на день вмикається зарядка з 53в до 56-57в піднімається за пів години, далі за пів години спускається до 53.4в далі години 3-4 розряжається 1 ампером і знову входить в зарядку, інвертор must 5248 pro підключений по can, як це виправить та що з ним не так?
vladyspavlov/esphome-must-inverter#12
Тут це описав. Можете там доповнювати)
Якщо коротко, то в режимі VOL - ніяк. Єдине, що можна зробити - знизити струм заряду до 2-3А, тоді це трохи змаже тактування, проблему не вирішить, але воно буде більш розтягнуте в часі.
Якщо у вас маст батарейка по кану підключена, то поміняйте 37 параметр на SOC. Воно працює адекватно в плані алгоритму заряду, немає тактування. Однак в моєму випадку з інверторною jk воно взагалі не слухається RCV і RFV налаштувань і заряджає як йому заманеться, так і не зміг ніяк впливати на це. Підтримка маста розвела руками, сказала проблема в бмс. Можливо у вас з рідним акумом воно буде адекватно працювати.
поміняйте 37 параметр на SOC.
Там встановлено soc і на морді інвертора 100 % це може бути як 56в так і 54в так і 53,4 іноді 53.4 - це 80%, взагалі це нормально що батарея заряджена до 55в за пів години спускається до 53.4в наприклад? Я знайшов рідну прогу до батареї, і пароль адміна але ніде не має змінити вольтаж що екран батареї називає charge requirements може в bms якось змінити щоб було не 57.6 і плавающий 56.6 а на 54 до прикладу щоб заряд хочаб підтримувався на одному рівні а не різ в гору до 57в пів години і пів години спускався до 53.4в?
взагалі це нормально що батарея заряджена до 55в за пів години спускається до 53.4в наприклад?
Для LFP нормально, напруга відкочується, якщо не підзаряджати постійно, це не впливає на ємність, якщо не рахувати саморозряд.
Стосовно 53.4В, то або флоат напруга десь нижче в них налаштована, або її взагалі немає і комірки просто на саморозряді повільному з бмскою живуть. Якось інших пояснень в мене не знайшлось.
а не різ в гору до 57в пів години і пів години спускався до 53.4в?
У мене з jk завжди були як раз 57В балк і 53.4В флоат, виходить, то не проблема в реалізації протоколу на бмс, якщо з "рідним" акумом така ж біда.
але ніде не має змінити вольтаж що екран батареї називає charge requirements
+8613302843818, то підтримка Must в WhatsApp, можете попробувати їх помучити. Але краще не показуйте їм скріншоти з ХА і нічого не кажіть про моніторинг не рідним модулем. Це, схоже, розрив шаблону для них і вони починають задавати дурні питання не по темі, забуваючи про суть. Будьте готові записувати купу відео екрану бмс і інвертора з проклацуванням всіх "екранів" і налаштувань. Готуйтесь, що це затягнеться на декілька днів. Ну і зважайте, що вони відписують орієнтовно з 3-4 ранку до 11-12 дня по Києву.
Чомусь саме pro шка живиться від батареї, а не з мережі навіть коли вона є, підключено по can і використовується SOC
У мене з jk завжди були
Всередині там pace bms, самого першого разу вона стягнула прошивку відтоді пропали назви протоколів обміну зараз чисті рядки, на швидкість не впливає але нові прошивки не злітають, а на інвертор попадаются якісь прошивки?
Чомусь
Так і гуде зараза постійно
І що в paceex bms означають параметри entering test mode i entering distribution network mode?
а на інвертор попадаются якісь прошивки?
Першочергово до них з цим запитом звернувся, але звернули в сторону налаштувань, а потім і до того, що все ок.
Чомусь сумніваюся, що вони нею поділяться. Не факт, що можливість прошивки взагалі реалізована через модуль комунікації. Не факт, що в новій версії це виправлено чи немає нових багів. Тут взагалі не певен, але знаючи китайців є ймовірність, що навіть за можливості оновлення, вони навряд будуть це робити, аби купували нові ревізії, моделі тощо.
Взагалі, купуючи подібні китайські інвертори треба бути готовим до того, що там будуть проблеми з якими ви лишитесь сам на сам, і далеко не факт, що ви зможете їх обійти зовнішнім керуванням і моніторингом.
Виявляється вся основна проблема якраз в цих конверторах USB-RS485/TTL-RS485, а саме в способі генерування сигналу "TXEnable" на мікросхемі MAX485 (чи її аналог).
Гляньте сюди, можливо допоможе вам. vladyspavlov/esphome-must-inverter#9
Конкретно той варіант не допоміг, не працює і все... Хоча як я зрозумів, то там із відмінностей тільки flow_control_pin:
У мене все запрацювало в порту USB WiFi. Згідно опису https://github.com/vladyspavlov/esphome-must-inverter
Нюанси:
- Між USB та RS485-TTL залишив тільки A+ і B-. GND прибрав.
- Переробив шнурок між інвертором і батареєю - там був повний патчкод з відведеною парою 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, і який буде не дуже колгоспно виглядати :)
Виявляється вся основна проблема якраз в цих конверторах USB-RS485/TTL-RS485, а саме в способі генерування сигналу "TXEnable" на мікросхемі MAX485 (чи її аналог).
Гляньте сюди, можливо допоможе вам. vladyspavlov/esphome-must-inverter#9
Конкретно той варіант не допоміг, не працює і все... Хоча як я зрозумів, то там із відмінностей тільки flow_control_pin:
У мене все запрацювало в порту USB WiFi. Згідно опису https://github.com/vladyspavlov/esphome-must-inverter
Нюанси:
- Між USB та RS485-TTL залишив тільки A+ і B-. GND прибрав.
- Переробив шнурок між інвертором і батареєю - там був повний патчкод з відведеною парою 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, і який буде не дуже колгоспно виглядати :)
Я використовую коробки від тік таку для таких рішень :)
Виявляється вся основна проблема якраз в цих конверторах USB-RS485/TTL-RS485, а саме в способі генерування сигналу "TXEnable" на мікросхемі MAX485 (чи її аналог).
Гляньте сюди, можливо допоможе вам. vladyspavlov/esphome-must-inverter#9
Конкретно той варіант не допоміг, не працює і все... Хоча як я зрозумів, то там із відмінностей тільки flow_control_pin:
У мене все запрацювало в порту USB WiFi. Згідно опису https://github.com/vladyspavlov/esphome-must-inverter
Нюанси:
- Між USB та RS485-TTL залишив тільки A+ і B-. GND прибрав.
- Переробив шнурок між інвертором і батареєю - там був повний патчкод з відведеною парою 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, і який буде не дуже колгоспно виглядати :)Я використовую коробки від тік таку для таких рішень :)
Чудове рішення!
Пішов за тіктаком
uart->rs в термоусадку ще засунув, що б ніде не коротнув
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 може хто підтвердить ЩЕ ?
Хто зна, може...
Треба буде якось перевірити. А зараз вдалося заставити це все працювати іншим чином.
Все запрацювало, коли я прописав інші піни для RX/TX - GPIO13/GPIO12 відповідно. Не знаю поки чому так. Причому з усіма перехідниками, навіть самопальними.
Я новачок в темі ESPHome і ці платки D1mini використовую вперше. Пробував також ставити UART на GPIO13/15, але всеодно не працювало...
Припускаю, що можливо модулі ЕСП8266 мої якісь занадто китайські, бо при детальному огляді помітно, що на них менше деталей (резисторів/конденсаторів) чим на зразках, що використовують автори...