Skip to content

Commit 004c380

Browse files
authored
Merge pull request #129 from volkerrichert/feature/port-configurable
expose port of e3dc to support FARM
2 parents b6cd645 + 6f6acc2 commit 004c380

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

.github/workflows/validate.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,5 @@ jobs:
2424
run: isort ./ --check
2525
- name: Run black
2626
run: black ./ --check
27-
- name: Run pyright
28-
run: pyright
2927
- name: Run test install
30-
run: pip install .
28+
run: pip install .

e3dc/_e3dc.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ def __init__(self, connectType: int, **kwargs: Any) -> None:
7777
serialNumber (str): the serial number of the system to monitor - required for CONNECT_WEB
7878
isPasswordMd5 (bool): indicates whether the password is already md5 digest (recommended, default = True) - required for CONNECT_WEB
7979
configuration (Optional[dict]): dict containing details of the E3DC configuration. {"pvis": [{"index": 0, "strings": 2, "phases": 3}], "powermeters": [{"index": 0}], "batteries": [{"index": 0, "dcbs": 1}]}
80+
port (int, optional): port number for local connection. Defaults to None, which means default port 5033 is used.
8081
"""
8182
self.connectType = connectType
8283
self.username = kwargs["username"]
@@ -123,7 +124,10 @@ def __init__(self, connectType: int, **kwargs: Any) -> None:
123124
self.ip = kwargs["ipAddress"]
124125
self.key = kwargs["key"]
125126
self.password = kwargs["password"]
126-
self.rscp = E3DC_RSCP_local(self.username, self.password, self.ip, self.key)
127+
self.port = kwargs.get("port", None)
128+
self.rscp = E3DC_RSCP_local(
129+
self.username, self.password, self.ip, self.key, self.port
130+
)
127131
else:
128132
self._set_serial(kwargs["serialNumber"])
129133
if "isPasswordMd5" in kwargs and not kwargs["isPasswordMd5"]:

e3dc/_e3dc_rscp_local.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,22 @@ class CommunicationError(Exception):
4444
class E3DC_RSCP_local:
4545
"""A class describing an E3DC system connection using RSCP protocol locally."""
4646

47-
def __init__(self, username: str, password: str, ip: str, key: str):
47+
def __init__(
48+
self, username: str, password: str, ip: str, key: str, port: int | None = PORT
49+
):
4850
"""Constructor of an E3DC RSCP local object.
4951
5052
Args:
5153
username (str): username
5254
password (str): password (plain text)
5355
ip (str): IP address of the E3DC system
5456
key (str): encryption key as set in the E3DC settings
57+
port (int, optional): port number. Defaults to PORT.
5558
"""
5659
self.username = username.encode("utf-8")
5760
self.password = password.encode("utf-8")
5861
self.ip = ip
62+
self.port = port if port else PORT
5963
self.key = key.encode("utf-8")
6064
self.socket: socket.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
6165
self.connected: bool = False
@@ -122,7 +126,7 @@ def connect(self) -> None:
122126
try:
123127
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
124128
self.socket.settimeout(5)
125-
self.socket.connect((self.ip, PORT))
129+
self.socket.connect((self.ip, self.port))
126130
self.processedData = None
127131
self.connected = True
128132
except Exception:

0 commit comments

Comments
 (0)