After doing some research we got our solar system in April 2023. We went with a company that was using AlphaESS equipment and one of the reasons for choosing that particular installer was their neat work – a neighbour of ours allowed us to have a look. Our system had to be neat since we were planning to install it in a customer facing area of our little family business.

After enjoying the free electricity during the summer I started to get curious. Being a bit old fashioned I was wondering if and how the system can be monitored and controlled without AlphaESS’s cloud backend. So in December 2023 I read a lot about Modbus RTU, Modbus TCP, ioBroker and Home Assistant (HA). After trying both ioBroker and HA I decided to go with HA – the more popular home automation solution. I installed a test system in a VirtualBox and was able to monitor the AlphaESS system shortly after. I ordered a HA Green straight away, knowing that this was something I’d like to run 24/7.

It didn’t take long until I added the logic to run a scheduled force discharge of the batteries at night (from 23:30-02:00) – just before re-charging the batteries again (from 02:00-06:00). This schedule is running since January 2024 now and hasn’t had a single hiccup.

At this stage I decided to write things down, both for my own documentation and also to share my learnings – so here we go…

Update: as of end of August 2024 my HA instance isn’t hosted on the HA Green anymore but in a Proxmox VM on a Beelink MINI S12 PRO.

Update: as of start of September 2024 the integration contains automations to prioritise grid feed-in over battery charging to reduce clipping and maximise feed-in.


Get the latest copy of integration_alpha_ess.yaml here:
https://projects.hillviewlodge.ie/_alphaess/integration_alpha_ess.yaml

Also make sure to download a fresh copy of alphaess_view.yaml and daily_power_diagram.yaml each time a new version of integration_alpha_ess.yaml has been released.


Useful AlphaESS reference documentation:
AlphaESS-ModbusRTU&TCP.pdf
AlphaESS-ModbusDispatchFunction.pdf
AlphaESS-ModbusRegisterParameterList.pdf


 

Disclaimer

Use the provided information at your own risk!

Be careful when making changes and double and triple check everything – writing inconsistent data into your AlphaESS Inverter’s Modbus registers might cause unexpected results which could damage your system!

I can’t offer official support but I’ll try to help if you need additional details, instructions or troubleshooting.

Tested on SMILE5, SMILE-G3-S5 and SMILE-Hi10 but according to AlphaESS’s documentation the register addresses and values are consistent through all supported models. Additionally is has been tested on SMILE-B3-PLUS, which offers limited information/functionality due to its AC-coupled design.

 

Intended Audience

This guide’s intended audience are tech savvy persons, wanting to get more information out of their AlphaESS system without depending on AlphaESS’s cloud backend or persons, planning to access parts of the systems that cannot be accessed via App/WebUI.

 

Prerequisites

  • Your Inverter must be connected via LAN port (not Wi-Fi). If wired network is not available you can use Powerline (€40) or a Wi-Fi Repeater with an Ethernet port (€20) to extend your network alternatively.
  • Home Assistant release 2024.10 or newer.
  • Basic TCP/IP knowledge: this includes an understanding of what an IP address is, the function and identification of ports, and methods for locating devices within a home network.
  • Proficiency in setting up and modifying Home Assistant and YAML files: this involves skills in configuring Home Assistant and the ability to edit YAML files, which are often used for configuration settings.
  • I am providing a preconfigured YAML file containing the majority of the AlphaESS system’s available information and some configuration options. If this doesn’t cover your specific use case you will either have to extend the file with the bits relevant to you yourself or contact me and I will assist in modifying the file.
  • Understanding of electrical units: a fundamental grasp of key electrical concepts and units such as Kilowatts (kW), Kilowatt-hours (kWh), Watts (W), Volts (V) and Amperes (A).

Coding/programming skills are not required.

 

Does your AlphaESS Inverter have Modbus TCP?

Identify your Inverter’s IP address and check if port 502 is open. That indicates that Modbus TCP is enabled and listening. If the port is closed check if it can be enabled via the Inverter’s control panel or reach out to support to get it enabled (Remote configuration or firmware update).

Modbus TCP capable Inverters:
SMILE5, SMILE-Hi5, SMILE-Hi10, SMILE-G3-S3.6/B5/S5.

If your Inverter doesn’t have Modbus TCP it might have Modbus RTU (RS485). In that case a converter can be used, there are Modbus RTU to USB (ca. €20, e.g. Waveshare USB to RS485 Converter) or, preferrable, Modbus RTU to Ethernet (ca. €50, e.g. Protoss-PE11, USR-W610, Waveshare RS485 to RJ45 Ethernet Converter) converters available. I have no experience with any of these inverters therefore wouldn’t be able to provide any help.

Using a Modbus RTU to USB converter might require changes to the provided YAML file.*

Modbus RTU capable Inverters:
SMILE-i3, SMILE-T10 and older models of SMILE5, SMILE-Hi5, SMILE-Hi10, SMILE-G3-S3.6/B5/S5.

Note: the list of inverters above was taken from official AlphaESS documentation but seems to be incomplete, esp. the Modbus TCP capable ones. While a specific model is not listed it might still support Modbus TCP, carrying out a port 502 check as described above might still return a positive result.

Note: prior to buying any dedicated Home Assistant (HA) hardware a virtual test environment can easily be configured using VirtualBox/VMware Workstation/Hyper-V on a PC or Laptop.

 

Setup

The following instructions apply to Modbus TCP enabled Inverters only:

  1. Make sure your Inverter is connected via LAN port (not Wi-Fi).
  2. Change your Inverter’s network configuration and assign a static IP Address. Assign an IP Address that’s outside of your main router’s DHCP range to avoid conflicts in the future. Configuring DHCP Reservations on your router can be used alternatively.
  3. Get a HA instance installed, either in a virtual test environment or a HA device.
  4. Install “Samba share” under “Settings/Add-ons/Add-on Store” and configure username and password.
  5. From a computer connect to the HA instance (\\homeassistant) and use the Samba credentials.
  6. Place a copy of integration_alpha_ess.yaml in \\homeassistant\config\packages (create \packages if required).
  7. Edit \\homeassistant\config\configuration.yaml and append:
    homeassistant:
      packages: !include_dir_named packages
  8. Edit \\homeassistant\config\secrets.yaml and append:
    alphaess_modbus_host_ip: “your Inverter’s IP Address”
    alphaess_modbus_host_port: 502
    alphaess_modbus_slaveId: 85
  9. Perform a restart of your HA.
  10. Get the latest copy of alphaess_view.yaml here:
    https://projects.hillviewlodge.ie/_alphaess/alphaess_view.yaml
  11. In HA’s Overview select “Edit Dashboard/Add view/⋮/Edit in YAML” and copy in the content of alphaess_view.yaml. Click “Save”.
    Note: on a fresh HA installation you might be missing the “Add view” option (a “+” sign). In that case select “Edit Dashboard/⋮/Take control”, check “Start with an empty dashboard”, then click “Take control”.

 

Configuration

Be careful when making changes and double and triple check everything – writing inconsistent data into your Inverter’s Modbus registers might cause unexpected results which could damage your system!

After making modifications navigate to “Developer Tools”, validate via “Check Configuration” and then reload “All YAML Configuration”.

 

Charging Now

“Charging Now” will initiate an immediate charging session (default: for the next 2 hours, Charging Cutoff SoC 100%) and will indicate the remaining time in a countdown.

To adjust the “Charging Now” settings edit \\homeassistant\config\packages\integration_alpha_ess.yaml, find “AlphaESS_Charging_Now” and adjust the following values:

- service: modbus.write_register
  data:
    hub: modbuspvsystem
    address: 2177 #Dispatch Power, 32000 Offset
    slave: !secret alphaess_modbus_slaveId
    value:
      - 0
      - 27000 # 5kW

- service: modbus.write_register
  data:
    hub: modbuspvsystem
    address: 2182 #Dispatch SOC (0.4%/bit)
    slave: !secret alphaess_modbus_slaveId
    value:
      - 250 # 100%/0.4

- service: modbus.write_register
  data:
    hub: modbuspvsystem
    address: 2183 #Dispatch Time
    slave: !secret alphaess_modbus_slaveId
    value:
      - 0
      - 7200 # 2h

- service: timer.start
  data:
    entity_id: timer.alphaess_helper_charging_now_timer
    duration: '02:00:00' # 2h

 

Force Discharge

To adjust the “Force Discharge” settings (default: 5kW for 3.5h or until 20% SoC) edit \\homeassistant\config\packages\integration_alpha_ess.yaml, find “AlphaESS_Force_Discharge” and adjust the following values:

- service: modbus.write_register
  data:
    hub: modbuspvsystem
    address: 2177 #Dispatch Power, 32000 Offset
    slave: !secret alphaess_modbus_slaveId
    value:
      - 0
      - 37000 # 5kW

- service: modbus.write_register
  data:
    hub: modbuspvsystem
    address: 2182 #Dispatch SOC (0.4%/bit)
    slave: !secret alphaess_modbus_slaveId
    value:
      - 50 # 20%/0.4

- service: modbus.write_register
  data:
    hub: modbuspvsystem
    address: 2183 #Dispatch Time
    slave: !secret alphaess_modbus_slaveId
    value:
      - 0
      - 12600 # 3.5h

 

Excess Export (Feed-in Prioritisation)

Enabling “Excess Export” will change the inverter’s load serving priority, the default being the sequence: House Load > Charge Battery > Export to Grid. Once enabled the inverter will prioritise feed-in, the sequence will be: House Load > Export to Grid > Charge Battery.

Full details coming soon…

 

Power Diagram (optional)

Get the latest copy of daily_power_diagram.yaml here:
https://projects.hillviewlodge.ie/_alphaess/daily_power_diagram.yaml.

As a prerequisite for the Power Diagram download the current apexcharts-card.js from https://github.com/RomRider/apexcharts-card/releases/latest and place the file in the folder \\homeassistant\config\www.

In HA’s Overview select “Edit Dashboard/⋮/Manage Resources/Add Resource” setting URL to “/local/apexcharts-card.js” and selecting “JavaScript Module” as the “Resource type”.

Restart HA.

In HA’s Overview select “Edit Dashboard/⋮/Manage dashboards/Add Dashboard”, pick “New dashboard from scratch”. Apply a random “Title” (random since the final title is configured in daily_power_diagram.yaml) and click “Create”. Click “Open” on the right, then “/⋮/Raw configuration editor”. Select the default content and replace it with the content of daily_power_diagram.yaml. Click “Save”.

Note: if you decided to change entity names in the provided integration_alpha_ess.yaml file you will have to adjust these in the daily_power_diagram.yaml accordingly.

 

Appendix

*Potentially required YAML modifications for a Modbus RTU to USB converter (where /dev/ttyUSB0 is depending on your individual HA hardware):

Change:

modbus:
  - name: modbuspvsystem
    type: tcp
    host: !secret alphaess_modbus_host_ip
    port: !secret alphaess_modbus_host_port
    message_wait_milliseconds: 10 # Waittime between 2 messages
    timeout: 10 # Timeout in seconds before connection is closed
    delay: 1 # Delay in seconds at startup

To:

modbus:
  - name: modbuspvsystem
    type: serial
    port: /dev/ttyUSB0 #USB FTDI device connected to the Inverter’s CAN/RS485 Modbus port
    baudrate: 9600
    bytesize: 8
    method: rtu
    parity: N
    stopbits: 1
    message_wait_milliseconds: 10 # Waittime between 2 messages
    timeout: 10 # Timeout in seconds before connection is closed
    delay: 1 # Delay in seconds at startup

53 thoughts on “Integrating AlphaESS Inverter into Home Assistant via Modbus

  1. Glenn harrold Reply

    Axel.

    One thing that’s not explained is changing the sensor names to match your own sensors in the Daily power diagram. My entities had different names. Other than that the Power diagram works great. My ideal goal is to curtail my solar feed in when my wholesaler (Amber) turns negative. Im looking to curtail feed in but power the house load and charge the battery.

    Love your work

    • Projects @ Hillview Post authorReply

      Good point, Glenn. Thanks for the feedback 🙂 I’ve added the missing information now.

  2. Frenky Reply

    I have an Alpha ESS Storion-SMILE-T10, I managed to get the ModBus communication working. But when I want to modify the registers, the device does not respond to the command and ends with a timeout.
    Am I doing something wrong or do I need to enable the write somewhere first?
    Reading:
    send: 0x55 0x3 0x8 0x50 0x0 0x1 0x8b 0xaf
    recv: 0x55 0x3 0x2 0x0 0x6e 0x8 0x64
    Saves:
    send: 0x55 0x6 0x8 0x50 0x0 0xd2 0x6 0x32

    Thank you for your help

    • Projects @ Hillview Post authorReply

      Hiya Frenky, from what I can see this question isn’t about using my integration but some generic form of reading/writing Modbus registers. I am not aware of any writing restrictions that have to be disabled. The only thing I do know is that initiating some processes on the AlphaESS might require the commands to be sent in the correct sequence – for example when initiating a Dispatch/Force Discharge (Dispatch Mode has to be the last command) . What are you actually trying to do?

  3. Frenky Reply

    I learned today from ESS support that Storion-SMILE-T10 has only the possibility of reading via ModBus (changing values – writing is not possible).

  4. Thoralf Reply

    Is there a way to prevent the Alpha from charging via grid at all?

    Background: If you do have a secondary plant, another battery or anything that is capable of feeding energy into the grid, chances are that the Alpha is sucking this up because of the super conservative settings.

    • Projects @ Hillview Post authorReply

      Hi Thoralf, unfortunately I’m not aware of a method to prevent that. I also don’t have a way of testing anything like that.

    • Projects @ Hillview Post authorReply

      Hi Marius,

      I currently don’t have any plans to publish on GitHub (for several reasons) and I don’t have the slightest clue about how to create HACS Repos – but there is no need for either. My integration shouldn’t have any issues coexisting with Charles’s integration.

      Cheers,
      Axel

  5. Glenn harrold Reply

    Finally Installed your Integration in HA today.

    Love it. Ive been wanting a level of control over my Alpha System for ages.

    One thing i found is if i make a change in the integration. It reflects correctly in the Alpha APP. But if i make a change in the Alpha APP, it doesn’t .
    Is there any auto refresh that syncs command from the app to show correctly in HA. or is this because commands in the APP are based on API commands.

    • Projects @ Hillview Post authorReply

      Hey Glenn, great to hear that you love it 😉

      I didn’t notice that issue and I ran a quick test a minute ago: I changed the “Discharging Cutoff SOC” in the WebUI and also in the App – both updated fine in the HA integration after seconds. Which particular values were you testing with?

  6. Wolfgang Reply

    Hello, first of all, thank you very much for the great work.

    I have had the integration running for a few days now and I’m very satisfied. Previously, I was using the original Schnitzelweck92 variant.
    For my understanding, I wanted to ask whether the Excess_Export automations relate to the approach discussed here: https://www.storion4you.de/thread/903-ladezeit-einstellen-mit-nur-pv/?pageNo=3 regarding saving or reducing unnecessary grid power consumption in the morning and evening when there is little solar energy available? Or does it pursue a different approach?

    thank you!

    • Projects @ Hillview Post authorReply

      Hi Wolfgang,

      thank you very much 😉 You are right, the topic discussed there is related – what I’m trying to achieve is this: here in Ireland we are getting well paid for feeding into the grid. So I am using that functionality to maximise export by pushing out the batteries being full to as late as possible. That way I can reduce or even eliminate clipping.

      The same logic can also be used to reduce or eliminate the unnecessary grid consumption during dusk and dawn – I just didn’t implement that because I don’t have a use case for that.

      PS: I’ve made some minor changes to the YAML today, so I’d recommend using the new version.
      PPS: I’m actually SaaX on the Storion4you forum 😉 Feel free to contact me via Email and I’ll be able to respond in German.

      Cheers,
      Axel

  7. David Carrel Reply

    This is really great. Thanks!
    I’m curious if you can give me any greater insight into the details of the different dispatch modes. I did read the Alpha doc and it gives only very high level descriptions which don’t seem to be enough detail.
    – Modes 1, 2, & 3 seem pretty clear.
    – For mode 4, will it charge the battery if there is excess PV? Or will excess PV go to the grid?
    – Why is the description of mode 5 the same as mode 3? Are these really identical?
    – in mode 7, what happens to PV.

    What I want is to stop charging at less than 100% to extend battery life. I want to use PV as much as possible to reach this threshold, but if PV can’t get there before my rates increase, then I’ll use grid power to get there. For me, 00:00 – 15:00 is cheap from the grid and 15:00-24:00 is expensive. I can use mode 1 to normally get to this threshold before 15:00. I monitor the SOC and if it reaches my threshold before 15:00, then I switch to SOC control (mode 2) with a dispatch SOC value so the Alpha doesn’t exceed my threshold, and all my excess PV goes to the grid. I’ll also switch to mode 2 a bit before 15:00 so that I’m sure my batteries are topped up to my threshold. But once I get to 15:00, I don’t know what mode and parameters to use. Mode 3 (load follow) is basically what I want, but when there is excess PV (which there usually is) then it continues charging the battery to 100% which I don’t want. Unfortunately the Dispatch SOC value is only used by mode 2 and not by other modes. I want a mode where PV powers the house loads, excess PV gets pushed to the grid, if there is not enough PV then the battery will power house loads, BUT the battery won’t be charged.

    Any thoughts??

    • Projects @ Hillview Post authorReply

      Hi David,

      unfortunately I have not looked into any of the other dispatch modes since 2 does everything I needed. So I don’t know how or if you can achieve what you’re looking for.

      Regarding mode 5 I have found this information (translated from German): The function limits the performance of the battery when charging and discharging to the values set in registers 0881H/0882H. Otherwise charging/discharging takes place automatically. (Source: https://www.storion4you.de/thread/903-ladezeit-einstellen-mit-nur-pv/?postID=14452)

      Maybe the guys on that forum have an idea, worth a try…

      Cheers and good luck,
      Axel

  8. David Carrel Reply

    Thanks for the response. And I’ll definitely look at that link you sent for mode 5.

    Of course, just like Murphy’s Law, as soon as I posted my question above, I came up with an idea. I just tested it out this morning and I am now able to achieve what I want using modes 1, 2, & 3. The key was just what you mention. I needed to also set the Dispatch_Active_Power registers (881/882). Those work with modes 1, 2, & 3 also. Voila!!

    Now I want to learn more about modes 5, 6, & 7.

    • Projects @ Hillview Post authorReply

      Hey David,

      that’s great news, glad it’s working for you. I’d love to fully understand what you are doing and how, maybe something I should add to my YAML? If you don’t mind we could move that conversation to Email 😉

      Cheers,
      Axel

  9. Sirko Reply

    Hello Axel, I don’t think that you produce or consume 200.000 kWh ( = 200MWh ) per day ( see the “Today”s entries in your picture ). There seems to be a miscalculation in your ( and my ) configuration with kWh.

    Ciao.

    Sirko

    • Projects @ Hillview Post authorReply

      Hey Sirko,

      are you saying you don’t trust me? 🤣

      Yeah, that’s messed up – but the calculation is actually fine. It’s the cloud update that has messed this up and it will solve itself eventually. The root cause is that the “Today” entries are calculated from the “Total” values – and some of these jumped to “zero” (or “unavailable”) and back multiple times over the weekend.

      Nothing to worry about – I’ll take a new screenshot soon anyway, once I’ve finished testing some new functionality.

      Cheers,
      Axel

  10. Sirko Reply

    Hi Axel, “don’t trust” is the wrong wording. It would be more correct to say that I would be annoyed because I can’t achieve such values with my PV system. 90kWh was my highest daily production so far 😉
    One more question about the diagram: With “legend_value: true” I can also display the current value for PV production in the legend. Can I also somehow put the daily total (i.e. a completely different value) behind it? “5.6kW / 25.3kWh”

    Thanks.

    Sirko

    • Projects @ Hillview Post authorReply

      Sirko,

      that is a very good question and I have no clue. I’m not exactly an experienced HA user and have even less knowledge about ApexCharts. You might find an answer or help on GitHub: https://github.com/RomRider/apexcharts-card.

      If you can find some configuration options for the chart that might be useful for others let me know and I will add it to my template.

      Feel free to contact me directly via mail 😉

      Cheers,
      Axel

  11. Reece Reply

    This has been a lifesaver, especially given the recent API issues at Alpha – switched over easily, thank you!

    • Projects @ Hillview Post authorReply

      Hi Reece, thanks 😉 I’ll be releasing a new version soon but am delayed with testing because of the ongoing backend issues.

  12. Tom Nijsen Reply

    You made my day Axel, I got the modbus working on my Smile5 using a PE11 RS485-UTP module thanks to your yaml files.
    But I’m stuck on adding extra sensors. How do I convert eg the hex address 001AH (26 decimal) from the AlphaESS register catalog to your ‘1052’ value in your yaml? I want to add Total PV Power (I have an extra PV meter for second old PV installation), and think I can do with address 052DH (Total PV power).

    Might be stupid data conversion question, but I’ve got no clue where to look.
    Regards, Tom (KermtStroomt).

    • Projects @ Hillview Post authorReply

      Hey Tom, that’s great to hear 😉

      Yes, you can use any Hex to Dec converter, I’m using this one: https://www.rapidtables.com/convert/number/hex-to-decimal.html. So, 052DH would be 1325 decimal. I’m not sure about your “1052” example, that is 041CH (Inverter Grid Frequency), not 001AH (Frequent(Grid)). I’m also confused about 052DH, I don’t see that register in my AlphaESS-ModbusRegisterParameterList.pdf. Shout, if I can help, preferrable via projects@hillviewlodge.ie.

      I am delighted to hear that the PE11 is working for you and would love to hear details on how to set this up. I have the same device here, unused in a drawer. When I started looking into Modbus end of last year I thought I needed one, before actually realising that my inverter supported Modbus TCP.

      Cheers,
      Axel

  13. Juergen Weiss Reply

    Hi Axel,
    great work and result. Pefectly structured code and documentation is first class. Although I had to rewrite some automations that were based on the AlphaEss Cloud integration I am now fully independent when the Cloud API is not working like last week for about 6 days.
    A big thank you for this. One question I still have to you: It seems you have implemented almost every useful field from the Modubus Doc from Alpha inluding charging switches and charging times, why did you not include the same set of fields for discharging. Maybe I did not find them in either the code or the dashboard ?

    Thanks again and best regards

    Juergen

    • Projects @ Hillview Post authorReply

      Hi Juergen,

      thank you very much, glad you like it 😉

      Regarding the Discharging Setting: I didn’t add the setting (yet) because I actually never use them and I never had anyone ask for them before. Is that something that would be of use to you? I wouldn’t mind adding them, esp. after the recent mess with the cloud and me toying with the idea to block the inverter from Internet access all together.

      Cheers,
      Axel

  14. Jürgen Weiss Reply

    Hi Axel,

    Ja die Parameter für discharging wären sehr nützlich. Ich habe es selbst mal versucht, bin aber nicht erfolgreich gewesen.

    Gruß

    Jürgen

    • Projects @ Hillview Post authorReply

      Hi Juergen,

      let’s use mail (projects@hillviewlodge.ie) for the conversation in German – if you don’t mind 😉

      Thanks,
      Axel

  15. Pieter Reply

    Is there any way to calculate the power used by the non essential side of the inverter it’s a smile 5.
    Thank you

    • Projects @ Hillview Post authorReply

      Hi Pieter,

      I’m not sure I understand what you mean – what is the “non essential side”?

      Cheers,
      Axel

      • Pieter Reply

        We have the gyser and oven/stove connected between the inverter and the grid ct (we are not allowed to feed solar back to the grid) the CT is to stop feeding to the grid. But the inverter can still supply solar to the non essential side in my case the gyser and oven/stove.
        I’m trying to figure out what the difference between “Inverter_Power_Total” and “Inverter_Backup_Power_Total”

        • Projects @ Hillview Post authorReply

          Hi Pieter,

          I’ll send you an email in a minute.

          Cheers,
          Axel

  16. Christoph Reply

    Hi Axel,

    first of all THANK YOU a lot for this work and Project. You have saved me much time to get this working on my own :). One question – have you managed to calculate the “total income”? I get mad of this. I’m pretty shure my values are incorrect . 🙁

    • Projects @ Hillview Post authorReply

      Hi Christoph,

      thanks, glad it’s working for you. I haven’t looked into anything “profit” related, not sure if I will bother – but I’m happy to help if I can. If you’d like to continue the conversation in German I’d prefer if we could use email via projects@hillviewlodge.ie.

      Cheers,
      Axel

  17. Dan Reply

    Thanks for this, it’s a great help since AlphaESS messed up the existing integration I’ve been using with their recent update. It’s taken me a long time to get this working on a Smile5 AL5002 without TCP, turns out my system has been set from the factory with a baudrate of 115200 not 9600 that I’ve been using to try make this work, I also connected pin3 (white/green) to the RS485 ground connection which has improved the signal on my system.
    There’s a small mistake in your serial/RTU config example, the parity needs to be set with a capital N not lower case or it throws up an error in Home Assistant.

    • Projects @ Hillview Post authorReply

      Hey Dan,

      thank you very much for that feedback, I will update the website asap. If you don’t mind: which adapter are you using – just for my records?

      I also have a contact in Australia who’s just in the process of connecting a Protoss PE11 (RTU > TCP), so I’m hoping to be able to add information about that adapter soon.

      Cheers,
      Axel

      • Dan Reply

        Hi Axel,

        It’s the Waveshare USB/RS485 (https://thepihut.com/products/usb-to-2-channel-rs485-industrial-grade-isolated-converter), I’ll be switching to RS485 to ethernet now that I have it working on the USB version, I bought both while trying to get this to work but I accidently fried the Ethernet module in the process so I’ll need to buy another. I’ll report back if I get it working in case it helps anyone else out, I found some posts online with people struggling to get Modbus working on the early hardware version Smile5’s so it might simply be the different Baud rate causing the issue. I was experimenting with Alpha2MQTT which tries a selection of Baud rates automatically which is also how I found out about the ground connection on pin3, it didn’t work at all until I connected that.

        • Projects @ Hillview Post authorReply

          Hi Dan,

          thanks for these details, might be handy for others. You’re not planning to use the Protoss by any chance? I have one myself, ordered it before realising that my SMILE5 had Modbus TCP… Lesson learnt 😉

          Cheers,
          Axel

  18. Mamoon Reply

    Hi Axel,

    Thank you so much for the wonderful work you do and sharing your knowledge. I bought a HA Green and followed Charles’ instruction to integrate with my AlphaESS SMILE-G3-B5-INV. What I’m trying to do now is to force discharge my excess energy during the evening peak hours. However, my battery is connected to my home router using WiFi and your first prerequisite says it must connect via a LAN port. I have forced discharged my battery previously using my electricity providers (Amber) app but I’m trying to do this independently via HA. Do I need to figure out how to connect my battery via a LAN port first before I do anything? Has anyone else got this working using Wifi?

    Thanks,
    Mamoon

    • Projects @ Hillview Post authorReply

      Hi Mamoon,

      I might not have explained that very well I’m afraid: Modbus TCP does work via Wi-Fi, it’s just the AlphaESS Wi-Fi Stick that doesn’t work support that. So if you can’t run a LAN cable you can alternatively use either PowerLAN or a cheap Wi-Fi repeater with LAN port (like the TP-Link TL-WA850RE, very cheap and my preferred option). You can then connect the inverter via LAN port to the repeater and you’re sorted.

      Hopefully that’ll help you sorting this bit, if you need any additional information fee free to ping me directly via projects@hillviewlodge.ie.

      Cheers,
      Axel

  19. John Burgess Reply

    Hi Axel, fantastic work!
    I am currently using alpha2mqtt, which is working fine, so I know I can read/write to my smile5 ok. My only issue with it is node red which I don’t use for anything else, and really don’t want to learn.
    Sadly my smile5 does not support TCP, so I have got a Waveshare RS485 to POE ETH to try.
    All is working fine, I can see all the data in HA, except none of the write commands work, which I’m guessing is a setting in the Waveshare that I’ve got wrong.
    I appreciate that you don’t have this unit, but am wondering if anyone else has got it working ok and can help with settings?

    • Projects @ Hillview Post authorReply

      Hi John, thank you 😉

      Just to clarify: you’re not using my integration to write, but Node Red? I’m asking because I did make some changes in relation to how I’m writing values, these changes were required for Modbus RTU users. It has to do with the two methods to write to registers, “Write Single Register” and “Write Data Register”. Daniel of Aplha2MQTT mentions these methods to and I have switched to “Write Data Register” because it’s working for both Modbus TCP and Modbus RTU. I have a contact who’s in the middle of connecting his system via the Protoss PE-11, should be pretty similar to the Waveshare converter.

      Feel free to contact me directly via projects@hillviewlodge.ie, easier than using the commenting functionality 😉

      Cheers,
      Axel

  20. Marius Reply

    In the meantime I managed to install the package and I am using it on a daily basis, but only the monitoring part.
    I am looking for some kind of documentation what the respective sensors and especially the buttons/input entities do.
    I did scroll through the ModBus documentation but did not manage to really get behind which is what.
    Is there some documentation how to use the entities (functionality of “charging/discharging setting”, the time slots, “excess export” “excess export pause”, throttle/load buttons) and the correlation/dependencies between them?

    • Projects @ Hillview Post authorReply

      Hi Marius,

      feel free to reach out via email (projects@hillviewlodge.ie) and I will try to explain some of these settings and automations. You won’t find anything about that stuff in the AlphaESS or Modbus documentation, because I created them.

      I thought most would be self explaining (since they’re replication the AlphaESS App/WebUI functionality – like “Charging / Discharging Setting” and the corresponding time slots.

      “Excess Export” (and “Excess Export Pause” – which is just a helper and is not to be used by users) is probably not relevant for German users, afaik you guys don’t get paid a lot for feeding into the grid. Details can be found on my website:

      Enabling “Excess Export” will change the inverter’s load serving priority, the default being the sequence: House Load > Charge Battery > Export to Grid. Once enabled the inverter will prioritise feed-in, the sequence will be: House Load > Export to Grid > Charge Battery.

      Throttle Charge – as the name says – charges the batteries from the grid at a throttled rate, in my YAML at 2kW instead of the the full 5kW.

      Cheers,
      Axel

  21. Mamoon Reza Reply

    Hi Axel,

    I just want to share with the community that I got Modbus working on my AlphaESS SMILE-G3-B5-INV but I couldn’t have done it without you. Thank you so much for all your support and guidance over the last 2 weeks. You are incredibly knowledgeable and very patient when it comes to dealing with novices like me.

    I’m truly grateful.

    Cheers,
    Mamoon

    • Projects @ Hillview Post authorReply

      Hey Mamoon,

      thanks for your kind words – I’m delighted that it’s working for you 😉

      Cheers,
      Axel

  22. Zdenek Reply

    Hi.
    I am using already for some time forced charging in same way as you do but despite setting 100% SOC inverter stops actually on 99.2% always. Have you experienced the same or your one is fully charging to 100%?
    Also I found out that if battery is charged sooner (SOC reached) than set charge time elapsed, then inverter stays in this charging mode and prevents consuming loads from battery.

    • Projects @ Hillview Post authorReply

      Hi Zdenek,

      yes, I have heard from others that the system might not charge up to 100%. I never saw that happening on my SMILE5, it always charged to 100% without problems. I have recently swapped to a SMILE-G3-S5 with more battery capacity and I’m only charging 70% now to reduce/eliminate clipping. The guys that reported the problem you are seeing seem to have “fixed” this by setting register 2182 to a higher value than 250 (which is 100%). They said it was working fine once setting the register to 251. Maybe worth a try if it bothers you 😉

      I’m also aware of the fact that the system stays in charging mode until the set time is elapsed – that’s bad design but it’s fine for me: since I’m charging at the cheapest night rate I actually prefer that the system stays in charge mode. That way the house loads are served by the cheap night rate until the time is elapsed and it’s not using the battery.

      What’s far worse is that it does the same when force discharging. I’m force discharging down to 20% SoC at night, before my cheap rate starts. If 20% is reached before the time’s elapsed the house loads are served by the grid – and that is at the expensive rate, because the cheap rate hasn’t started yet. I’m avoiding that by using a “helper” automation that monitors the SoC and stops the dispatch mode once 20% is reached.

      Cheers,
      Axel

  23. Nigel Reply

    Hi Axel. Thanks for the huge amount of work you have done on this, over one year. I was impressed by the huge list of versions at the head of the .yaml, and that there were even some comments in it! 🙂

    I must be getting a little too old for this stuff now, because I couldn’t work out how to change the view?
    I click the Overview’s pencil to edit, it brings up an “Edit Dashboard” dialog,
    but it only lists stuff about areas and hiding energy. Nothing about adding a view.

    P.S. Some of the version strings seem to be parsed incorrectly. e.g.:
    BMS Version 1,114 (instead of V11.14)
    EMS Version Normalised Vunknown.unknown.unknown (instead of V0.11.07T)

    ______________________________________
    Nigel, Sydney, Australia.
    HAcore 2024.11.1, AlphaESS SMILE5

    • Projects @ Hillview Post authorReply

      Hi Nigel,

      thank you very much – I know that feeling of getting too old for all this 😂

      I’ll respond via email if you don’t mind.

      Cheers,
      Axel

Leave a Reply

Your email address will not be published. Required fields are marked *