mirror of
https://github.com/naruxde/revpipyload.git
synced 2025-11-08 23:23:52 +01:00
replace_io_file wird von RevPiModIO verarbeitet
Parameter kann per XML-RPC übergeben werden Argument --test hinzugefügt um replace_io_file testen zu können
This commit is contained in:
@@ -140,14 +140,16 @@ class MqttServer(Thread):
|
||||
autorefresh=self._send_events,
|
||||
monitoring=True,
|
||||
configrsc=proginit.pargs.configrsc,
|
||||
procimg=proginit.pargs.procimg
|
||||
procimg=proginit.pargs.procimg,
|
||||
replace_io_file=self._replace_ios
|
||||
)
|
||||
|
||||
# Schreibenen Zugriff
|
||||
if self._write_outputs:
|
||||
self._rpi_write = revpimodio2.RevPiModIO(
|
||||
configrsc=proginit.pargs.configrsc,
|
||||
procimg=proginit.pargs.procimg
|
||||
procimg=proginit.pargs.procimg,
|
||||
replace_io_file=self._replace_ios
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
@@ -158,18 +160,6 @@ class MqttServer(Thread):
|
||||
)
|
||||
raise e
|
||||
|
||||
# Replace IOs of RevPiModIO
|
||||
if self._replace_ios:
|
||||
try:
|
||||
self._rpi.import_replaced_ios(self._replace_ios)
|
||||
if self._write_outputs:
|
||||
self._rpi_write.import_replaced_ios(self._replace_ios)
|
||||
except Exception as e:
|
||||
proginit.logger.error(
|
||||
"could not load replaced ios into RevPiModIO - using "
|
||||
"defaults | {0}".format(e)
|
||||
)
|
||||
|
||||
# Exportierte IOs laden
|
||||
for dev in self._rpi.device:
|
||||
for io in dev.get_allios(export=True):
|
||||
|
||||
@@ -11,7 +11,6 @@ __license__ = "GPLv3"
|
||||
import pickle
|
||||
import proginit
|
||||
import revpimodio2
|
||||
from .helper import revpimodio_replaceio
|
||||
from xmlrpc.client import Binary
|
||||
|
||||
|
||||
@@ -99,7 +98,8 @@ class ProcimgServer():
|
||||
try:
|
||||
self.rpi = revpimodio2.RevPiModIO(
|
||||
configrsc=proginit.pargs.configrsc,
|
||||
procimg=proginit.pargs.procimg
|
||||
procimg=proginit.pargs.procimg,
|
||||
replace_io_file=self.replace_ios
|
||||
)
|
||||
except Exception as e:
|
||||
self.rpi = None
|
||||
@@ -108,14 +108,6 @@ class ProcimgServer():
|
||||
)
|
||||
return e
|
||||
|
||||
# Replace IOs of RevPiModIO
|
||||
if self.replace_ios and \
|
||||
not revpimodio_replaceio(self.rpi, self.replace_ios):
|
||||
proginit.logger.error(
|
||||
"could not load all or some replaced ios into RevPiModIO - "
|
||||
"see log file"
|
||||
)
|
||||
|
||||
# NOTE: Warum das?
|
||||
self.rpi.syncoutputs(device=0)
|
||||
|
||||
|
||||
@@ -63,6 +63,10 @@ def configure():
|
||||
"--pictory", dest="configrsc",
|
||||
help="piCtory file to use"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--test", action="store_true", dest="test",
|
||||
help="Test parameters of config files and print results"
|
||||
)
|
||||
parser.add_argument(
|
||||
"-v", "--verbose", action="count", dest="verbose",
|
||||
help="Switch on verbose logging: info -v debug -vv"
|
||||
|
||||
@@ -394,11 +394,6 @@ class RevPiPyLoad():
|
||||
# Erweiterte Funktionen anmelden
|
||||
try:
|
||||
import procimgserver
|
||||
self.xml_ps = procimgserver.ProcimgServer(
|
||||
self.xsrv, self.replace_ios_config
|
||||
)
|
||||
self.xsrv.register_function(1, self.xml_psstart, "psstart")
|
||||
self.xsrv.register_function(1, self.xml_psstop, "psstop")
|
||||
except Exception:
|
||||
self.xml_ps = None
|
||||
proginit.logger.warning(
|
||||
@@ -408,6 +403,15 @@ class RevPiPyLoad():
|
||||
"revpimodio2: 'apt-get install python3-revpimodio2'"
|
||||
"".format(min_revpimodio)
|
||||
)
|
||||
try:
|
||||
self.xml_ps = procimgserver.ProcimgServer(
|
||||
self.xsrv, self.replace_ios_config
|
||||
)
|
||||
self.xsrv.register_function(1, self.xml_psstart, "psstart")
|
||||
self.xsrv.register_function(1, self.xml_psstop, "psstop")
|
||||
except Exception as e:
|
||||
self.xml_ps = None
|
||||
proginit.logger.error(e)
|
||||
|
||||
# XML Modus 2 Einstellungen lesen und Programm herunterladen
|
||||
self.xsrv.register_function(
|
||||
@@ -1214,8 +1218,13 @@ if __name__ == "__main__":
|
||||
# Programmeinstellungen konfigurieren
|
||||
proginit.configure()
|
||||
|
||||
if proginit.pargs.test:
|
||||
from testsystem import TestSystem
|
||||
root = TestSystem()
|
||||
else:
|
||||
root = RevPiPyLoad()
|
||||
|
||||
# Programm starten
|
||||
root = RevPiPyLoad()
|
||||
root.start()
|
||||
|
||||
# Aufräumen
|
||||
|
||||
88
revpipyload/testsystem.py
Normal file
88
revpipyload/testsystem.py
Normal file
@@ -0,0 +1,88 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Test all config files and print results."""
|
||||
__author__ = "Sven Sager"
|
||||
__copyright__ = "Copyright (C) 2019 Sven Sager"
|
||||
__license__ = "GPLv3"
|
||||
import proginit
|
||||
from configparser import ConfigParser
|
||||
|
||||
newline = "\n------------------------------------------------------------\n"
|
||||
|
||||
|
||||
class TestSystem:
|
||||
|
||||
"""Main class for test system of revpipyload."""
|
||||
|
||||
def __init__(self):
|
||||
"""Init TestSystem class."""
|
||||
self.gc = ConfigParser()
|
||||
lst_file = self.gc.read(proginit.globalconffile)
|
||||
if len(lst_file) <= 0:
|
||||
proginit.logger.error("can not read config file")
|
||||
|
||||
def test_replace_io(self):
|
||||
"""Test replace_io file.
|
||||
@return 0 if successful testet"""
|
||||
print("Test replace_io data:")
|
||||
file = self.gc["DEFAULT"].get("replace_ios")
|
||||
if file is None:
|
||||
print("\tFile MISSING")
|
||||
return 1
|
||||
|
||||
print("\tFile: {0}\n".format(file))
|
||||
|
||||
try:
|
||||
import revpimodio2
|
||||
except Exception as e:
|
||||
print("\tERROR: {0}".format(e))
|
||||
return 1
|
||||
|
||||
try:
|
||||
rpi = revpimodio2.RevPiModIO(
|
||||
configrsc=proginit.pargs.configrsc,
|
||||
procimg=proginit.pargs.procimg,
|
||||
monitoring=False,
|
||||
debug=True,
|
||||
replace_io_file=file,
|
||||
)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return 1
|
||||
else:
|
||||
print("\tPrinting replaced IOs:")
|
||||
for io in rpi.io:
|
||||
if isinstance(io, revpimodio2.io.StructIO):
|
||||
print("\t\tNew io: {0}".format(io.name))
|
||||
|
||||
rpi.cleanup()
|
||||
return 0
|
||||
|
||||
def test_sections(self):
|
||||
"""Test config file.
|
||||
@return 0 if successful testet"""
|
||||
print("Parse config file:")
|
||||
print("\tSection DEFAULT : {0}".format("DEFAULT" in self.gc))
|
||||
print("\tSection PLCSLAVE: {0}".format("PLCSLAVE" in self.gc))
|
||||
print("\tSection XMLRPC : {0}".format("XMLRPC" in self.gc))
|
||||
print("\tSection MQTT : {0}".format("MQTT" in self.gc))
|
||||
return 0
|
||||
|
||||
def start(self):
|
||||
"""Start test program and run tests."""
|
||||
program_ec = 0
|
||||
|
||||
print("--- RevPiPyLoad Testsystem ---\n")
|
||||
ec = self.test_sections()
|
||||
program_ec += int(ec) << 0
|
||||
print(newline)
|
||||
|
||||
# TODO: Test Values of each section
|
||||
# print()
|
||||
|
||||
ec = self.test_replace_io()
|
||||
program_ec += (int(ec) << 7)
|
||||
print(newline)
|
||||
|
||||
if program_ec != 0:
|
||||
print("result: {0}".format(program_ec))
|
||||
exit(program_ec)
|
||||
Reference in New Issue
Block a user