How to APsystems Modell EZ1-M monitoring

Thanks Mawoka for your Feedback!
One Question regarding the usage of “Set max Power”.
I’ve got the information that rewriting this value too often will Break the Ez1 as the value will be changed in the Flash storage and the Flash storage will be fully written at some time.

If this fact ist true, maybe a warning will be good after installing the integration.
I am constantly rewriting the value, as I use the EZ1 for zero Power Feed.

Thanks for your great Work!

I’ve looked further and it looks like I’m not alone in this. The inverter also seems to have sporadic problems with the WLAN for other people.
For example, here’s a thread about it that I found in a German forum: APSystems offline. Produziert dennoch? - Wechselrichter - Photovoltaikforum

Still no problems here. Wifi problems are unfortunately notoriously hard to diagnose. Ultimately it could of course also be a broken Wifi module in the EZ-1. For example, I have two cheap Tasmota devices that drop off Wifi once a day like clockwork, while others in the same room are super stable and stay online for weeks.

Yes, that’s really annoying :frowning: After restarting the inverter or disconnecting it from the grid for a short time, it always reconnects to the WLAN and is available again.

So I’ve now added a smart plug with energy measurement. I now measure the average energy production for the last 5 minutes for both the smart plug and the inverter.
If the deviation is 100% for a longer period of time (this is the case if the inverter does not deliver any energy values, but the smart plug does), I have made an automation that switches off the smart plug switch, waits briefly and switches it on again.
This restarts the inverter and reconnects it to the WLAN. This seems to be working quite well so far. At least I don’t have to climb into the attic to reset the inverter :smiley:

I could of course ignore the APSystems integration and just use the values from the Smartplug. But I’m also interested in measuring the different phases of the inverter and being able to set the wattage (as soon as this functionality comes back). It is also interesting to see the difference in the specified energy output between the inverter and the smart plug. :wink:

I’d definitely recommend disabling auto-wifi-channel. I had such a problem with ESP32s, as they couldn’t handle the wifi channel switch without a downtime, so maybe try that.

Already the case. I use always a fixed channel. But thx for the hint.

1 Like

Hi,

what can i do when i want to use the cloud version? I have copied the custom integration folder from Mawoka to the custom_componets folder and restarted HA. Nothing happend.
I cant add it via HACS → custom repo. When i enter the repo name and click on Add it circle is showing in the Add button for a second and then its the Add button again. No repo added.

cheers

Unfortunately I can’t and won’t provide support for the cloud integration as I have no interest and no option to test it anymore for developing, so it’s provided “as is” and I can tell you that it worked for others in the past

Hi @Mawoka. Are there already plans to extend the functionality to include an on/off switch and, in particular, the binary diagnostic sensors available via the API?
If you like, I can also take a look and create a corresponding MR :slight_smile:

Well, i think its rather an HA Problem:( or a User Problem:( but i dont know how to solve.

Feel free to create a PR! I’m still on vacation and will return end of next week. But if you want to work on it, please! You can get inspiration from the old Sonnenladen repo and the way I implemented the input limit in the ha-repo, but be aware: the code in the Sonnenladen repo is BS.

1 Like

I attempted to migrate to the new integration today using alfwro13’s instructions.

Some of the renamed entities gave me the following error in the log:

2024-07-24 20:49:49.761 ERROR (Recorder) [homeassistant.components.recorder.table_managers.statistics_meta] Cannot rename statistic_id `sensor.ez1_m_power_of_p1` to `sensor.ez1_m_power_p1` because the new statistic_id is already in use
2024-07-24 20:49:49.762 WARNING (Recorder) [homeassistant.components.recorder.entity_registry] Cannot migrate history for entity_id `sensor.ez1_m_power_of_p1` to `sensor.ez1_m_power_p1` because the new entity_id is already in use

2024-07-24 20:50:01.692 ERROR (Recorder) [homeassistant.components.recorder.table_managers.statistics_meta] Cannot rename statistic_id `sensor.ez1_m_power_of_p2` to `sensor.ez1_m_power_p2` because the new statistic_id is already in use
2024-07-24 20:50:01.692 WARNING (Recorder) [homeassistant.components.recorder.entity_registry] Cannot migrate history for entity_id `sensor.ez1_m_power_of_p2` to `sensor.ez1_m_power_p2` because the new entity_id is already in use

2024-07-24 20:50:33.015 ERROR (Recorder) [homeassistant.components.recorder.table_managers.statistics_meta] Cannot rename statistic_id `sensor.ez1_m_production_of_today` to `sensor.ez1_m_today_production` because the new statistic_id is already in use
2024-07-24 20:50:33.016 WARNING (Recorder) [homeassistant.components.recorder.entity_registry] Cannot migrate history for entity_id `sensor.ez1_m_production_of_today` to `sensor.ez1_m_today_production` because the new entity_id is already in use

2024-07-24 20:50:55.786 ERROR (Recorder) [homeassistant.components.recorder.table_managers.statistics_meta] Cannot rename statistic_id `sensor.ez1_m_production_of_today_from_p1` to `sensor.ez1_m_today_production_p1` because the new statistic_id is already in use
2024-07-24 20:50:55.786 WARNING (Recorder) [homeassistant.components.recorder.entity_registry] Cannot migrate history for entity_id `sensor.ez1_m_production_of_today_from_p1` to `sensor.ez1_m_today_production_p1` because the new entity_id is already in use

2024-07-24 20:51:14.710 ERROR (Recorder) [homeassistant.components.recorder.table_managers.statistics_meta] Cannot rename statistic_id `sensor.ez1_m_production_of_today_from_p2` to `sensor.ez1_m_today_production_p2` because the new statistic_id is already in use
2024-07-24 20:51:14.711 WARNING (Recorder) [homeassistant.components.recorder.entity_registry] Cannot migrate history for entity_id `sensor.ez1_m_production_of_today_from_p2` to `sensor.ez1_m_today_production_p2` because the new entity_id is already in use

2024-07-24 20:51:50.793 ERROR (Recorder) [homeassistant.components.recorder.table_managers.statistics_meta] Cannot rename statistic_id `sensor.ez1_m_total_lifetime_production` to `sensor.ez1_m_lifetime_production` because the new statistic_id is already in use
2024-07-24 20:51:50.794 WARNING (Recorder) [homeassistant.components.recorder.entity_registry] Cannot migrate history for entity_id `sensor.ez1_m_total_lifetime_production` to `sensor.ez1_m_lifetime_production` because the new entity_id is already in use

Not sure what’s going on here. Despite the errors, the migration seem to have worked. But I’ll have to check the long term statistics tomorrow again. Tonight the inverter already went to sleep.

you cannot have 2 entities with the same name - so you have to delete the old one before renaming the new one

I did remove the old integration before reverting the new entities to the old IDs.

Just checked the history, and everything seems to work as expected. The entities have retained the history and new data is being recorded. So the migration appears to have worked despite the errors. Strange.

Hi, where did you get this information from? Sounds really bad, as im planing to build some automations to reduce max power based on own consumption.

Is it possible to use this integration (like the APP) solely via a bluetooth connection?
I’d prefer to not have my inverter in WIFI/Internet because of paranoia.

If you have so much „paranoia“ I recommend VLAN network segmentation and next gen firewall.

Bluetooth only won’t work.

1 Like

anyone else getting this error messages in th homeassistant.log. Running a the firmware 1.6 on the EZ1 inverter.

2024-09-23 09:38:12.220 ERROR (MainThread) [homeassistant.components.apsystems] Unexpected error fetching APSystems Data data
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 354, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/apsystems/coordinator.py", line 29, in _async_update_data
    return await self.api.get_output_data()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/APsystemsEZ1/__init__.py", line 191, in get_output_data
    response = await self._request("getOutputData")
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/APsystemsEZ1/__init__.py", line 97, in _request
    return await self._request(endpoint, retry=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/APsystemsEZ1/__init__.py", line 98, in _request
    raise InverterReturnedError
APsystemsEZ1.InverterReturnedError

Have you tried to access the endpoint of your inverter manually, e.g. via a browser? What is displayed there? An InverterReturnedError is thrown by the APsystems Python lib if it does not know how to handle the inverter response: APsystems-EZ1-API/APsystemsEZ1/__init__.py at 123f6a880fb2278d732a51780cd806073dcfddac · SonnenladenGmbH/APsystems-EZ1-API · GitHub

I used

(http://192.168.0.xxx:8050/getDeviceInfo)

and received:

{"data":{"deviceId":"E07000048699","devVer":"EZ1 1.6.0","ssid":"xxxxxxxxx","ipAddr":"192.168.0.xxx","minPower":"30","maxPower":"800"},"message":"SUCCESS","deviceId":"E07000048699"}

and with:

(http://192.168.0.xxx:8050/getOutputData)
{"data":{"p1":52,"e1":0.51989,"te1":216.84744,"p2":57,"e2":0.57348,"te2":264.06590},"message":"SUCCESS","deviceId":"E07000048699"}

Followng with trying to ping the device:

Ping wird ausgeführt für 192.168.0.xxx mit 32 Bytes Daten:
Antwort von 192.168.0.xxx: Bytes=32 Zeit=50ms TTL=255
Antwort von 192.168.0.xxx: Bytes=32 Zeit=59ms TTL=255
Antwort von 192.168.0.xxx: Bytes=32 Zeit=53ms TTL=255
Antwort von 192.168.0.xxx: Bytes=32 Zeit=59ms TTL=255

what else can I check, or would it help to incearse the timeout:

        timeout: int = 10,

?