Closed mstv closed 5 months ago
@mstv I think I need a bit help here to do some testing. As I'm not a developer it's quite complicated to start here.
Could you provide an example script to test all (?) the new implemented functions?
BTW: I also have a S10E with an Easy Connect Wallbox installed in 2021, so my setup is quite the same.
Thank you for your new attempt to get Wallbox Support integrated!
I tested your PR 116 with by changing the values of these methods below, checking the WB behaviour and reading back the data.
I think everything works as intended. I don't know how "toggle_wallbox_charging" should behave. It toggles " 'chargingCanceled' between true and false but does not start charging when sun mode is activated and no sun is shining. When sun mode is deactivated, it starts/stops charging as intended.
Is there anything particular you would like me to check?
e3dc.set_wallbox_sunmode() e3dc.set_wallbox_phases() e3dc.toggle_wallbox_charging() e3dc.get_wallbox_data() e3dc.set_wallbox_max_charge_current() e3dc.toggle_wallbox_charging()
Is there anything particular you would like me to check?
Thank you! I think this will suffice, @bullitt186.
I don't know how "toggle_wallbox_charging" should behave. It toggles " 'chargingCanceled' between true and false but does not start charging when sun mode is activated and no sun is shining. When sun mode is deactivated, it starts/stops charging as intended.
Yes, that's how it works for me, too.
I call this method in dependency on the the result of e3dc_obj.get_wallbox_data(keepAlive=True)['chargingActive']
.
Could you provide an example script to test all (?) the new implemented functions?
Like described in https://github.com/fsantini/python-e3dc/blob/master/README.md, I have created a test.py
file and run it just by typing python test.py
on the command prompt.
The current state is printed before and after the set function.
set_battery_to_car_mode(True
can be replaced by the other new API functions.
Don't forget to restore the initial state after testing.
from e3dc import E3DC
TCP_IP = '192.168.x.y'
USERNAME = 'local.user'
PASS = 'my user password'
KEY = 'mein RSCP-Passwort auf 2. Seite im Benutzerprofil'
CONFIG = {}
e3dc_obj = E3DC(E3DC.CONNECT_LOCAL, username=USERNAME, password=PASS, ipAddress = TCP_IP, key = KEY, configuration = CONFIG)
print(e3dc_obj.get_wallbox_data(keepAlive=True))
e3dc_obj.set_battery_to_car_mode(True, keepAlive=True)
print(e3dc_obj.get_wallbox_data(keepAlive=True))
e3dc_obj.disconnect()
Hi @mstv ,
until now I could only verify your little test.py, this works with my E3DC setup.
In the next days I will try to verify this with the other getters and setters, but I will need to get more familiar with Python before.
Great work so far!!
You could replace
e3dc_obj.set_battery_to_car_mode(True, keepAlive=True)
with each of the following
e3dc_obj.set_battery_to_car_mode(True)
e3dc_obj.set_battery_to_car_mode(False)
e3dc_obj.set_wallbox_max_charge_current(8) # might work also with just 6 amperes but not with my car
# up to
e3dc_obj.set_wallbox_max_charge_current(16) # 11 kW
# or up to
e3dc_obj.set_wallbox_max_charge_current(32) # if the WB supports 22 kW
e3dc_obj.set_wallbox_phases(1)
e3dc_obj.set_wallbox_phases(3)
e3dc_obj.set_wallbox_schuko(True) # not applicable for WB "Easy Connect"
e3dc_obj.set_wallbox_schuko(False) # not applicable for WB "Easy Connect"
e3dc_obj.set_wallbox_sunmode(False)
e3dc_obj.set_wallbox_sunmode(True)
e3dc_obj.toggle_wallbox_charging() # run twice in order to restore the original state
@vchrisb, do I need to do anything about the validation scripts?
yes you need to adhere to the code styling: https://github.com/fsantini/python-e3dc?tab=readme-ov-file#contribution
Hi @mstv
I just tested all methods mentioned by you above and they work like a charme! Great work!
yes you need to adhere to the code styling: https://github.com/fsantini/python-e3dc?tab=readme-ov-file#contribution
I had already run it. flake8 complains about line lengths in the entire file. 🤔 This PR just adds lines 985-1185.
.\e3dc\_e3dc.py:75:80: E501 line too long (87 > 79 characters)
.\e3dc\_e3dc.py:76:80: E501 line too long (94 > 79 characters)
.\e3dc\_e3dc.py:77:80: E501 line too long (101 > 79 characters)
.\e3dc\_e3dc.py:78:80: E501 line too long (143 > 79 characters)
.\e3dc\_e3dc.py:79:80: E501 line too long (217 > 79 characters)
.\e3dc\_e3dc.py:111:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:126:80: E501 line too long (88 > 79 characters)
.\e3dc\_e3dc.py:153:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:246:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:248:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:265:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:279:80: E501 line too long (96 > 79 characters)
.\e3dc\_e3dc.py:284:80: E501 line too long (104 > 79 characters)
.\e3dc\_e3dc.py:300:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:312:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:314:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:322:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:351:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:364:80: E501 line too long (85 > 79 characters)
.\e3dc\_e3dc.py:365:80: E501 line too long (86 > 79 characters)
.\e3dc\_e3dc.py:366:80: E501 line too long (86 > 79 characters)
.\e3dc\_e3dc.py:382:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:419:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:472:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:476:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:477:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:496:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:501:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:547:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:548:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:554:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:558:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:582:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:583:80: E501 line too long (87 > 79 characters)
.\e3dc\_e3dc.py:585:80: E501 line too long (87 > 79 characters)
.\e3dc\_e3dc.py:593:80: E501 line too long (87 > 79 characters)
.\e3dc\_e3dc.py:595:80: E501 line too long (85 > 79 characters)
.\e3dc\_e3dc.py:623:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:628:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:639:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:644:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:655:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:663:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:678:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:680:80: E501 line too long (87 > 79 characters)
.\e3dc\_e3dc.py:683:80: E501 line too long (92 > 79 characters)
.\e3dc\_e3dc.py:684:80: E501 line too long (91 > 79 characters)
.\e3dc\_e3dc.py:688:80: E501 line too long (89 > 79 characters)
.\e3dc\_e3dc.py:697:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:698:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:701:80: E501 line too long (90 > 79 characters)
.\e3dc\_e3dc.py:734:80: E501 line too long (86 > 79 characters)
.\e3dc\_e3dc.py:735:80: E501 line too long (88 > 79 characters)
.\e3dc\_e3dc.py:739:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:740:80: E501 line too long (88 > 79 characters)
.\e3dc\_e3dc.py:748:80: E501 line too long (85 > 79 characters)
.\e3dc\_e3dc.py:760:80: E501 line too long (87 > 79 characters)
.\e3dc\_e3dc.py:763:80: E501 line too long (107 > 79 characters)
.\e3dc\_e3dc.py:764:80: E501 line too long (93 > 79 characters)
.\e3dc\_e3dc.py:765:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:769:80: E501 line too long (89 > 79 characters)
.\e3dc\_e3dc.py:778:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:783:80: E501 line too long (90 > 79 characters)
.\e3dc\_e3dc.py:800:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:817:80: E501 line too long (88 > 79 characters)
.\e3dc\_e3dc.py:835:80: E501 line too long (87 > 79 characters)
.\e3dc\_e3dc.py:837:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:851:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:852:80: E501 line too long (88 > 79 characters)
.\e3dc\_e3dc.py:854:80: E501 line too long (88 > 79 characters)
.\e3dc\_e3dc.py:888:80: E501 line too long (93 > 79 characters)
.\e3dc\_e3dc.py:890:80: E501 line too long (95 > 79 characters)
.\e3dc\_e3dc.py:891:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:903:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:930:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:948:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:949:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:956:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:957:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:977:80: E501 line too long (194 > 79 characters)
.\e3dc\_e3dc.py:993:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:997:80: E501 line too long (95 > 79 characters)
.\e3dc\_e3dc.py:998:80: E501 line too long (94 > 79 characters)
.\e3dc\_e3dc.py:999:80: E501 line too long (98 > 79 characters)
.\e3dc\_e3dc.py:1000:80: E501 line too long (111 > 79 characters)
.\e3dc\_e3dc.py:1001:80: E501 line too long (119 > 79 characters)
.\e3dc\_e3dc.py:1002:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:1004:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:1007:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:1009:80: E501 line too long (101 > 79 characters)
.\e3dc\_e3dc.py:1011:80: E501 line too long (97 > 79 characters)
.\e3dc\_e3dc.py:1074:80: E501 line too long (96 > 79 characters)
.\e3dc\_e3dc.py:1087:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:1102:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:1130:80: E501 line too long (96 > 79 characters)
.\e3dc\_e3dc.py:1150:80: E501 line too long (85 > 79 characters)
.\e3dc\_e3dc.py:1208:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:1211:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:1242:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:1334:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:1353:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:1357:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:1359:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:1381:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:1396:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:1397:80: E501 line too long (86 > 79 characters)
.\e3dc\_e3dc.py:1409:80: E501 line too long (86 > 79 characters)
.\e3dc\_e3dc.py:1413:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:1419:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:1465:80: E501 line too long (86 > 79 characters)
.\e3dc\_e3dc.py:1471:80: E501 line too long (88 > 79 characters)
.\e3dc\_e3dc.py:1483:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:1484:80: E501 line too long (88 > 79 characters)
.\e3dc\_e3dc.py:1493:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:1497:80: E501 line too long (88 > 79 characters)
.\e3dc\_e3dc.py:1498:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:1506:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:1533:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:1540:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:1557:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:1601:80: E501 line too long (101 > 79 characters)
.\e3dc\_e3dc.py:1614:80: E501 line too long (85 > 79 characters)
.\e3dc\_e3dc.py:1615:80: E501 line too long (86 > 79 characters)
.\e3dc\_e3dc.py:1730:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:1731:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:1732:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:1733:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:1741:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:1744:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:1747:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:1754:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:1755:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:1756:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:1765:80: E501 line too long (85 > 79 characters)
.\e3dc\_e3dc.py:1768:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:1770:80: E501 line too long (81 > 79 characters)
.\e3dc\_e3dc.py:1776:80: E501 line too long (85 > 79 characters)
.\e3dc\_e3dc.py:1782:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:1783:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:1798:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:1801:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:1811:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:1814:80: E501 line too long (86 > 79 characters)
.\e3dc\_e3dc.py:1820:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:1835:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:1842:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:1859:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:1860:80: E501 line too long (83 > 79 characters)
.\e3dc\_e3dc.py:1861:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:1890:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:1975:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:1993:80: E501 line too long (89 > 79 characters)
.\e3dc\_e3dc.py:2010:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:2026:80: E501 line too long (87 > 79 characters)
.\e3dc\_e3dc.py:2114:80: E501 line too long (86 > 79 characters)
.\e3dc\_e3dc.py:2151:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:2154:80: E501 line too long (91 > 79 characters)
.\e3dc\_e3dc.py:2155:80: E501 line too long (85 > 79 characters)
.\e3dc\_e3dc.py:2156:80: E501 line too long (91 > 79 characters)
.\e3dc\_e3dc.py:2160:80: E501 line too long (100 > 79 characters)
.\e3dc\_e3dc.py:2168:80: E501 line too long (86 > 79 characters)
.\e3dc\_e3dc.py:2170:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:2173:80: E501 line too long (86 > 79 characters)
.\e3dc\_e3dc.py:2232:80: E501 line too long (84 > 79 characters)
.\e3dc\_e3dc.py:2252:80: E501 line too long (113 > 79 characters)
.\e3dc\_e3dc.py:2277:80: E501 line too long (80 > 79 characters)
.\e3dc\_e3dc.py:2282:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:2296:80: E501 line too long (82 > 79 characters)
.\e3dc\_e3dc.py:2338:80: E501 line too long (80 > 79 characters)
@mstv I don't know why it is reporting this to you. Please make sure that flake8 is picking up the pyproject.toml
.
I've checked out the pr and flake8
does not complain at all.
But if you look at the output of the validation checks, it is failing due to black
.
Pyright
will also complain, as the new functions are missing type annotations.
Thank you for the hints, @vchrisb.
I suggest to remove set -e
from tools\validate.sh
in order to see all complaints.
(BTW; I do not like the output of black because it is just "uh oh, not nice" + silly symbols. It should rather print "run 'black ./' in order to resolve the code style".)
updated test calls:
print("set_battery_to_car_mode f ->", e3dc_obj.set_battery_to_car_mode(False, keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_battery_to_car_mode t ->", e3dc_obj.set_battery_to_car_mode(True, keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_battery_to_car_mode f ->", e3dc_obj.set_battery_to_car_mode(False, keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_max_charge_current 0 ->", e3dc_obj.set_wallbox_max_charge_current(0, keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_max_charge_current 1 ->", e3dc_obj.set_wallbox_max_charge_current(1, keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_max_charge_current 6 ->", e3dc_obj.set_wallbox_max_charge_current(6, keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_max_charge_current 8 ->", e3dc_obj.set_wallbox_max_charge_current(8, keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_max_charge_current 10 ->", e3dc_obj.set_wallbox_max_charge_current(10, keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_max_charge_current 16 ->", e3dc_obj.set_wallbox_max_charge_current(16, keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_max_charge_current 32 ->", e3dc_obj.set_wallbox_max_charge_current(32, keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("toggle_wallbox_phases 1 ->", e3dc_obj.toggle_wallbox_phases(keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("toggle_wallbox_phases 2 ->", e3dc_obj.toggle_wallbox_phases(keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("toggle_wallbox_phases 3 ->", e3dc_obj.toggle_wallbox_phases(keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("toggle_wallbox_phases 4 ->", e3dc_obj.toggle_wallbox_phases(keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_schuko f ->", e3dc_obj.set_wallbox_schuko(False, keepAlive=True, wbIndex=0))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_schuko t ->", e3dc_obj.set_wallbox_schuko(True, keepAlive=True, wbIndex=0))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_schuko f ->", e3dc_obj.set_wallbox_schuko(False, keepAlive=True, wbIndex=0))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_sunmode f ->", e3dc_obj.set_wallbox_sunmode(False, keepAlive=True, wbIndex=0))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_sunmode t ->", e3dc_obj.set_wallbox_sunmode(True, keepAlive=True, wbIndex=0))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("set_wallbox_sunmode f ->", e3dc_obj.set_wallbox_sunmode(False, keepAlive=True, wbIndex=0))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("toggle_wallbox_charging 1 ->", e3dc_obj.toggle_wallbox_charging(keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("toggle_wallbox_charging 2 ->", e3dc_obj.toggle_wallbox_charging(keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("toggle_wallbox_charging 3 ->", e3dc_obj.toggle_wallbox_charging(keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
print("toggle_wallbox_charging 4 ->", e3dc_obj.toggle_wallbox_charging(keepAlive=True))
print(e3dc_obj.get_wallbox_data(keepAlive=True))
I would love to give additional feedback, but I can't get the package to install/run.
I setup a fresh raspberry pi to which I am connected via SSH.
When trying to install the package via pip install pye3dc
the system comes back with
`× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
For more information visit http://rptl.io/venv
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.`
It did also not work with apt install pye3dc /home/pye3dc
as proposed.
When typing pip install pye3dc --break-system-packages
something was successfully installed, but the test file is not being executed by python e3dc.py
I am getting the following error:
Traceback (most recent call last): File "/home/pye3dc/e3dc.py", line 1, in <module> from e3dc import E3DC File "/home/pye3dc/e3dc.py", line 1, in <module> from e3dc import E3DC ImportError: cannot import name 'E3DC' from partially initialized module 'e3dc' (most likely due to a circular import) (/home/pye3dc/e3dc.py)
Update: I tried to pip install the pye3dc package in a venv, but calling the file gives the same error.
@T1ppes, I took a look into the .bash_history
of my rpi.
Luckily, it still holds the commands I used about 2 years ago: nothing special but using pip
.
sudo apt install python3-pip
pip install pye3dc
Once one or two could verify the latest changes, we should be good to go.
I tested the PR again with the most recent changes on my S10X Compact with a MultiConnect II (the one without a Schuko but with an RFID reader).
The newly introduced toggle_wallbox_phases()
works as expected. I see no change in the other methods i tested earlier. So for me, it seems working fine 👍
For completeness, find below the full output of the test cases posted by @mstv.
set_battery_to_car_mode f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_battery_to_car_mode t -> False
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_battery_to_car_mode f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_max_charge_current 0 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 6, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_max_charge_current 1 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 6, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_max_charge_current 6 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 6, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_max_charge_current 8 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 8, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_max_charge_current 10 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 10, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_max_charge_current 16 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_max_charge_current 32 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
toggle_wallbox_phases 1 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 1, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
toggle_wallbox_phases 2 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
toggle_wallbox_phases 3 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 1, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
toggle_wallbox_phases 4 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_schuko f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_schuko t -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_schuko f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_sunmode f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': False}
set_wallbox_sunmode t -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': True}
set_wallbox_sunmode f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': False}
toggle_wallbox_charging 1 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': False}
toggle_wallbox_charging 2 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': False}
toggle_wallbox_charging 3 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': False}
toggle_wallbox_charging 4 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 5191, 'energyNet': 4087, 'energySun': 1104, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 32, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 0, 'sunModeOn': False}
I just also tested again with my S10E and Easy Connect, works liked expected. 👍
Test output:
set_battery_to_car_mode f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_battery_to_car_mode t -> True
{'appSoftware': 0, 'batteryToCar': 1, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_battery_to_car_mode f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_wallbox_max_charge_current 0 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 6, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_wallbox_max_charge_current 1 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 6, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_wallbox_max_charge_current 6 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 6, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_wallbox_max_charge_current 8 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 8, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_wallbox_max_charge_current 10 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 10, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_wallbox_max_charge_current 16 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
toggle_wallbox_phases 1 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 1, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
toggle_wallbox_phases 2 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
toggle_wallbox_phases 3 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 1, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
toggle_wallbox_phases 4 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_wallbox_schuko f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_wallbox_schuko t -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_wallbox_schuko f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_wallbox_sunmode f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': False}
set_wallbox_sunmode t -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': True}
set_wallbox_sunmode f -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': False}
toggle_wallbox_charging 1 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': True, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': False}
toggle_wallbox_charging 2 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': False}
toggle_wallbox_charging 3 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': True, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': False}
toggle_wallbox_charging 4 -> True
{'appSoftware': 0, 'batteryToCar': 0, 'chargingActive': False, 'chargingCanceled': False, 'consumptionNet': 0, 'consumptionSun': 0, 'energyAll': 410320, 'energyNet': 230335, 'energySun': 179985, 'index': 0, 'keyState': 0, 'maxChargeCurrent': 16, 'phases': 3, 'plugLocked': False, 'plugged': False, 'schukoOn': False, 'soc': 100, 'sunModeOn': False}
Based on this functionality, i opened a PR for the Home Assistant integration hacs-e3dc here: https://github.com/torbennehmer/hacs-e3dc/pull/153 As i guess there are quite a few HA users here as well, i'd like to encourage you to test this PR.
@mstv @klepptor @vchrisb @T1ppes @
Hint: Most likely since the E3DC update to S10_2024_024, set_wallbox_max_charge_current
does not have the full desired effect.
The S10 or the wallbox seem to often choose a lower value between max_charge_current
and min_charge_current
.
At the moment, we have no remote control for min_charge_current
. It can be configured in the wallbox settings using the S10 display.
Continue the abandoned #59
Kudos to @mdhom for the initial PR!
Tested with my E3DC S10 and E3DC Wallbox Easy Connect (installed in 2021) All added functions work except
set_wallbox_schuko()
, which does not apply to this wallbox.