Add possibility to read from remote port
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,5 +5,6 @@ __pycache__/
|
|||||||
*.log
|
*.log
|
||||||
|
|
||||||
# local files
|
# local files
|
||||||
|
env
|
||||||
.env
|
.env
|
||||||
.vscode
|
.vscode
|
||||||
|
|||||||
15
app.py
15
app.py
@@ -1,10 +1,11 @@
|
|||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
import _thread
|
import _thread
|
||||||
from dsmr_parser import telegram_specifications
|
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 app_settings import Settings
|
||||||
from device_dsmr import Device_DSMR
|
from device_dsmr import Device_DSMR
|
||||||
@@ -41,10 +42,18 @@ def main():
|
|||||||
spec = telegram_specifications.V5
|
spec = telegram_specifications.V5
|
||||||
|
|
||||||
device = Device_DSMR("dsmr", name="Digitale Slimme Meter")
|
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():
|
def handle_next_telegram():
|
||||||
telegram = next(serial_reader.read_as_object())
|
telegram = next(reader.read_as_object())
|
||||||
device.update(telegram)
|
device.update(telegram)
|
||||||
logger.info(f"New telegram at {telegram.P1_MESSAGE_TIMESTAMP.value}")
|
logger.info(f"New telegram at {telegram.P1_MESSAGE_TIMESTAMP.value}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user