|
|
|
@@ -12,7 +12,7 @@ from datetime import datetime, timedelta
|
|
|
|
|
from dateutil import tz
|
|
|
|
|
|
|
|
|
|
""" Version info changed by git hook """
|
|
|
|
|
__version__ = '0.9.6'
|
|
|
|
|
__version__ = '0.9.7'
|
|
|
|
|
|
|
|
|
|
class LmwSip:
|
|
|
|
|
"""Class to connect to the LMW Standard Interface prototcol (sip)
|
|
|
|
@@ -27,7 +27,12 @@ Support for:
|
|
|
|
|
ti
|
|
|
|
|
cmd(wn, vw, as)
|
|
|
|
|
|
|
|
|
|
lmwParameters:
|
|
|
|
|
- Type: WN, VW, AS
|
|
|
|
|
- Array size: [1-201]
|
|
|
|
|
- Periode: 1, 10
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
lmwParameters = {
|
|
|
|
|
'Tm02_MV': ('VW', 1, 0),
|
|
|
|
|
'xH1': ('WN', 1, 1),
|
|
|
|
@@ -593,7 +598,7 @@ Opens the connection and logs in.
|
|
|
|
|
"time_of_day": time.strftime("%H:%M", time.gmtime(now)) }
|
|
|
|
|
|
|
|
|
|
def connect(self):
|
|
|
|
|
"""connect()
|
|
|
|
|
"""Setup the network connection
|
|
|
|
|
|
|
|
|
|
connects to lmw with tcp using the values of the object creation.
|
|
|
|
|
"""
|
|
|
|
@@ -629,7 +634,7 @@ connects to lmw with tcp using the values of the object creation.
|
|
|
|
|
self._socket = None
|
|
|
|
|
|
|
|
|
|
def send(self, sipcmd):
|
|
|
|
|
"""send(sipcmd)
|
|
|
|
|
"""Send a sip command to the server
|
|
|
|
|
|
|
|
|
|
send a sip command to the server
|
|
|
|
|
"""
|
|
|
|
@@ -659,7 +664,7 @@ send a sip command to the server
|
|
|
|
|
raise LmwSipConnectError("LmwSip.telnetheader: Socket connection lost")
|
|
|
|
|
|
|
|
|
|
def recv(self):
|
|
|
|
|
"""recv()
|
|
|
|
|
"""Recieve the results
|
|
|
|
|
|
|
|
|
|
recieve a answer from the sip server
|
|
|
|
|
"""
|
|
|
|
@@ -702,7 +707,7 @@ recieve a answer from the sip server
|
|
|
|
|
return(stringbuf)
|
|
|
|
|
|
|
|
|
|
def login(self):
|
|
|
|
|
"""login()
|
|
|
|
|
"""Login the sip server
|
|
|
|
|
|
|
|
|
|
Login lmw using the object creation user, password.
|
|
|
|
|
Raises a LmwLoginFailure exception on failure
|
|
|
|
@@ -726,7 +731,7 @@ Raises a LmwLoginFailure exception on failure
|
|
|
|
|
self.login()
|
|
|
|
|
|
|
|
|
|
def reconnectcheck(self):
|
|
|
|
|
"""reconnectcheck()
|
|
|
|
|
"""Check if we need to reconnect.
|
|
|
|
|
|
|
|
|
|
Checks if a reconnect is nessecery.
|
|
|
|
|
|
|
|
|
@@ -744,7 +749,7 @@ There are two timeouts:
|
|
|
|
|
self.reconnect()
|
|
|
|
|
|
|
|
|
|
def sendrecv(self, cmd):
|
|
|
|
|
"""sendrecv(cmd)
|
|
|
|
|
"""Send a a command and recieve the result.
|
|
|
|
|
|
|
|
|
|
send the command and recieve the answer.
|
|
|
|
|
retry on socket failure.
|
|
|
|
@@ -773,7 +778,7 @@ retry on socket failure.
|
|
|
|
|
return(ret)
|
|
|
|
|
|
|
|
|
|
def ti(self):
|
|
|
|
|
"""ti()
|
|
|
|
|
"""Recieve the time from the sipserver.
|
|
|
|
|
|
|
|
|
|
Request the time from lmw and returns the string.
|
|
|
|
|
|
|
|
|
@@ -785,7 +790,7 @@ Raises a LmwCmdWarn of failure
|
|
|
|
|
|
|
|
|
|
def cmd(self, process, location, parameter, time_delta, day,
|
|
|
|
|
time_of_day, cmd_type="DATA"):
|
|
|
|
|
"""cmd(process, location, parameter, time_delta, day, time_of_day)
|
|
|
|
|
"""Create a sip command from the paramters
|
|
|
|
|
|
|
|
|
|
Send a cmd to LMW and returns the lmw string
|
|
|
|
|
|
|
|
|
@@ -817,9 +822,35 @@ Returns:
|
|
|
|
|
raise LmwCmdWarn(cmdstr, d)
|
|
|
|
|
return (d[2:-1])
|
|
|
|
|
|
|
|
|
|
def cmdWrite(self, process, location, parameter, time_delta, day,
|
|
|
|
|
time_of_day, values):
|
|
|
|
|
"""Write data to LMW
|
|
|
|
|
|
|
|
|
|
process: <WNT|VWT|AST>
|
|
|
|
|
location: <lmw location (e.g. HOEK)>
|
|
|
|
|
parameter: <lmw parameter (e.g. H10)>
|
|
|
|
|
time_delta: <Time windows (max 23:59, e.g. +01:00>
|
|
|
|
|
day: <Date>
|
|
|
|
|
time_of_day: <Time>
|
|
|
|
|
data: Values to be writen (e.g. 33/10;35/10).
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
lmw.cmd("WNT", "HOEK", "H10", "+00:20", "13-08-2018", "16:00", "33/10;35/10")
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
The LMW answer string
|
|
|
|
|
"""
|
|
|
|
|
cmdstr=process + " " + self.meetnet + "," + location + "," + \
|
|
|
|
|
parameter + "," + time_delta + "," + day + "," + \
|
|
|
|
|
time_of_day + values + "\r"
|
|
|
|
|
d = self.sendrecv(cmdstr)
|
|
|
|
|
if (d[0] != '!'):
|
|
|
|
|
raise LmwCmdWarn(cmdstr, d)
|
|
|
|
|
return (d[2:-1])
|
|
|
|
|
|
|
|
|
|
def valueStr(self, process, location, parameter, day = None,
|
|
|
|
|
time_of_day = None):
|
|
|
|
|
"""value(process, location, parameter, [day], [time_of_day]):
|
|
|
|
|
"""Get string of values from sip
|
|
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
process: <WN|VW|AS>
|
|
|
|
@@ -846,7 +877,7 @@ Returns a single string value with quality
|
|
|
|
|
|
|
|
|
|
def value(self, process, location, parameter, day = None,
|
|
|
|
|
time_of_day = None):
|
|
|
|
|
"""value(process, location, parameter, [day], [time_of_day]):
|
|
|
|
|
"""Get one value from sip
|
|
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
process: <WN|VW|AS>
|
|
|
|
@@ -890,7 +921,7 @@ Returns a single string value or None
|
|
|
|
|
|
|
|
|
|
def timeSerie(self, process, location, parameter,
|
|
|
|
|
startTime, endTime, cmd_type="DATB"):
|
|
|
|
|
"""timeSerie(process, location, parameter, startTime, endTime, cmd_type="DATA")
|
|
|
|
|
"""Get a python data structure with the results.
|
|
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
process: <WN|VW|AS>
|
|
|
|
@@ -959,7 +990,7 @@ Errors:
|
|
|
|
|
return(res)
|
|
|
|
|
|
|
|
|
|
def logout(self):
|
|
|
|
|
"""logout()
|
|
|
|
|
"""Logut of the sip server,
|
|
|
|
|
|
|
|
|
|
Logs of
|
|
|
|
|
"""
|
|
|
|
@@ -983,7 +1014,7 @@ Note:
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
def __init__(self, start, delta, values=""):
|
|
|
|
|
"""lmwTimeSerie(start, delta, values)
|
|
|
|
|
"""lmwTimeSerie init
|
|
|
|
|
|
|
|
|
|
Create a lmwTimeSerie object with:
|
|
|
|
|
start: Start time
|
|
|
|
@@ -996,7 +1027,7 @@ Create a lmwTimeSerie object with:
|
|
|
|
|
self.addvalues(start, values)
|
|
|
|
|
|
|
|
|
|
def addvalues(self, start, values):
|
|
|
|
|
"""addvalues(start, delta, values)
|
|
|
|
|
"""Add values
|
|
|
|
|
|
|
|
|
|
Add values to a timeserie
|
|
|
|
|
start: Start time
|
|
|
|
|