Add possibility to read from remote port

This commit is contained in:
Ard Kuijpers
2023-02-12 14:13:02 +01:00
parent 24f736218e
commit 521881a81a
2 changed files with 13 additions and 3 deletions

1
.gitignore vendored
View File

@@ -5,5 +5,6 @@ __pycache__/
*.log
# local files
env
.env
.vscode

15
app.py
View File

@@ -1,10 +1,11 @@
import os
import time
import re
import sys
import threading
import _thread
from dsmr_parser import telegram_specifications
from dsmr_parser.clients import SerialReader, SERIAL_SETTINGS_V2_2, SERIAL_SETTINGS_V4, SERIAL_SETTINGS_V5
from dsmr_parser.clients import SerialReader, SocketReader, SERIAL_SETTINGS_V2_2, SERIAL_SETTINGS_V4, SERIAL_SETTINGS_V5
from app_settings import Settings
from device_dsmr import Device_DSMR
@@ -41,10 +42,18 @@ def main():
spec = telegram_specifications.V5
device = Device_DSMR("dsmr", name="Digitale Slimme Meter")
serial_reader = SerialReader(cfg.dsmr_port, serial_setup, spec)
if "remote:" not in cfg.dsmr_port:
logger.info(f"using serial port {cfg.dsmr_port}")
reader = SerialReader(cfg.dsmr_port, serial_setup, spec)
else:
result = re.search(r"remote://([^:]+):(.+)", cfg.dsmr_port)
host = result.group(1)
port = int(result.group(2))
logger.info(f"reading from remote host {host} on port {port}")
reader = SocketReader(host, port, spec)
def handle_next_telegram():
telegram = next(serial_reader.read_as_object())
telegram = next(reader.read_as_object())
device.update(telegram)
logger.info(f"New telegram at {telegram.P1_MESSAGE_TIMESTAMP.value}")