Hi,
i wonder if someone could help with some ideas about the follwoing:
Ive got MPPT Solar Charge Controller with rj45 port in it that suppose to transfer battery data.
I wonder how can i connect that rj45 rwead the data (particularly voltage and battery charge level) and transfer it to home assistant?
I was wondering if esp8266 or something similar can be used? Can i read and decode the rj45 signal and then send it to home assistant via mqtt?
If so and you ever came across a similar project or have some advice or ideas please could you share?
Just need some direction and ideas where to start from…
The mptt controller i have is:
Y&H 30A MPPT Solar Charge Controller with LCD Display Tracer AN Series 12V
I have the same problem, my MPPT controller is MUST PC18-8015F have port RJ45 (RS485) and USB. On USB port receive info on my PC with dedicated APP.
But i want to connect to HA.
Hi There,
The method I use for now (untill something HA direct comes along) is commercial. ICC Software has a solution that does all the hard work and not to expensive, the good thing for HA is builtin MQTT (two way) for integration into HA.
It looks similar to the SRNE hybrid inverter series just like mine. Try this document which is what I used to set up mine. The pin config for the RJ45 is on the lat page.
If anyone is looking for a solution to the above, I have added a modbus protocol to my configuration.yaml, and I now have my controller integrated into HA
modbus:
- name: Solar Array
type: rtuovertcp
host: [add in IP address of device]
port: 8080
sensors:
- name: "Solar Charging Mode"
slave: 1
address: 0
input_type: holding
data_type: int16
scale: 1
unit_of_measurement: "Mode"
unique_id: solar_charging_mode
# Possible Values: 0 (Standby), 1 (CC Mode), 2 (CV Mode), 3 (CF Mode)
- name: "Solar PV Voltage"
slave: 1
address: 1
input_type: holding
data_type: int16
scale: 0.1
precision: 1
unit_of_measurement: "V"
device_class: "voltage"
unique_id: solar_pv_voltage
- name: "Solar Power Generation"
slave: 1
address: 1031
input_type: holding
data_type: int16
scale: 0.1
precision: 1
unit_of_measurement: "Wh"
device_class: "energy"
unique_id: solar_power_generation
- name: "Solar Battery Voltage"
slave: 1
address: 2
input_type: holding
data_type: int16
scale: 0.1
precision: 1
unit_of_measurement: "V"
device_class: "voltage"
unique_id: solar_battery_voltage
- name: "Solar Charging Current"
slave: 1
address: 3
input_type: holding
data_type: int16
scale: 0.1
precision: 1
unit_of_measurement: "A"
device_class: "current"
unique_id: solar_charging_current
- name: "Solar Charging Power"
slave: 1
address: 7
input_type: holding
data_type: int16
scale: 1
unit_of_measurement: "W"
device_class: "power"
unique_id: solar_charging_power
- name: "Solar Battery Level"
slave: 1
address: 11
input_type: holding
data_type: int16
scale: 1
unit_of_measurement: "%"
device_class: "battery"
unique_id: solar_battery_level
- name: "Solar CO2 Emission Reduction"
slave: 1
address: 12
input_type: holding
data_type: int32
scale: 0.001
unit_of_measurement: "kg"
device_class: "carbon_dioxide"
unique_id: solar_co2_emission_reduction
- name: "Solar Fault Code"
slave: 1
address: 14
input_type: holding
data_type: int16
scale: 1
unit_of_measurement: "Code"
unique_id: solar_fault_code
# Fault Code Definitions:
# Bit 0: Battery Overvoltage
# Bit 1: PV Overvoltage
# Bit 2: Charging Overcurrent
# Bit 3: Discharging Overcurrent
# Bit 4: Battery Undervoltage
# Bit 5: PV Undervoltage
# Bit 6: Charging Overtemperature
# Bit 7: Discharging Overtemperature
# Bit 8: System Overtemperature
# Bit 9: PV Reverse Polarity
# Bit 10: Battery Reverse Polarity
# Bit 11: Battery Overdischarge
# Bit 12: Communication Fault
# Bit 13: Internal Fault
# Bit 14: Relay Fault
# Bit 15: Reserved
- name: "Solar System Prompt"
slave: 1
address: 15
input_type: holding
data_type: int16
scale: 1
unit_of_measurement: "Prompt"
unique_id: solar_system_prompt
- name: "Solar Battery Temperature"
slave: 1
address: 9
input_type: holding
data_type: int16
scale: 1
unit_of_measurement: "°C"
device_class: "temperature"
unique_id: solar_battery_temperature
- name: "Solar Internal Temperature"
slave: 1
address: 10
input_type: holding
data_type: int16
scale: 1
unit_of_measurement: "°C"
device_class: "temperature"
unique_id: solar_internal_temperature
- name: "Daily Power Generation"
slave: 1
address: 0x0206
input_type: holding
data_type: int32
scale: 1
unit_of_measurement: "Wh"
device_class: "energy"
unique_id: daily_power_generation
- name: "Solar Panel Current"
slave: 1
address: 6
input_type: holding
data_type: int16
scale: 0.1
precision: 1
unit_of_measurement: "A"
device_class: "current"
unique_id: solar_panel_current
- name: "Total Energy Produced"
slave: 1
address: 0x020E
input_type: holding
data_type: int32
scale: 1
unit_of_measurement: "Wh"
device_class: "energy"
unique_id: total_energy_produced
- name: "Solar Running Time"
slave: 1
address: 513 # 0x0201 in decimal
input_type: holding
data_type: int32 # Assuming 32-bit integer to cover the full range
scale: 1
precision: 0
unit_of_measurement: "minutes"
device_class: "duration"
unique_id: total_running_time
- name: "Solar Running Days"
slave: 1
address: 516 # 0x0204 in decimal
input_type: holding
data_type: int16
scale: 1
precision: 0
unit_of_measurement: "days"
device_class: "duration"
unique_id: total_running_days
# Explanation of CRC Calculation (Appendix)
# The CRC-16 calculation is used to ensure data integrity. For example:
# - Given Data: [0x01, 0x03, 0x00, 0x00, 0x00, 0x02]
# - CRC-16 Result: 0xC40B (The checksum appended to the data)
# Configuration Examples:
# - Battery Type Configuration:
# Address: 0x0101, Value: 0x0004 (Lithium Battery)
# - Battery System Voltage Configuration:
# Address: 0x0102, Value: 0x0018 (24V System)
# - CV Voltage Configuration:
# Address: 0x0103, Value: 0x0C80 (32.00V)
# Error Codes and Troubleshooting:
# - Fault Code 0x000E - System Fault Codes (e.g., Bit 0: Battery Overvoltage)
# Recommended actions for each fault code.
# Advanced Features:
# - Remote control parameters and applications.
# - Example use cases and command sequences for advanced features.
# Use tables and charts to summarize complex information, making it easier to understand.
# Add a glossary of terms used in the document for quick reference.