# SMA over modbus
modbus:
type: tcp
host: 192.168.178.171
port: 502
and this in sensors
- platform: modbus
scan_interval: 30
registers:
- name: Gesamtertrag
hub: sma
unit_of_measurement: kWh # see register description in section 5.4.1 of the document
slave: 3 # use the UnitID you found in Sunny Explorer
register: 30531 # use a register from section 5.4.1 of the document
register_type: input # all registers starting with 3 need to have the type input
count: 2 # use the correct count for the register see section 5.4.1 of the document
and get this error in my log
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 179, in _async_setup_platform
await asyncio.wait_for(asyncio.shield(task), SLOW_SETUP_MAX_WAIT)
File "/usr/local/lib/python3.7/asyncio/tasks.py", line 442, in wait_for
return fut.result()
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/src/homeassistant/homeassistant/components/modbus/sensor.py", line 129, in setup_platform
hub = hass.data[MODBUS_DOMAIN][hub_name]
KeyError: 'sma'
I can login to the webinterface just fine. I came here bc the standard SMA integration was not working, but am having issues with this as well. Anyone care to shed some light on this?
I think it’s because you are missing the sma name for the modbus tcp, port and ip settings.
Add “name: sma” or it might also work if you remove “hub: sma” from the registers.
You have:
# SMA over modbus
modbus:
type: tcp
host: 192.168.178.171
port: 502
Should be (if you use “hub: sma”)
# SMA over modbus
modbus:
name: sma
type: tcp
host: 192.168.178.171
port: 502
delay (integer)(Optional)
Time to sleep in seconds after connecting and before sending messages. Some modbus-tcp servers need a short delay typically 1-2 seconds in order to prepare the communication. If a server accepts connecting, but there is no response to the requests send, this parameter might help.
Default value:
0
My modbus integration looked like this
modbus:
name: sma
type: tcp
host: 192.168.178.101
port: 502
Unfortunately after adding the delay parameter with 1 or 2 doesn’t help. I get the following errors:
Logger: pymodbus.factory
Source: __main__.py:342
First occurred: 11:26:58 (6 occurrences)
Last logged: 11:29:32
Unable to decode response Modbus Error: Unknown response 59
Unable to decode response Modbus Error: Unknown response 90
Unable to decode response Modbus Error: Unknown response 125
index out of range
Logger: homeassistant.core
Source: /usr/src/homeassistant/homeassistant/core.py:144
First occurred: 11:26:58 (6 occurrences)
Last logged: 11:29:32
Error doing job: Fatal error: protocol.data_received() call failed.
Traceback (most recent call last):
File "/usr/local/lib/python3.7/asyncio/selector_events.py", line 826, in _read_ready__data_received
self._protocol.data_received(data)
File "/usr/local/lib/python3.7/site-packages/pymodbus/client/asynchronous/asyncio/__init__.py", line 192, in data_received
self._dataReceived(data)
File "/usr/local/lib/python3.7/site-packages/pymodbus/client/asynchronous/asyncio/__init__.py", line 139, in _dataReceived
self.framer.processIncomingPacket(data, self._handleResponse, unit=unit)
File "/usr/local/lib/python3.7/site-packages/pymodbus/framer/socket_framer.py", line 165, in processIncomingPacket
self._process(callback, error=True)
File "/usr/local/lib/python3.7/site-packages/pymodbus/framer/socket_framer.py", line 175, in _process
raise ModbusIOException("Unable to decode request")
pymodbus.exceptions.ModbusIOException: Modbus Error: [Input/Output] Unable to decode request
Yes modbus is definitely broken in 0.108 1-3
I stay on 0.108.3 but I switched to NodeRed and MQTT to retrieve my modbus data.
everything works now again.
Hi Darren, welcome to the club!
I see that you use the Modbus reader with input definition via a function block. Do you mind sharing the content of the block. I would like to add this approach to my tutorial with reference to your post
According to the source code of the modbus flex-getter, @drmcinnes is just reading an address range. You can also take a look at the Modbus-Flex-Suite examples via Import -> Examples -> node-red-contrib-modbus.
This is my current modbus code and template for the SMA Tripower 8.0 . With some help of the @chris_ka post above I managed to realise a good working solution for the SMA.Probably the code below is not the best code but it does the job.
Note: the ‘day power’ was wrong and after a firmware update of the inverter the values made sense
How to convert this to a nice Home Assistant integration?
Hey guys. I’ve got a Sungrow 8K inverter and was pulling in data via MQTT using ‘meltaxa’s solariot script’, which I was able to use grafana for statistic, and HA templating to calculate net load and daily/month costs, and other useful stuff. This was working fine for a few months after I had everything installed, and then it just stopped working.
The python script just started returning ModbusIOException object has no attribute registers “sungrow”, and I’ve tried various other python scripts.
I’ve tried various modbus scanning tools, and I can confirm port 502 is still open. I can physically check on the inverter panel it is using (slave) id ‘1’.
I tried @drmcinnes node-red flow today to see what I might get. The error it returns is Error: Modbus exception 4: Slave device failure (device reports internal error) An unrecoverable error??
Any ideas or suggestions? Data is still being populated in the Sungrow isolarcloud portal. The only thing I can think of is a possible firmware update was push down to it, preventing TCP modbus interrogation.
Thanks, @drmcinnes. Yeah, tried rebooting it a few times. Left it off for 20mins also. I’ve got a reserved IP for it on a fully open LAN segment, and confirmed the error changes to a timeout when the unit is turned off.
I tried ModbusView and the specific error there is EC4 Slave Device Failure. Googling doesn’t come up with any solution for error unfortunately. I can’t think of anything that might have changed…
Hi everyone
Totally new in home assistant and programming, dont even ask. I have SMA STP7000 inverter and Home manager 2 which I wanted to get connecetd to HA. Big thanks to Chris for his tutorials, managed to get the Node red done for Home manager and now trying to figure out how to get the solar production out. Will probably follow his another tutorial and see what happens While I was searching how to get the Home manager and inverter connected to HA I found this: https://www.home-assistant.io/integrations/sma/
Is it working only for USA? I cant get anything out from this and I actually think that it shouldnt be the IP of inverter but home manager. Inverter would not have access to power supplied from grid no?
Edit: Big thx to MBolt for his script, didnt need all the sensors so I have trimmed it a bit and got working.