mirror of
https://github.com/naruxde/revpipyload.git
synced 2025-11-08 23:23:52 +01:00
Replace IOs aus Configfile übernehmen
This commit is contained in:
7
data/etc/revpipyload/replace_ios.conf
Normal file
7
data/etc/revpipyload/replace_ios.conf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Replace IO
|
||||||
|
|
||||||
|
# [NewIoName]
|
||||||
|
# parentio_name = OldIoName
|
||||||
|
# frm = StructFormat
|
||||||
|
# bitaddress = 0-7 (Only with '?' struct)
|
||||||
|
# byteorder = little/big
|
||||||
@@ -8,6 +8,7 @@ plcarguments =
|
|||||||
plcuid = 1000
|
plcuid = 1000
|
||||||
plcgid = 1000
|
plcgid = 1000
|
||||||
pythonversion = 3
|
pythonversion = 3
|
||||||
|
replace_ios = /etc/revpipyload/replace_ios.conf
|
||||||
rtlevel = 0
|
rtlevel = 0
|
||||||
zeroonerror = 0
|
zeroonerror = 0
|
||||||
zeroonexit = 0
|
zeroonexit = 0
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<?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-12-21, 12:21:56 -->
|
<!-- Saved: 2019-06-10, 16:56:33 -->
|
||||||
<!-- Copyright (C) 2018 Sven Sager, akira@narux.de -->
|
<!-- Copyright (C) 2019 Sven Sager, akira@narux.de -->
|
||||||
<Project version="5.1">
|
<Project version="5.1">
|
||||||
<Language>en_US</Language>
|
<Language>en_US</Language>
|
||||||
<Hash>89ddb4e70b339f832ee277085202b38acc6a125c</Hash>
|
<Hash>89ddb4e70b339f832ee277085202b38acc6a125c</Hash>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class MqttServer(Thread):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self, basetopic, sendinterval, broker_address, port=1883,
|
self, basetopic, sendinterval, broker_address, port=1883,
|
||||||
tls_set=False, username="", password=None, client_id="",
|
tls_set=False, username="", password=None, client_id="",
|
||||||
send_events=False, write_outputs=False):
|
send_events=False, write_outputs=False, replace_ios=None):
|
||||||
"""Init MqttServer class.
|
"""Init MqttServer class.
|
||||||
|
|
||||||
@param basetopic Basis-Topic fuer Datenaustausch
|
@param basetopic Basis-Topic fuer Datenaustausch
|
||||||
@@ -31,6 +31,7 @@ class MqttServer(Thread):
|
|||||||
@param client_id MQTT ClientID, wenn leer automatisch random erzeugung
|
@param client_id MQTT ClientID, wenn leer automatisch random erzeugung
|
||||||
@param send_events Sendet Werte bei IO Wertaenderung
|
@param send_events Sendet Werte bei IO Wertaenderung
|
||||||
@param write_outputs Per MQTT auch Outputs schreiben
|
@param write_outputs Per MQTT auch Outputs schreiben
|
||||||
|
@param replace_ios Replace IOs of RevPiModIO
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if not isinstance(basetopic, str):
|
if not isinstance(basetopic, str):
|
||||||
@@ -59,6 +60,8 @@ class MqttServer(Thread):
|
|||||||
raise ValueError("parameter send_events must be <class 'bool'>")
|
raise ValueError("parameter send_events must be <class 'bool'>")
|
||||||
if not isinstance(write_outputs, bool):
|
if not isinstance(write_outputs, bool):
|
||||||
raise ValueError("parameter write_outputs must be <class 'bool'>")
|
raise ValueError("parameter write_outputs must be <class 'bool'>")
|
||||||
|
if not (replace_ios is None or isinstance(replace_ios, str)):
|
||||||
|
raise ValueError("parameter replace_ios must be <class 'str'>")
|
||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
@@ -69,6 +72,7 @@ class MqttServer(Thread):
|
|||||||
self._broker_address = broker_address
|
self._broker_address = broker_address
|
||||||
self._port = port
|
self._port = port
|
||||||
self._reloadmodio = False
|
self._reloadmodio = False
|
||||||
|
self._replace_ios = replace_ios
|
||||||
self._rpi = None
|
self._rpi = None
|
||||||
self._rpi_write = None
|
self._rpi_write = None
|
||||||
self._send_events = send_events
|
self._send_events = send_events
|
||||||
@@ -154,6 +158,18 @@ class MqttServer(Thread):
|
|||||||
)
|
)
|
||||||
raise e
|
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
|
# Exportierte IOs laden
|
||||||
for dev in self._rpi.device:
|
for dev in self._rpi.device:
|
||||||
for io in dev.get_allios(export=True):
|
for io in dev.get_allios(export=True):
|
||||||
|
|||||||
@@ -25,13 +25,15 @@ class ProcimgServer():
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, xmlserver):
|
def __init__(self, xmlserver, replace_ios=None):
|
||||||
"""Instantiiert RevPiCheckServer()-Klasse.
|
"""Instantiiert RevPiCheckServer()-Klasse.
|
||||||
@param xmlserver XML-RPC Server"""
|
@param xmlserver XML-RPC Server
|
||||||
|
@param replace_ios Replace IOs of RevPiModIO"""
|
||||||
# Logger übernehmen
|
# Logger übernehmen
|
||||||
proginit.logger.debug("enter ProcimgServer.__init__()")
|
proginit.logger.debug("enter ProcimgServer.__init__()")
|
||||||
|
|
||||||
self.rpi = None
|
self.rpi = None
|
||||||
|
self.replace_ios = replace_ios
|
||||||
|
|
||||||
# XML-Server übernehmen
|
# XML-Server übernehmen
|
||||||
self.xmlsrv = xmlserver
|
self.xmlsrv = xmlserver
|
||||||
@@ -105,6 +107,16 @@ class ProcimgServer():
|
|||||||
)
|
)
|
||||||
return e
|
return e
|
||||||
|
|
||||||
|
# Replace IOs of RevPiModIO
|
||||||
|
if self.replace_ios:
|
||||||
|
try:
|
||||||
|
self.rpi.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)
|
||||||
|
)
|
||||||
|
|
||||||
# NOTE: Warum das?
|
# NOTE: Warum das?
|
||||||
self.rpi.syncoutputs(device=0)
|
self.rpi.syncoutputs(device=0)
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ from time import asctime
|
|||||||
from xmlrpc.client import Binary
|
from xmlrpc.client import Binary
|
||||||
from xrpcserver import SaveXMLRPCServer
|
from xrpcserver import SaveXMLRPCServer
|
||||||
|
|
||||||
min_revpimodio = "2.5.0"
|
min_revpimodio = "2.3.3"
|
||||||
|
|
||||||
|
|
||||||
class RevPiPyLoad():
|
class RevPiPyLoad():
|
||||||
@@ -107,6 +107,8 @@ class RevPiPyLoad():
|
|||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return (
|
return (
|
||||||
|
self.replace_ios_config !=
|
||||||
|
self.globalconfig["DEFAULT"].get("replace_ios", "") or
|
||||||
self.mqtt !=
|
self.mqtt !=
|
||||||
self.globalconfig["MQTT"].getboolean("mqtt", False) or
|
self.globalconfig["MQTT"].getboolean("mqtt", False) or
|
||||||
self.mqttbasetopic !=
|
self.mqttbasetopic !=
|
||||||
@@ -219,6 +221,8 @@ class RevPiPyLoad():
|
|||||||
self.globalconfig["DEFAULT"].getint("plcgid", 65534)
|
self.globalconfig["DEFAULT"].getint("plcgid", 65534)
|
||||||
self.pythonversion = \
|
self.pythonversion = \
|
||||||
self.globalconfig["DEFAULT"].getint("pythonversion", 3)
|
self.globalconfig["DEFAULT"].getint("pythonversion", 3)
|
||||||
|
self.replace_ios_config = \
|
||||||
|
self.globalconfig["DEFAULT"].get("replace_ios", "")
|
||||||
self.rtlevel = \
|
self.rtlevel = \
|
||||||
self.globalconfig["DEFAULT"].getint("rtlevel", 0)
|
self.globalconfig["DEFAULT"].getint("rtlevel", 0)
|
||||||
self.zeroonerror = \
|
self.zeroonerror = \
|
||||||
@@ -390,7 +394,9 @@ class RevPiPyLoad():
|
|||||||
# Erweiterte Funktionen anmelden
|
# Erweiterte Funktionen anmelden
|
||||||
try:
|
try:
|
||||||
import procimgserver
|
import procimgserver
|
||||||
self.xml_ps = procimgserver.ProcimgServer(self.xsrv)
|
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_psstart, "psstart")
|
||||||
self.xsrv.register_function(1, self.xml_psstop, "psstop")
|
self.xsrv.register_function(1, self.xml_psstop, "psstop")
|
||||||
except Exception:
|
except Exception:
|
||||||
@@ -482,6 +488,7 @@ class RevPiPyLoad():
|
|||||||
self.mqttclient_id,
|
self.mqttclient_id,
|
||||||
self.mqttsend_on_event,
|
self.mqttsend_on_event,
|
||||||
self.mqttwrite_outputs,
|
self.mqttwrite_outputs,
|
||||||
|
self.replace_ios_config,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
proginit.logger.error(e)
|
proginit.logger.error(e)
|
||||||
@@ -761,6 +768,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["replace_ios"] = self.replace_ios_config
|
||||||
dc["rtlevel"] = 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)
|
||||||
@@ -996,6 +1004,7 @@ class RevPiPyLoad():
|
|||||||
# "plcuid": "[0-9]{,5}",
|
# "plcuid": "[0-9]{,5}",
|
||||||
# "plcgid": "[0-9]{,5}",
|
# "plcgid": "[0-9]{,5}",
|
||||||
"pythonversion": "[23]",
|
"pythonversion": "[23]",
|
||||||
|
"replace_ios": ".*",
|
||||||
"rtlevel": "[0-1]",
|
"rtlevel": "[0-1]",
|
||||||
"zeroonerror": "[01]",
|
"zeroonerror": "[01]",
|
||||||
"zeroonexit": "[01]",
|
"zeroonexit": "[01]",
|
||||||
|
|||||||
Reference in New Issue
Block a user