Bei Änderung von replace_ios nur Clients trennen, die Hashwert anforderten

This commit is contained in:
2019-08-19 18:09:27 +02:00
parent 6372188205
commit 5542f5d63b
4 changed files with 32 additions and 5 deletions

View File

@@ -69,6 +69,9 @@ Methods</h3>
<td><a style="color:#0000FF" href="#RevPiSlave.disconnect_all">disconnect_all</a></td> <td><a style="color:#0000FF" href="#RevPiSlave.disconnect_all">disconnect_all</a></td>
<td>Close all device connection.</td> <td>Close all device connection.</td>
</tr><tr> </tr><tr>
<td><a style="color:#0000FF" href="#RevPiSlave.disconnect_replace_ios">disconnect_replace_ios</a></td>
<td>Close all device with loaded replace_ios file.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiSlave.newlogfile">newlogfile</a></td> <td><a style="color:#0000FF" href="#RevPiSlave.newlogfile">newlogfile</a></td>
<td>Konfiguriert die FileHandler auf neue Logdatei.</td> <td>Konfiguriert die FileHandler auf neue Logdatei.</td>
</tr><tr> </tr><tr>
@@ -113,6 +116,12 @@ RevPiSlave.disconnect_all</h3>
<b>disconnect_all</b>(<i></i>) <b>disconnect_all</b>(<i></i>)
<p> <p>
Close all device connection. Close all device connection.
</p><a NAME="RevPiSlave.disconnect_replace_ios" ID="RevPiSlave.disconnect_replace_ios"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiSlave.disconnect_replace_ios</h3>
<b>disconnect_replace_ios</b>(<i></i>)
<p>
Close all device with loaded replace_ios file.
</p><a NAME="RevPiSlave.newlogfile" ID="RevPiSlave.newlogfile"></a> </p><a NAME="RevPiSlave.newlogfile" ID="RevPiSlave.newlogfile"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000"> <h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiSlave.newlogfile</h3> RevPiSlave.newlogfile</h3>

View File

@@ -34,6 +34,7 @@ mqttserver.__copyright__?9
mqttserver.__license__?9 mqttserver.__license__?9
picontrolserver.RevPiSlave.check_connectedacl?4() picontrolserver.RevPiSlave.check_connectedacl?4()
picontrolserver.RevPiSlave.disconnect_all?4() picontrolserver.RevPiSlave.disconnect_all?4()
picontrolserver.RevPiSlave.disconnect_replace_ios?4()
picontrolserver.RevPiSlave.newlogfile?4() picontrolserver.RevPiSlave.newlogfile?4()
picontrolserver.RevPiSlave.run?4() picontrolserver.RevPiSlave.run?4()
picontrolserver.RevPiSlave.stop?4() picontrolserver.RevPiSlave.stop?4()

View File

@@ -76,6 +76,13 @@ class RevPiSlave(Thread):
for th in self._th_dev: for th in self._th_dev:
th.stop() th.stop()
def disconnect_replace_ios(self):
"""Close all device with loaded replace_ios file."""
# Alle Threads beenden die Replace_IOs emfpangen haben
for th in self._th_dev:
if th.got_replace_ios:
th.stop()
def newlogfile(self): def newlogfile(self):
"""Konfiguriert die FileHandler auf neue Logdatei.""" """Konfiguriert die FileHandler auf neue Logdatei."""
pass pass
@@ -183,6 +190,7 @@ class RevPiSlaveDev(Thread):
self._deadtime = None self._deadtime = None
self._devcon, self._addr = devcon self._devcon, self._addr = devcon
self._evt_exit = Event() self._evt_exit = Event()
self.got_replace_ios = False
self._writeerror = False self._writeerror = False
# Sicherheitsbytes # Sicherheitsbytes
@@ -415,7 +423,7 @@ class RevPiSlaveDev(Thread):
continue continue
elif cmd == b'RP': elif cmd == b'RP':
# piCtory Konfiguration senden # Replace_IOs Konfiguration senden
proginit.logger.debug( proginit.logger.debug(
"transfair replace_io configuration: {0}" "transfair replace_io configuration: {0}"
"".format(proginit.pargs.configrsc) "".format(proginit.pargs.configrsc)
@@ -439,6 +447,8 @@ class RevPiSlaveDev(Thread):
elif cmd == b'RH': elif cmd == b'RH':
# Replace_IOs md5 Hashwert senden (16 Byte) # Replace_IOs md5 Hashwert senden (16 Byte)
self.got_replace_ios = True
replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "") replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "")
try: try:
if replace_ios: if replace_ios:

View File

@@ -28,7 +28,7 @@ begrenzt werden!
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager" __copyright__ = "Copyright (C) 2018 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
__version__ = "0.7.6" __version__ = "0.8.0"
import gzip import gzip
import logsystem import logsystem
import picontrolserver import picontrolserver
@@ -739,10 +739,20 @@ class RevPiPyLoad():
# Dateiveränderungen prüfen mit beiden Funktionen! # Dateiveränderungen prüfen mit beiden Funktionen!
if self.check_pictory_changed(): if self.check_pictory_changed():
file_changed = True file_changed = True
# Alle Verbindungen von ProcImgServer trennen
self.th_plcslave.disconnect_all()
proginit.logger.warning("piCtory configuration was changed") proginit.logger.warning("piCtory configuration was changed")
if self.check_replace_ios_changed(): if self.check_replace_ios_changed():
if not file_changed:
# Verbindungen von ProcImgServer trennen mit replace_ios
self.th_plcslave.disconnect_replace_ios()
file_changed = True file_changed = True
proginit.logger.warning("replace ios file was changed") proginit.logger.warning("replace ios file was changed")
if file_changed: if file_changed:
# Auf Dateiveränderung reagieren # Auf Dateiveränderung reagieren
@@ -750,9 +760,6 @@ class RevPiPyLoad():
if self.mqtt and self.th_plcmqtt is not None: if self.mqtt and self.th_plcmqtt is not None:
self.th_plcmqtt.reload_revpimodio() self.th_plcmqtt.reload_revpimodio()
# Alle Verbindungen von ProcImgServer trennen
self.th_plcslave.disconnect_all()
# XML Prozessabbildserver neu laden # XML Prozessabbildserver neu laden
if self.xml_ps is not None: if self.xml_ps is not None:
self.xml_psstop() self.xml_psstop()