ProcimgServer lädt standard IOs, wenn replace_ios_file nicht gültig ist

MQTT lädt standard IOs, wenn replace_ios_file nicht gültig ist
replace_ios_file wird beim reload geprüft und ggf. neu geladen
Startbar ohne replace_ios Parameter
Bei fehlender replace_ios Datei werden standard IOs verwendet
This commit is contained in:
2019-06-17 14:17:56 +02:00
parent 09cb134f31
commit 89f29b0496
4 changed files with 73 additions and 14 deletions

View File

@@ -143,7 +143,6 @@ class MqttServer(Thread):
procimg=proginit.pargs.procimg,
replace_io_file=self._replace_ios
)
# Schreibenen Zugriff
if self._write_outputs:
self._rpi_write = revpimodio2.RevPiModIO(
@@ -152,7 +151,30 @@ class MqttServer(Thread):
replace_io_file=self._replace_ios
)
if self._replace_ios:
proginit.logger.info("loaded replace_ios to MQTT")
except Exception as e:
try:
# Lesend und Eventüberwachung
self._rpi = revpimodio2.RevPiModIO(
autorefresh=self._send_events,
monitoring=True,
configrsc=proginit.pargs.configrsc,
procimg=proginit.pargs.procimg
)
# Schreibenen Zugriff
if self._write_outputs:
self._rpi_write = revpimodio2.RevPiModIO(
configrsc=proginit.pargs.configrsc,
procimg=proginit.pargs.procimg
)
proginit.logger.warning(
"replace_ios_file not loadable for MQTT - using "
"defaults now | {0}".format(e)
)
except Exception:
self._rpi = None
self._rpi_write = None
proginit.logger.error(

View File

@@ -101,7 +101,21 @@ class ProcimgServer():
procimg=proginit.pargs.procimg,
replace_io_file=self.replace_ios
)
if self.replace_ios:
proginit.logger.info("loaded replace_ios to ProcimgServer")
except Exception as e:
try:
self.rpi = revpimodio2.RevPiModIO(
configrsc=proginit.pargs.configrsc,
procimg=proginit.pargs.procimg,
)
proginit.logger.warning(
"replace_ios_file not loadable for ProcimgServer - using "
"defaults now | {0}".format(e)
)
except Exception:
self.rpi = None
proginit.logger.error(
"piCtory configuration not loadable for ProcimgServer"

View File

@@ -68,6 +68,7 @@ class RevPiPyLoad():
# Klassenattribute
self._exit = True
self.pictorymtime = os.path.getmtime(proginit.pargs.configrsc)
self.replaceiosmtime = 0
self.evt_loadconfig = Event()
self.globalconfig = ConfigParser()
self.logr = logsystem.LogReader()
@@ -230,6 +231,24 @@ class RevPiPyLoad():
self.zeroonexit = \
self.globalconfig["DEFAULT"].getboolean("zeroonexit", True)
# MTime für replace io übernehmen
mtime = 0
if self.replace_ios_config:
if os.access(self.replace_ios_config, os.R_OK | os.W_OK):
mtime = os.path.getmtime(self.replace_ios_config)
else:
proginit.logger.error(
"can not access (r/w) the replace_ios file '{0}' "
"using defaults".format(self.replace_ios_config)
)
self.replace_ios_config = ""
if self.replaceiosmtime != mtime:
# MQTT reload erforderlich
restart_plcmqtt = True
self.replaceiosmtime = mtime
# Konfiguration verarbeiten [MQTT]
self.mqtt = 0
if "MQTT" in self.globalconfig:
@@ -405,7 +424,9 @@ class RevPiPyLoad():
)
try:
self.xml_ps = procimgserver.ProcimgServer(
self.xsrv, self.replace_ios_config
self.xsrv,
None if not self.replace_ios_config
else self.replace_ios_config,
)
self.xsrv.register_function(1, self.xml_psstart, "psstart")
self.xsrv.register_function(1, self.xml_psstop, "psstop")
@@ -492,7 +513,8 @@ class RevPiPyLoad():
self.mqttclient_id,
self.mqttsend_on_event,
self.mqttwrite_outputs,
self.replace_ios_config,
None if not self.replace_ios_config
else self.replace_ios_config,
)
except Exception as e:
proginit.logger.error(e)

View File

@@ -41,6 +41,7 @@ setup(
("/etc/revpipyload", [
"data/etc/revpipyload/aclplcslave.conf",
"data/etc/revpipyload/aclxmlrpc.conf",
"data/etc/revpipyload/replace_ios.conf",
"data/etc/revpipyload/revpipyload.conf",
]),
("share/revpipyload", glob("revpipyload/*.*")),