added rr facility

This commit is contained in:
Nico Melone
2024-12-10 17:48:32 -06:00
parent ee000144ef
commit 0585dbbe02
18 changed files with 12374 additions and 48 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,63 @@
import json, os, time
from datetime import datetime as dt
from common.Logger import logger
from quickfaas.remotebus import publish
from quickfaas.global_dict import get as get_params
from quickfaas.global_dict import _set_global_args
def reboot():
logger.info("!" * 10 + "REBOOTING DEVICE" + "!"*10)
r = os.popen("kill -s SIGHUP `cat /var/run/python/supervisord.pid`").read()
logger.info(f"REBOOT : {r}")
# Helper function to split the payload into chunks
def chunk_payload(payload, chunk_size=20):
chunked_values = list(payload["values"].items())
for i in range(0, len(chunked_values), chunk_size):
yield {
"ts": payload["ts"],
"values": dict(chunked_values[i:i+chunk_size])
}
def sendData(message):
#logger.debug(message)
payload = {"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values": {}}
for measure in message["measures"]:
try:
logger.debug(measure)
if measure["name"] in ["pump_1_run_status", "pump_2_run_status", "charge_pump_run_status"]:
logger.info(measure["name"])
logger.debug("Converting DINT/BOOL to STRING")
value = convert_int(measure["name"], measure["value"])
logger.debug("Converted {} to {}".format(measure["value"], value))
payload["values"][measure["name"]] = value
payload["values"][measure["name"] + "_int"] = measure["value"]
else:
payload["values"][measure["name"]] = measure["value"]
except Exception as e:
logger.error(e)
logger.info(payload)
for chunk in chunk_payload(payload=payload):
publish(__topic__, json.dumps(chunk), __qos__, cloud_name="ThingsBoard")
time.sleep(2)
publish("v1/devices/me/attributes", json.dumps({"latestReportTime": (round(dt.timestamp(dt.now())/600)*600)*1000}), __qos__, cloud_name="ThingsBoard")
def convert_int(plc_tag, value):
status_codes = {
0: "Off",
1: "On"
}
plc_tags = {
"pump_1_run_status": status_codes.get(value, "Invalid Code"),
"pump_2_run_status": status_codes.get(value, "Invalid Code"),
"charge_pump_run_status": status_codes.get(value, "Invalid Code")
}
return plc_tags.get(plc_tag, "Invalid Tag")

View File

@@ -0,0 +1,111 @@
import json, time
from datetime import datetime as dt
from quickfaas.measure import recall, write
from quickfaas.remotebus import publish
from common.Logger import logger
# Helper function to split the payload into chunks
def chunk_payload(payload, chunk_size=20):
chunked_values = list(payload["values"].items())
for i in range(0, len(chunked_values), chunk_size):
yield {
"ts": payload["ts"],
"values": dict(chunked_values[i:i+chunk_size])
}
def sync():
#get new values and send
payload = {"ts": round(dt.timestamp(dt.now()))*1000, "values": {}}
topic = "v1/devices/me/telemetry"
try:
data = recall()#json.loads(recall().decode("utf-8"))
except Exception as e:
logger.error(e)
logger.debug(data)
for controller in data:
for measure in controller["measures"]:
#publish measure
if measure["name"] in ["pump_1_run_status", "pump_2_run_status", "charge_pump_run_status"]:
payload["values"][measure["name"]] = convert_int(measure["name"], measure["value"])
payload["values"][measure["name"]+ "_int"] = measure["value"]
else:
payload["values"][measure["name"]] = measure["value"]
logger.debug("Sending on topic: {}".format(topic))
logger.debug("Sending value: {}".format(payload))
for chunk in chunk_payload(payload=payload):
publish(topic, json.dumps(chunk), 1, cloud_name="ThingsBoard")
time.sleep(2)
def writeplctag(value):
#value in the form {"measurement": <measurement_name>, "value": <value to write>}
try:
#value = json.loads(value.replace("'",'"'))
logger.debug(value)
#payload format: [{"name": "advvfdipp", "measures": [{"name": "manualfrequencysetpoint", "value": 49}]}]
message = [{"name": "dual_flowmeter", "measures":[{"name":value["measurement"], "value": value["value"]}]}]
resp = write(message)
logger.debug("RETURN FROM WRITE: {}".format(resp))
return True
except Exception as e:
logger.debug(e)
return False
def receiveCommand(topic, payload):
try:
logger.debug(topic)
logger.debug(json.loads(payload))
p = json.loads(payload)
command = p["method"]
commands = {
"sync": sync,
"writeplctag": writeplctag,
}
if command == "setPLCTag":
try:
result = commands["writeplctag"](p["params"])
logger.debug(result)
except Exception as e:
logger.error(e)
#logger.debug(command)
ack(topic.split("/")[-1])
time.sleep(5)
sync()
except Exception as e:
logger.debug(e)
def receiveCommand(topic, payload, wizard_api):
logger.debug(topic)
logger.debug(json.loads(payload))
p = json.loads(payload)[0]
command = p["payload"]["name"].split(".")[1]
commands = {
"sync": sync,
"writeplctag": writeplctag,
}
commands[command](p["mac"].lower(),p["payload"]["value"], wizard_api)
#logger.debug(command)
ack(p["msgId"], p["mac"], command, p["payload"]["name"].split(".")[1], p["payload"]["value"], wizard_api)
def ack(msgid):
#logger.debug(msgid)
#logger.debug(mac)
#logger.debug(name)
#logger.debug(value)
publish("v1/devices/me/rpc/response/" + str(msgid), json.dumps({"msg": {"time": time.time()}, "metadata": "", "msgType": ""}), 1,cloud_name="ThingsBoard")
def convert_int(plc_tag, value):
status_codes = {
0: "Off",
1: "On"
}
plc_tags = {
"pump_1_run_status": status_codes.get(value, "Invalid Code"),
"pump_2_run_status": status_codes.get(value, "Invalid Code"),
"charge_pump_run_status": status_codes.get(value, "Invalid Code")
}
return plc_tags.get(plc_tag, "Invalid Tag")

View File

@@ -0,0 +1,26 @@
MeasuringPointName,ControllerName,GroupName,UploadType,DeadZonePercent,DataType,ArrayIndex,EnableBit,BitIndex,reverseBit,Address,Decimal,Len,ReadWrite,Unit,Description,Transform Type,MaxValue,MinValue,MaxScale,MinScale,Gain,Offset,startBit,endBit,Pt,Ct,Mapping_table,$,,,
alarm_enable_cmd,plcpond,default,periodic,,INT,,0,,,Alarm_Enable,,,rw,,,none,,,,,,,,,,,,,,,0
auto,plcpond,default,periodic,,BIT,,,,0,Auto,,,rw,,,none,,,,,,,,,,,,,0,,0
discharge_out,plcpond,default,periodic,,FLOAT,,,,,DisPSI_Out,2,,ro,,,none,,,,,,,,,,,,,,,0
fit_rate,plcpond,default,periodic,,FLOAT,,,,,FIT_Rate,2,,ro,,,none,,,,,,,,,,,,,,,0
hand,plcpond,default,periodic,,BIT,,,,0,Hand,,,ro,,,none,,,,,,,,,,,,,0,,0
off,plcpond,default,periodic,,BIT,,,,0,OFF,,,ro,,,none,,,,,,,,,,,,,0,,0
pond_1_hi_alm,plcpond,default,periodic,,BIT,,,,0,Pond_1_Hi_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,0
pond_1_hi_clr_spt,plcpond,default,periodic,,FLOAT,,,,,Pond_1_Hi_Clr_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,0
pond_1_hi_spt,plcpond,default,periodic,,FLOAT,,,,,Pond_1_Hi_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,0
pond_1_level,plcpond,default,periodic,,FLOAT,,,,,Pond_1_Lev,2,,ro,,,none,,,,,,,,,,,,,,,0
pond_1_lo_alm,plcpond,default,periodic,,BIT,,,,0,Pond_1_Lo_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,0
pond_1_lo_clr_spt,plcpond,default,periodic,,FLOAT,,,,,Pond_1_Lo_Clr_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,0
pond_1_lo_spt,plcpond,default,periodic,,FLOAT,,,,,Pond_1_Lo_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,0
pond_1_total_bbls,plcpond,default,periodic,,FLOAT,,,,,Pond_1_Total_Barrels,2,,ro,,,none,,,,,,,,,,,,,,,0
pond_2_hi_alm,plcpond,default,periodic,,BIT,,,,0,Pond_2_Hi_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,0
pond_2_hi_clr_spt,plcpond,default,periodic,,FLOAT,,,,,Pond_2_Hi_Clr_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,0
pond_2_hi_spt,plcpond,default,periodic,,FLOAT,,,,,Pond_2_Hi_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,0
pond_2_level,plcpond,default,periodic,,FLOAT,,,,,Pond_2_Lev,2,,ro,,,none,,,,,,,,,,,,,,,0
pond_2_lo_alm,plcpond,default,periodic,,BIT,,,,0,Pond_2_Lo_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,0
pond_2_lo_clr_spt,plcpond,default,periodic,,FLOAT,,,,,Pond_2_Lo_Clr_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,0
pond_2_lo_spt,plcpond,default,periodic,,FLOAT,,,,,Pond_2_Lo_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,0
pond_2_total_bbls,plcpond,default,periodic,,FLOAT,,,,,Pond_2_Total_Barrels,2,,ro,,,none,,,,,,,,,,,,,,,0
pump_permissive,plcpond,default,periodic,,BIT,,,,0,Pump_Permissive,,,ro,,,none,,,,,,,,,,,,,0,,0
pump_status,plcpond,default,periodic,,BIT,,,,0,Pump_Status,,,ro,,,none,,,,,,,,,,,,,0,,0
run_permissive,plcpond,default,periodic,,BIT,,,,0,Run_Perm,,,ro,,,none,,,,,,,,,,,,,0,,0
1 MeasuringPointName ControllerName GroupName UploadType DeadZonePercent DataType ArrayIndex EnableBit BitIndex reverseBit Address Decimal Len ReadWrite Unit Description Transform Type MaxValue MinValue MaxScale MinScale Gain Offset startBit endBit Pt Ct Mapping_table $
2 alarm_enable_cmd plcpond default periodic INT 0 Alarm_Enable rw none 0
3 auto plcpond default periodic BIT 0 Auto rw none 0 0
4 discharge_out plcpond default periodic FLOAT DisPSI_Out 2 ro none 0
5 fit_rate plcpond default periodic FLOAT FIT_Rate 2 ro none 0
6 hand plcpond default periodic BIT 0 Hand ro none 0 0
7 off plcpond default periodic BIT 0 OFF ro none 0 0
8 pond_1_hi_alm plcpond default periodic BIT 0 Pond_1_Hi_Alarm ro none 0 0
9 pond_1_hi_clr_spt plcpond default periodic FLOAT Pond_1_Hi_Clr_Setpoint 2 rw none 0
10 pond_1_hi_spt plcpond default periodic FLOAT Pond_1_Hi_Setpoint 2 rw none 0
11 pond_1_level plcpond default periodic FLOAT Pond_1_Lev 2 ro none 0
12 pond_1_lo_alm plcpond default periodic BIT 0 Pond_1_Lo_Alarm ro none 0 0
13 pond_1_lo_clr_spt plcpond default periodic FLOAT Pond_1_Lo_Clr_Setpoint 2 rw none 0
14 pond_1_lo_spt plcpond default periodic FLOAT Pond_1_Lo_Setpoint 2 rw none 0
15 pond_1_total_bbls plcpond default periodic FLOAT Pond_1_Total_Barrels 2 ro none 0
16 pond_2_hi_alm plcpond default periodic BIT 0 Pond_2_Hi_Alarm ro none 0 0
17 pond_2_hi_clr_spt plcpond default periodic FLOAT Pond_2_Hi_Clr_Setpoint 2 rw none 0
18 pond_2_hi_spt plcpond default periodic FLOAT Pond_2_Hi_Setpoint 2 rw none 0
19 pond_2_level plcpond default periodic FLOAT Pond_2_Lev 2 ro none 0
20 pond_2_lo_alm plcpond default periodic BIT 0 Pond_2_Lo_Alarm ro none 0 0
21 pond_2_lo_clr_spt plcpond default periodic FLOAT Pond_2_Lo_Clr_Setpoint 2 rw none 0
22 pond_2_lo_spt plcpond default periodic FLOAT Pond_2_Lo_Setpoint 2 rw none 0
23 pond_2_total_bbls plcpond default periodic FLOAT Pond_2_Total_Barrels 2 ro none 0
24 pump_permissive plcpond default periodic BIT 0 Pump_Permissive ro none 0 0
25 pump_status plcpond default periodic BIT 0 Pump_Status ro none 0 0
26 run_permissive plcpond default periodic BIT 0 Run_Perm ro none 0 0

View File

@@ -1,61 +1,79 @@
# Enter your python code.
import json, os, time, shutil
import json, os, time
from datetime import datetime as dt
from common.Logger import logger
from quickfaas.remotebus import publish
from quickfaas.global_dict import get as get_params
from quickfaas.global_dict import _set_global_args
def chunk_payload(payload, chunk_size=20):
if "values" in payload:
# Original format: {"ts": ..., "values": {...}}
chunked_values = list(payload["values"].items())
for i in range(0, len(chunked_values), chunk_size):
yield {
"ts": payload["ts"],
"values": dict(chunked_values[i:i+chunk_size])
}
def chunk_payload(payload, chunk_size=20, is_attributes_payload=False):
if is_attributes_payload:
# For attributes payload, chunk the controllers
controllers = list(payload.items())
for i in range(0, len(controllers), chunk_size):
yield dict(controllers[i:i + chunk_size])
else:
# New format: {"key1": "value1", "key2": "value2"}
chunked_keys = list(payload.keys())
for i in range(0, len(chunked_keys), chunk_size):
yield {k: payload[k] for k in chunked_keys[i:i+chunk_size]}
# For data payload, chunk the values within each controller
for controller, data in payload.items():
for entry in data:
ts = entry['ts']
values = entry['values']
chunked_values = list(values.items())
for i in range(0, len(chunked_values), chunk_size):
yield {
controller:[
{
"ts": ts,
"values": dict(chunked_values[i:i + chunk_size])}
]
}
def sendData(message):
#logger.debug(message)
payload = {"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values": {}}
attributes_payload = {}
#logger.info(message)
# Extract measures and group by ctrlName
grouped_data = {}
grouped_attributes = {}
now = (round(dt.timestamp(dt.now())/600)*600)*1000
resetPayload = {"ts": "", "values": {}}
dayReset, weekReset, monthReset, yearReset = False, False, False, False
for measure in message["measures"]:
try:
logger.debug(measure)
if measure["health"] == 1:
if "_spt" in measure["name"]:
attributes_payload[measure["name"]] = measure["value"]
elif measure in ["totalizer_1"]:
payload["values"]["day_volume"], dayReset = totalizeDay(measure["value"])
payload["values"]["week_volume"], weekReset = totalizeWeek(measure["value"])
payload["values"]["month_volume"], monthReset = totalizeMonth(measure["value"])
payload["values"]["year_volume"], yearReset = totalizeYear(measure["value"])
payload["values"][measure["name"]] = measure["value"]
except Exception as e:
logger.error(e)
for measure in message['measures']:
ctrlName = " ".join(measure['ctrlName'].split("_"))
name = measure['name']
value = measure['value']
health = measure['health']
#Add controller for telemetry if it doesn't exist
if ctrlName not in grouped_data:
grouped_data[ctrlName] = {}
#Add controller for attributes if it doesn't exist
if ctrlName not in grouped_attributes:
grouped_attributes[ctrlName] = {}
#Add data to temp payload if datapoint health is good
if health:
if "_spt" in name and "transfer" in ctrlName.lower():
grouped_attributes[ctrlName][name] = value
elif "totalizer_1" in name:
grouped_data[ctrlName]["day_volume"], dayReset = totalizeDay(value)
grouped_data[ctrlName]["week_volume"], weekReset = totalizeWeek(value)
grouped_data[ctrlName]["month_volume"], monthReset = totalizeMonth(value)
grouped_data[ctrlName]["year_volume"], yearReset = totalizeYear(value)
elif name == "alarm_enable_cmd":
gatewayData = {"ts": now, "values": {name: value, "connected": True}}
grouped_data[ctrlName][name] = value
grouped_attributes[ctrlName]["latestReportTime"] = now
#logger.info(grouped_data)
# Transform the grouped data to desired structure
payload = {}
for key, value in grouped_data.items():
if value:
payload[key] = [{"ts": now ,"values": value}]
attributes_payload = {}
for key, value in grouped_attributes.items():
if value:
attributes_payload[key] = value
for chunk in chunk_payload(payload=payload):
publish(__topic__, json.dumps(chunk), __qos__, cloud_name="FK Transfer")
time.sleep(2)
attributes_payload["latestReportTime"] = (round(dt.timestamp(dt.now())/600)*600)*1000
for chunk in chunk_payload(payload=attributes_payload):
publish("v1/devices/me/attributes", json.dumps(chunk), __qos__, cloud_name="FK Transfer")
time.sleep(2)
if dayReset:
logger.info("MADE IT TO DAY RESET")
resetPayload["values"]["yesterday_volume"] = payload["values"]["day_volume"]
resetPayload["values"]["day_volume"] = 0
if weekReset:
@@ -66,11 +84,29 @@ def sendData(message):
resetPayload["values"]["month_volume"] = 0
if yearReset:
resetPayload["values"]["last_year_volume"] = payload["values"]["year_volume"]
resetPayload["values"]["year_volume"] = 0
resetPayload["values"]["year_volume"] = 0
if resetPayload["values"]:
resetPayload["ts"] = 1 + (round(dt.timestamp(dt.now())/600)*600)*1000
publish(__topic__, json.dumps(resetPayload), __qos__, cloud_name="FK Transfer")
logger.info("MADE IT TO APPEND RESET")
payload["AA Transfer"].append({"ts": now + 1000 ,"values": resetPayload["values"]})
logger.info(json.dumps(payload, indent=4))
#logger.info(json.dumps(payload, indent=4))
#logger.debug(payload)
#publish(__topic__, json.dumps(payload), __qos__,cloud_name="default")
publish("v1/gateway/attributes", json.dumps(attributes_payload), __qos__,cloud_name="default")
publish("v1/devices/me/telemetry", json.dumps(gatewayData), __qos__, cloud_name="default")
for chunk in chunk_payload(payload=payload):
publish(__topic__, json.dumps(chunk), __qos__, cloud_name="default")
#logger.info(json.dumps(chunk, indent=4))
time.sleep(2)
"""
for chunk in chunk_payload(payload=attributes_payload, is_attributes_payload=True):
publish("v1/gateway/attributes", json.dumps(chunk), __qos__, cloud_name="default")
logger.info(json.dumps(chunk, indent=4))
time.sleep(2)
"""
def initialize_totalizers():

View File

@@ -0,0 +1,278 @@
import json, time
from datetime import datetime as dt
from quickfaas.measure import recall, write
from quickfaas.remotebus import publish
from common.Logger import logger
# Helper function to split the payload into chunks
def chunk_payload(payload, chunk_size=20):
chunked_values = list(payload["values"].items())
for i in range(0, len(chunked_values), chunk_size):
yield {
"ts": payload["ts"],
"values": dict(chunked_values[i:i+chunk_size])
}
def sync():
#get new values and send
payload = {"ts": round(dt.timestamp(dt.now()))*1000, "values": {}}
topic = "v1/devices/me/telemetry"
try:
data = recall()#json.loads(recall().decode("utf-8"))
except Exception as e:
logger.error(e)
logger.debug(data)
for controller in data:
for measure in controller["measures"]:
#publish measure
if measure["name"] in ["wellstatus","pidcontrolmode","downholesensorstatus","alarmflowrate","alarmintakepressure","alarmintaketemperature","alarmtubingpressure","alarmvfd","alarmlockout","alarmfluidlevel","runpermissive","startpermissive","last_vfd_fault_code","vfd_fault", "flowmeter_fault"]:
payload["values"][measure["name"]] = convert_int(measure["name"], measure["value"])
payload["values"][measure["name"]+ "_int"] = measure["value"]
else:
payload["values"][measure["name"]] = measure["value"]
logger.debug("Sending on topic: {}".format(topic))
logger.debug("Sending value: {}".format(payload))
for chunk in chunk_payload(payload=payload):
publish(topic, json.dumps(chunk), 1, cloud_name="ThingsBoard")
time.sleep(2)
def writeplctag(value):
#value in the form {"measurement": <measurement_name>, "value": <value to write>}
try:
#value = json.loads(value.replace("'",'"'))
logger.debug(value)
#payload format: [{"name": "advvfdipp", "measures": [{"name": "manualfrequencysetpoint", "value": 49}]}]
message = [{"name": "advvfdipp", "measures":[{"name":value["measurement"], "value": value["value"]}]}]
resp = write(message)
logger.debug("RETURN FROM WRITE: {}".format(resp))
return True
except Exception as e:
logger.debug(e)
return False
def receiveCommand(topic, payload):
try:
logger.debug(topic)
logger.debug(json.loads(payload))
p = json.loads(payload)
command = p["method"]
commands = {
"sync": sync,
"writeplctag": writeplctag,
}
if command == "setPLCTag":
try:
result = commands["writeplctag"](p["params"])
logger.debug(result)
except Exception as e:
logger.error(e)
elif command == "changeSetpoint":
try:
logger.debug("attempting controlpoint write")
params_type = {"measurement": "pidcontrolmode", "value": p["params"]["setpointType"]}
if params_type["value"]:
commands["writeplctag"](params_type)
time.sleep(2)
except Exception as e:
logger.error("DID NOT WRITE CONTROL MODE")
logger.error(e)
try:
logger.debug("attempting setpoint write")
modes = {0: "flowsetpoint", 1: "fluidlevelsetpoint", 2: "tubingpressuresetpoint", 3: "manualfrequencysetpoint"}
params_value = {"value": p["params"]["setpointValue"]}
if params_value["value"]:
params_value["measurement"] = modes[getMode()]
result = commands["writeplctag"](params_value)
logger.debug(result)
except Exception as e:
logger.error("DID NOT WRITE SETPOINT")
logger.error(e)
#logger.debug(command)
ack(topic.split("/")[-1])
time.sleep(5)
sync()
except Exception as e:
logger.debug(e)
def ack(msgid):
#logger.debug(msgid)
#logger.debug(mac)
#logger.debug(name)
#logger.debug(value)
publish("v1/devices/me/rpc/response/" + str(msgid), json.dumps({"msg": {"time": time.time()}, "metadata": "", "msgType": ""}), 1,cloud_name="ThingsBoard")
def getMode():
try:
data = recall()
for controller in data:
for measure in controller["measures"]:
if measure["name"] == "pidcontrolmode":
return measure["value"]
except:
return None
def convert_int(plc_tag, value):
well_status_codes = {
0: "Running",
1: "Pumped Off",
2: "Alarmed",
3: "Locked Out",
4: "Stopped"
}
pid_control_codes = {
0: "Flow",
1: "Fluid Level",
2: "Tubing Pressure",
3: "Manual"
}
downhole_codes = {
0: "OK",
1: "Connecting",
2: "Open Circuit",
3: "Shorted",
4: "Cannot Decode"
}
permissive_codes = {
0: "OK",
1: "Flow",
2: "Intake Pressure",
3: "Intake Temperature",
4: "Tubing Pressure",
5: "VFD",
6: "Fluid Level",
7: "Min. Downtime"
}
alarm_codes = {
0: "OK",
1: "Alarm"
}
alarm_vfd_codes = {
0: "OK",
1: "Locked Out"
}
vfd_fault_codes = {
0: "No Fault",
2: "Auxiliary Input",
3: "Power Loss",
4: "UnderVoltage",
5: "OverVoltage",
7: "Motor Overload",
8: "Heatsink OverTemp",
9: "Thermister OverTemp",
10: "Dynamic Brake OverTemp",
12: "Hardware OverCurrent",
13: "Ground Fault",
14: "Ground Warning",
15: "Load Loss",
17: "Input Phase Loss",
18: "Motor PTC Trip",
19: "Task Overrun",
20: "Torque Prove Speed Band",
21: "Output Phase Loss",
24: "Decel Inhibit",
25: "OverSpeed Limit",
26: "Brake Slipped",
27: "Torque Prove Conflict",
28: "TP Encls Confict",
29: "Analog In Loss",
33: "Auto Restarts Exhausted",
35: "IPM OverCurrent",
36: "SW OverCurrent",
38: "Phase U to Ground",
39: "Phase V to Ground",
40: "Phase W to Ground",
41: "Phase UV Short",
42: "Phase VW Short",
43: "Phase WU Short",
44: "Phase UNeg to Ground",
45: "Phase VNeg to Ground",
46: "Phase WNeg to Ground",
48: "System Defaulted",
49: "Drive Powerup",
51: "Clear Fault Queue",
55: "Control Board Overtemp",
59: "Invalid Code",
61: "Shear Pin 1",
62: "Shear Pin 2",
64: "Drive Overload",
66: "OW Torque Level",
67: "Pump Off",
71: "Port 1 Adapter",
72: "Port 2 Adapter",
73: "Port 3 Adapter",
74: "Port 4 Adapter",
75: "Port 5 Adapter",
76: "Port 6 Adapter",
77: "IR Volts Range",
78: "FluxAmps Ref Range",
79: "Excessive Load",
80: "AutoTune Aborted",
81: "Port 1 DPI Loss",
82: "Port 2 DPI Loss",
83: "Port 3 DPI Loss",
84: "Port 4 DPI Loss",
85: "Port 5 DPI Loss",
86: "Port 6 DPI Loss",
87: "IXo Voltage Range",
91: "Primary Velocity Feedback Loss",
93: "Hardware Enable Check",
94: "Alternate Velocity Feedback Loss",
95: "Auxiliary Velocity Feedback Loss",
96: "Position Feedback Loss",
97: "Auto Tach Switch",
100: "Parameter Checksum",
101: "Power Down NVS Blank",
102: "NVS Not Blank",
103: "Power Down NVS Incompatible",
104: "Power Board Checksum",
106: "Incompat MCB-PB",
107: "Replaced MCB-PB",
108: "Analog Calibration Checksum",
110: "Invalid Power Board Data",
111: "Power Board Invalid ID",
112: "Power Board App Min Version",
113: "Tracking DataError",
115: "Power Down Table Full",
116: "Power Down Entry Too Large",
117: "Power Down Data Checksum",
118: "Power Board Power Down Checksum",
124: "App ID Changed",
125: "Using Backup App",
134: "Start on Power Up",
137: "External Precharge Error",
138: "Precharge Open",
141: "Autotune Enc Angle",
142: "Autotune Speed Restricted",
143: "Autotune Current Regulator",
144: "Autotune Inertia",
145: "Autotune Travel",
13035: "Net IO Timeout",
13037: "Net IO Timeout"
}
plc_tags = {
"wellstatus": well_status_codes.get(value, "Invalid Code"),
"pidcontrolmode": pid_control_codes.get(value, "Invalid Code"),
"downholesensorstatus": downhole_codes.get(value, "Invalid Code"),
"alarmflowrate": alarm_codes.get(value, "Invalid Code"),
"alarmintakepressure": alarm_codes.get(value, "Invalid Code"),
"alarmintaketemperature": alarm_codes.get(value, "Invalid Code"),
"alarmtubingpressure": alarm_codes.get(value, "Invalid Code"),
"alarmvfd": alarm_codes.get(value, "Invalid Code"),
"alarmlockout": alarm_vfd_codes.get(value, "Invalid Code"),
"alarmfluidlevel": alarm_codes.get(value, "Invalid Code"),
"runpermissive": permissive_codes.get(value, "Invalid Code"),
"startpermissive": permissive_codes.get(value, "Invalid Code"),
"last_vfd_fault_code": vfd_fault_codes.get(value, "Invalid Code"),
"vfd_fault": vfd_fault_codes.get(value, "Invalid Code"),
"flowmeter_fault": alarm_codes.get(value, "Invalid Code")
}
return plc_tags.get(plc_tag, "Invalid Tag")

View File

@@ -0,0 +1,509 @@
# Enter your python code.
import json, os, time, shutil
from datetime import datetime as dt
from common.Logger import logger
from quickfaas.remotebus import publish
from quickfaas.global_dict import get as get_params
from quickfaas.global_dict import _set_global_args
from mobiuspi_lib.gps import GPS
payload = {}
def initialize_totalizers():
return {
"totalizer_1_day": 0,
"totalizer_1_week": 0,
"totalizer_1_month": 0,
"totalizer_1_year": 0,
"totalizer_1_lifetime": 0,
"totalizer_1_dayHolding": 0,
"totalizer_1_weekHolding": 0,
"totalizer_1_monthHolding": 0,
"totalizer_1_yearHolding": 0,
"totalizer_1_rolloverCounter": 0,
"totalizer_2_day": 0,
"totalizer_2_week": 0,
"totalizer_2_month": 0,
"totalizer_2_year": 0,
"totalizer_2_lifetime": 0,
"totalizer_2_dayHolding": 0,
"totalizer_2_weekHolding": 0,
"totalizer_2_monthHolding": 0,
"totalizer_2_yearHolding": 0,
"totalizer_2_rolloverCounter": 0,
"totalizer_3_day": 0,
"totalizer_3_week": 0,
"totalizer_3_month": 0,
"totalizer_3_year": 0,
"totalizer_3_lifetime": 0,
"totalizer_3_dayHolding": 0,
"totalizer_3_weekHolding": 0,
"totalizer_3_monthHolding": 0,
"totalizer_3_yearHolding": 0,
"totalizer_3_rolloverCounter": 0
}
def getTotalizers(file_path="/var/user/files/totalizers.json"):
"""
Retrieves totalizer data from a JSON file.
:param file_path: Path to the JSON file storing totalizer data.
:return: Dictionary containing totalizer values.
"""
try:
with open(file_path, "r") as t:
totalizers = json.load(t)
if not totalizers or not isinstance(totalizers, dict):
logger.info("Invalid data format in the file. Initializing totalizers.")
totalizers = initialize_totalizers()
except FileNotFoundError:
logger.info("File not found. Initializing totalizers.")
totalizers = initialize_totalizers()
except json.JSONDecodeError:
timestamp = dt.now().strftime("%Y%m%d_%H%M%S")
# Split the file path and insert the timestamp before the extension
file_name, file_extension = os.path.splitext(file_path)
backup_file_path = f"{file_name}_{timestamp}{file_extension}"
shutil.copyfile(file_path, backup_file_path)
logger.error(f"Error decoding JSON. A backup of the file is created at {backup_file_path}. Initializing totalizers.")
totalizers = initialize_totalizers()
return totalizers
def chunk_payload(payload, chunk_size=20):
if "values" in payload:
# Original format: {"ts": ..., "values": {...}}
chunked_values = list(payload["values"].items())
for i in range(0, len(chunked_values), chunk_size):
yield {
"ts": payload["ts"],
"values": dict(chunked_values[i:i+chunk_size])
}
else:
# New format: {"key1": "value1", "key2": "value2"}
chunked_keys = list(payload.keys())
for i in range(0, len(chunked_keys), chunk_size):
yield {k: payload[k] for k in chunked_keys[i:i+chunk_size]}
def sendData(message):
logger.debug(message)
payload = {"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values": {}}
resetPayload = {"ts": "", "values": {}}
dayReset, weekReset, monthReset, yearReset = False, False, False, False
for measure in message['measures']:
try:
if measure["health"] == 1:
if measure["name"] in ["totalizer_1", "totalizer_2", "totalizer_3"]:
payload["values"]["year_" + measure["name"]], yearReset = totalizeYear(measure["value"], measure["name"])
payload["values"]["month_" + measure["name"]], monthReset = totalizeMonth(measure["value"], measure["name"])
payload["values"]["week_" + measure["name"]], weekReset = totalizeWeek(measure["value"], measure["name"])
payload["values"]["today_" + measure["name"]], dayReset = totalizeDay(measure["value"], measure["name"])
elif measure["name"] in ["totalizer_1_units", "totalizer_2_units", "totalizer_3_units", "flow_unit", "run_status", "fault_a", "fault_b"]:
payload["values"][measure["name"]] = convert_int(measure["name"], measure["value"])
else:
payload["values"][measure["name"]] = measure["value"]
except Exception as e:
logger.error(e)
for chunk in chunk_payload(payload=payload):
publish(__topic__, json.dumps(chunk), __qos__)
time.sleep(2)
try:
publish("v1/devices/me/attributes", json.dumps({"latestReportTime": (round(dt.timestamp(dt.now())/600)*600)*1000}), __qos__)
except Exception as e:
logger.error(e)
if dayReset:
resetPayload["values"]["yesterday_totalizer_1"] = payload["values"]["today_totalizer_1"]
resetPayload["values"]["yesterday_totalizer_2"] = payload["values"]["today_totalizer_2"]
resetPayload["values"]["yesterday_totalizer_3"] = payload["values"]["today_totalizer_3"]
resetPayload["values"]["today_totalizer_1"] = 0
resetPayload["values"]["today_totalizer_2"] = 0
resetPayload["values"]["today_totalizer_3"] = 0
if weekReset:
resetPayload["values"]["last_week_totalizer_1"] = payload["values"]["week_totalizer_1"]
resetPayload["values"]["last_week_totalizer_2"] = payload["values"]["week_totalizer_1"]
resetPayload["values"]["last_week_totalizer_3"] = payload["values"]["week_totalizer_3"]
resetPayload["values"]["week_totalizer_1"] = 0
resetPayload["values"]["week_totalizer_2"] = 0
resetPayload["values"]["week_totalizer_3"] = 0
if monthReset:
resetPayload["values"]["last_month_totalizer_1"] = payload["values"]["month_totalizer_1"]
resetPayload["values"]["last_month_totalizer_2"] = payload["values"]["month_totalizer_2"]
resetPayload["values"]["last_month_totalizer_3"] = payload["values"]["month_totalizer_3"]
resetPayload["values"]["month_totalizer_1"] = 0
resetPayload["values"]["month_totalizer_2"] = 0
resetPayload["values"]["month_totalizer_3"] = 0
if yearReset:
resetPayload["values"]["last_year_totalizer_1"] = payload["values"]["year_totalizer_1"]
resetPayload["values"]["last_year_totalizer_2"] = payload["values"]["year_totalizer_2"]
resetPayload["values"]["last_year_totalizer_3"] = payload["values"]["year_totalizer_3"]
resetPayload["values"]["year_totalizer_1"] = 0
resetPayload["values"]["year_totalizer_2"] = 0
resetPayload["values"]["year_totalizer_3"] = 0
if resetPayload["values"]:
resetPayload["ts"] = 1 + (round(dt.timestamp(dt.now())/600)*600)*1000
publish(__topic__, json.dumps(resetPayload), __qos__)
def saveTotalizers(totalizers, file_path="/var/user/files/totalizers.json"):
"""
Saves totalizer data to a JSON file.
:param totalizers: Dictionary containing totalizer values to be saved.
:param file_path: Path to the JSON file where totalizer data will be saved.
"""
try:
with open(file_path, "w") as t:
json.dump(totalizers, t)
except (IOError, OSError, json.JSONEncodeError) as e:
logger.error(f"Error saving totalizers to {file_path}: {e}")
raise # Optionally re-raise the exception if it should be handled by the caller
def totalizeDay(lifetime, totalizer, max_retries=3, retry_delay=2):
"""
Update and save daily totalizers based on the lifetime value.
:param lifetime: The current lifetime total.
:param max_retries: Maximum number of save attempts.
:param retry_delay: Delay in seconds between retries.
:return: A tuple containing the calculated value and a boolean indicating if a reset occurred, or (None, False) if save fails.
"""
totalizers = getTotalizers()
now = dt.fromtimestamp(round(dt.timestamp(dt.now())/600)*600)
reset = False
value = (lifetime + totalizers[totalizer + "_rolloverCounter"] * 10000000) - totalizers[totalizer + "_dayHolding"]
if not int(now.strftime("%d")) == int(totalizers[totalizer + "_day"]):
totalizers[totalizer + "_dayHolding"] = lifetime + totalizers[totalizer + "_rolloverCounter"] * 10000000
totalizers[totalizer + "_day"] = int(now.strftime("%d"))
for attempt in range(max_retries):
try:
saveTotalizers(totalizers)
reset = True
return (value, reset)
except Exception as e:
logger.error(f"Attempt {attempt + 1} failed to save totalizers: {e}")
if attempt < max_retries - 1:
time.sleep(retry_delay)
else:
logger.error("All attempts to save totalizers failed.")
return (None, False)
return (value, reset)
def totalizeWeek(lifetime, totalizer, max_retries=3, retry_delay=2):
"""
Update and save weekly totalizers based on the lifetime value.
:param lifetime: The current lifetime total.
:param max_retries: Maximum number of save attempts.
:param retry_delay: Delay in seconds between retries.
:return: A tuple containing the calculated value and a boolean indicating if a reset occurred, or (None, False) if save fails.
"""
totalizers = getTotalizers()
now = dt.fromtimestamp(round(dt.timestamp(dt.now())/600)*600)
reset = False
value = (lifetime + totalizers[totalizer + "_rolloverCounter"] * 10000000) - totalizers[totalizer + "_weekHolding"]
if (not now.strftime("%U") == totalizers[totalizer + "_week"] and now.strftime("%a") == "Sun") or totalizers[totalizer + "_week"] == 0:
totalizers[totalizer + "_weekHolding"] = lifetime + totalizers[totalizer + "_rolloverCounter"] * 10000000
totalizers[totalizer + "_week"] = now.strftime("%U")
for attempt in range(max_retries):
try:
saveTotalizers(totalizers)
reset = True
return (value, reset)
except Exception as e:
logger.error(f"Attempt {attempt + 1} failed to save totalizers: {e}")
if attempt < max_retries - 1:
time.sleep(retry_delay)
else:
logger.error("All attempts to save totalizers failed.")
return (None, False)
return (value, reset)
def totalizeMonth(lifetime, totalizer, max_retries=3, retry_delay=2):
"""
Update and save monthly totalizers based on the lifetime value.
:param lifetime: The current lifetime total.
:param max_retries: Maximum number of save attempts.
:param retry_delay: Delay in seconds between retries.
:return: A tuple containing the calculated value and a boolean indicating if a reset occurred, or (None, False) if save fails.
"""
totalizers = getTotalizers()
now = dt.fromtimestamp(round(dt.timestamp(dt.now())/600)*600)
reset = False
value = (lifetime + totalizers[totalizer + "_rolloverCounter"] * 10000000) - totalizers[totalizer + "_monthHolding"]
if not int(now.strftime("%m")) == int(totalizers[totalizer + "_month"]):
totalizers[totalizer + "_monthHolding"] = lifetime + totalizers[totalizer + "_rolloverCounter"] * 10000000
totalizers[totalizer + "_month"] = now.strftime("%m")
for attempt in range(max_retries):
try:
saveTotalizers(totalizers)
reset = True
return (value, reset)
except Exception as e:
logger.error(f"Attempt {attempt + 1} failed to save totalizers: {e}")
if attempt < max_retries - 1:
time.sleep(retry_delay)
else:
logger.error("All attempts to save totalizers failed.")
return (None, False)
return (value,reset)
def totalizeYear(lifetime, totalizer, max_retries=3, retry_delay=2):
"""
Update and save yearly totalizers based on the lifetime value.
:param lifetime: The current lifetime total.
:param max_retries: Maximum number of save attempts.
:param retry_delay: Delay in seconds between retries.
:return: A tuple containing the calculated value and a boolean indicating if a reset occurred, or (None, False) if save fails.
"""
totalizers = getTotalizers()
if not totalizers.get("rolloverCounter"):
totalizers[totalizer + "_rolloverCounter"] = 0
totalizers[totalizer + "_lastRawLifetime"] = lifetime
now = dt.fromtimestamp(round(dt.timestamp(dt.now())/600)*600)
reset = False
if totalizers[totalizer + "_lastRawLifetime"] > lifetime:
totalizers[totalizer + "_rolloverCounter"] += 1
totalizers[totalizer + "_lastRawLifetime"] = lifetime
value = (lifetime + totalizers[totalizer + "_rolloverCounter"] * 10000000) - totalizers[totalizer + "_yearHolding"]
if not int(now.strftime("%Y")) == int(totalizers[totalizer + "_year"]):
totalizers[totalizer + "_yearHolding"] = lifetime
totalizers[totalizer + "_year"] = now.strftime("%Y")
totalizers[totalizer + "_rolloverCounter"] = 0
for attempt in range(max_retries):
try:
saveTotalizers(totalizers)
reset = True
return (value, reset)
except Exception as e:
logger.error(f"Attempt {attempt + 1} failed to save totalizers: {e}")
if attempt < max_retries - 1:
time.sleep(retry_delay)
else:
logger.error("All attempts to save totalizers failed.")
return (None, False)
def decode_status(value):
drive_status_codes = {
15: "Reversed",
14: "REM. Freq",
13: "REM. R/S",
12: "Reverse operation command",
11: "Forward operation command",
10: "Brake release signal",
9: "-(Not used)",
8: "Drive stopped.",
7: "DC Braking",
6: "Speed reached",
5: "Decelerating",
4: "Accelerating",
3: "Fault trip",
2: "Operating in reverse direction",
1: "Operating in forward direction",
0: "Stopped",
}
# List to collect the active bits' descriptions
active_bits = []
# Iterate through each bit
for bit, description in drive_status_codes.items():
if value & (1 << bit): # Check if the bit is set
active_bits.append(description)
return ", ".join(active_bits)
def convert_int(measure, value):
totalizer_codes = {
0: "cm cubed",
1: "dm cubed",
2: "m cubed",
3: "ml",
4: "l",
5: "hl",
6: "Ml Mega",
8: "af",
9: "ft cubed",
10: "fl oz (us)",
11: "gal (us)",
12: "Mgal (us)",
13: "bbl (us;liq.)",
14: "bbl (us;beer)",
15: "bbl (us;oil)",
16: "bbl (us;tank)",
17: "gal (imp)",
18: "Mgal (imp)",
19: "bbl (imp;beer)",
20: "bbl (imp;oil)",
22: "kgal (us)",
23: "Mft cubed",
50: "g",
51: "kg",
52: "t",
53: "oz",
54: "lb",
55: "STon",
100: "Nl",
101: "Nm cubed",
102: "Sm cubed",
103: "Sft cubed",
104: "Sl",
105: "Sgal (us)",
106: "Sbbl (us;liq.)",
107: "Sgal (imp)",
108: "Sbbl (us;oil)",
109: "MMSft cubed",
110: "Nhl",
251: "None"
}
flow_codes = {
0: "cm cubed/s",
1: "cm cubed/min",
2: "cm cubed/h",
3: "cm cubed/d",
4: "dm cubed/s",
5: "dm cubed/min",
6: "dm cubed/h",
7: "dm cubed/d",
8: "m cubed/s",
9: "m cubed/min",
10: "m cubed/h",
11: "m cubed/d",
12: "ml/s",
13: "ml/min",
14: "ml/h",
15: "ml/d",
16: "l/s",
17: "l/min",
18: "l/h (+)",
19: "l/d",
20: "hl/s",
21: "hl/min",
22: "hl/h",
23: "hl/d",
24: "Ml/s",
25: "Ml/min",
26: "Ml/h",
27: "Ml/d",
32: "af/s",
33: "af/min",
34: "af/h",
35: "af/d",
36: "ft cubed/s",
37: "ft cubed/min",
38: "ft cubed/h",
39: "ft cubed/d",
40: "fl oz/s (us)",
41: "fl oz/min (us)",
42: "fl oz/h (us)",
43: "fl oz/d (us)",
44: "gal/s (us)",
45: "gal/min (us)",
46: "gal/h (us)",
47: "gal/d (us)",
48: "Mgal/s (us)",
49: "Mgal/min (us)",
50: "Mgal/h (us)",
51: "Mgal/d (us)",
52: "bbl/s (us;liq.)",
53: "bbl/min (us;liq.)",
54: "bbl/h (us;liq.)",
55: "bbl/d (us;liq.)",
56: "bbl/s (us;beer)",
57: "bbl/min (us;beer)",
58: "bbl/h (us;beer)",
59: "bbl/d (us;beer)",
60: "bbl/s (us;oil)",
61: "bbl/min (us;oil)",
62: "bbl/h (us;oil)",
63: "bbl/d (us;oil)",
64: "bbl/s (us;tank)",
65: "bbl/min (us;tank)",
66: "bbl/h (us;tank)",
67: "bbl/d (us;tank)",
68: "gal/s (imp)",
69: "gal/min (imp)",
70: "gal/h (imp)",
71: "gal/d (imp)",
72: "Mgal/s (imp)",
73: "Mgal/min (imp)",
74: "Mgal/h (imp)",
75: "Mgal/d (imp)",
76: "bbl/s (imp;beer)",
77: "bbl/min (imp;beer)",
78: "bbl/h (imp;beer)",
79: "bbl/d (imp;beer)",
80: "bbl/s (imp;oil)",
81: "bbl/min (imp;oil)",
82: "bbl/h (imp;oil)",
83: "bbl/d (imp;oil)",
88: "kgal/s (us)",
89: "kgal/min (us)",
90: "kgal/h (us)",
91: "kgal/d (us)",
92: "MMft cubed/s",
93: "MMft cubed/min",
94: "MMft cubed/h",
96: "Mft cubed/d"
}
drive_fault_a_codes = {
0: "Overload Trip",
1: "Underload Trip",
2: "Inverter Overload Trip",
3: "E-Thermal Trip",
4: "Ground Fault Trip",
5: "Output Image Trip",
6: "Inmput Imaging Trip",
7: "Reserved",
8: "Reserved",
9: "NTC Trip",
10: "Overcurrent Trip",
11: "Overvoltage Trip",
12: "External Trip",
13: "Arm Short",
14: "Over Heat Trip",
15: "Fuse Open Trip"
}
drive_fault_b_codes = {
0: "Reserved",
1: "Reserved",
2: "Reserved",
3: "FAN Trip",
4: "Reserved",
5: "Reserved",
6: "Pre PID Fail",
7: "Bad contact at basic I/O board",
8: "External Brake Trip",
9: "No Motor Trip",
10: "Bad Option Card",
11: "Reserved",
12: "Reserved",
13: "Reserved",
14: "Pre Over Heat Trip",
15: "Reserved"
}
piflow = {
"totalizer_1_units": totalizer_codes.get(value, "Invalid Code"),
"totalizer_2_units": totalizer_codes.get(value, "Invalid Code"),
"totalizer_3_units": totalizer_codes.get(value, "Invalid Code"),
"flow_unit": flow_codes.get(value, "Invalid Code"),
"fault_a": drive_fault_a_codes.get(value, "Invalid Code"),
"fault_b": drive_fault_b_codes.get(value, "Invalid Code"),
"run_status": decode_status(value)
}
return piflow.get(measure, "Invalid Tag")

View File

@@ -0,0 +1,92 @@
AlarmName,ControllerName,MeasuringPointName,AlarmLevel,Condition1,Operand1,CombineMethod,Condition2,Operand2,AlarmContent,AlarmTag
pond_level_input_alm,rr_facility,pond_level_input_alm,5,eq,1,none,eq,,pond level input failure alarm,default
tp_1_charge_pump_fail_to_start_alm,rr_facility,tp_1_charge_pump_fail_to_start_alm,5,eq,1,none,eq,,tp 1 charge pump failure,default
tp_1_hi_a_winding_alm,rr_facility,tp_1_hi_a_winding_alm,5,eq,1,none,eq,,tp 1 hi a winding failure,default
tp_1_hi_b_winding_alm,rr_facility,tp_1_hi_b_winding_alm,5,eq,1,none,eq,,tp 1 hi b winding failure,default
tp_1_hi_c_winding_alm,rr_facility,tp_1_hi_c_winding_alm,5,eq,1,none,eq,,tp 1 hi c winding failure,default
tp_1_hi_discharge_alm,rr_facility,tp_1_hi_discharge_alm,5,eq,1,none,eq,,tp 1 hi discharge failure,default
tp_1_hi_inboard_temp_alm,rr_facility,tp_1_hi_inboard_temp_alm,5,eq,1,none,eq,,Failure,default
tp_1_hi_outboard_temp_alm,rr_facility,tp_1_hi_outboard_temp_alm,5,eq,1,none,eq,,Failure,default
tp_1_hi_vibration_alm,rr_facility,tp_1_hi_vibration_alm,5,eq,1,none,eq,,Failure,default
tp_1_lo_discharge_alm,rr_facility,tp_1_lo_discharge_alm,5,eq,1,none,eq,,Failure,default
tp_1_lo_oil_alm,rr_facility,tp_1_lo_oil_alm,5,eq,1,none,eq,,Failure,default
tp_1_lo_suction_alm,rr_facility,tp_1_lo_suction_alm,5,eq,1,none,eq,,Failure,default
tp_1_oil_cooler_failed_to_start_alm,rr_facility,tp_1_oil_cooler_failed_to_start_alm,5,eq,1,none,eq,,Failure,default
tp_2_charge_pump_fail_to_start_alm,rr_facility,tp_2_charge_pump_fail_to_start_alm,5,eq,1,none,eq,,Failure,default
tp_2_hi_a_winding_alm,rr_facility,tp_2_hi_a_winding_alm,5,eq,1,none,eq,,Failure,default
tp_2_hi_b_winding_alm,rr_facility,tp_2_hi_b_winding_alm,5,eq,1,none,eq,,Failure,default
tp_2_hi_c_winding_alm,rr_facility,tp_2_hi_c_winding_alm,5,eq,1,none,eq,,Failure,default
tp_2_hi_discharge_alm,rr_facility,tp_2_hi_discharge_alm,5,eq,1,none,eq,,Failure,default
tp_2_hi_inboard_temp_alm,rr_facility,tp_2_hi_inboard_temp_alm,5,eq,1,none,eq,,Failure,default
tp_2_hi_outboard_temp_alm,rr_facility,tp_2_hi_outboard_temp_alm,5,eq,1,none,eq,,Failure,default
tp_2_hi_vibration_alm,rr_facility,tp_2_hi_vibration_alm,5,eq,1,none,eq,,Failure,default
tp_2_lo_discharge_alm,rr_facility,tp_2_lo_discharge_alm,5,eq,1,none,eq,,Failure,default
tp_2_lo_oil_alm,rr_facility,tp_2_lo_oil_alm,5,eq,1,none,eq,,Failure,default
tp_2_lo_suction_alm,rr_facility,tp_2_lo_suction_alm,5,eq,1,none,eq,,Failure,default
tp_2_oil_cooler_failed_to_start_alm,rr_facility,tp_2_oil_cooler_failed_to_start_alm,5,eq,1,none,eq,,Failure,default
wtp_1_discharge_alm,rr_facility,wtp_1_discharge_alm,5,eq,1,none,eq,,wtp 1 discharge input failure,default
wtp_1_suction_alm,rr_facility,wtp_1_suction_alm,5,eq,1,none,eq,,wtp 1 suction input failure,default
wtp_1_vibration_alm,rr_facility,wtp_1_vibration_alm,5,eq,1,none,eq,,wtp 1 vibration failure,default
wtp_2_discharge_alm,rr_facility,wtp_2_discharge_alm,5,eq,1,none,eq,,wtp 2 discharge input failure,default
wtp_2_suction_alm,rr_facility,wtp_2_suction_alm,5,eq,1,none,eq,,wtp 2 suction input failure,default
wtp_2_vibration_alm,rr_facility,wtp_2_vibration_alm,5,eq,1,none,eq,,wtp 2 vibration failure,default
ww_1_comms_alm,rr_facility,ww_1_comms_alm,5,eq,1,none,eq,,water well 1 comms failure,default
ww_1_control_power_alm,rr_facility,ww_1_control_power_alm,5,eq,1,none,eq,,Failure,default
ww_1_hi_discharge_alm,rr_facility,ww_1_hi_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_1_hi_flow_alm,rr_facility,ww_1_hi_flow_alm,5,eq,1,none,eq,,Failure,default
ww_1_hoa_in_manual_alm,rr_facility,ww_1_hoa_in_manual_alm,5,eq,1,none,eq,,Failure,default
ww_1_lo_discharge_alm,rr_facility,ww_1_lo_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_1_lo_flow_alm,rr_facility,ww_1_lo_flow_alm,5,eq,1,none,eq,,Failure,default
ww_1_lo_pip_alm,rr_facility,ww_1_lo_pip_alm,5,eq,1,none,eq,,Failure,default
ww_1_master_comm_alm,rr_facility,ww_1_master_comm_alm,5,eq,1,none,eq,,Failure,default
ww_1_vfd_alm,rr_facility,ww_1_vfd_alm,5,eq,1,none,eq,,Failure,default
ww_2_comms_alm,rr_facility,ww_2_comms_alm,5,eq,1,none,eq,,water well 2 comms failure,default
ww_2_control_power_alm,rr_facility,ww_2_control_power_alm,5,eq,1,none,eq,,Failure,default
ww_2_hi_discharge_alm,rr_facility,ww_2_hi_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_2_hi_flow_alm,rr_facility,ww_2_hi_flow_alm,5,eq,1,none,eq,,Failure,default
ww_2_hoa_in_manual_alm,rr_facility,ww_2_hoa_in_manual_alm,5,eq,1,none,eq,,Failure,default
ww_2_lo_discharge_alm,rr_facility,ww_2_lo_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_2_lo_flow_alm,rr_facility,ww_2_lo_flow_alm,5,eq,1,none,eq,,Failure,default
ww_2_lo_pip_alm,rr_facility,ww_2_lo_pip_alm,5,eq,1,none,eq,,Failure,default
ww_2_master_comm_alm,rr_facility,ww_2_master_comm_alm,5,eq,1,none,eq,,Failure,default
ww_2_vfd_alm,rr_facility,ww_2_vfd_alm,5,eq,1,none,eq,,Failure,default
ww_3_comms_alm,rr_facility,ww_3_comms_alm,5,eq,1,none,eq,,water well 3 comms failure,default
ww_3_control_power_alm,rr_facility,ww_3_control_power_alm,5,eq,1,none,eq,,Failure,default
ww_3_hi_discharge_alm,rr_facility,ww_3_hi_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_3_hi_flow_alm,rr_facility,ww_3_hi_flow_alm,5,eq,1,none,eq,,Failure,default
ww_3_hoa_in_manual_alm,rr_facility,ww_3_hoa_in_manual_alm,5,eq,1,none,eq,,Failure,default
ww_3_lo_discharge_alm,rr_facility,ww_3_lo_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_3_lo_flow_alm,rr_facility,ww_3_lo_flow_alm,5,eq,1,none,eq,,Failure,default
ww_3_lo_pip_alm,rr_facility,ww_3_lo_pip_alm,5,eq,1,none,eq,,Failure,default
ww_3_master_comm_alm,rr_facility,ww_3_master_comm_alm,5,eq,1,none,eq,,Failure,default
ww_3_vfd_alm,rr_facility,ww_3_vfd_alm,5,eq,1,none,eq,,Failure,default
ww_4_comms_alm,rr_facility,ww_4_comms_alm,5,eq,1,none,eq,,water well 4 comms failure,default
ww_4_control_power_alm,rr_facility,ww_4_control_power_alm,5,eq,1,none,eq,,Failure,default
ww_4_hi_discharge_alm,rr_facility,ww_4_hi_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_4_hi_flow_alm,rr_facility,ww_4_hi_flow_alm,5,eq,1,none,eq,,Failure,default
ww_4_hoa_in_manual_alm,rr_facility,ww_4_hoa_in_manual_alm,5,eq,1,none,eq,,Failure,default
ww_4_lo_discharge_alm,rr_facility,ww_4_lo_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_4_lo_flow_alm,rr_facility,ww_4_lo_flow_alm,5,eq,1,none,eq,,Failure,default
ww_4_lo_pip_alm,rr_facility,ww_4_lo_pip_alm,5,eq,1,none,eq,,Failure,default
ww_4_master_comm_alm,rr_facility,ww_4_master_comm_alm,5,eq,1,none,eq,,Failure,default
ww_4_vfd_alm,rr_facility,ww_4_vfd_alm,5,eq,1,none,eq,,Failure,default
ww_5_comms_alm,rr_facility,ww_5_comms_alm,5,eq,1,none,eq,,water well 5 comms failure,default
ww_5_control_power_alm,rr_facility,ww_5_control_power_alm,5,eq,1,none,eq,,Failure,default
ww_5_hi_discharge_alm,rr_facility,ww_5_hi_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_5_hi_flow_alm,rr_facility,ww_5_hi_flow_alm,5,eq,1,none,eq,,Failure,default
ww_5_hoa_in_manual_alm,rr_facility,ww_5_hoa_in_manual_alm,5,eq,1,none,eq,,Failure,default
ww_5_lo_discharge_alm,rr_facility,ww_5_lo_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_5_lo_flow_alm,rr_facility,ww_5_lo_flow_alm,5,eq,1,none,eq,,Failure,default
ww_5_lo_pip_alm,rr_facility,ww_5_lo_pip_alm,5,eq,1,none,eq,,Failure,default
ww_5_master_comm_alm,rr_facility,ww_5_master_comm_alm,5,eq,1,none,eq,,Failure,default
ww_5_vfd_alm,rr_facility,ww_5_vfd_alm,5,eq,1,none,eq,,Failure,default
ww_6_comms_alm,rr_facility,ww_6_comms_alm,5,eq,1,none,eq,,water well 6 comms failure,default
ww_6_control_power_alm,rr_facility,ww_6_control_power_alm,5,eq,1,none,eq,,Failure,default
ww_6_hi_discharge_alm,rr_facility,ww_6_hi_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_6_hi_flow_alm,rr_facility,ww_6_hi_flow_alm,5,eq,1,none,eq,,Failure,default
ww_6_hoa_in_manual_alm,rr_facility,ww_6_hoa_in_manual_alm,5,eq,1,none,eq,,Failure,default
ww_6_lo_discharge_alm,rr_facility,ww_6_lo_discharge_alm,5,eq,1,none,eq,,Failure,default
ww_6_lo_flow_alm,rr_facility,ww_6_lo_flow_alm,5,eq,1,none,eq,,Failure,default
ww_6_lo_pip_alm,rr_facility,ww_6_lo_pip_alm,5,eq,1,none,eq,,Failure,default
ww_6_master_comm_alm,rr_facility,ww_6_master_comm_alm,5,eq,1,none,eq,,Failure,default
ww_6_vfd_alm,rr_facility,ww_6_vfd_alm,5,eq,1,none,eq,,Failure,default
1 AlarmName ControllerName MeasuringPointName AlarmLevel Condition1 Operand1 CombineMethod Condition2 Operand2 AlarmContent AlarmTag
2 pond_level_input_alm rr_facility pond_level_input_alm 5 eq 1 none eq pond level input failure alarm default
3 tp_1_charge_pump_fail_to_start_alm rr_facility tp_1_charge_pump_fail_to_start_alm 5 eq 1 none eq tp 1 charge pump failure default
4 tp_1_hi_a_winding_alm rr_facility tp_1_hi_a_winding_alm 5 eq 1 none eq tp 1 hi a winding failure default
5 tp_1_hi_b_winding_alm rr_facility tp_1_hi_b_winding_alm 5 eq 1 none eq tp 1 hi b winding failure default
6 tp_1_hi_c_winding_alm rr_facility tp_1_hi_c_winding_alm 5 eq 1 none eq tp 1 hi c winding failure default
7 tp_1_hi_discharge_alm rr_facility tp_1_hi_discharge_alm 5 eq 1 none eq tp 1 hi discharge failure default
8 tp_1_hi_inboard_temp_alm rr_facility tp_1_hi_inboard_temp_alm 5 eq 1 none eq Failure default
9 tp_1_hi_outboard_temp_alm rr_facility tp_1_hi_outboard_temp_alm 5 eq 1 none eq Failure default
10 tp_1_hi_vibration_alm rr_facility tp_1_hi_vibration_alm 5 eq 1 none eq Failure default
11 tp_1_lo_discharge_alm rr_facility tp_1_lo_discharge_alm 5 eq 1 none eq Failure default
12 tp_1_lo_oil_alm rr_facility tp_1_lo_oil_alm 5 eq 1 none eq Failure default
13 tp_1_lo_suction_alm rr_facility tp_1_lo_suction_alm 5 eq 1 none eq Failure default
14 tp_1_oil_cooler_failed_to_start_alm rr_facility tp_1_oil_cooler_failed_to_start_alm 5 eq 1 none eq Failure default
15 tp_2_charge_pump_fail_to_start_alm rr_facility tp_2_charge_pump_fail_to_start_alm 5 eq 1 none eq Failure default
16 tp_2_hi_a_winding_alm rr_facility tp_2_hi_a_winding_alm 5 eq 1 none eq Failure default
17 tp_2_hi_b_winding_alm rr_facility tp_2_hi_b_winding_alm 5 eq 1 none eq Failure default
18 tp_2_hi_c_winding_alm rr_facility tp_2_hi_c_winding_alm 5 eq 1 none eq Failure default
19 tp_2_hi_discharge_alm rr_facility tp_2_hi_discharge_alm 5 eq 1 none eq Failure default
20 tp_2_hi_inboard_temp_alm rr_facility tp_2_hi_inboard_temp_alm 5 eq 1 none eq Failure default
21 tp_2_hi_outboard_temp_alm rr_facility tp_2_hi_outboard_temp_alm 5 eq 1 none eq Failure default
22 tp_2_hi_vibration_alm rr_facility tp_2_hi_vibration_alm 5 eq 1 none eq Failure default
23 tp_2_lo_discharge_alm rr_facility tp_2_lo_discharge_alm 5 eq 1 none eq Failure default
24 tp_2_lo_oil_alm rr_facility tp_2_lo_oil_alm 5 eq 1 none eq Failure default
25 tp_2_lo_suction_alm rr_facility tp_2_lo_suction_alm 5 eq 1 none eq Failure default
26 tp_2_oil_cooler_failed_to_start_alm rr_facility tp_2_oil_cooler_failed_to_start_alm 5 eq 1 none eq Failure default
27 wtp_1_discharge_alm rr_facility wtp_1_discharge_alm 5 eq 1 none eq wtp 1 discharge input failure default
28 wtp_1_suction_alm rr_facility wtp_1_suction_alm 5 eq 1 none eq wtp 1 suction input failure default
29 wtp_1_vibration_alm rr_facility wtp_1_vibration_alm 5 eq 1 none eq wtp 1 vibration failure default
30 wtp_2_discharge_alm rr_facility wtp_2_discharge_alm 5 eq 1 none eq wtp 2 discharge input failure default
31 wtp_2_suction_alm rr_facility wtp_2_suction_alm 5 eq 1 none eq wtp 2 suction input failure default
32 wtp_2_vibration_alm rr_facility wtp_2_vibration_alm 5 eq 1 none eq wtp 2 vibration failure default
33 ww_1_comms_alm rr_facility ww_1_comms_alm 5 eq 1 none eq water well 1 comms failure default
34 ww_1_control_power_alm rr_facility ww_1_control_power_alm 5 eq 1 none eq Failure default
35 ww_1_hi_discharge_alm rr_facility ww_1_hi_discharge_alm 5 eq 1 none eq Failure default
36 ww_1_hi_flow_alm rr_facility ww_1_hi_flow_alm 5 eq 1 none eq Failure default
37 ww_1_hoa_in_manual_alm rr_facility ww_1_hoa_in_manual_alm 5 eq 1 none eq Failure default
38 ww_1_lo_discharge_alm rr_facility ww_1_lo_discharge_alm 5 eq 1 none eq Failure default
39 ww_1_lo_flow_alm rr_facility ww_1_lo_flow_alm 5 eq 1 none eq Failure default
40 ww_1_lo_pip_alm rr_facility ww_1_lo_pip_alm 5 eq 1 none eq Failure default
41 ww_1_master_comm_alm rr_facility ww_1_master_comm_alm 5 eq 1 none eq Failure default
42 ww_1_vfd_alm rr_facility ww_1_vfd_alm 5 eq 1 none eq Failure default
43 ww_2_comms_alm rr_facility ww_2_comms_alm 5 eq 1 none eq water well 2 comms failure default
44 ww_2_control_power_alm rr_facility ww_2_control_power_alm 5 eq 1 none eq Failure default
45 ww_2_hi_discharge_alm rr_facility ww_2_hi_discharge_alm 5 eq 1 none eq Failure default
46 ww_2_hi_flow_alm rr_facility ww_2_hi_flow_alm 5 eq 1 none eq Failure default
47 ww_2_hoa_in_manual_alm rr_facility ww_2_hoa_in_manual_alm 5 eq 1 none eq Failure default
48 ww_2_lo_discharge_alm rr_facility ww_2_lo_discharge_alm 5 eq 1 none eq Failure default
49 ww_2_lo_flow_alm rr_facility ww_2_lo_flow_alm 5 eq 1 none eq Failure default
50 ww_2_lo_pip_alm rr_facility ww_2_lo_pip_alm 5 eq 1 none eq Failure default
51 ww_2_master_comm_alm rr_facility ww_2_master_comm_alm 5 eq 1 none eq Failure default
52 ww_2_vfd_alm rr_facility ww_2_vfd_alm 5 eq 1 none eq Failure default
53 ww_3_comms_alm rr_facility ww_3_comms_alm 5 eq 1 none eq water well 3 comms failure default
54 ww_3_control_power_alm rr_facility ww_3_control_power_alm 5 eq 1 none eq Failure default
55 ww_3_hi_discharge_alm rr_facility ww_3_hi_discharge_alm 5 eq 1 none eq Failure default
56 ww_3_hi_flow_alm rr_facility ww_3_hi_flow_alm 5 eq 1 none eq Failure default
57 ww_3_hoa_in_manual_alm rr_facility ww_3_hoa_in_manual_alm 5 eq 1 none eq Failure default
58 ww_3_lo_discharge_alm rr_facility ww_3_lo_discharge_alm 5 eq 1 none eq Failure default
59 ww_3_lo_flow_alm rr_facility ww_3_lo_flow_alm 5 eq 1 none eq Failure default
60 ww_3_lo_pip_alm rr_facility ww_3_lo_pip_alm 5 eq 1 none eq Failure default
61 ww_3_master_comm_alm rr_facility ww_3_master_comm_alm 5 eq 1 none eq Failure default
62 ww_3_vfd_alm rr_facility ww_3_vfd_alm 5 eq 1 none eq Failure default
63 ww_4_comms_alm rr_facility ww_4_comms_alm 5 eq 1 none eq water well 4 comms failure default
64 ww_4_control_power_alm rr_facility ww_4_control_power_alm 5 eq 1 none eq Failure default
65 ww_4_hi_discharge_alm rr_facility ww_4_hi_discharge_alm 5 eq 1 none eq Failure default
66 ww_4_hi_flow_alm rr_facility ww_4_hi_flow_alm 5 eq 1 none eq Failure default
67 ww_4_hoa_in_manual_alm rr_facility ww_4_hoa_in_manual_alm 5 eq 1 none eq Failure default
68 ww_4_lo_discharge_alm rr_facility ww_4_lo_discharge_alm 5 eq 1 none eq Failure default
69 ww_4_lo_flow_alm rr_facility ww_4_lo_flow_alm 5 eq 1 none eq Failure default
70 ww_4_lo_pip_alm rr_facility ww_4_lo_pip_alm 5 eq 1 none eq Failure default
71 ww_4_master_comm_alm rr_facility ww_4_master_comm_alm 5 eq 1 none eq Failure default
72 ww_4_vfd_alm rr_facility ww_4_vfd_alm 5 eq 1 none eq Failure default
73 ww_5_comms_alm rr_facility ww_5_comms_alm 5 eq 1 none eq water well 5 comms failure default
74 ww_5_control_power_alm rr_facility ww_5_control_power_alm 5 eq 1 none eq Failure default
75 ww_5_hi_discharge_alm rr_facility ww_5_hi_discharge_alm 5 eq 1 none eq Failure default
76 ww_5_hi_flow_alm rr_facility ww_5_hi_flow_alm 5 eq 1 none eq Failure default
77 ww_5_hoa_in_manual_alm rr_facility ww_5_hoa_in_manual_alm 5 eq 1 none eq Failure default
78 ww_5_lo_discharge_alm rr_facility ww_5_lo_discharge_alm 5 eq 1 none eq Failure default
79 ww_5_lo_flow_alm rr_facility ww_5_lo_flow_alm 5 eq 1 none eq Failure default
80 ww_5_lo_pip_alm rr_facility ww_5_lo_pip_alm 5 eq 1 none eq Failure default
81 ww_5_master_comm_alm rr_facility ww_5_master_comm_alm 5 eq 1 none eq Failure default
82 ww_5_vfd_alm rr_facility ww_5_vfd_alm 5 eq 1 none eq Failure default
83 ww_6_comms_alm rr_facility ww_6_comms_alm 5 eq 1 none eq water well 6 comms failure default
84 ww_6_control_power_alm rr_facility ww_6_control_power_alm 5 eq 1 none eq Failure default
85 ww_6_hi_discharge_alm rr_facility ww_6_hi_discharge_alm 5 eq 1 none eq Failure default
86 ww_6_hi_flow_alm rr_facility ww_6_hi_flow_alm 5 eq 1 none eq Failure default
87 ww_6_hoa_in_manual_alm rr_facility ww_6_hoa_in_manual_alm 5 eq 1 none eq Failure default
88 ww_6_lo_discharge_alm rr_facility ww_6_lo_discharge_alm 5 eq 1 none eq Failure default
89 ww_6_lo_flow_alm rr_facility ww_6_lo_flow_alm 5 eq 1 none eq Failure default
90 ww_6_lo_pip_alm rr_facility ww_6_lo_pip_alm 5 eq 1 none eq Failure default
91 ww_6_master_comm_alm rr_facility ww_6_master_comm_alm 5 eq 1 none eq Failure default
92 ww_6_vfd_alm rr_facility ww_6_vfd_alm 5 eq 1 none eq Failure default

View File

@@ -0,0 +1,262 @@
import json, os, time
from datetime import datetime as dt
from common.Logger import logger
from quickfaas.remotebus import publish
from quickfaas.global_dict import get as get_params
from quickfaas.global_dict import _set_global_args
from mobiuspi_lib.gps import GPS
def reboot():
#basic = Basic()
logger.info("!" * 10 + "REBOOTING DEVICE" + "!"*10)
r = os.popen("kill -s SIGHUP `cat /var/run/python/supervisord.pid`").read()
logger.info(f"REBOOT : {r}")
def checkFileExist(filename):
path = "/var/user/files"
if not os.path.exists(path):
logger.info("no folder making files folder in var/user")
os.makedirs(path)
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
if not os.path.exists(path + "/" + filename):
logger.info("no creds file making creds file")
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
def convertDStoJSON(ds):
j = dict()
for x in ds:
j[x["key"]] = x["value"]
return j
def convertJSONtoDS(j):
d = []
for key in j.keys():
d.append({"key": key, "value": j[key]})
return d
def checkCredentialConfig():
logger.info("CHECKING CONFIG")
cfgpath = "/var/user/cfg/device_supervisor/device_supervisor.cfg"
credspath = "/var/user/files/creds.json"
cfg = dict()
with open(cfgpath, "r") as f:
cfg = json.load(f)
clouds = cfg.get("clouds")
logger.info(clouds)
#if not configured then try to configure from stored values
if clouds[0]["args"]["clientId"] == "unknown" or clouds[0]["args"]["username"] == "unknown" or not clouds[0]["args"]["passwd"] or clouds[0]["args"]["passwd"] == "unknown":
checkFileExist("creds.json")
with open(credspath, "r") as c:
creds = json.load(c)
if creds:
logger.info("updating config with stored data")
clouds[0]["args"]["clientId"] = creds["clientId"]
clouds[0]["args"]["username"] = creds["userName"]
clouds[0]["args"]["passwd"] = creds["password"]
cfg["clouds"] = clouds
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
reboot()
else:
#assuming clouds is filled out, if data is different then assume someone typed in something new and store it, if creds is empty fill with clouds' data
checkFileExist("creds.json")
with open(credspath, "r") as c:
logger.info("updating stored file with new data")
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
creds = json.load(c)
if creds:
if creds["clientId"] != clouds[0]["args"]["clientId"]:
creds["clientId"] = clouds[0]["args"]["clientId"]
if creds["userName"] != clouds[0]["args"]["username"]:
creds["userName"] = clouds[0]["args"]["username"]
if creds["password"] != clouds[0]["args"]["passwd"]:
creds["password"] = clouds[0]["args"]["passwd"]
else:
creds["clientId"] = clouds[0]["args"]["clientId"]
creds["userName"] = clouds[0]["args"]["username"]
creds["password"] = clouds[0]["args"]["passwd"]
with open(credspath, "w") as cw:
json.dump(creds,cw)
def checkParameterConfig(cfg):
logger.info("Checking Parameters!!!!")
paramspath = "/var/user/files/params.json"
cfgparams = convertDStoJSON(cfg.get("labels"))
#check stored values
checkFileExist("params.json")
with open(paramspath, "r") as f:
logger.info("Opened param storage file")
params = json.load(f)
if params:
if cfgparams != params:
#go through each param
#if not "unknown" and cfg and params aren't the same take from cfg likely updated manually
#if key in cfg but not in params copy to params
logger.info("equalizing params between cfg and stored")
for key in cfgparams.keys():
try:
if cfgparams[key] != params[key] and cfgparams[key] != "unknown":
params[key] = cfgparams[key]
except:
params[key] = cfgparams[key]
cfg["labels"] = convertJSONtoDS(params)
_set_global_args(convertJSONtoDS(params))
with open(paramspath, "w") as p:
json.dump(params, p)
else:
with open(paramspath, "w") as p:
logger.info("initializing param file with params in memory")
json.dump(convertDStoJSON(get_params()), p)
cfg["labels"] = get_params()
return cfg
def getGPS():
# Create a gps instance
gps = GPS()
# Retrieve GPS information
position_status = gps.get_position_status()
logger.debug("position_status: ")
logger.debug(position_status)
latitude = position_status["latitude"].split(" ")
longitude = position_status["longitude"].split(" ")
lat_dec = int(latitude[0][:-1]) + (float(latitude[1][:-1])/60)
lon_dec = int(longitude[0][:-1]) + (float(longitude[1][:-1])/60)
if latitude[2] == "S":
lat_dec = lat_dec * -1
if longitude[2] == "W":
lon_dec = lon_dec * -1
#lat_dec = round(lat_dec, 7)
#lon_dec = round(lon_dec, 7)
logger.info("HERE IS THE GPS COORDS")
logger.info(f"LATITUDE: {lat_dec}, LONGITUDE: {lon_dec}")
speedKnots = position_status["speed"].split(" ")
speedMPH = float(speedKnots[0]) * 1.151
return (f"{lat_dec:.8f}",f"{lon_dec:.8f}",f"{speedMPH:.2f}")
def chunk_payload(payload, chunk_size=20):
if "values" in payload:
# Original format: {"ts": ..., "values": {...}}
chunked_values = list(payload["values"].items())
for i in range(0, len(chunked_values), chunk_size):
yield {
"ts": payload["ts"],
"values": dict(chunked_values[i:i+chunk_size])
}
else:
# New format: {"key1": "value1", "key2": "value2"}
chunked_keys = list(payload.keys())
for i in range(0, len(chunked_keys), chunk_size):
yield {k: payload[k] for k in chunked_keys[i:i+chunk_size]}
def chunk_payload_gateway(payload, chunk_size=20, is_attributes_payload=False):
if is_attributes_payload:
# For attributes payload, chunk the controllers
controllers = list(payload.items())
for i in range(0, len(controllers), chunk_size):
yield dict(controllers[i:i + chunk_size])
else:
# For data payload, chunk the values within each controller
for controller, data in payload.items():
for entry in data:
ts = entry['ts']
values = entry['values']
chunked_values = list(values.items())
for i in range(0, len(chunked_values), chunk_size):
yield {
controller: [{
"ts": ts,
"values": dict(chunked_values[i:i + chunk_size])
}]
}
def controlName(name):
params = convertDStoJSON(get_params())
nameMap = {
"tp_1": f"{params['facilityName']} Transfer Pump #1",
"tp_2": f"{params['facilityName']} Transfer Pump #2",
"ww_1": f"{params['facilityName']} Water Well #1",
"ww_2": f"{params['facilityName']} Water Well #2",
"ww_3": f"{params['facilityName']} Water Well #3",
"ww_4": f"{params['facilityName']} Water Well #4",
"ww_5": f"{params['facilityName']} Water Well #5",
"ww_6": f"{params['facilityName']} Water Well #6"
}
parts = "_".join(name.split("_")[:2])
return nameMap.get(parts, "Gateway")
def sendData(message):
#logger.info(message)
grouped_data = {}
grouped_attributes = {}
now = (round(dt.timestamp(dt.now())/600)*600)*1000
payload = {"ts": now, "values": {}}
attributes_payload = {}
for measure in message["measures"]:
try:
logger.debug(measure)
ctrlName = controlName(measure["name"])
if ctrlName == "Gateway":
#send to gateway with v1/devices/me/telemetry
if measure["health"] == 1:
if "_spt" in measure["name"]:
attributes_payload[measure["name"]] = measure["value"]
else:
payload["values"][measure["name"]] = measure["value"]
else:
name = "_".join(measure['name'].split("_")[2:])
value = measure['value']
health = measure['health']
#Add controller for telemetry if it doesn't exist
if ctrlName not in grouped_data:
grouped_data[ctrlName] = {}
#Add controller for attributes if it doesn't exist
if ctrlName not in grouped_attributes:
grouped_attributes[ctrlName] = {}
grouped_attributes[ctrlName]["latestReportTime"] = now
#Add data to temp payload if datapoint health is good
if health:
if "_spt" in name:
grouped_attributes[ctrlName][name] = value
else:
grouped_data[ctrlName][name] = value
except Exception as e:
logger.error(e)
# Transform the grouped data to desired structure
payload_gateway = {}
for key, value in grouped_data.items():
if value:
payload_gateway[key] = [{"ts": now ,"values": value}]
attributes_payload_gateway = {}
for key, value in grouped_attributes.items():
if value:
attributes_payload_gateway[key] = value
#Send data belonging to Gateway
for chunk in chunk_payload(payload=payload):
publish(__topic__, json.dumps(chunk), __qos__)
time.sleep(2)
attributes_payload["latestReportTime"] = (round(dt.timestamp(dt.now())/600)*600)*1000
for chunk in chunk_payload(payload=attributes_payload):
publish("v1/devices/me/attributes", json.dumps(chunk), __qos__)
time.sleep(2)
#Send gateway devices data
for chunk in chunk_payload_gateway(payload=payload_gateway):
publish("v1/gateway/telemetry", json.dumps(chunk), __qos__)
time.sleep(2)
for chunk in chunk_payload_gateway(payload=attributes_payload_gateway, is_attributes_payload=True):
publish("v1/gateway/attributes", json.dumps(attributes_payload_gateway), __qos__)
time.sleep(2)

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,383 @@
MeasuringPointName,ControllerName,GroupName,UploadType,DataType,EnableBit,BitIndex,reverseBit,Address,Decimal,Len,ReadWrite,Unit,Description,Transform Type,MaxValue,MinValue,MaxScale,MinScale,Gain,Offset,startBit,endBit,Pt,Ct,Mapping_table,TransDecimal,bitMap,msecSample,DataEndianReverse,ReadOffset,ReadLength,DataParseMethod,BitId,storageLwTSDB
pond_level_input_alm,rr_facility,default,periodic,BIT,,,0,AL0_Pond_Level_Input_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_charge_pump_fail_to_start_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_Charge_Pump_Failed_To_Start,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_a_winding_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_High_A_Winding_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_b_winding_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_High_B_Winding_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_c_winding_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_High_C_Winding_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_High_Discharge_PSI,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_inboard_temp_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_High_Inboard_Temp_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_outboard_temp_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_High_Outboard_Temp_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_vibration_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_High_Vibration_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_lo_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_Low_Discharge_PSI,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_lo_oil_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_Low_Oil_Level_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_lo_suction_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_Low_Suction_Pressure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_oil_cooler_failed_to_start_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP1_Oil_Cooler_Failed_To_Start,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_charge_pump_fail_to_start_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_Charge_Pump_Failed_To_Start,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_a_winding_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_High_A_Winding_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_b_winding_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_High_B_Winding_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_c_winding_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_High_C_Winding_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_High_Discharge_PSI,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_inboard_temp_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_High_Inboard_Temp_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_outboard_temp_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_High_Outboard_Temp_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_vibration_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_High_Vibration_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_lo_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_Low_Discharge_PSI,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_lo_oil_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_Low_Oil_Level_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_lo_suction_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_Low_Suction_Pressure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_oil_cooler_failed_to_start_alm,rr_facility,default,periodic,BIT,,,0,AL0_TP2_Oil_Cooler_Failed_To_Start,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_comms_alm,rr_facility,default,periodic,BIT,,,0,AL0_Water_Well_1_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_comms_alm,rr_facility,default,periodic,BIT,,,0,AL0_Water_Well_2_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_comms_alm,rr_facility,default,periodic,BIT,,,0,AL0_Water_Well_3_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_comms_alm,rr_facility,default,periodic,BIT,,,0,AL0_Water_Well_4_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_comms_alm,rr_facility,default,periodic,BIT,,,0,AL0_Water_Well_5_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_comms_alm,rr_facility,default,periodic,BIT,,,0,AL0_Water_Well_6_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WTP_1_Discharge_Input_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_suction_alm,rr_facility,default,periodic,BIT,,,0,AL0_WTP_1_Suction_Input_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_vibration_alm,rr_facility,default,periodic,BIT,,,0,AL0_WTP_1_Vibration_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WTP_2_Discharge_Input_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_suction_alm,rr_facility,default,periodic,BIT,,,0,AL0_WTP_2_Suction_Input_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_vibration_alm,rr_facility,default,periodic,BIT,,,0,AL0_WTP_2_Vibration_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_control_power_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW1_Control_Power_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_hi_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW1_Hi_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_hi_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW1_Hi_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_hoa_in_manual_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW1_HOA_In_Manual,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_lo_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW1_Lo_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_lo_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW1_Lo_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_lo_pip_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW1_Lo_PIP_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_master_comm_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW1_Master_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_vfd_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW1_VFD_Faulted,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_control_power_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW2_Control_Power_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_hi_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW2_Hi_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_hi_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW2_Hi_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_hoa_in_manual_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW2_HOA_In_Manual,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_lo_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW2_Lo_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_lo_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW2_Lo_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_lo_pip_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW2_Lo_PIP_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_master_comm_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW2_Master_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_vfd_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW2_VFD_Faulted,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_control_power_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW3_Control_Power_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_hi_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW3_Hi_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_hi_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW3_Hi_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_hoa_in_manual_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW3_HOA_In_Manual,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_lo_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW3_Lo_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_lo_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW3_Lo_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_lo_pip_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW3_Lo_PIP_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_master_comm_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW3_Master_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_vfd_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW3_VFD_Faulted,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_control_power_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW4_Control_Power_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_hi_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW4_Hi_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_hi_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW4_Hi_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_hoa_in_manual_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW4_HOA_In_Manual,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_lo_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW4_Lo_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_lo_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW4_Lo_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_lo_pip_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW4_Lo_PIP_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_master_comm_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW4_Master_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_vfd_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW4_VFD_Faulted,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_control_power_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW5_Control_Power_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_hi_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW5_Hi_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_hi_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW5_Hi_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_hoa_in_manual_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW5_HOA_In_Manual,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_lo_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW5_Lo_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_lo_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW5_Lo_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_lo_pip_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW5_Lo_PIP_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_master_comm_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW5_Master_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_vfd_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW5_VFD_Faulted,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_control_power_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW6_Control_Power_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_hi_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW6_Hi_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_hi_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW6_Hi_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_hoa_in_manual_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW6_HOA_In_Manual,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_lo_discharge_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW6_Lo_Discharge_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_lo_flow_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW6_Lo_Flow_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_lo_pip_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW6_Lo_PIP_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_master_comm_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW6_Master_Communication_Failure,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_vfd_alm,rr_facility,default,periodic,BIT,,,0,AL0_WW6_VFD_Faulted,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_vfd_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_Run_TP1_VFD,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_vfd_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_Run_TP2_VFD,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_a_winding_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_High_A_Winding_Temp_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_b_winding_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_High_B_Winding_Temp_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_c_winding_bypass_alm,rr_facility,default,periodic,BIT,,,0,CMD_TP1_High_C_Winding_Temp_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_discharge_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_High_Discharge_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_inboard_temp_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_High_Inboard_Temp_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_outboard_temp_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_High_Outboard_Temp_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_hi_vibration_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_High_Vibration_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_lo_discharge_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_Low_Discharge_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_master_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_Master_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_master_fault_clear_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_Master_Fault_Clear,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_oil_cooler_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_Oil_Cooler_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_oil_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_Oil_Level_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_pid_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP1_PID_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_a_winding_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_High_A_Winding_Temp_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_b_winding_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_High_B_Winding_Temp_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_c_winding_bypass_alm,rr_facility,default,periodic,BIT,,,0,CMD_TP2_High_C_Winding_Temp_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_discharge_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_High_Discharge_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_inboard_temp_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_High_Inboard_Temp_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_outboard_temp_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_High_Outboard_Temp_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_hi_vibration_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_High_Vibration_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_lo_discharge_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_Low_Discharge_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_master_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_Master_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_master_fault_clear_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_Master_Fault_Clear,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_oil_cooler_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_Oil_Cooler_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_oil_bypass_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_Oil_Level_Alarm_Bypass,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_pid_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_TP2_PID_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_all_start_stop_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW_Start_Stop_Together,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW1_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_comms_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW1_Communication_Check,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_hi_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW1_Enable_Hi_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_hi_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW1_Enable_Hi_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_lo_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW1_Enable_Lo_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_lo_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW1_Enable_Lo_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_lo_pip_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW1_Enable_Lo_PIP_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_manual_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW1_Manual_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_pid_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW1_PID_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW1_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW2_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_comms_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW2_Communication_Check,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_hi_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW2_Enable_Hi_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_hi_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW2_Enable_Hi_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_lo_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW2_Enable_Lo_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_lo_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW2_Enable_Lo_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_lo_pip_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW2_Enable_Lo_PIP_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_manual_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW2_Manual_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_pid_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW2_PID_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW2_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW3_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_comms_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW3_Communication_Check,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_hi_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW3_Enable_Hi_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_hi_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW3_Enable_Hi_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_lo_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW3_Enable_Lo_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_lo_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW3_Enable_Lo_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_lo_pip_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW3_Enable_Lo_PIP_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_manual_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW3_Manual_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_pid_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW3_PID_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW3_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW4_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_comms_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW4_Communication_Check,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_hi_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW4_Enable_Hi_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_hi_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW4_Enable_Hi_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_lo_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW4_Enable_Lo_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_lo_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW4_Enable_Lo_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_lo_pip_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW4_Enable_Lo_PIP_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_manual_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW4_Manual_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_pid_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW4_PID_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW4_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW5_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_comms_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW5_Communication_Check,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_hi_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW5_Enable_Hi_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_hi_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW5_Enable_Hi_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_lo_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW5_Enable_Lo_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_lo_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW5_Enable_Lo_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_lo_pip_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW5_Enable_Lo_PIP_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_manual_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW5_Manual_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_pid_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW5_PID_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW5_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW6_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_comms_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW6_Communication_Check,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_hi_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW6_Enable_Hi_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_hi_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW6_Enable_Hi_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_lo_discharge_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW6_Enable_Lo_Disch_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_lo_flow_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW6_Enable_Lo_Flow_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_lo_pip_enable_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW6_Enable_Lo_PIP_Alarm,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_manual_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW6_Manual_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_pid_auto_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW6_PID_Auto,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_run_cmd,rr_facility,default,periodic,BIT,,,0,CMD_WW6_Run,,,rw,,,none,,,,,,,,,,,,,0,,,,,,,1
current_day,rr_facility,default,periodic,INT,0,,,Current_Day,,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
current_hour,rr_facility,default,periodic,INT,0,,,Current_Hour,,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
current_minute,rr_facility,default,periodic,INT,0,,,Current_Minute,,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
current_second,rr_facility,default,periodic,INT,0,,,Current_Second,,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_charge_pump_running,rr_facility,default,periodic,BIT,,,0,FBK_TP1_Charge_Pump_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_lo_oil,rr_facility,default,periodic,BIT,,,0,FBK_TP1_Low_Oil_Level,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_oil_cooler_running,rr_facility,default,periodic,BIT,,,0,FBK_TP1_Oil_Cooler_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_1_vfd_running,rr_facility,default,periodic,BIT,,,0,FBK_TP1_VFD_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_charge_pump_running,rr_facility,default,periodic,BIT,,,0,FBK_TP2_Charge_Pump_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_lo_oil,rr_facility,default,periodic,BIT,,,0,FBK_TP2_Low_Oil_Level,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_oil_cooler_running,rr_facility,default,periodic,BIT,,,0,FBK_TP2_Oil_Cooler_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
tp_2_vfd_running,rr_facility,default,periodic,BIT,,,0,FBK_TP2_VFD_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_1_vfd_running,rr_facility,default,periodic,BIT,,,0,FBK_WW1_VFD_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_2_vfd_running,rr_facility,default,periodic,BIT,,,0,FBK_WW2_VFD_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_3_vfd_running,rr_facility,default,periodic,BIT,,,0,FBK_WW3_VFD_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_4_vfd_running,rr_facility,default,periodic,BIT,,,0,FBK_WW4_VFD_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_5_vfd_running,rr_facility,default,periodic,BIT,,,0,FBK_WW5_VFD_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
ww_6_vfd_running,rr_facility,default,periodic,BIT,,,0,FBK_WW6_VFD_Running,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
pond_level_start_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Start,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_pond_level_start_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Start_WW1,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_pond_level_start_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Start_WW2,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_pond_level_start_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Start_WW3,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_pond_level_start_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Start_WW4,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_pond_level_start_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Start_WW5,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_pond_level_start_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Start_WW6,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
pond_level_stop_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Stop,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_pond_level_stop_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Stop_WW1,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_pond_level_stop_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Stop_WW2,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_pond_level_stop_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Stop_WW3,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_pond_level_stop_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Stop_WW4,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_pond_level_stop_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Stop_WW5,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_pond_level_stop_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Pond_Level_Stop_WW6,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
suction_permissive_spt,rr_facility,default,periodic,FLOAT,,,,SPT_Suction_PSI_Permissive,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_hi_a_winding_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP1_A_Winding_High,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_hi_b_winding_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP1_B_Winding_High,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_hi_c_winding_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP1_C_Winding_High,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_hi_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP1_High_Discharge_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_hi_vibration_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP1_High_Vibration_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_hi_inboard_temp_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP1_Inboard_High,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_lo_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP1_Low_Discharge_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_hi_outboard_temp_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP1_Outboard_High,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_pid_manual_frequency_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP1_PID_Manual_Freq,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_pid_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP1_PID_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_hi_a_winding_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP2_A_Winding_High,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_hi_b_winding_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP2_B_Winding_High,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_hi_c_winding_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP2_C_Winding_High,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_hi_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP2_High_Discharge_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_hi_vibration_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP2_High_Vibration_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_hi_inboard_temp_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP2_Inboard_High,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_lo_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP2_Low_Discharge_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_hi_outboard_temp_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP2_Outboard_High,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_pid_manual_frequency_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP2_PID_Manual_Freq,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_pid_spt,rr_facility,default,periodic,FLOAT,,,,SPT_TP2_PID_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_hand_frequency_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW1_Hand_Freq,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_hi_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW1_Hi_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_hi_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW1_Hi_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_lo_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW1_Lo_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_lo_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW1_Lo_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_lo_pip_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW1_Lo_PIP_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_pid_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW1_PID_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_hand_frequency_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW2_Hand_Freq,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_hi_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW2_Hi_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_hi_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW2_Hi_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_lo_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW2_Lo_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_lo_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW2_Lo_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_lo_pip_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW2_Lo_PIP_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_pid_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW2_PID_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_hand_frequency_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW3_Hand_Freq,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_hi_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW3_Hi_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_hi_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW3_Hi_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_lo_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW3_Lo_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_lo_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW3_Lo_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_lo_pip_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW3_Lo_PIP_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_pid_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW3_PID_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_hand_frequency_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW4_Hand_Freq,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_hi_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW4_Hi_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_hi_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW4_Hi_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_lo_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW4_Lo_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_lo_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW4_Lo_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_lo_pip_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW4_Lo_PIP_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_pid_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW4_PID_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_hand_frequency_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW5_Hand_Freq,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_hi_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW5_Hi_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_hi_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW5_Hi_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_lo_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW5_Lo_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_lo_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW5_Lo_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_lo_pip_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW5_Lo_PIP_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_pid_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW5_PID_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_hand_frequency_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW6_Hand_Freq,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_hi_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW6_Hi_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_hi_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW6_Hi_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_lo_discharge_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW6_Lo_Disch_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_lo_flow_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW6_Lo_Flow_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_lo_pip_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW6_Lo_PIP_Alarm,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_pid_spt,rr_facility,default,periodic,FLOAT,,,,SPT_WW6_PID_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_charge_pump_run,rr_facility,default,periodic,FLOAT,,,,TP1_Charge_Pump_Run,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_oil_cooler_run,rr_facility,default,periodic,FLOAT,,,,TP1_Oil_Cooler_Run,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_charge_pump_run,rr_facility,default,periodic,FLOAT,,,,TP2_Charge_Pump_Run,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_oil_cooler_run,rr_facility,default,periodic,FLOAT,,,,TP2_Oil_Cooler_Run,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
pond_level,rr_facility,default,periodic,FLOAT,,,,Val_Pond_Level_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_a_winding_temp,rr_facility,default,periodic,FLOAT,,,,Val_TP_1_A_Winding_Temp_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_b_winding_temp,rr_facility,default,periodic,FLOAT,,,,Val_TP_1_B_Winding_Temp_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_c_winding_temp,rr_facility,default,periodic,FLOAT,,,,Val_TP_1_C_Winding_Temp_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_discharge,rr_facility,default,periodic,FLOAT,,,,Val_TP_1_Discharge_PSI_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_inboard_temp,rr_facility,default,periodic,FLOAT,,,,Val_TP_1_Inboard_Temp_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_outboard_temp,rr_facility,default,periodic,FLOAT,,,,Val_TP_1_Outboard_Temp_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_suction,rr_facility,default,periodic,FLOAT,,,,Val_TP_1_Suction_PSI_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_vibration,rr_facility,default,periodic,FLOAT,,,,Val_TP_1_Vibration_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_a_winding_temp,rr_facility,default,periodic,FLOAT,,,,Val_TP_2_A_Winding_Temp_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_b_winding_temp,rr_facility,default,periodic,FLOAT,,,,Val_TP_2_B_Winding_Temp_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_c_winding_temp,rr_facility,default,periodic,FLOAT,,,,Val_TP_2_C_Winding_Temp_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_discharge,rr_facility,default,periodic,FLOAT,,,,Val_TP_2_Discharge_PSI_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_inboard_temp,rr_facility,default,periodic,FLOAT,,,,Val_TP_2_Inboard_Temp_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_outboard_temp,rr_facility,default,periodic,FLOAT,,,,Val_TP_2_Outboard_Temp_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_suction,rr_facility,default,periodic,FLOAT,,,,Val_TP_2_Suction_PSI_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_vibration,rr_facility,default,periodic,FLOAT,,,,Val_TP_2_Vibration_Scaled,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_flow_rate,rr_facility,default,periodic,FLOAT,,,,Val_TP_FlowRate,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_yesterday_total,rr_facility,default,periodic,FLOAT,,,,Val_TP_FM_Yest_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_last_month_total,rr_facility,default,periodic,FLOAT,,,,Val_TP_LastMonth_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_lifetime_total,rr_facility,default,periodic,FLOAT,,,,Val_TP_Lifetime_Flow_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_month_total,rr_facility,default,periodic,FLOAT,,,,Val_TP_Monthly_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_today_total,rr_facility,default,periodic,FLOAT,,,,Val_TP_Today_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_vfd_frequency,rr_facility,default,periodic,FLOAT,,,,Val_TP1_VFD_Frequency_Setpoint,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_vfd_output_current,rr_facility,default,periodic,FLOAT,,,,Val_TP1_VFD_Output_Current,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_vfd_output_frequency,rr_facility,default,periodic,FLOAT,,,,Val_TP1_VFD_Output_Frequency,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_1_vfd_output_voltage,rr_facility,default,periodic,FLOAT,,,,Val_TP1_VFD_Output_Voltage,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_vfd_frequency,rr_facility,default,periodic,FLOAT,,,,Val_TP2_VFD_Frequency_Setpoint,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_vfd_output_current,rr_facility,default,periodic,FLOAT,,,,Val_TP2_VFD_Output_Current,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_vfd_output_frequency,rr_facility,default,periodic,FLOAT,,,,Val_TP2_VFD_Output_Frequency,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
tp_2_vfd_output_voltage,rr_facility,default,periodic,FLOAT,,,,Val_TP2_VFD_Output_Voltage,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_discharge,rr_facility,default,periodic,FLOAT,,,,Val_WW1_Discharge_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_downhole,rr_facility,default,periodic,FLOAT,,,,Val_WW1_Downhole_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_flow_rate,rr_facility,default,periodic,FLOAT,,,,Val_WW1_Flowmeter_FR,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_last_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW1_Flowmeter_LastMonth_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW1_Flowmeter_Month_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_today_total,rr_facility,default,periodic,FLOAT,,,,Val_WW1_Flowmeter_Todays_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_lifetime_total,rr_facility,default,periodic,FLOAT,,,,Val_WW1_Flowmeter_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_yesterday_total,rr_facility,default,periodic,FLOAT,,,,Val_WW1_Flowmeter_Yest_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_vfd_frequency_spt,rr_facility,default,periodic,FLOAT,,,,Val_WW1_VFD_Frequency_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_vfd_current,rr_facility,default,periodic,FLOAT,,,,Val_WW1_VFD_Output_Current,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_vfd_frequency,rr_facility,default,periodic,FLOAT,,,,Val_WW1_VFD_Output_Frequency,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_1_vfd_voltage,rr_facility,default,periodic,FLOAT,,,,Val_WW1_VFD_Output_Voltage,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_discharge,rr_facility,default,periodic,FLOAT,,,,Val_WW2_Discharge_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_downhole,rr_facility,default,periodic,FLOAT,,,,Val_WW2_Downhole_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_flow_rate,rr_facility,default,periodic,FLOAT,,,,Val_WW2_Flowmeter_FR,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_last_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW2_Flowmeter_LastMonth_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW2_Flowmeter_Month_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_today_total,rr_facility,default,periodic,FLOAT,,,,Val_WW2_Flowmeter_Todays_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_lifetime_total,rr_facility,default,periodic,FLOAT,,,,Val_WW2_Flowmeter_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_yesterday_total,rr_facility,default,periodic,FLOAT,,,,Val_WW2_Flowmeter_Yest_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_vfd_frequency_spt,rr_facility,default,periodic,FLOAT,,,,Val_WW2_VFD_Frequency_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_vfd_current,rr_facility,default,periodic,FLOAT,,,,Val_WW2_VFD_Output_Current,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_vfd_frequency,rr_facility,default,periodic,FLOAT,,,,Val_WW2_VFD_Output_Frequency,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_2_vfd_voltage,rr_facility,default,periodic,FLOAT,,,,Val_WW2_VFD_Output_Voltage,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_discharge,rr_facility,default,periodic,FLOAT,,,,Val_WW3_Discharge_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_downhole,rr_facility,default,periodic,FLOAT,,,,Val_WW3_Downhole_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_flow_rate,rr_facility,default,periodic,FLOAT,,,,Val_WW3_Flowmeter_FR,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_last_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW3_Flowmeter_LastMonth_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW3_Flowmeter_Month_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_today_total,rr_facility,default,periodic,FLOAT,,,,Val_WW3_Flowmeter_Todays_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_lifetime_total,rr_facility,default,periodic,FLOAT,,,,Val_WW3_Flowmeter_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_yesterday_total,rr_facility,default,periodic,FLOAT,,,,Val_WW3_Flowmeter_Yest_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_vfd_frequency_spt,rr_facility,default,periodic,FLOAT,,,,Val_WW3_VFD_Frequency_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_vfd_current,rr_facility,default,periodic,FLOAT,,,,Val_WW3_VFD_Output_Current,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_vfd_frequency,rr_facility,default,periodic,FLOAT,,,,Val_WW3_VFD_Output_Frequency,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_3_vfd_voltage,rr_facility,default,periodic,FLOAT,,,,Val_WW3_VFD_Output_Voltage,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_discharge,rr_facility,default,periodic,FLOAT,,,,Val_WW4_Discharge_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_downhole,rr_facility,default,periodic,FLOAT,,,,Val_WW4_Downhole_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_flow_rate,rr_facility,default,periodic,FLOAT,,,,Val_WW4_Flowmeter_FR,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_last_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW4_Flowmeter_LastMonth_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW4_Flowmeter_Month_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_today_total,rr_facility,default,periodic,FLOAT,,,,Val_WW4_Flowmeter_Todays_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_lifetime_total,rr_facility,default,periodic,FLOAT,,,,Val_WW4_Flowmeter_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_yesterday_total,rr_facility,default,periodic,FLOAT,,,,Val_WW4_Flowmeter_Yest_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_vfd_frequency_spt,rr_facility,default,periodic,FLOAT,,,,Val_WW4_VFD_Frequency_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_vfd_current,rr_facility,default,periodic,FLOAT,,,,Val_WW4_VFD_Output_Current,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_vfd_frequency,rr_facility,default,periodic,FLOAT,,,,Val_WW4_VFD_Output_Frequency,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_4_vfd_voltage,rr_facility,default,periodic,FLOAT,,,,Val_WW4_VFD_Output_Voltage,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_discharge,rr_facility,default,periodic,FLOAT,,,,Val_WW5_Discharge_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_downhole,rr_facility,default,periodic,FLOAT,,,,Val_WW5_Downhole_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_flow_rate,rr_facility,default,periodic,FLOAT,,,,Val_WW5_Flowmeter_FR,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_last_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW5_Flowmeter_LastMonth_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW5_Flowmeter_Month_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_today_total,rr_facility,default,periodic,FLOAT,,,,Val_WW5_Flowmeter_Todays_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_lifetime_total,rr_facility,default,periodic,FLOAT,,,,Val_WW5_Flowmeter_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_yesterday_total,rr_facility,default,periodic,FLOAT,,,,Val_WW5_Flowmeter_Yest_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_vfd_frequency_spt,rr_facility,default,periodic,FLOAT,,,,Val_WW5_VFD_Frequency_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_vfd_current,rr_facility,default,periodic,FLOAT,,,,Val_WW5_VFD_Output_Current,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_vfd_frequency,rr_facility,default,periodic,FLOAT,,,,Val_WW5_VFD_Output_Frequency,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_5_vfd_voltage,rr_facility,default,periodic,FLOAT,,,,Val_WW5_VFD_Output_Voltage,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_discharge,rr_facility,default,periodic,FLOAT,,,,Val_WW6_Discharge_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_downhole,rr_facility,default,periodic,FLOAT,,,,Val_WW6_Downhole_PSI,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_flow_rate,rr_facility,default,periodic,FLOAT,,,,Val_WW6_Flowmeter_FR,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_last_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW6_Flowmeter_LastMonth_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_month_total,rr_facility,default,periodic,FLOAT,,,,Val_WW6_Flowmeter_Month_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_today_total,rr_facility,default,periodic,FLOAT,,,,Val_WW6_Flowmeter_Todays_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_lifetime_total,rr_facility,default,periodic,FLOAT,,,,Val_WW6_Flowmeter_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_yesterday_total,rr_facility,default,periodic,FLOAT,,,,Val_WW6_Flowmeter_Yest_Total,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_vfd_frequency_spt,rr_facility,default,periodic,FLOAT,,,,Val_WW6_VFD_Frequency_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_vfd_current,rr_facility,default,periodic,FLOAT,,,,Val_WW6_VFD_Output_Current,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_vfd_frequency,rr_facility,default,periodic,FLOAT,,,,Val_WW6_VFD_Output_Frequency,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
ww_6_vfd_voltage,rr_facility,default,periodic,FLOAT,,,,Val_WW6_VFD_Output_Voltage,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
1 MeasuringPointName ControllerName GroupName UploadType DataType EnableBit BitIndex reverseBit Address Decimal Len ReadWrite Unit Description Transform Type MaxValue MinValue MaxScale MinScale Gain Offset startBit endBit Pt Ct Mapping_table TransDecimal bitMap msecSample DataEndianReverse ReadOffset ReadLength DataParseMethod BitId storageLwTSDB
2 pond_level_input_alm rr_facility default periodic BIT 0 AL0_Pond_Level_Input_Failure ro none 0 1
3 tp_1_charge_pump_fail_to_start_alm rr_facility default periodic BIT 0 AL0_TP1_Charge_Pump_Failed_To_Start ro none 0 1
4 tp_1_hi_a_winding_alm rr_facility default periodic BIT 0 AL0_TP1_High_A_Winding_Alarm ro none 0 1
5 tp_1_hi_b_winding_alm rr_facility default periodic BIT 0 AL0_TP1_High_B_Winding_Alarm ro none 0 1
6 tp_1_hi_c_winding_alm rr_facility default periodic BIT 0 AL0_TP1_High_C_Winding_Alarm ro none 0 1
7 tp_1_hi_discharge_alm rr_facility default periodic BIT 0 AL0_TP1_High_Discharge_PSI ro none 0 1
8 tp_1_hi_inboard_temp_alm rr_facility default periodic BIT 0 AL0_TP1_High_Inboard_Temp_Alarm ro none 0 1
9 tp_1_hi_outboard_temp_alm rr_facility default periodic BIT 0 AL0_TP1_High_Outboard_Temp_Alarm ro none 0 1
10 tp_1_hi_vibration_alm rr_facility default periodic BIT 0 AL0_TP1_High_Vibration_Alarm ro none 0 1
11 tp_1_lo_discharge_alm rr_facility default periodic BIT 0 AL0_TP1_Low_Discharge_PSI ro none 0 1
12 tp_1_lo_oil_alm rr_facility default periodic BIT 0 AL0_TP1_Low_Oil_Level_Alarm ro none 0 1
13 tp_1_lo_suction_alm rr_facility default periodic BIT 0 AL0_TP1_Low_Suction_Pressure ro none 0 1
14 tp_1_oil_cooler_failed_to_start_alm rr_facility default periodic BIT 0 AL0_TP1_Oil_Cooler_Failed_To_Start ro none 0 1
15 tp_2_charge_pump_fail_to_start_alm rr_facility default periodic BIT 0 AL0_TP2_Charge_Pump_Failed_To_Start ro none 0 1
16 tp_2_hi_a_winding_alm rr_facility default periodic BIT 0 AL0_TP2_High_A_Winding_Alarm ro none 0 1
17 tp_2_hi_b_winding_alm rr_facility default periodic BIT 0 AL0_TP2_High_B_Winding_Alarm ro none 0 1
18 tp_2_hi_c_winding_alm rr_facility default periodic BIT 0 AL0_TP2_High_C_Winding_Alarm ro none 0 1
19 tp_2_hi_discharge_alm rr_facility default periodic BIT 0 AL0_TP2_High_Discharge_PSI ro none 0 1
20 tp_2_hi_inboard_temp_alm rr_facility default periodic BIT 0 AL0_TP2_High_Inboard_Temp_Alarm ro none 0 1
21 tp_2_hi_outboard_temp_alm rr_facility default periodic BIT 0 AL0_TP2_High_Outboard_Temp_Alarm ro none 0 1
22 tp_2_hi_vibration_alm rr_facility default periodic BIT 0 AL0_TP2_High_Vibration_Alarm ro none 0 1
23 tp_2_lo_discharge_alm rr_facility default periodic BIT 0 AL0_TP2_Low_Discharge_PSI ro none 0 1
24 tp_2_lo_oil_alm rr_facility default periodic BIT 0 AL0_TP2_Low_Oil_Level_Alarm ro none 0 1
25 tp_2_lo_suction_alm rr_facility default periodic BIT 0 AL0_TP2_Low_Suction_Pressure ro none 0 1
26 tp_2_oil_cooler_failed_to_start_alm rr_facility default periodic BIT 0 AL0_TP2_Oil_Cooler_Failed_To_Start ro none 0 1
27 ww_1_comms_alm rr_facility default periodic BIT 0 AL0_Water_Well_1_Communication_Failure ro none 0 1
28 ww_2_comms_alm rr_facility default periodic BIT 0 AL0_Water_Well_2_Communication_Failure ro none 0 1
29 ww_3_comms_alm rr_facility default periodic BIT 0 AL0_Water_Well_3_Communication_Failure ro none 0 1
30 ww_4_comms_alm rr_facility default periodic BIT 0 AL0_Water_Well_4_Communication_Failure ro none 0 1
31 ww_5_comms_alm rr_facility default periodic BIT 0 AL0_Water_Well_5_Communication_Failure ro none 0 1
32 ww_6_comms_alm rr_facility default periodic BIT 0 AL0_Water_Well_6_Communication_Failure ro none 0 1
33 tp_1_discharge_alm rr_facility default periodic BIT 0 AL0_WTP_1_Discharge_Input_Failure ro none 0 1
34 tp_1_suction_alm rr_facility default periodic BIT 0 AL0_WTP_1_Suction_Input_Failure ro none 0 1
35 tp_1_vibration_alm rr_facility default periodic BIT 0 AL0_WTP_1_Vibration_Failure ro none 0 1
36 tp_2_discharge_alm rr_facility default periodic BIT 0 AL0_WTP_2_Discharge_Input_Failure ro none 0 1
37 tp_2_suction_alm rr_facility default periodic BIT 0 AL0_WTP_2_Suction_Input_Failure ro none 0 1
38 tp_2_vibration_alm rr_facility default periodic BIT 0 AL0_WTP_2_Vibration_Failure ro none 0 1
39 ww_1_control_power_alm rr_facility default periodic BIT 0 AL0_WW1_Control_Power_Failure ro none 0 1
40 ww_1_hi_discharge_alm rr_facility default periodic BIT 0 AL0_WW1_Hi_Discharge_Alarm ro none 0 1
41 ww_1_hi_flow_alm rr_facility default periodic BIT 0 AL0_WW1_Hi_Flow_Alarm ro none 0 1
42 ww_1_hoa_in_manual_alm rr_facility default periodic BIT 0 AL0_WW1_HOA_In_Manual ro none 0 1
43 ww_1_lo_discharge_alm rr_facility default periodic BIT 0 AL0_WW1_Lo_Discharge_Alarm ro none 0 1
44 ww_1_lo_flow_alm rr_facility default periodic BIT 0 AL0_WW1_Lo_Flow_Alarm ro none 0 1
45 ww_1_lo_pip_alm rr_facility default periodic BIT 0 AL0_WW1_Lo_PIP_Alarm ro none 0 1
46 ww_1_master_comm_alm rr_facility default periodic BIT 0 AL0_WW1_Master_Communication_Failure ro none 0 1
47 ww_1_vfd_alm rr_facility default periodic BIT 0 AL0_WW1_VFD_Faulted ro none 0 1
48 ww_2_control_power_alm rr_facility default periodic BIT 0 AL0_WW2_Control_Power_Failure ro none 0 1
49 ww_2_hi_discharge_alm rr_facility default periodic BIT 0 AL0_WW2_Hi_Discharge_Alarm ro none 0 1
50 ww_2_hi_flow_alm rr_facility default periodic BIT 0 AL0_WW2_Hi_Flow_Alarm ro none 0 1
51 ww_2_hoa_in_manual_alm rr_facility default periodic BIT 0 AL0_WW2_HOA_In_Manual ro none 0 1
52 ww_2_lo_discharge_alm rr_facility default periodic BIT 0 AL0_WW2_Lo_Discharge_Alarm ro none 0 1
53 ww_2_lo_flow_alm rr_facility default periodic BIT 0 AL0_WW2_Lo_Flow_Alarm ro none 0 1
54 ww_2_lo_pip_alm rr_facility default periodic BIT 0 AL0_WW2_Lo_PIP_Alarm ro none 0 1
55 ww_2_master_comm_alm rr_facility default periodic BIT 0 AL0_WW2_Master_Communication_Failure ro none 0 1
56 ww_2_vfd_alm rr_facility default periodic BIT 0 AL0_WW2_VFD_Faulted ro none 0 1
57 ww_3_control_power_alm rr_facility default periodic BIT 0 AL0_WW3_Control_Power_Failure ro none 0 1
58 ww_3_hi_discharge_alm rr_facility default periodic BIT 0 AL0_WW3_Hi_Discharge_Alarm ro none 0 1
59 ww_3_hi_flow_alm rr_facility default periodic BIT 0 AL0_WW3_Hi_Flow_Alarm ro none 0 1
60 ww_3_hoa_in_manual_alm rr_facility default periodic BIT 0 AL0_WW3_HOA_In_Manual ro none 0 1
61 ww_3_lo_discharge_alm rr_facility default periodic BIT 0 AL0_WW3_Lo_Discharge_Alarm ro none 0 1
62 ww_3_lo_flow_alm rr_facility default periodic BIT 0 AL0_WW3_Lo_Flow_Alarm ro none 0 1
63 ww_3_lo_pip_alm rr_facility default periodic BIT 0 AL0_WW3_Lo_PIP_Alarm ro none 0 1
64 ww_3_master_comm_alm rr_facility default periodic BIT 0 AL0_WW3_Master_Communication_Failure ro none 0 1
65 ww_3_vfd_alm rr_facility default periodic BIT 0 AL0_WW3_VFD_Faulted ro none 0 1
66 ww_4_control_power_alm rr_facility default periodic BIT 0 AL0_WW4_Control_Power_Failure ro none 0 1
67 ww_4_hi_discharge_alm rr_facility default periodic BIT 0 AL0_WW4_Hi_Discharge_Alarm ro none 0 1
68 ww_4_hi_flow_alm rr_facility default periodic BIT 0 AL0_WW4_Hi_Flow_Alarm ro none 0 1
69 ww_4_hoa_in_manual_alm rr_facility default periodic BIT 0 AL0_WW4_HOA_In_Manual ro none 0 1
70 ww_4_lo_discharge_alm rr_facility default periodic BIT 0 AL0_WW4_Lo_Discharge_Alarm ro none 0 1
71 ww_4_lo_flow_alm rr_facility default periodic BIT 0 AL0_WW4_Lo_Flow_Alarm ro none 0 1
72 ww_4_lo_pip_alm rr_facility default periodic BIT 0 AL0_WW4_Lo_PIP_Alarm ro none 0 1
73 ww_4_master_comm_alm rr_facility default periodic BIT 0 AL0_WW4_Master_Communication_Failure ro none 0 1
74 ww_4_vfd_alm rr_facility default periodic BIT 0 AL0_WW4_VFD_Faulted ro none 0 1
75 ww_5_control_power_alm rr_facility default periodic BIT 0 AL0_WW5_Control_Power_Failure ro none 0 1
76 ww_5_hi_discharge_alm rr_facility default periodic BIT 0 AL0_WW5_Hi_Discharge_Alarm ro none 0 1
77 ww_5_hi_flow_alm rr_facility default periodic BIT 0 AL0_WW5_Hi_Flow_Alarm ro none 0 1
78 ww_5_hoa_in_manual_alm rr_facility default periodic BIT 0 AL0_WW5_HOA_In_Manual ro none 0 1
79 ww_5_lo_discharge_alm rr_facility default periodic BIT 0 AL0_WW5_Lo_Discharge_Alarm ro none 0 1
80 ww_5_lo_flow_alm rr_facility default periodic BIT 0 AL0_WW5_Lo_Flow_Alarm ro none 0 1
81 ww_5_lo_pip_alm rr_facility default periodic BIT 0 AL0_WW5_Lo_PIP_Alarm ro none 0 1
82 ww_5_master_comm_alm rr_facility default periodic BIT 0 AL0_WW5_Master_Communication_Failure ro none 0 1
83 ww_5_vfd_alm rr_facility default periodic BIT 0 AL0_WW5_VFD_Faulted ro none 0 1
84 ww_6_control_power_alm rr_facility default periodic BIT 0 AL0_WW6_Control_Power_Failure ro none 0 1
85 ww_6_hi_discharge_alm rr_facility default periodic BIT 0 AL0_WW6_Hi_Discharge_Alarm ro none 0 1
86 ww_6_hi_flow_alm rr_facility default periodic BIT 0 AL0_WW6_Hi_Flow_Alarm ro none 0 1
87 ww_6_hoa_in_manual_alm rr_facility default periodic BIT 0 AL0_WW6_HOA_In_Manual ro none 0 1
88 ww_6_lo_discharge_alm rr_facility default periodic BIT 0 AL0_WW6_Lo_Discharge_Alarm ro none 0 1
89 ww_6_lo_flow_alm rr_facility default periodic BIT 0 AL0_WW6_Lo_Flow_Alarm ro none 0 1
90 ww_6_lo_pip_alm rr_facility default periodic BIT 0 AL0_WW6_Lo_PIP_Alarm ro none 0 1
91 ww_6_master_comm_alm rr_facility default periodic BIT 0 AL0_WW6_Master_Communication_Failure ro none 0 1
92 ww_6_vfd_alm rr_facility default periodic BIT 0 AL0_WW6_VFD_Faulted ro none 0 1
93 tp_1_vfd_run_cmd rr_facility default periodic BIT 0 CMD_Run_TP1_VFD rw none 0 1
94 tp_2_vfd_run_cmd rr_facility default periodic BIT 0 CMD_Run_TP2_VFD rw none 0 1
95 tp_1_hi_a_winding_bypass_cmd rr_facility default periodic BIT 0 CMD_TP1_High_A_Winding_Temp_Alarm_Bypass rw none 0 1
96 tp_1_hi_b_winding_bypass_cmd rr_facility default periodic BIT 0 CMD_TP1_High_B_Winding_Temp_Alarm_Bypass rw none 0 1
97 tp_1_hi_c_winding_bypass_alm rr_facility default periodic BIT 0 CMD_TP1_High_C_Winding_Temp_Alarm_Bypass rw none 0 1
98 tp_1_hi_discharge_bypass_cmd rr_facility default periodic BIT 0 CMD_TP1_High_Discharge_Alarm_Bypass rw none 0 1
99 tp_1_hi_inboard_temp_bypass_cmd rr_facility default periodic BIT 0 CMD_TP1_High_Inboard_Temp_Alarm_Bypass rw none 0 1
100 tp_1_hi_outboard_temp_bypass_cmd rr_facility default periodic BIT 0 CMD_TP1_High_Outboard_Temp_Alarm_Bypass rw none 0 1
101 tp_1_hi_vibration_bypass_cmd rr_facility default periodic BIT 0 CMD_TP1_High_Vibration_Alarm_Bypass rw none 0 1
102 tp_1_lo_discharge_bypass_cmd rr_facility default periodic BIT 0 CMD_TP1_Low_Discharge_Alarm_Bypass rw none 0 1
103 tp_1_master_bypass_cmd rr_facility default periodic BIT 0 CMD_TP1_Master_Alarm_Bypass rw none 0 1
104 tp_1_master_fault_clear_cmd rr_facility default periodic BIT 0 CMD_TP1_Master_Fault_Clear rw none 0 1
105 tp_1_oil_cooler_bypass_cmd rr_facility default periodic BIT 0 CMD_TP1_Oil_Cooler_Bypass rw none 0 1
106 tp_1_oil_bypass_cmd rr_facility default periodic BIT 0 CMD_TP1_Oil_Level_Alarm_Bypass rw none 0 1
107 tp_1_pid_auto_cmd rr_facility default periodic BIT 0 CMD_TP1_PID_Auto rw none 0 1
108 tp_2_hi_a_winding_bypass_cmd rr_facility default periodic BIT 0 CMD_TP2_High_A_Winding_Temp_Alarm_Bypass rw none 0 1
109 tp_2_hi_b_winding_bypass_cmd rr_facility default periodic BIT 0 CMD_TP2_High_B_Winding_Temp_Alarm_Bypass rw none 0 1
110 tp_2_hi_c_winding_bypass_alm rr_facility default periodic BIT 0 CMD_TP2_High_C_Winding_Temp_Alarm_Bypass rw none 0 1
111 tp_2_hi_discharge_bypass_cmd rr_facility default periodic BIT 0 CMD_TP2_High_Discharge_Alarm_Bypass rw none 0 1
112 tp_2_hi_inboard_temp_bypass_cmd rr_facility default periodic BIT 0 CMD_TP2_High_Inboard_Temp_Alarm_Bypass rw none 0 1
113 tp_2_hi_outboard_temp_bypass_cmd rr_facility default periodic BIT 0 CMD_TP2_High_Outboard_Temp_Alarm_Bypass rw none 0 1
114 tp_2_hi_vibration_bypass_cmd rr_facility default periodic BIT 0 CMD_TP2_High_Vibration_Alarm_Bypass rw none 0 1
115 tp_2_lo_discharge_bypass_cmd rr_facility default periodic BIT 0 CMD_TP2_Low_Discharge_Alarm_Bypass rw none 0 1
116 tp_2_master_bypass_cmd rr_facility default periodic BIT 0 CMD_TP2_Master_Alarm_Bypass rw none 0 1
117 tp_2_master_fault_clear_cmd rr_facility default periodic BIT 0 CMD_TP2_Master_Fault_Clear rw none 0 1
118 tp_2_oil_cooler_bypass_cmd rr_facility default periodic BIT 0 CMD_TP2_Oil_Cooler_Bypass rw none 0 1
119 tp_2_oil_bypass_cmd rr_facility default periodic BIT 0 CMD_TP2_Oil_Level_Alarm_Bypass rw none 0 1
120 tp_2_pid_auto_cmd rr_facility default periodic BIT 0 CMD_TP2_PID_Auto rw none 0 1
121 ww_all_start_stop_cmd rr_facility default periodic BIT 0 CMD_WW_Start_Stop_Together rw none 0 1
122 ww_1_auto_cmd rr_facility default periodic BIT 0 CMD_WW1_Auto rw none 0 1
123 ww_1_comms_cmd rr_facility default periodic BIT 0 CMD_WW1_Communication_Check rw none 0 1
124 ww_1_hi_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW1_Enable_Hi_Disch_Alarm rw none 0 1
125 ww_1_hi_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW1_Enable_Hi_Flow_Alarm rw none 0 1
126 ww_1_lo_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW1_Enable_Lo_Disch_Alarm rw none 0 1
127 ww_1_lo_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW1_Enable_Lo_Flow_Alarm rw none 0 1
128 ww_1_lo_pip_enable_cmd rr_facility default periodic BIT 0 CMD_WW1_Enable_Lo_PIP_Alarm rw none 0 1
129 ww_1_manual_run_cmd rr_facility default periodic BIT 0 CMD_WW1_Manual_Run rw none 0 1
130 ww_1_pid_auto_cmd rr_facility default periodic BIT 0 CMD_WW1_PID_Auto rw none 0 1
131 ww_1_run_cmd rr_facility default periodic BIT 0 CMD_WW1_Run rw none 0 1
132 ww_2_auto_cmd rr_facility default periodic BIT 0 CMD_WW2_Auto rw none 0 1
133 ww_2_comms_cmd rr_facility default periodic BIT 0 CMD_WW2_Communication_Check rw none 0 1
134 ww_2_hi_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW2_Enable_Hi_Disch_Alarm rw none 0 1
135 ww_2_hi_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW2_Enable_Hi_Flow_Alarm rw none 0 1
136 ww_2_lo_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW2_Enable_Lo_Disch_Alarm rw none 0 1
137 ww_2_lo_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW2_Enable_Lo_Flow_Alarm rw none 0 1
138 ww_2_lo_pip_enable_cmd rr_facility default periodic BIT 0 CMD_WW2_Enable_Lo_PIP_Alarm rw none 0 1
139 ww_2_manual_run_cmd rr_facility default periodic BIT 0 CMD_WW2_Manual_Run rw none 0 1
140 ww_2_pid_auto_cmd rr_facility default periodic BIT 0 CMD_WW2_PID_Auto rw none 0 1
141 ww_2_run_cmd rr_facility default periodic BIT 0 CMD_WW2_Run rw none 0 1
142 ww_3_auto_cmd rr_facility default periodic BIT 0 CMD_WW3_Auto rw none 0 1
143 ww_3_comms_cmd rr_facility default periodic BIT 0 CMD_WW3_Communication_Check rw none 0 1
144 ww_3_hi_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW3_Enable_Hi_Disch_Alarm rw none 0 1
145 ww_3_hi_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW3_Enable_Hi_Flow_Alarm rw none 0 1
146 ww_3_lo_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW3_Enable_Lo_Disch_Alarm rw none 0 1
147 ww_3_lo_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW3_Enable_Lo_Flow_Alarm rw none 0 1
148 ww_3_lo_pip_enable_cmd rr_facility default periodic BIT 0 CMD_WW3_Enable_Lo_PIP_Alarm rw none 0 1
149 ww_3_manual_run_cmd rr_facility default periodic BIT 0 CMD_WW3_Manual_Run rw none 0 1
150 ww_3_pid_auto_cmd rr_facility default periodic BIT 0 CMD_WW3_PID_Auto rw none 0 1
151 ww_3_run_cmd rr_facility default periodic BIT 0 CMD_WW3_Run rw none 0 1
152 ww_4_auto_cmd rr_facility default periodic BIT 0 CMD_WW4_Auto rw none 0 1
153 ww_4_comms_cmd rr_facility default periodic BIT 0 CMD_WW4_Communication_Check rw none 0 1
154 ww_4_hi_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW4_Enable_Hi_Disch_Alarm rw none 0 1
155 ww_4_hi_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW4_Enable_Hi_Flow_Alarm rw none 0 1
156 ww_4_lo_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW4_Enable_Lo_Disch_Alarm rw none 0 1
157 ww_4_lo_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW4_Enable_Lo_Flow_Alarm rw none 0 1
158 ww_4_lo_pip_enable_cmd rr_facility default periodic BIT 0 CMD_WW4_Enable_Lo_PIP_Alarm rw none 0 1
159 ww_4_manual_run_cmd rr_facility default periodic BIT 0 CMD_WW4_Manual_Run rw none 0 1
160 ww_4_pid_auto_cmd rr_facility default periodic BIT 0 CMD_WW4_PID_Auto rw none 0 1
161 ww_4_run_cmd rr_facility default periodic BIT 0 CMD_WW4_Run rw none 0 1
162 ww_5_auto_cmd rr_facility default periodic BIT 0 CMD_WW5_Auto rw none 0 1
163 ww_5_comms_cmd rr_facility default periodic BIT 0 CMD_WW5_Communication_Check rw none 0 1
164 ww_5_hi_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW5_Enable_Hi_Disch_Alarm rw none 0 1
165 ww_5_hi_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW5_Enable_Hi_Flow_Alarm rw none 0 1
166 ww_5_lo_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW5_Enable_Lo_Disch_Alarm rw none 0 1
167 ww_5_lo_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW5_Enable_Lo_Flow_Alarm rw none 0 1
168 ww_5_lo_pip_enable_cmd rr_facility default periodic BIT 0 CMD_WW5_Enable_Lo_PIP_Alarm rw none 0 1
169 ww_5_manual_run_cmd rr_facility default periodic BIT 0 CMD_WW5_Manual_Run rw none 0 1
170 ww_5_pid_auto_cmd rr_facility default periodic BIT 0 CMD_WW5_PID_Auto rw none 0 1
171 ww_5_run_cmd rr_facility default periodic BIT 0 CMD_WW5_Run rw none 0 1
172 ww_6_auto_cmd rr_facility default periodic BIT 0 CMD_WW6_Auto rw none 0 1
173 ww_6_comms_cmd rr_facility default periodic BIT 0 CMD_WW6_Communication_Check rw none 0 1
174 ww_6_hi_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW6_Enable_Hi_Disch_Alarm rw none 0 1
175 ww_6_hi_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW6_Enable_Hi_Flow_Alarm rw none 0 1
176 ww_6_lo_discharge_enable_cmd rr_facility default periodic BIT 0 CMD_WW6_Enable_Lo_Disch_Alarm rw none 0 1
177 ww_6_lo_flow_enable_cmd rr_facility default periodic BIT 0 CMD_WW6_Enable_Lo_Flow_Alarm rw none 0 1
178 ww_6_lo_pip_enable_cmd rr_facility default periodic BIT 0 CMD_WW6_Enable_Lo_PIP_Alarm rw none 0 1
179 ww_6_manual_run_cmd rr_facility default periodic BIT 0 CMD_WW6_Manual_Run rw none 0 1
180 ww_6_pid_auto_cmd rr_facility default periodic BIT 0 CMD_WW6_PID_Auto rw none 0 1
181 ww_6_run_cmd rr_facility default periodic BIT 0 CMD_WW6_Run rw none 0 1
182 current_day rr_facility default periodic INT 0 Current_Day ro none 1
183 current_hour rr_facility default periodic INT 0 Current_Hour ro none 1
184 current_minute rr_facility default periodic INT 0 Current_Minute ro none 1
185 current_second rr_facility default periodic INT 0 Current_Second ro none 1
186 tp_1_charge_pump_running rr_facility default periodic BIT 0 FBK_TP1_Charge_Pump_Running ro none 0 1
187 tp_1_lo_oil rr_facility default periodic BIT 0 FBK_TP1_Low_Oil_Level ro none 0 1
188 tp_1_oil_cooler_running rr_facility default periodic BIT 0 FBK_TP1_Oil_Cooler_Running ro none 0 1
189 tp_1_vfd_running rr_facility default periodic BIT 0 FBK_TP1_VFD_Running ro none 0 1
190 tp_2_charge_pump_running rr_facility default periodic BIT 0 FBK_TP2_Charge_Pump_Running ro none 0 1
191 tp_2_lo_oil rr_facility default periodic BIT 0 FBK_TP2_Low_Oil_Level ro none 0 1
192 tp_2_oil_cooler_running rr_facility default periodic BIT 0 FBK_TP2_Oil_Cooler_Running ro none 0 1
193 tp_2_vfd_running rr_facility default periodic BIT 0 FBK_TP2_VFD_Running ro none 0 1
194 ww_1_vfd_running rr_facility default periodic BIT 0 FBK_WW1_VFD_Running ro none 0 1
195 ww_2_vfd_running rr_facility default periodic BIT 0 FBK_WW2_VFD_Running ro none 0 1
196 ww_3_vfd_running rr_facility default periodic BIT 0 FBK_WW3_VFD_Running ro none 0 1
197 ww_4_vfd_running rr_facility default periodic BIT 0 FBK_WW4_VFD_Running ro none 0 1
198 ww_5_vfd_running rr_facility default periodic BIT 0 FBK_WW5_VFD_Running ro none 0 1
199 ww_6_vfd_running rr_facility default periodic BIT 0 FBK_WW6_VFD_Running ro none 0 1
200 pond_level_start_spt rr_facility default periodic FLOAT SPT_Pond_Level_Start 2 rw none 1
201 ww_1_pond_level_start_spt rr_facility default periodic FLOAT SPT_Pond_Level_Start_WW1 2 rw none 1
202 ww_2_pond_level_start_spt rr_facility default periodic FLOAT SPT_Pond_Level_Start_WW2 2 rw none 1
203 ww_3_pond_level_start_spt rr_facility default periodic FLOAT SPT_Pond_Level_Start_WW3 2 rw none 1
204 ww_4_pond_level_start_spt rr_facility default periodic FLOAT SPT_Pond_Level_Start_WW4 2 rw none 1
205 ww_5_pond_level_start_spt rr_facility default periodic FLOAT SPT_Pond_Level_Start_WW5 2 rw none 1
206 ww_6_pond_level_start_spt rr_facility default periodic FLOAT SPT_Pond_Level_Start_WW6 2 rw none 1
207 pond_level_stop_spt rr_facility default periodic FLOAT SPT_Pond_Level_Stop 2 rw none 1
208 ww_1_pond_level_stop_spt rr_facility default periodic FLOAT SPT_Pond_Level_Stop_WW1 2 rw none 1
209 ww_2_pond_level_stop_spt rr_facility default periodic FLOAT SPT_Pond_Level_Stop_WW2 2 rw none 1
210 ww_3_pond_level_stop_spt rr_facility default periodic FLOAT SPT_Pond_Level_Stop_WW3 2 rw none 1
211 ww_4_pond_level_stop_spt rr_facility default periodic FLOAT SPT_Pond_Level_Stop_WW4 2 rw none 1
212 ww_5_pond_level_stop_spt rr_facility default periodic FLOAT SPT_Pond_Level_Stop_WW5 2 rw none 1
213 ww_6_pond_level_stop_spt rr_facility default periodic FLOAT SPT_Pond_Level_Stop_WW6 2 rw none 1
214 suction_permissive_spt rr_facility default periodic FLOAT SPT_Suction_PSI_Permissive 2 rw none 1
215 tp_1_hi_a_winding_spt rr_facility default periodic FLOAT SPT_TP1_A_Winding_High 2 rw none 1
216 tp_1_hi_b_winding_spt rr_facility default periodic FLOAT SPT_TP1_B_Winding_High 2 rw none 1
217 tp_1_hi_c_winding_spt rr_facility default periodic FLOAT SPT_TP1_C_Winding_High 2 rw none 1
218 tp_1_hi_discharge_spt rr_facility default periodic FLOAT SPT_TP1_High_Discharge_Alarm 2 rw none 1
219 tp_1_hi_vibration_spt rr_facility default periodic FLOAT SPT_TP1_High_Vibration_Alarm 2 rw none 1
220 tp_1_hi_inboard_temp_spt rr_facility default periodic FLOAT SPT_TP1_Inboard_High 2 rw none 1
221 tp_1_lo_discharge_spt rr_facility default periodic FLOAT SPT_TP1_Low_Discharge_Alarm 2 rw none 1
222 tp_1_hi_outboard_temp_spt rr_facility default periodic FLOAT SPT_TP1_Outboard_High 2 rw none 1
223 tp_1_pid_manual_frequency_spt rr_facility default periodic FLOAT SPT_TP1_PID_Manual_Freq 2 rw none 1
224 tp_1_pid_spt rr_facility default periodic FLOAT SPT_TP1_PID_Setpoint 2 rw none 1
225 tp_2_hi_a_winding_spt rr_facility default periodic FLOAT SPT_TP2_A_Winding_High 2 rw none 1
226 tp_2_hi_b_winding_spt rr_facility default periodic FLOAT SPT_TP2_B_Winding_High 2 rw none 1
227 tp_2_hi_c_winding_spt rr_facility default periodic FLOAT SPT_TP2_C_Winding_High 2 rw none 1
228 tp_2_hi_discharge_spt rr_facility default periodic FLOAT SPT_TP2_High_Discharge_Alarm 2 rw none 1
229 tp_2_hi_vibration_spt rr_facility default periodic FLOAT SPT_TP2_High_Vibration_Alarm 2 rw none 1
230 tp_2_hi_inboard_temp_spt rr_facility default periodic FLOAT SPT_TP2_Inboard_High 2 rw none 1
231 tp_2_lo_discharge_spt rr_facility default periodic FLOAT SPT_TP2_Low_Discharge_Alarm 2 rw none 1
232 tp_2_hi_outboard_temp_spt rr_facility default periodic FLOAT SPT_TP2_Outboard_High 2 rw none 1
233 tp_2_pid_manual_frequency_spt rr_facility default periodic FLOAT SPT_TP2_PID_Manual_Freq 2 rw none 1
234 tp_2_pid_spt rr_facility default periodic FLOAT SPT_TP2_PID_Setpoint 2 rw none 1
235 ww_1_hand_frequency_spt rr_facility default periodic FLOAT SPT_WW1_Hand_Freq 2 rw none 1
236 ww_1_hi_discharge_spt rr_facility default periodic FLOAT SPT_WW1_Hi_Disch_Alarm 2 rw none 1
237 ww_1_hi_flow_spt rr_facility default periodic FLOAT SPT_WW1_Hi_Flow_Alarm 2 rw none 1
238 ww_1_lo_discharge_spt rr_facility default periodic FLOAT SPT_WW1_Lo_Disch_Alarm 2 rw none 1
239 ww_1_lo_flow_spt rr_facility default periodic FLOAT SPT_WW1_Lo_Flow_Alarm 2 rw none 1
240 ww_1_lo_pip_spt rr_facility default periodic FLOAT SPT_WW1_Lo_PIP_Alarm 2 rw none 1
241 ww_1_pid_spt rr_facility default periodic FLOAT SPT_WW1_PID_Setpoint 2 rw none 1
242 ww_2_hand_frequency_spt rr_facility default periodic FLOAT SPT_WW2_Hand_Freq 2 rw none 1
243 ww_2_hi_discharge_spt rr_facility default periodic FLOAT SPT_WW2_Hi_Disch_Alarm 2 rw none 1
244 ww_2_hi_flow_spt rr_facility default periodic FLOAT SPT_WW2_Hi_Flow_Alarm 2 rw none 1
245 ww_2_lo_discharge_spt rr_facility default periodic FLOAT SPT_WW2_Lo_Disch_Alarm 2 rw none 1
246 ww_2_lo_flow_spt rr_facility default periodic FLOAT SPT_WW2_Lo_Flow_Alarm 2 rw none 1
247 ww_2_lo_pip_spt rr_facility default periodic FLOAT SPT_WW2_Lo_PIP_Alarm 2 rw none 1
248 ww_2_pid_spt rr_facility default periodic FLOAT SPT_WW2_PID_Setpoint 2 rw none 1
249 ww_3_hand_frequency_spt rr_facility default periodic FLOAT SPT_WW3_Hand_Freq 2 rw none 1
250 ww_3_hi_discharge_spt rr_facility default periodic FLOAT SPT_WW3_Hi_Disch_Alarm 2 rw none 1
251 ww_3_hi_flow_spt rr_facility default periodic FLOAT SPT_WW3_Hi_Flow_Alarm 2 rw none 1
252 ww_3_lo_discharge_spt rr_facility default periodic FLOAT SPT_WW3_Lo_Disch_Alarm 2 rw none 1
253 ww_3_lo_flow_spt rr_facility default periodic FLOAT SPT_WW3_Lo_Flow_Alarm 2 rw none 1
254 ww_3_lo_pip_spt rr_facility default periodic FLOAT SPT_WW3_Lo_PIP_Alarm 2 rw none 1
255 ww_3_pid_spt rr_facility default periodic FLOAT SPT_WW3_PID_Setpoint 2 rw none 1
256 ww_4_hand_frequency_spt rr_facility default periodic FLOAT SPT_WW4_Hand_Freq 2 rw none 1
257 ww_4_hi_discharge_spt rr_facility default periodic FLOAT SPT_WW4_Hi_Disch_Alarm 2 rw none 1
258 ww_4_hi_flow_spt rr_facility default periodic FLOAT SPT_WW4_Hi_Flow_Alarm 2 rw none 1
259 ww_4_lo_discharge_spt rr_facility default periodic FLOAT SPT_WW4_Lo_Disch_Alarm 2 rw none 1
260 ww_4_lo_flow_spt rr_facility default periodic FLOAT SPT_WW4_Lo_Flow_Alarm 2 rw none 1
261 ww_4_lo_pip_spt rr_facility default periodic FLOAT SPT_WW4_Lo_PIP_Alarm 2 rw none 1
262 ww_4_pid_spt rr_facility default periodic FLOAT SPT_WW4_PID_Setpoint 2 rw none 1
263 ww_5_hand_frequency_spt rr_facility default periodic FLOAT SPT_WW5_Hand_Freq 2 rw none 1
264 ww_5_hi_discharge_spt rr_facility default periodic FLOAT SPT_WW5_Hi_Disch_Alarm 2 rw none 1
265 ww_5_hi_flow_spt rr_facility default periodic FLOAT SPT_WW5_Hi_Flow_Alarm 2 rw none 1
266 ww_5_lo_discharge_spt rr_facility default periodic FLOAT SPT_WW5_Lo_Disch_Alarm 2 rw none 1
267 ww_5_lo_flow_spt rr_facility default periodic FLOAT SPT_WW5_Lo_Flow_Alarm 2 rw none 1
268 ww_5_lo_pip_spt rr_facility default periodic FLOAT SPT_WW5_Lo_PIP_Alarm 2 rw none 1
269 ww_5_pid_spt rr_facility default periodic FLOAT SPT_WW5_PID_Setpoint 2 rw none 1
270 ww_6_hand_frequency_spt rr_facility default periodic FLOAT SPT_WW6_Hand_Freq 2 rw none 1
271 ww_6_hi_discharge_spt rr_facility default periodic FLOAT SPT_WW6_Hi_Disch_Alarm 2 rw none 1
272 ww_6_hi_flow_spt rr_facility default periodic FLOAT SPT_WW6_Hi_Flow_Alarm 2 rw none 1
273 ww_6_lo_discharge_spt rr_facility default periodic FLOAT SPT_WW6_Lo_Disch_Alarm 2 rw none 1
274 ww_6_lo_flow_spt rr_facility default periodic FLOAT SPT_WW6_Lo_Flow_Alarm 2 rw none 1
275 ww_6_lo_pip_spt rr_facility default periodic FLOAT SPT_WW6_Lo_PIP_Alarm 2 rw none 1
276 ww_6_pid_spt rr_facility default periodic FLOAT SPT_WW6_PID_Setpoint 2 rw none 1
277 tp_1_charge_pump_run rr_facility default periodic FLOAT TP1_Charge_Pump_Run 2 ro none 1
278 tp_1_oil_cooler_run rr_facility default periodic FLOAT TP1_Oil_Cooler_Run 2 ro none 1
279 tp_2_charge_pump_run rr_facility default periodic FLOAT TP2_Charge_Pump_Run 2 ro none 1
280 tp_2_oil_cooler_run rr_facility default periodic FLOAT TP2_Oil_Cooler_Run 2 ro none 1
281 pond_level rr_facility default periodic FLOAT Val_Pond_Level_Scaled 2 ro none 1
282 tp_1_a_winding_temp rr_facility default periodic FLOAT Val_TP_1_A_Winding_Temp_Scaled 2 ro none 1
283 tp_1_b_winding_temp rr_facility default periodic FLOAT Val_TP_1_B_Winding_Temp_Scaled 2 ro none 1
284 tp_1_c_winding_temp rr_facility default periodic FLOAT Val_TP_1_C_Winding_Temp_Scaled 2 ro none 1
285 tp_1_discharge rr_facility default periodic FLOAT Val_TP_1_Discharge_PSI_Scaled 2 ro none 1
286 tp_1_inboard_temp rr_facility default periodic FLOAT Val_TP_1_Inboard_Temp_Scaled 2 ro none 1
287 tp_1_outboard_temp rr_facility default periodic FLOAT Val_TP_1_Outboard_Temp_Scaled 2 ro none 1
288 tp_1_suction rr_facility default periodic FLOAT Val_TP_1_Suction_PSI_Scaled 2 ro none 1
289 tp_1_vibration rr_facility default periodic FLOAT Val_TP_1_Vibration_Scaled 2 ro none 1
290 tp_2_a_winding_temp rr_facility default periodic FLOAT Val_TP_2_A_Winding_Temp_Scaled 2 ro none 1
291 tp_2_b_winding_temp rr_facility default periodic FLOAT Val_TP_2_B_Winding_Temp_Scaled 2 ro none 1
292 tp_2_c_winding_temp rr_facility default periodic FLOAT Val_TP_2_C_Winding_Temp_Scaled 2 ro none 1
293 tp_2_discharge rr_facility default periodic FLOAT Val_TP_2_Discharge_PSI_Scaled 2 ro none 1
294 tp_2_inboard_temp rr_facility default periodic FLOAT Val_TP_2_Inboard_Temp_Scaled 2 ro none 1
295 tp_2_outboard_temp rr_facility default periodic FLOAT Val_TP_2_Outboard_Temp_Scaled 2 ro none 1
296 tp_2_suction rr_facility default periodic FLOAT Val_TP_2_Suction_PSI_Scaled 2 ro none 1
297 tp_2_vibration rr_facility default periodic FLOAT Val_TP_2_Vibration_Scaled 2 ro none 1
298 tp_flow_rate rr_facility default periodic FLOAT Val_TP_FlowRate 2 ro none 1
299 tp_yesterday_total rr_facility default periodic FLOAT Val_TP_FM_Yest_Total 2 ro none 1
300 tp_last_month_total rr_facility default periodic FLOAT Val_TP_LastMonth_Total 2 ro none 1
301 tp_lifetime_total rr_facility default periodic FLOAT Val_TP_Lifetime_Flow_Total 2 ro none 1
302 tp_month_total rr_facility default periodic FLOAT Val_TP_Monthly_Total 2 ro none 1
303 tp_today_total rr_facility default periodic FLOAT Val_TP_Today_Total 2 ro none 1
304 tp_1_vfd_frequency rr_facility default periodic FLOAT Val_TP1_VFD_Frequency_Setpoint 2 ro none 1
305 tp_1_vfd_output_current rr_facility default periodic FLOAT Val_TP1_VFD_Output_Current 2 ro none 1
306 tp_1_vfd_output_frequency rr_facility default periodic FLOAT Val_TP1_VFD_Output_Frequency 2 ro none 1
307 tp_1_vfd_output_voltage rr_facility default periodic FLOAT Val_TP1_VFD_Output_Voltage 2 ro none 1
308 tp_2_vfd_frequency rr_facility default periodic FLOAT Val_TP2_VFD_Frequency_Setpoint 2 ro none 1
309 tp_2_vfd_output_current rr_facility default periodic FLOAT Val_TP2_VFD_Output_Current 2 ro none 1
310 tp_2_vfd_output_frequency rr_facility default periodic FLOAT Val_TP2_VFD_Output_Frequency 2 ro none 1
311 tp_2_vfd_output_voltage rr_facility default periodic FLOAT Val_TP2_VFD_Output_Voltage 2 ro none 1
312 ww_1_discharge rr_facility default periodic FLOAT Val_WW1_Discharge_PSI 2 ro none 1
313 ww_1_downhole rr_facility default periodic FLOAT Val_WW1_Downhole_PSI 2 ro none 1
314 ww_1_flow_rate rr_facility default periodic FLOAT Val_WW1_Flowmeter_FR 2 ro none 1
315 ww_1_last_month_total rr_facility default periodic FLOAT Val_WW1_Flowmeter_LastMonth_Total 2 ro none 1
316 ww_1_month_total rr_facility default periodic FLOAT Val_WW1_Flowmeter_Month_Total 2 ro none 1
317 ww_1_today_total rr_facility default periodic FLOAT Val_WW1_Flowmeter_Todays_Total 2 ro none 1
318 ww_1_lifetime_total rr_facility default periodic FLOAT Val_WW1_Flowmeter_Total 2 ro none 1
319 ww_1_yesterday_total rr_facility default periodic FLOAT Val_WW1_Flowmeter_Yest_Total 2 ro none 1
320 ww_1_vfd_frequency_spt rr_facility default periodic FLOAT Val_WW1_VFD_Frequency_Setpoint 2 rw none 1
321 ww_1_vfd_current rr_facility default periodic FLOAT Val_WW1_VFD_Output_Current 2 ro none 1
322 ww_1_vfd_frequency rr_facility default periodic FLOAT Val_WW1_VFD_Output_Frequency 2 ro none 1
323 ww_1_vfd_voltage rr_facility default periodic FLOAT Val_WW1_VFD_Output_Voltage 2 ro none 1
324 ww_2_discharge rr_facility default periodic FLOAT Val_WW2_Discharge_PSI 2 ro none 1
325 ww_2_downhole rr_facility default periodic FLOAT Val_WW2_Downhole_PSI 2 ro none 1
326 ww_2_flow_rate rr_facility default periodic FLOAT Val_WW2_Flowmeter_FR 2 ro none 1
327 ww_2_last_month_total rr_facility default periodic FLOAT Val_WW2_Flowmeter_LastMonth_Total 2 ro none 1
328 ww_2_month_total rr_facility default periodic FLOAT Val_WW2_Flowmeter_Month_Total 2 ro none 1
329 ww_2_today_total rr_facility default periodic FLOAT Val_WW2_Flowmeter_Todays_Total 2 ro none 1
330 ww_2_lifetime_total rr_facility default periodic FLOAT Val_WW2_Flowmeter_Total 2 ro none 1
331 ww_2_yesterday_total rr_facility default periodic FLOAT Val_WW2_Flowmeter_Yest_Total 2 ro none 1
332 ww_2_vfd_frequency_spt rr_facility default periodic FLOAT Val_WW2_VFD_Frequency_Setpoint 2 rw none 1
333 ww_2_vfd_current rr_facility default periodic FLOAT Val_WW2_VFD_Output_Current 2 ro none 1
334 ww_2_vfd_frequency rr_facility default periodic FLOAT Val_WW2_VFD_Output_Frequency 2 ro none 1
335 ww_2_vfd_voltage rr_facility default periodic FLOAT Val_WW2_VFD_Output_Voltage 2 ro none 1
336 ww_3_discharge rr_facility default periodic FLOAT Val_WW3_Discharge_PSI 2 ro none 1
337 ww_3_downhole rr_facility default periodic FLOAT Val_WW3_Downhole_PSI 2 ro none 1
338 ww_3_flow_rate rr_facility default periodic FLOAT Val_WW3_Flowmeter_FR 2 ro none 1
339 ww_3_last_month_total rr_facility default periodic FLOAT Val_WW3_Flowmeter_LastMonth_Total 2 ro none 1
340 ww_3_month_total rr_facility default periodic FLOAT Val_WW3_Flowmeter_Month_Total 2 ro none 1
341 ww_3_today_total rr_facility default periodic FLOAT Val_WW3_Flowmeter_Todays_Total 2 ro none 1
342 ww_3_lifetime_total rr_facility default periodic FLOAT Val_WW3_Flowmeter_Total 2 ro none 1
343 ww_3_yesterday_total rr_facility default periodic FLOAT Val_WW3_Flowmeter_Yest_Total 2 ro none 1
344 ww_3_vfd_frequency_spt rr_facility default periodic FLOAT Val_WW3_VFD_Frequency_Setpoint 2 rw none 1
345 ww_3_vfd_current rr_facility default periodic FLOAT Val_WW3_VFD_Output_Current 2 ro none 1
346 ww_3_vfd_frequency rr_facility default periodic FLOAT Val_WW3_VFD_Output_Frequency 2 ro none 1
347 ww_3_vfd_voltage rr_facility default periodic FLOAT Val_WW3_VFD_Output_Voltage 2 ro none 1
348 ww_4_discharge rr_facility default periodic FLOAT Val_WW4_Discharge_PSI 2 ro none 1
349 ww_4_downhole rr_facility default periodic FLOAT Val_WW4_Downhole_PSI 2 ro none 1
350 ww_4_flow_rate rr_facility default periodic FLOAT Val_WW4_Flowmeter_FR 2 ro none 1
351 ww_4_last_month_total rr_facility default periodic FLOAT Val_WW4_Flowmeter_LastMonth_Total 2 ro none 1
352 ww_4_month_total rr_facility default periodic FLOAT Val_WW4_Flowmeter_Month_Total 2 ro none 1
353 ww_4_today_total rr_facility default periodic FLOAT Val_WW4_Flowmeter_Todays_Total 2 ro none 1
354 ww_4_lifetime_total rr_facility default periodic FLOAT Val_WW4_Flowmeter_Total 2 ro none 1
355 ww_4_yesterday_total rr_facility default periodic FLOAT Val_WW4_Flowmeter_Yest_Total 2 ro none 1
356 ww_4_vfd_frequency_spt rr_facility default periodic FLOAT Val_WW4_VFD_Frequency_Setpoint 2 rw none 1
357 ww_4_vfd_current rr_facility default periodic FLOAT Val_WW4_VFD_Output_Current 2 ro none 1
358 ww_4_vfd_frequency rr_facility default periodic FLOAT Val_WW4_VFD_Output_Frequency 2 ro none 1
359 ww_4_vfd_voltage rr_facility default periodic FLOAT Val_WW4_VFD_Output_Voltage 2 ro none 1
360 ww_5_discharge rr_facility default periodic FLOAT Val_WW5_Discharge_PSI 2 ro none 1
361 ww_5_downhole rr_facility default periodic FLOAT Val_WW5_Downhole_PSI 2 ro none 1
362 ww_5_flow_rate rr_facility default periodic FLOAT Val_WW5_Flowmeter_FR 2 ro none 1
363 ww_5_last_month_total rr_facility default periodic FLOAT Val_WW5_Flowmeter_LastMonth_Total 2 ro none 1
364 ww_5_month_total rr_facility default periodic FLOAT Val_WW5_Flowmeter_Month_Total 2 ro none 1
365 ww_5_today_total rr_facility default periodic FLOAT Val_WW5_Flowmeter_Todays_Total 2 ro none 1
366 ww_5_lifetime_total rr_facility default periodic FLOAT Val_WW5_Flowmeter_Total 2 ro none 1
367 ww_5_yesterday_total rr_facility default periodic FLOAT Val_WW5_Flowmeter_Yest_Total 2 ro none 1
368 ww_5_vfd_frequency_spt rr_facility default periodic FLOAT Val_WW5_VFD_Frequency_Setpoint 2 rw none 1
369 ww_5_vfd_current rr_facility default periodic FLOAT Val_WW5_VFD_Output_Current 2 ro none 1
370 ww_5_vfd_frequency rr_facility default periodic FLOAT Val_WW5_VFD_Output_Frequency 2 ro none 1
371 ww_5_vfd_voltage rr_facility default periodic FLOAT Val_WW5_VFD_Output_Voltage 2 ro none 1
372 ww_6_discharge rr_facility default periodic FLOAT Val_WW6_Discharge_PSI 2 ro none 1
373 ww_6_downhole rr_facility default periodic FLOAT Val_WW6_Downhole_PSI 2 ro none 1
374 ww_6_flow_rate rr_facility default periodic FLOAT Val_WW6_Flowmeter_FR 2 ro none 1
375 ww_6_last_month_total rr_facility default periodic FLOAT Val_WW6_Flowmeter_LastMonth_Total 2 ro none 1
376 ww_6_month_total rr_facility default periodic FLOAT Val_WW6_Flowmeter_Month_Total 2 ro none 1
377 ww_6_today_total rr_facility default periodic FLOAT Val_WW6_Flowmeter_Todays_Total 2 ro none 1
378 ww_6_lifetime_total rr_facility default periodic FLOAT Val_WW6_Flowmeter_Total 2 ro none 1
379 ww_6_yesterday_total rr_facility default periodic FLOAT Val_WW6_Flowmeter_Yest_Total 2 ro none 1
380 ww_6_vfd_frequency_spt rr_facility default periodic FLOAT Val_WW6_VFD_Frequency_Setpoint 2 rw none 1
381 ww_6_vfd_current rr_facility default periodic FLOAT Val_WW6_VFD_Output_Current 2 ro none 1
382 ww_6_vfd_frequency rr_facility default periodic FLOAT Val_WW6_VFD_Output_Frequency 2 ro none 1
383 ww_6_vfd_voltage rr_facility default periodic FLOAT Val_WW6_VFD_Output_Voltage 2 ro none 1

View File

@@ -0,0 +1,75 @@
import json, time
from datetime import datetime as dt
from quickfaas.measure import recall, write
from quickfaas.remotebus import publish
from common.Logger import logger
# Helper function to split the payload into chunks
def chunk_payload(payload, chunk_size=20):
chunked_values = list(payload["values"].items())
for i in range(0, len(chunked_values), chunk_size):
yield {
"ts": payload["ts"],
"values": dict(chunked_values[i:i+chunk_size])
}
def sync():
#get new values and send
payload = {"ts": round(dt.timestamp(dt.now()))*1000, "values": {}}
topic = "v1/devices/me/telemetry"
try:
data = recall()#json.loads(recall().decode("utf-8"))
except Exception as e:
logger.error(e)
logger.debug(data)
for controller in data:
for measure in controller["measures"]:
#publish measure
payload["values"][measure["name"]] = measure["value"]
logger.debug("Sending on topic: {}".format(topic))
logger.debug("Sending value: {}".format(payload))
for chunk in chunk_payload(payload=payload):
publish(topic, json.dumps(chunk), 1)
time.sleep(2)
def writeplctag(value):
#value in the form {"measurement": <measurement_name>, "value": <value to write>}
try:
#value = json.loads(value.replace("'",'"'))
logger.info(value)
#payload format: [{"name": "advvfdipp", "measures": [{"name": "manualfrequencysetpoint", "value": 49}]}]
message = [{"name": "rr_facility", "measures":[{"name":value["measurement"], "value": value["value"]}]}]
resp = write(message)
logger.info("RETURN FROM WRITE: {}".format(resp))
return True
except Exception as e:
logger.error(e)
return False
def receiveCommand(topic, payload, wizard_api):
try:
logger.debug(topic)
logger.info(json.loads(payload))
p = json.loads(payload)
command = p["method"]
commands = {
"sync": sync,
"writeplctag": writeplctag,
}
if command == "setPLCTag":
result = commands["writeplctag"](p["params"])
if result:
sync()
#commands[command](p["mac"].lower(),p["payload"]["value"], wizard_api)
#logger.debug(command)
ack(topic.split("/")[-1], wizard_api)
except Exception as e:
logger.error(e)
def ack(msgid, wizard_api):
#logger.debug(msgid)
#logger.debug(mac)
#logger.debug(name)
#logger.debug(value)
wizard_api.mqtt_publish("v1/devices/me/rpc/response/" + str(msgid), json.dumps({"msg": {"time": time.time()}, "metadata": "", "msgType": ""}))

File diff suppressed because one or more lines are too long