From 64955e7ef010125341c1ff23397aebcf59e5b91e Mon Sep 17 00:00:00 2001
From: NaruX
Date: Mon, 7 Jan 2019 20:08:18 +0100
Subject: [PATCH] Counter Reset in MQTT eingebaut basename/reset/ioname -
payload egal
---
doc/picontrolserver.html | 7 +++++--
doc/revpipyload.html | 2 +-
eric-revpipyload.api | 3 ++-
revpipyload.e4p | 4 ++--
revpipyload/mqttserver.py | 12 +++++++++++-
revpipyload/revpipyload.py | 12 ++++++++----
setup.py | 4 ++--
7 files changed, 31 insertions(+), 13 deletions(-)
diff --git a/doc/picontrolserver.html b/doc/picontrolserver.html
index 12ed28a..f00c03f 100644
--- a/doc/picontrolserver.html
+++ b/doc/picontrolserver.html
@@ -37,7 +37,7 @@ Functions
RevPi PLC-Server.
Diese Klasste stellt den RevPi PLC-Server zur verfuegung und akzeptiert
- neue Verbindungen. Dieser werden dann als RevPiSlaveDev abgebildet.
+ neue Verbindungen. Diese werden dann als RevPiSlaveDev abgebildet.
Ueber die angegebenen ACLs koennen Zugriffsbeschraenkungen vergeben werden.
@@ -84,7 +84,7 @@ Static Methods
RevPiSlave (Constructor)
-RevPiSlave(ipacl, port=55234)
+RevPiSlave(ipacl, port=55234, bindip="")
Instantiiert RevPiSlave-Klasse.
@@ -94,6 +94,9 @@ AclManager
- port
-
Listen Port fuer plc Slaveserver
+
- bindip
+-
+IP-Adresse an die der Dienst gebunden wird (leer=alle)
diff --git a/doc/revpipyload.html b/doc/revpipyload.html
index 7f120ae..625fb74 100644
--- a/doc/revpipyload.html
+++ b/doc/revpipyload.html
@@ -34,7 +34,7 @@ begrenzt werden!
Global Attributes
-| __author__ |
| __copyright__ |
| __license__ |
| __version__ |
+| __author__ |
| __copyright__ |
| __license__ |
| __version__ |
| min_revpimodio |
Classes
diff --git a/eric-revpipyload.api b/eric-revpipyload.api
index a4952f1..a661233 100644
--- a/eric-revpipyload.api
+++ b/eric-revpipyload.api
@@ -36,7 +36,7 @@ picontrolserver.RevPiSlave.check_connectedacl?4()
picontrolserver.RevPiSlave.newlogfile?4()
picontrolserver.RevPiSlave.run?4()
picontrolserver.RevPiSlave.stop?4()
-picontrolserver.RevPiSlave?1(ipacl, port=55234)
+picontrolserver.RevPiSlave?1(ipacl, port=55234, bindip="")
picontrolserver.RevPiSlaveDev.run?4()
picontrolserver.RevPiSlaveDev.stop?4()
picontrolserver.RevPiSlaveDev?1(devcon, acl)
@@ -126,6 +126,7 @@ revpipyload.__author__?9
revpipyload.__copyright__?9
revpipyload.__license__?9
revpipyload.__version__?9
+revpipyload.min_revpimodio?7
revpipyload.shared.__author__?9
revpipyload.shared.__copyright__?9
revpipyload.shared.__license__?9
diff --git a/revpipyload.e4p b/revpipyload.e4p
index 6e0ee46..a099a48 100644
--- a/revpipyload.e4p
+++ b/revpipyload.e4p
@@ -1,7 +1,7 @@
-
+
en_US
@@ -9,7 +9,7 @@
Python3
Console
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.
- 0.7.3
+ 0.7.5
Sven Sager
akira@narux.de
diff --git a/revpipyload/mqttserver.py b/revpipyload/mqttserver.py
index a2d4e96..e95d047 100644
--- a/revpipyload/mqttserver.py
+++ b/revpipyload/mqttserver.py
@@ -84,6 +84,7 @@ class MqttServer(Thread):
self._mqtt_io = join(basetopic, "io/{0}")
self._mqtt_ioget = join(basetopic, "get/#")
self._mqtt_ioset = join(basetopic, "set/#")
+ self._mqtt_ioreset = join(basetopic, "reset/#")
self._mqtt_pictory = join(basetopic, "pictory")
self._mqtt_senddata = join(basetopic, "get")
self._mqtt_sendpictory = join(basetopic, "needpictory")
@@ -206,6 +207,7 @@ class MqttServer(Thread):
client.subscribe(self._mqtt_sendpictory)
if self._write_outputs:
client.subscribe(self._mqtt_ioset)
+ client.subscribe(self._mqtt_ioreset)
proginit.logger.debug("leave MqttServer._on_connect()")
@@ -242,6 +244,7 @@ class MqttServer(Thread):
# Aktion und IO auswerten
ioget = lst_topic[-2].lower() == "get"
ioset = lst_topic[-2].lower() == "set"
+ ioreset = lst_topic[-2].lower() == "reset"
ioname = lst_topic[-1]
coreio = ioname.find(".") != -1
@@ -282,8 +285,8 @@ class MqttServer(Thread):
proginit.logger.error(
"can not write to inputs with MQTT"
)
- elif ioset:
+ elif ioset:
# Convert MQTT Payload to valid Output-Value
value = msg.payload.decode("utf8")
@@ -324,6 +327,13 @@ class MqttServer(Thread):
else:
io._parentdevice.writeprocimg()
+ elif ioreset:
+ # Counter zurücksetzen
+ if not isinstance(io, revpimodio2.io.IntIOCounter):
+ proginit.logger.warning("this io has no counter")
+ else:
+ io.reset()
+
else:
# Aktion nicht erkennbar
proginit.logger.warning(
diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py
index 22a6bde..d35438f 100755
--- a/revpipyload/revpipyload.py
+++ b/revpipyload/revpipyload.py
@@ -28,7 +28,7 @@ begrenzt werden!
__author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager"
__license__ = "GPLv3"
-__version__ = "0.7.3"
+__version__ = "0.7.5"
import gzip
import logsystem
import picontrolserver
@@ -49,6 +49,8 @@ from time import asctime
from xmlrpc.client import Binary
from xrpcserver import SaveXMLRPCServer
+min_revpimodio = "2.5.0"
+
class RevPiPyLoad():
@@ -395,9 +397,10 @@ class RevPiPyLoad():
self.xml_ps = None
proginit.logger.warning(
"can not load revpimodio2 module. maybe its not installed "
- "or an old version (required at least 2.2.5). if you "
- "like to use the process monitor feature, update/install "
+ "or an old version (required at least {0}). if you "
+ "like to use revpinetio network feature, update/install "
"revpimodio2: 'apt-get install python3-revpimodio2'"
+ "".format(min_revpimodio)
)
# XML Modus 2 Einstellungen lesen und Programm herunterladen
@@ -461,9 +464,10 @@ class RevPiPyLoad():
except Exception:
proginit.logger.warning(
"can not load revpimodio2 module. maybe its not installed "
- "or an old version (required at least 2.2.5). if you "
+ "or an old version (required at least {0}). if you "
"like to use the mqtt feature, update/install "
"revpimodio2: 'apt-get install python3-revpimodio2'"
+ "".format(min_revpimodio)
)
else:
try:
diff --git a/setup.py b/setup.py
index 80bb502..f9566b7 100644
--- a/setup.py
+++ b/setup.py
@@ -27,11 +27,11 @@ setup(
license="LGPLv3",
name="revpipyload",
- version="0.7.3",
+ version="0.7.5",
scripts=["data/revpipyload"],
- install_requires=["revpimodio2 >= 2.2.5"],
+ install_requires=["revpimodio2 >= 2.3.1"],
python_requires=">=3.2",
data_files=[