diff --git a/revpipyload/mqttserver.py b/revpipyload/mqttserver.py index 6c9fa65..f4aa9dc 100644 --- a/revpipyload/mqttserver.py +++ b/revpipyload/mqttserver.py @@ -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,13 +151,36 @@ 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: - self._rpi = None - self._rpi_write = None - proginit.logger.error( - "piCtory configuration not loadable for MQTT" - ) - raise 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( + "piCtory configuration not loadable for MQTT" + ) + raise e # Exportierte IOs laden for dev in self._rpi.device: diff --git a/revpipyload/procimgserver.py b/revpipyload/procimgserver.py index d9d7953..b6fbc45 100644 --- a/revpipyload/procimgserver.py +++ b/revpipyload/procimgserver.py @@ -101,12 +101,26 @@ 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: - self.rpi = None - proginit.logger.error( - "piCtory configuration not loadable for ProcimgServer" - ) - return 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" + ) + return e # NOTE: Warum das? self.rpi.syncoutputs(device=0) diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index 8aed928..c25dcee 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -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) diff --git a/setup.py b/setup.py index cef2511..64dd099 100644 --- a/setup.py +++ b/setup.py @@ -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/*.*")),