Ok, I found it out myself. The payload of solarmax3000s
was already correct, but as long as the software MaxTalk is running, the sensor gets no values. Why? No idea
Now I finally have my values in Home assistant. One question can you possibly still read out the total fed current or tell me which sensor I need for this?
Sorry for the late reply , so are you getting data correctly now?
No worries. Yes, I got it working a short time later. The error was that I still had MaxTalk open and somehow it “grabs” the data as long as it is active and Home Assistant does not get it. In the meantime everything arrives cleanly.
I have one last question. Do you happen to have an idea how to read the total number of kWh fed? Quasi solarmax “total generated energy”.
I have also noticed if MaxTalk is running then HA can not access the data. I haven’t got that particular metric out of mine yet , I will take a look tomorrow as it should be just another call that we can capture and work out.
Hmm… I don’t get it where you guys got the payload from.
I can see a lot of my two inverter’s (SolarMax 3000s and SolarmMax 2000s) TCP data packages on Wireshark on port 12345, and I’ve looked through a lot of packages now, but there is no similiar payload to yours.
You just double clicked the packages and looked deeper into them, right?
Well guys, ti works now. I was not aware I have to look out for the according payload within the packet bytes:
But holy crap @Dbuckley1712, I wonder how the hell you were able to find out on which bytes are relevant and then even how to covert them correctly?
EDIT: It lacks indeed the possibility to get kWh to implement it to the energy dashboard.
Apologies for spamming too much here, but I just discovered this:
@Buddinski88 Should work for you I guess?
EDIT: I tried it and it works perfectly in my case and this way I can use it within the HA energy dashboard.
Just for anyone looking for the same for the more recent Solarmax / Solarmax Ultimate inverters: Those can be easily integrated via ModBus. Solarmax has been posting the relevant information at their homepage (https://www.solarmax.com/download), and from there it is easy getting this into HA.
Hi David,
thanks a lot for your investigation regarding SolarMax. I will also reduce the equipment (RPi running Solaranzeige and Volkszähler) and integrate SolarMax directly into HA (as long as the inverters keep running …). Unfortunally I get bad info from config check…
Do you, or anyone else here, have any idea
Dieter
sensor:
- platform: tcp
scan_interval:
seconds: 5
name: solarmaxTest1
host: 192.168.178.100
port: 12300
payload: '{FB;01;26|64:KDY;KMT;KT0;KYR;PAC|08BC}'
- sensor:
- name: solar_Test1_monthly
device_class: energy
unit_of_measurement: "kWh"
state: >
{{ states('sensor.solarmaxTest1').split(';')[3] | regex_findall_index('\=(.*)') | int(base=16) }}
- sensor:
- name: solar_Test1_daily
device_class: energy
state_class: total_increasing
unit_of_measurement: "kWh"
state: >
{{ states('sensor.solarmaxTest1').split(';')[2] | regex_findall_index('\=(.*)') | int(base=16) | int / 10 }}
- sensor:
- name: solar_Test1_current_w
device_class: power
unit_of_measurement: "w"
state: >
{{ states('sensor.solarmaxTest1').split(';')[6] | regex_findall_index('(?<=\=)(.*?)(?=\|)') | int(base=16) | int / 2 | int }}
Do you have any example-config-file?
I tried multiple times, but always failed.
Sure, here it is. I struggled also hugely until I learnt that you need to add the “input_type: input” so HA knows which register “family” to do the lookup in. Just add your IP address below, and all should work.
modbus:
- name: solarmax
type: tcp
host: YOUR LOCAL IP ADDRESS
port: 502
sensors:
- name: solarmax_firmware
slave: 1
address: 102
input_type: input
scan_interval: 3600
- name: solarmax_dc_leistung_wechselrichter
slave: 1
address: 110
input_type: input
scan_interval: 1
- name: solarmax_batterie_ladeleistung
slave: 1
address: 114
input_type: input
scan_interval: 1
- name: solarmax_eigenverbrauchs_leistung
slave: 1
address: 116
input_type: input
scan_interval: 1
- name: solarmax_einspeiseleistung
slave: 1
address: 118
input_type: input
scan_interval: 1
- name: solarmax_ac_leistung_komplettanlage
slave: 1
address: 120
input_type: input
scan_interval: 1
- name: solarmax_batterie_ladezustand
slave: 1
address: 122
input_type: input
scan_interval: 1
Thanks alot
Working perfectly
Glad to hear!
Hello, I’m following your post carefully, but I can’t get a good result.
Can someone help me because I don’t see where I made the mistake.
thank you very much
Hello, I follow your post carefully, but I can’t get a good result. Can someone help me ? thank you very much
# SOLARMAX
sensor:
- platform: tcp
scan_interval:
seconds: 5
name: solarmax3000s
host: 192.168.1.123
port: 12345
payload: "{FB;01;3E|64:IDC;UL1;TKK;IL1;SYS;TNF;UDC;PAC;PRL;KT0;SYS|0F66}"
template:
- sensor:
- name: solarmax3000s_3_monthly
device_class: energy
unit_of_measurement: "kWh"
state: >
{{ states('sensor.solarmax3000s').split(';')[3] | regex_findall_index('\=(.*)') | int(base=16) }}
- sensor:
- name: solarmax3000s_3_daily
device_class: energy
state_class: total_increasing
unit_of_measurement: "kWh"
state: >
{{ states('sensor.solarmax3000s').split(';')[2] | regex_findall_index('\=(.*)') | int(base=16) | int / 10 }}
- sensor:
- name: solarmax3000s_3_current_w
device_class: power
unit_of_measurement: "w"
state: >
{{ states('sensor.solarmax3000s').split(';')[6] | regex_findall_index('(?<=\=)(.*?)(?=\|)') | int(base=16) | int / 2 | int }}
Just posted a tutorial on this.
Hi,
I get it managed that I could connect via Modbus to my Solarmax 13SMT inverter. My biggest issue for now is to find the right Modbus addresses for the inverter. Every help is welcome. I’m not sure if all values are right. THX in advance.
modbus:
- name: solarmax
type: tcp
host: 192.168.0.78
port: 502
sensors:
- name: solarmax_current_power
unique_id: 6a0a5b90-4ae8-4a33-8de9-0b5c59a6b8d1
slave: 1
address: 4151
input_type: holding
unit_of_measurement: kW
data_type: int32
scale: 0.0001
- name: solarmax_total_power
unique_id: d2a0e2cc-612f-47e9-9f24-f3fce5f9ac6a
slave: 1
address: 4129
input_type: holding
unit_of_measurement: MWh
data_type: int32
scale: 0.001
- name: solarmax_max_power_today
slave: 1
unique_id: d2a0e2cc-612f-47e9-9f24-f3fce5f9ac6a
address: 4155
input_type: holding
unit_of_measurement: kW
data_type: int32
scale: 0.0001
- name: solarmax_internal_converter_temperature
unique_id: 70b4357b-d7f7-4211-b141-a5a917cf0cc3
slave: 1
address: 4124
input_type: holding
unit_of_measurement: °C
data_type: int16
state_class: measurement
- name: solarmax_total_power_today
unique_id: ef4c1f35-6825-4298-ba55-65589efce315
slave: 1
address: 4136
input_type: holding
unit_of_measurement: kWh
data_type: int16
scale: 0.001
- name: solarmax_spannung_1
unique_id: 95ed4472-e34a-43fc-97db-e617d49a8e79
slave: 1
address: 4112
input_type: holding
unit_of_measurement: V
data_type: int16
scale: 0.1
- name: solarmax_strom_1
unique_id: 079ba81f-99bb-4bd8-a992-9ac2c89674d2
slave: 1
address: 4113
input_type: holding
unit_of_measurement: A
data_type: int16
scale: 0.1
- name: solarmax_leistung_1
unique_id: ba84af5e-1f35-4949-a1a8-98bcb53b0170
slave: 1
address: 4115
input_type: holding
unit_of_measurement: kW
data_type: int16
scale: 0.0001
- name: solarmax_spannung_2
unique_id: e27d4db8-1c82-4e65-8243-98e25d114a5a
slave: 1
address: 4116
input_type: holding
unit_of_measurement: V
data_type: int16
scale: 0.1
- name: solarmax_strom_2
unique_id: 6dfe8cae-9860-4a7e-9f40-e8edd25b2d9c
slave: 1
address: 4117
input_type: holding
unit_of_measurement: A
data_type: int16
scale: 0.1
- name: solarmax_leistung_2
unique_id: f3226562-5b7e-4b3c-9366-eeb4f091eabb
slave: 1
address: 4119
input_type: holding
unit_of_measurement: kW
data_type: int16
scale: 0.0001
- name: solarmax_spannung_3
unique_id: ca603951-18d0-475f-9a66-42da6da8eacb
slave: 1
address: 4107
input_type: holding
unit_of_measurement: V
data_type: int16
scale: 0.1
- name: solarmax_strom_3
unique_id: cb0aeea2-a69a-4d79-85ae-79d0e1b506d5
slave: 1
address: 4108
input_type: holding
unit_of_measurement: A
data_type: int16
scale: 0.1
- name: solarmax_leistung_3
unique_id: 67e7e1a7-feb6-45e8-8e26-4db7b086875d
slave: 1
address: 4110
input_type: holding
unit_of_measurement: kW
data_type: int16
scale: 0.0001
I added and updated some modbus addresses.
With the modbus data type fix from 2024.02.
So I had to adjust the following values to get it work again:
sensors:
- name: solarmax_current_power
unique_id: 6a0a5b90-4ae8-4a33-8de9-0b5c59a6b8d1
slave: 1
address: 4151
input_type: holding
unit_of_measurement: W
data_type: uint32
scale: 0.1
device_class: power
state_class: measurement
Hi @Dbuckley1712,
thank you so much for this. Thanks to your instructions, I was able to set this up in a couple of hours. Really super useful!