Verarbeitung der Exportflags von Core IOs in MQTT überarbeitet

Bei reload und autostart 0->1 wird PLC Programm nun sofort gestartet
This commit is contained in:
2018-09-30 19:02:09 +02:00
parent 399cdd847a
commit e48f1807f8
5 changed files with 43 additions and 30 deletions

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Project SYSTEM "Project-5.1.dtd"> <!DOCTYPE Project SYSTEM "Project-5.1.dtd">
<!-- eric project file for project revpipyload --> <!-- eric project file for project revpipyload -->
<!-- Saved: 2018-09-26, 10:58:41 --> <!-- Saved: 2018-09-30, 16:31:40 -->
<!-- Copyright (C) 2018 Sven Sager, akira@narux.de --> <!-- Copyright (C) 2018 Sven Sager, akira@narux.de -->
<Project version="5.1"> <Project version="5.1">
<Language>en_US</Language> <Language>en_US</Language>
@@ -9,7 +9,7 @@
<ProgLanguage mixed="0">Python3</ProgLanguage> <ProgLanguage mixed="0">Python3</ProgLanguage>
<ProjectType>Console</ProjectType> <ProjectType>Console</ProjectType>
<Description>Dieser Loader wird über das Init-System geladen und führt das angegebene Pythonprogramm aus. Es ist für den RevolutionPi gedacht um automatisch das SPS-Programm zu starten.</Description> <Description>Dieser Loader wird über das Init-System geladen und führt das angegebene Pythonprogramm aus. Es ist für den RevolutionPi gedacht um automatisch das SPS-Programm zu starten.</Description>
<Version>0.7.2</Version> <Version>0.7.3</Version>
<Author>Sven Sager</Author> <Author>Sven Sager</Author>
<Email>akira@narux.de</Email> <Email>akira@narux.de</Email>
<Eol index="1"/> <Eol index="1"/>

View File

@@ -159,22 +159,31 @@ class MqttServer(Thread):
io.reg_event(self._evt_io) io.reg_event(self._evt_io)
self._exported_ios.append(io) self._exported_ios.append(io)
# RevPiLED Ausgang zerlegen und exportieren # CoreIOs prüfen und zu export hinzufügen
if self._rpi.core._ioled.export: lst_coreio = []
lst_coreio = [ if self._rpi.core.a1green.export:
self._rpi.core.a1green, self._rpi.core.a1red, lst_coreio.append(self._rpi.core.a1green)
self._rpi.core.a2green, self._rpi.core.a2red, if self._rpi.core.a1red.export:
] lst_coreio.append(self._rpi.core.a1red)
if self._rpi.core.a2green.export:
lst_coreio.append(self._rpi.core.a2green)
if self._rpi.core.a2red.export:
lst_coreio.append(self._rpi.core.a2red)
# Connect-IOs anhängen # Connect-IOs anhängen
if type(self._rpi.core) == revpimodio2.device.Connect: if type(self._rpi.core) == revpimodio2.device.Connect:
lst_coreio += [ if self._rpi.core.a3green.export:
self._rpi.core.a3green, self._rpi.core.a3red, lst_coreio.append(self._rpi.core.a3green)
self._rpi.core.wd, if self._rpi.core.a3red.export:
self._rpi.core.x2in, self._rpi.core.x2out, lst_coreio.append(self._rpi.core.a3red)
] if self._rpi.core.wd.export:
lst_coreio.append(self._rpi.core.wd)
if self._rpi.core.x2in.export:
lst_coreio.append(self._rpi.core.x2in)
if self._rpi.core.x2out.export:
lst_coreio.append(self._rpi.core.x2out)
# Events registrieren # IOs exportieren und Events anmelden
for io in lst_coreio: for io in lst_coreio:
io.reg_event(self._evt_io) io.reg_event(self._evt_io)
self._exported_ios.append(io) self._exported_ios.append(io)

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.2" __version__ = "0.7.3"
import gzip import gzip
import logsystem import logsystem
import picontrolserver import picontrolserver
@@ -153,6 +153,7 @@ class RevPiPyLoad():
if self.plc is None: if self.plc is None:
return True return True
elif "XMLRPC" not in self.globalconfig: elif "XMLRPC" not in self.globalconfig:
# NOTE: Warum ist das hier?
return True return True
else: else:
return ( return (
@@ -169,7 +170,10 @@ class RevPiPyLoad():
self.pythonversion != self.pythonversion !=
self.globalconfig["DEFAULT"].getint("pythonversion", 3) or self.globalconfig["DEFAULT"].getint("pythonversion", 3) or
self.rtlevel != self.rtlevel !=
self.globalconfig["DEFAULT"].getint("rtlevel", 0) self.globalconfig["DEFAULT"].getint("rtlevel", 0) or (
not self.plc.is_alive() and not self.autostart and
self.globalconfig["DEFAULT"].getboolean("autostart", False)
)
) )
def _loadconfig(self): def _loadconfig(self):
@@ -387,7 +391,7 @@ class RevPiPyLoad():
self.xml_ps = None self.xml_ps = None
proginit.logger.warning( proginit.logger.warning(
"can not load revpimodio2 module. maybe its not installed " "can not load revpimodio2 module. maybe its not installed "
"or an old version (required at least 2.2.4). if you " "or an old version (required at least 2.2.5). if you "
"like to use the process monitor feature, update/install " "like to use the process monitor feature, update/install "
"revpimodio2: 'apt-get install python3-revpimodio2'" "revpimodio2: 'apt-get install python3-revpimodio2'"
) )
@@ -453,7 +457,7 @@ class RevPiPyLoad():
except Exception: except Exception:
proginit.logger.warning( proginit.logger.warning(
"can not load revpimodio2 module. maybe its not installed " "can not load revpimodio2 module. maybe its not installed "
"or an old version (required at least 2.2.4). if you " "or an old version (required at least 2.2.5). if you "
"like to use the mqtt feature, update/install " "like to use the mqtt feature, update/install "
"revpimodio2: 'apt-get install python3-revpimodio2'" "revpimodio2: 'apt-get install python3-revpimodio2'"
) )
@@ -498,9 +502,9 @@ class RevPiPyLoad():
) )
th_plc.autoreload = self.autoreload th_plc.autoreload = self.autoreload
th_plc.autoreloaddelay = self.autoreloaddelay th_plc.autoreloaddelay = self.autoreloaddelay
th_plc.gid = int(self.plcgid) th_plc.gid = self.plcgid
th_plc.uid = int(self.plcuid) th_plc.uid = self.plcuid
th_plc.rtlevel = int(self.rtlevel) th_plc.rtlevel = self.rtlevel
th_plc.zeroonerror = self.zeroonerror th_plc.zeroonerror = self.zeroonerror
th_plc.zeroonexit = self.zeroonexit th_plc.zeroonexit = self.zeroonexit
@@ -749,7 +753,7 @@ class RevPiPyLoad():
dc["plcuid"] = self.plcuid dc["plcuid"] = self.plcuid
dc["plcgid"] = self.plcgid dc["plcgid"] = self.plcgid
dc["pythonversion"] = self.pythonversion dc["pythonversion"] = self.pythonversion
dc["rtlevel"] = int(self.rtlevel) dc["rtlevel"] = self.rtlevel
dc["zeroonerror"] = int(self.zeroonerror) dc["zeroonerror"] = int(self.zeroonerror)
dc["zeroonexit"] = int(self.zeroonexit) dc["zeroonexit"] = int(self.zeroonexit)

View File

@@ -27,11 +27,11 @@ setup(
license="LGPLv3", license="LGPLv3",
name="revpipyload", name="revpipyload",
version="0.7.2", version="0.7.3",
scripts=["data/revpipyload"], scripts=["data/revpipyload"],
install_requires=["revpimodio2 >= 2.2.4"], install_requires=["revpimodio2 >= 2.2.5"],
python_requires=">=3.2", python_requires=">=3.2",
data_files=[ data_files=[

View File

@@ -1,5 +1,5 @@
[DEFAULT] [DEFAULT]
Debian-Version: 1 Debian-Version: 1
Depends3: python3-revpimodio2 (>= 2.2.4) Depends3: python3-revpimodio2 (>= 2.2.5)
Package: revpipyload Package: revpipyload
Suite: stable Suite: stable