From d4d056ee7f89f1ce9e2f12024d8b2fbd6576e071 Mon Sep 17 00:00:00 2001 From: Nico Melone Date: Tue, 27 May 2025 21:02:14 -0500 Subject: [PATCH] added more tags and RPC Gateway --- .../thingsboard/overflow_measures.csv | 3 +- .../thingsboard/sub/receiveCommandGateway.py | 49 +++++++------------ 2 files changed, 21 insertions(+), 31 deletions(-) diff --git a/Pub_Sub/fk_plcpond_gateway/thingsboard/overflow_measures.csv b/Pub_Sub/fk_plcpond_gateway/thingsboard/overflow_measures.csv index e9ef11d..bba9a93 100644 --- a/Pub_Sub/fk_plcpond_gateway/thingsboard/overflow_measures.csv +++ b/Pub_Sub/fk_plcpond_gateway/thingsboard/overflow_measures.csv @@ -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 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 -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 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 @@ -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 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_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 \ No newline at end of file diff --git a/Pub_Sub/fk_plcpond_gateway/thingsboard/sub/receiveCommandGateway.py b/Pub_Sub/fk_plcpond_gateway/thingsboard/sub/receiveCommandGateway.py index 8f708b9..955ced8 100644 --- a/Pub_Sub/fk_plcpond_gateway/thingsboard/sub/receiveCommandGateway.py +++ b/Pub_Sub/fk_plcpond_gateway/thingsboard/sub/receiveCommandGateway.py @@ -11,20 +11,15 @@ def convertDStoJSON(ds): j[x["key"]] = x["value"] return j -def formatPLCPayload(payload): + +def formatPLCPayload(device, key, value): params = convertDStoJSON(get_params()) nameMap = { - f"{params['facilityName']} Transfer Pump #1": "tp_1_", - 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_" + f"{params['overflow_pump']}": "overflow_pump" } - measure = nameMap.get(payload["device"], "") + payload["data"]["params"]["measurement"] - output = {"measurement": measure, "value": payload["data"]["params"]["value"]} + measure = key + device = nameMap.get(device, "") + output = {"measurement": measure, "value": value, "device": device} return output @@ -64,20 +59,15 @@ def chunk_payload_gateway(payload, chunk_size=20, is_attributes_payload=False): }] } + def controlName(name): + logger.debug(name) params = convertDStoJSON(get_params()) + logger.debug(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" + "overflow_pump": f"{params['overflow_pump']}" } - parts = "_".join(name.split("_")[:2]) - return nameMap.get(parts, "Gateway") + return nameMap.get(name, "Gateway") # Filter payloads based on device_filter def filter_payload(payload, device_filter): @@ -170,15 +160,14 @@ def sync(device_filter=[]): logger.error(e) - - def writeplctag(value): - #value in the form {"measurement": , "value": } + # value in the form {"measurement": , "value": } try: - #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.debug(value) + # payload format: [{"name": "advvfdipp", "measures": [{"name": "manualfrequencysetpoint", "value": 49}]}] + message = [{"name": value["device"], "measures": [ + {"name": value["measurement"], "value": value["value"]}]}] + resp = write(message) logger.debug("RETURN FROM WRITE: {}".format(resp)) return True except Exception as e: @@ -189,7 +178,7 @@ def writeplctag(value): def receiveCommand(topic, payload): try: logger.debug(topic) - logger.debug(json.loads(payload)) + logger.info(json.loads(payload)) p = json.loads(payload) #logger.info(p) command = p["data"]["method"] @@ -199,7 +188,7 @@ def receiveCommand(topic, payload): } if command == "setPLCTag": try: - params = formatPLCPayload(p) + params = formatPLCPayload(p["device"], p["data"]["params"]["measurement"], p["data"]["params"]["value"]) #logger.info(params) result = commands["writeplctag"](params) logger.debug(result)