-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Error query / activate manual charge #211
Comments
Sorry, I forgot to mention that I am using the latest version (V3.8.0): "integration_manifest": { |
@Stefan28L The error in the diagnostic dump is a known bug in pye3dc (see #114). If you did run multiple calls, be aware, that there's a timeout, you can't call this service as often as you want. The documentation states, that one call/day with up to 3 kWh is allowed. I've had evidence from other users, that there's actually a limit around once/2h, I haven't confirmed that personally though. Also, the 3kWh from the docs seems to be outdated, my own unit can charge its full 4,5 kWh in one call. Besides that, I don't have more logging than that available, if you're savvy in python, you could call the pye3dc method directly, use the code following Line 279 of e3dc_proxy.py as a baseline. Since we're directly failing the E3DC RSCP call here, my bet would be on the time limit, normally, it looks good what I'm seeing in the logs. With current codebase, I can't tell more, unfortunately, as I don't have any advanced debugging code of the e3dc communication in place (pye3dc does not provide this). PS: From a privacy point of view, the full hacs-e3dc diagnostics dump can be shared here, all private data like serial numbers, mac addresses etc. should be eradicted out of the dump, what remains is a detailed description of the unit and its responses to the RSCP commands we send to it. It helps me to understand the units and their responses to RSCP commands in more detail, but that's it. In this case, I won't benefit from it besides having another dump for my archive to see what the units are doing. Since E3DC doesn't really react to any communication from me, this is my only way to gather real-life data on the way the units react. I'll keep the case open for the moment, please check against the time restrictions and if possible, try to call the function directly within the limitations to gather more information. |
Hi everyone, |
Hello @torbennehmer, first of all thank you very much for your application and the time you invest. actions:
The fact that I see the correct value in the log file speaks against this. Can you answer the following questions for me?
|
What can I say? I just tried to create a bug report and the automation just worked. This is the first time it has worked. |
I run the automation with a fixed value, because I did not manage to do it with a variable ;-). Happy to know how to do that. |
I'm using set_power_mode (still via iobroker, atm) to force charging battery. Sure, you can't limit the amount of power going into it, but it seems not having a limitation. Can this be added to the integration? |
I could try to add a service or select to the integration |
I've been able to test the behavior a few times now. For example: Unfortunately I can't narrow down the error any further, but I suspect that it's more a problem on the E3DC side. It would be interesting to know if others have had a similar experience. Since it's rarely worth charging the battery from the grid, I'll leave it at that for now. Thank you very much for your help. |
System Health details
System Information
Home Assistant Community Store
Home Assistant Cloud
Home Assistant Supervisor
Dashboards
Miele
Recorder
Solcast PV Forecast
Checklist
Describe the issue
Manual charging via the manual_charge action seems to work in principle if I trigger the service manually.
However, I would like to call the service in an automation and transmit the charge quantity via entity.
I defined the action as follows:
action: e3dc_rscp.manual_charge
metadata: {}
data_template:
device_id: c1bb223b4578e222a7a178ecb0db8383
charge_amount: "{{ states('input_number.e3dc_lademenge') | int }}"
When attempting to execute the automation, i find the correct amount (650Wh) in the log (s.below), but i get the message "Manual charging could not be activated".
Unfortunately, I am unable to capture the error in the diagnostic dump, as there also seems to be a problem retrieving the manual charge quantity.
I do not want to post the complete log / dump here, as it contains the complete data of my E3DC system.
If any important information is missing, I will of course be happy to add it later.
My System Info:
"model": "S10E_Compact",
"release": "S10_2024_028",
Reproduction steps
...
Debug logs
Diagnostics dump
"get_power_settings": {
"dischargeStartPower": 0,
"maxChargePower": 4500,
"maxDischargePower": 0,
"powerLimitsUsed": true,
"powerSaveEnabled": true,
"weatherForecastMode": 1,
"weatherRegulatedChargeEnabled": true
},
"EMS_REQ_GET_MANUAL_CHARGE": {
"exception": [
"Traceback (most recent call last):\n",
" File "/usr/local/lib/python3.13/site-packages/e3dc/_e3dc_rscp_local.py", line 102, in sendRequest\n receive = self._receive()\n",
" File "/usr/local/lib/python3.13/site-packages/e3dc/_e3dc_rscp_local.py", line 76, in _receive\n decData = rscpDecode(self.encdec.decrypt(data))[0]\n ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
" File "/usr/local/lib/python3.13/site-packages/e3dc/_rscpLib.py", line 263, in rscpDecode\n return rscpDecode(rscpFrameDecode(data)[0])\n",
" File "/usr/local/lib/python3.13/site-packages/e3dc/_rscpLib.py", line 279, in rscpDecode\n innerData, usedLength = rscpDecode(data[curByte:])\n ~~~~~~~~~~^^^^^^^^^^^^^^^^\n",
" File "/usr/local/lib/python3.13/site-packages/e3dc/_rscpLib.py", line 270, in rscpDecode\n strTag = getStrRscpTag(hexTag)\n",
" File "/usr/local/lib/python3.13/site-packages/e3dc/_rscpTags.py", line 3692, in getStrRscpTag\n tag = RscpTag(tag)\n",
" File "/usr/local/lib/python3.13/enum.py", line 722, in call\n return cls.new(cls, value)\n ~~~~~~~~~~~^^^^^^^^^^^^\n",
" File "/usr/local/lib/python3.13/enum.py", line 1189, in new\n raise ve_exc\n",
"ValueError: 16777278 is not a valid RscpTag\n",
"\nDuring handling of the above exception, another exception occurred:\n\n",
"Traceback (most recent call last):\n",
" File "/usr/local/lib/python3.13/site-packages/e3dc/_e3dc.py", line 227, in sendRequest\n result = self.rscp.sendRequest(request)\n",
" File "/usr/local/lib/python3.13/site-packages/e3dc/_e3dc_rscp_local.py", line 108, in sendRequest\n raise CommunicationError\n",
"e3dc._e3dc_rscp_local.CommunicationError\n",
"\nDuring handling of the above exception, another exception occurred:\n\n",
"Traceback (most recent call last):\n",
" File "/config/custom_components/e3dc_rscp/diagnostics.py", line 111, in _query_data_for_dump\n tmp = call()\n",
" File "/config/custom_components/e3dc_rscp/diagnostics.py", line 80, in \n lambda: self.e3dc.sendRequestTag(\n ~~~~~~~~~~~~~~~~~~~~~~~~^\n RscpTag.EMS_REQ_GET_MANUAL_CHARGE, keepAlive=True\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n",
" File "/usr/local/lib/python3.13/site-packages/e3dc/_e3dc.py", line 264, in sendRequestTag\n return self.sendRequest(\n ~~~~~~~~~~~~~~~~^\n (tag, RscpType.NoneType, None), retries=retries, keepAlive=keepAlive\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )[2]\n ^\n",
" File "/usr/local/lib/python3.13/site-packages/e3dc/_e3dc.py", line 238, in sendRequest\n raise SendError("Max retries reached")\n",
"e3dc._e3dc.SendError: Max retries reached\n"
]
},
The text was updated successfully, but these errors were encountered: