added more tags and RPC Gateway

This commit is contained in:
Nico Melone
2025-05-27 21:02:14 -05:00
parent a9c3f6e891
commit d4d056ee7f
2 changed files with 21 additions and 31 deletions

View File

@@ -3,7 +3,7 @@ auto,overflow_pump,default,periodic,BIT,,,0,Raw_Auto_Input ,,,ro,, HOA auto stat
discharge_out,overflow_pump,default,periodic,FLOAT,,,,DisPSI_Out,2,,ro,,,none,,,,,,,,,,,,,,,0,,,,,1 discharge_out,overflow_pump,default,periodic,FLOAT,,,,DisPSI_Out,2,,ro,,,none,,,,,,,,,,,,,,,0,,,,,1
fit_rate,overflow_pump,default,periodic,FLOAT,,,,FIT_Rate,2,,ro,,,none,,,,,,,,,,,,,,,0,,,,,1 fit_rate,overflow_pump,default,periodic,FLOAT,,,,FIT_Rate,2,,ro,,,none,,,,,,,,,,,,,,,0,,,,,1
hand,overflow_pump,default,periodic,BIT,,,0,Raw_Hand_Input ,,,ro,, HOA hand status,none,,,,,,,,,,,,,0,,,,,,,1 hand,overflow_pump,default,periodic,BIT,,,0,Raw_Hand_Input ,,,ro,, HOA hand status,none,,,,,,,,,,,,,0,,,,,,,1
level_override,overflow_pump,default,periodic,BIT,,,0,Level_Override ,,,rw,,"1= runs regardless of level, 0= runs based on start/stop levels",none,,,,,,,,,,,,,0,,,,,,,1 level_override_spt,overflow_pump,default,periodic,BIT,,,0,Level_Override ,,,rw,,"1= runs regardless of level, 0= runs based on start/stop levels",none,,,,,,,,,,,,,0,,,,,,,1
overload_status,overflow_pump,default,periodic,BIT,,,0,Raw_Overload_Status , ,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1 overload_status,overflow_pump,default,periodic,BIT,,,0,Raw_Overload_Status , ,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
pond_1_hi_alm,overflow_pump,default,periodic,BIT,,,0,Pond_1_Hi_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1 pond_1_hi_alm,overflow_pump,default,periodic,BIT,,,0,Pond_1_Hi_Alarm,,,ro,,,none,,,,,,,,,,,,,0,,,,,,,1
pond_1_hi_clr_spt,overflow_pump,default,periodic,FLOAT,,,,Pond_1_Hi_Clr_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1 pond_1_hi_clr_spt,overflow_pump,default,periodic,FLOAT,,,,Pond_1_Hi_Clr_Setpoint,2,,rw,,,none,,,,,,,,,,,,,,,,,,,,1
@@ -23,4 +23,5 @@ pond_2_lo_spt,overflow_pump,default,periodic,FLOAT,,,,Pond_2_Lo_Setpoint,2,,rw,,
pond_2_total_bbls,overflow_pump,default,periodic,FLOAT,,,,Pond_2_Total_Barrels,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1 pond_2_total_bbls,overflow_pump,default,periodic,FLOAT,,,,Pond_2_Total_Barrels,2,,ro,,,none,,,,,,,,,,,,,,,,,,,,1
run_status,overflow_pump,default,periodic,BIT,,,0,Raw_Run_Status ,,,ro,, Pump running status,none,,,,,,,,,,,,,0,,,,,,,1 run_status,overflow_pump,default,periodic,BIT,,,0,Raw_Run_Status ,,,ro,, Pump running status,none,,,,,,,,,,,,,0,,,,,,,1
start_level_spt,overflow_pump,default,periodic,FLOAT,,,,Start_Level_spt ,2,,rw,, start level input,none,,,,,,,,,,,,,,,,,,,,1 start_level_spt,overflow_pump,default,periodic,FLOAT,,,,Start_Level_spt ,2,,rw,, start level input,none,,,,,,,,,,,,,,,,,,,,1
start_stop_cmd,overflow_pump,default,periodic,BIT,,,0,CMD_Cloud_Control,,,rw,, Pump Start Stop,none,,,,,,,,,,,,,0,,,,,,,1
stop_level_spt,overflow_pump,default,periodic,FLOAT,,,,Stop_Level_spt ,2,,rw,, stop level input,none,,,,,,,,,,,,,,,,,,,,1 stop_level_spt,overflow_pump,default,periodic,FLOAT,,,,Stop_Level_spt ,2,,rw,, stop level input,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
3 discharge_out overflow_pump default periodic FLOAT DisPSI_Out 2 ro none 0 1
4 fit_rate overflow_pump default periodic FLOAT FIT_Rate 2 ro none 0 1
5 hand overflow_pump default periodic BIT 0 Raw_Hand_Input ro HOA hand status none 0 1
6 level_override level_override_spt overflow_pump default periodic BIT 0 Level_Override rw 1= runs regardless of level, 0= runs based on start/stop levels none 0 1
7 overload_status overflow_pump default periodic BIT 0 Raw_Overload_Status ro none 0 1
8 pond_1_hi_alm overflow_pump default periodic BIT 0 Pond_1_Hi_Alarm ro none 0 1
9 pond_1_hi_clr_spt overflow_pump default periodic FLOAT Pond_1_Hi_Clr_Setpoint 2 rw none 1
23 pond_2_total_bbls overflow_pump default periodic FLOAT Pond_2_Total_Barrels 2 ro none 1
24 run_status overflow_pump default periodic BIT 0 Raw_Run_Status ro Pump running status none 0 1
25 start_level_spt overflow_pump default periodic FLOAT Start_Level_spt 2 rw start level input none 1
26 start_stop_cmd overflow_pump default periodic BIT 0 CMD_Cloud_Control rw Pump Start Stop none 0 1
27 stop_level_spt overflow_pump default periodic FLOAT Stop_Level_spt 2 rw stop level input none 1

View File

@@ -11,20 +11,15 @@ def convertDStoJSON(ds):
j[x["key"]] = x["value"] j[x["key"]] = x["value"]
return j return j
def formatPLCPayload(payload):
def formatPLCPayload(device, key, value):
params = convertDStoJSON(get_params()) params = convertDStoJSON(get_params())
nameMap = { nameMap = {
f"{params['facilityName']} Transfer Pump #1": "tp_1_", f"{params['overflow_pump']}": "overflow_pump"
f"{params['facilityName']} Transfer Pump #2": "tp_2_",
f"{params['facilityName']} Water Well #1": "ww_1_",
f"{params['facilityName']} Water Well #2": "ww_2_",
f"{params['facilityName']} Water Well #3": "ww_3_",
f"{params['facilityName']} Water Well #4": "ww_4_",
f"{params['facilityName']} Water Well #5": "ww_5_",
f"{params['facilityName']} Water Well #6": "ww_6_"
} }
measure = nameMap.get(payload["device"], "") + payload["data"]["params"]["measurement"] measure = key
output = {"measurement": measure, "value": payload["data"]["params"]["value"]} device = nameMap.get(device, "")
output = {"measurement": measure, "value": value, "device": device}
return output return output
@@ -64,20 +59,15 @@ def chunk_payload_gateway(payload, chunk_size=20, is_attributes_payload=False):
}] }]
} }
def controlName(name): def controlName(name):
logger.debug(name)
params = convertDStoJSON(get_params()) params = convertDStoJSON(get_params())
logger.debug(params)
nameMap = { nameMap = {
"tp_1": f"{params['facilityName']} Transfer Pump #1", "overflow_pump": f"{params['overflow_pump']}"
"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(name, "Gateway")
return nameMap.get(parts, "Gateway")
# Filter payloads based on device_filter # Filter payloads based on device_filter
def filter_payload(payload, device_filter): def filter_payload(payload, device_filter):
@@ -170,15 +160,14 @@ def sync(device_filter=[]):
logger.error(e) logger.error(e)
def writeplctag(value): def writeplctag(value):
#value in the form {"measurement": <measurement_name>, "value": <value to write>} # value in the form {"measurement": <measurement_name>, "value": <value to write>}
try: try:
#logger.info(value) logger.debug(value)
#payload format: [{"name": "advvfdipp", "measures": [{"name": "manualfrequencysetpoint", "value": 49}]}] # payload format: [{"name": "advvfdipp", "measures": [{"name": "manualfrequencysetpoint", "value": 49}]}]
message = [{"name": "rr_facility", "measures":[{"name":value["measurement"], "value": value["value"]}]}] message = [{"name": value["device"], "measures": [
resp = write(message) {"name": value["measurement"], "value": value["value"]}]}]
resp = write(message)
logger.debug("RETURN FROM WRITE: {}".format(resp)) logger.debug("RETURN FROM WRITE: {}".format(resp))
return True return True
except Exception as e: except Exception as e:
@@ -189,7 +178,7 @@ def writeplctag(value):
def receiveCommand(topic, payload): def receiveCommand(topic, payload):
try: try:
logger.debug(topic) logger.debug(topic)
logger.debug(json.loads(payload)) logger.info(json.loads(payload))
p = json.loads(payload) p = json.loads(payload)
#logger.info(p) #logger.info(p)
command = p["data"]["method"] command = p["data"]["method"]
@@ -199,7 +188,7 @@ def receiveCommand(topic, payload):
} }
if command == "setPLCTag": if command == "setPLCTag":
try: try:
params = formatPLCPayload(p) params = formatPLCPayload(p["device"], p["data"]["params"]["measurement"], p["data"]["params"]["value"])
#logger.info(params) #logger.info(params)
result = commands["writeplctag"](params) result = commands["writeplctag"](params)
logger.debug(result) logger.debug(result)