Files
ThingsBoard/Code Snippets/add_alarms.ipynb
2024-12-10 17:48:49 -06:00

286 lines
9.1 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import uuid, json, copy"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"device_profile_id = \"a3e85630-b25d-11ef-8d27-31960e941324\"\n",
"base_profile_path = \"/Users/nico/Documents/GitHub/thingsboard_vc/device_profile/\"\n",
"device_profile = {}"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"with open(base_profile_path+device_profile_id+\".json\", \"r\") as f:\n",
" device_profile = json.load(f)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"alarmDatapoints = [\n",
" \"pond_level_input_alm\",\n",
" \"tp_1_charge_pump_fail_to_start_alm\",\n",
" \"tp_1_hi_a_winding_alm\",\n",
" \"tp_1_hi_b_winding_alm\",\n",
" \"tp_1_hi_c_winding_alm\",\n",
" \"tp_1_hi_discharge_alm\",\n",
" \"tp_1_hi_inboard_temp_alm\",\n",
" \"tp_1_hi_outboard_temp_alm\",\n",
" \"tp_1_hi_vibration_alm\",\n",
" \"tp_1_lo_discharge_alm\",\n",
" \"tp_1_lo_oil_alm\",\n",
" \"tp_1_lo_suction_alm\",\n",
" \"tp_1_oil_cooler_failed_to_start_alm\",\n",
" \"tp_2_charge_pump_fail_to_start_alm\",\n",
" \"tp_2_hi_a_winding_alm\",\n",
" \"tp_2_hi_b_winding_alm\",\n",
" \"tp_2_hi_c_winding_alm\",\n",
" \"tp_2_hi_discharge_alm\",\n",
" \"tp_2_hi_inboard_temp_alm\",\n",
" \"tp_2_hi_outboard_temp_alm\",\n",
" \"tp_2_hi_vibration_alm\",\n",
" \"tp_2_lo_discharge_alm\",\n",
" \"tp_2_lo_oil_alm\",\n",
" \"tp_2_lo_suction_alm\",\n",
" \"tp_2_oil_cooler_failed_to_start_alm\",\n",
" \"wtp_1_discharge_alm\",\n",
" \"wtp_1_suction_alm\",\n",
" \"wtp_1_vibration_alm\",\n",
" \"wtp_2_discharge_alm\",\n",
" \"wtp_2_suction_alm\",\n",
" \"wtp_2_vibration_alm\",\n",
" \"ww_1_comms_alm\",\n",
" \"ww_1_control_power_alm\",\n",
" \"ww_1_hi_discharge_alm\",\n",
" \"ww_1_hi_flow_alm\",\n",
" \"ww_1_hoa_in_manual_alm\",\n",
" \"ww_1_lo_discharge_alm\",\n",
" \"ww_1_lo_flow_alm\",\n",
" \"ww_1_lo_pip_alm\",\n",
" \"ww_1_master_comm_alm\",\n",
" \"ww_1_vfd_alm\",\n",
" \"ww_2_comms_alm\",\n",
" \"ww_2_control_power_alm\",\n",
" \"ww_2_hi_discharge_alm\",\n",
" \"ww_2_hi_flow_alm\",\n",
" \"ww_2_hoa_in_manual_alm\",\n",
" \"ww_2_lo_discharge_alm\",\n",
" \"ww_2_lo_flow_alm\",\n",
" \"ww_2_lo_pip_alm\",\n",
" \"ww_2_master_comm_alm\",\n",
" \"ww_2_vfd_alm\",\n",
" \"ww_3_comms_alm\",\n",
" \"ww_3_control_power_alm\",\n",
" \"ww_3_hi_discharge_alm\",\n",
" \"ww_3_hi_flow_alm\",\n",
" \"ww_3_hoa_in_manual_alm\",\n",
" \"ww_3_lo_discharge_alm\",\n",
" \"ww_3_lo_flow_alm\",\n",
" \"ww_3_lo_pip_alm\",\n",
" \"ww_3_master_comm_alm\",\n",
" \"ww_3_vfd_alm\",\n",
" \"ww_4_comms_alm\",\n",
" \"ww_4_control_power_alm\",\n",
" \"ww_4_hi_discharge_alm\",\n",
" \"ww_4_hi_flow_alm\",\n",
" \"ww_4_hoa_in_manual_alm\",\n",
" \"ww_4_lo_discharge_alm\",\n",
" \"ww_4_lo_flow_alm\",\n",
" \"ww_4_lo_pip_alm\",\n",
" \"ww_4_master_comm_alm\",\n",
" \"ww_4_vfd_alm\",\n",
" \"ww_5_comms_alm\",\n",
" \"ww_5_control_power_alm\",\n",
" \"ww_5_hi_discharge_alm\",\n",
" \"ww_5_hi_flow_alm\",\n",
" \"ww_5_hoa_in_manual_alm\",\n",
" \"ww_5_lo_discharge_alm\",\n",
" \"ww_5_lo_flow_alm\",\n",
" \"ww_5_lo_pip_alm\",\n",
" \"ww_5_master_comm_alm\",\n",
" \"ww_5_vfd_alm\",\n",
" \"ww_6_comms_alm\",\n",
" \"ww_6_control_power_alm\",\n",
" \"ww_6_hi_discharge_alm\",\n",
" \"ww_6_hi_flow_alm\",\n",
" \"ww_6_hoa_in_manual_alm\",\n",
" \"ww_6_lo_discharge_alm\",\n",
" \"ww_6_lo_flow_alm\",\n",
" \"ww_6_lo_pip_alm\",\n",
" \"ww_6_master_comm_alm\",\n",
" \"ww_6_vfd_alm\"\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"template = {\n",
" \"alarmType\" : \"Discharge Hi Alarm\",\n",
" \"clearRule\" : {\n",
" \"alarmDetails\" : None,\n",
" \"condition\" : {\n",
" \"condition\" : [ {\n",
" \"key\" : {\n",
" \"key\" : \"discharge_hi_alm\",\n",
" \"type\" : \"TIME_SERIES\"\n",
" },\n",
" \"predicate\" : {\n",
" \"type\" : \"BOOLEAN\",\n",
" \"operation\" : \"EQUAL\",\n",
" \"value\" : {\n",
" \"defaultValue\" : False,\n",
" \"dynamicValue\" : None,\n",
" \"userValue\" : None\n",
" }\n",
" },\n",
" \"value\" : None,\n",
" \"valueType\" : \"BOOLEAN\"\n",
" } ],\n",
" \"spec\" : {\n",
" \"type\" : \"DURATION\",\n",
" \"predicate\" : {\n",
" \"defaultValue\" : 30,\n",
" \"dynamicValue\" : None,\n",
" \"userValue\" : None\n",
" },\n",
" \"unit\" : \"MINUTES\"\n",
" }\n",
" },\n",
" \"dashboardId\" : None,\n",
" \"schedule\" : None\n",
" },\n",
" \"createRules\" : {\n",
" \"CRITICAL\" : {\n",
" \"alarmDetails\" : None,\n",
" \"condition\" : {\n",
" \"condition\" : [ {\n",
" \"key\" : {\n",
" \"key\" : \"discharge_hi_alm\",\n",
" \"type\" : \"TIME_SERIES\"\n",
" },\n",
" \"predicate\" : {\n",
" \"type\" : \"BOOLEAN\",\n",
" \"operation\" : \"EQUAL\",\n",
" \"value\" : {\n",
" \"defaultValue\" : True,\n",
" \"dynamicValue\" : None,\n",
" \"userValue\" : None\n",
" }\n",
" },\n",
" \"value\" : None,\n",
" \"valueType\" : \"BOOLEAN\"\n",
" } ],\n",
" \"spec\" : {\n",
" \"type\" : \"SIMPLE\"\n",
" }\n",
" },\n",
" \"dashboardId\" : None,\n",
" \"schedule\" : None\n",
" }\n",
" },\n",
" \"id\" : \"8c858b00-485e-42db-7b69-6a3f9565d823\",\n",
" \"propagate\" : False,\n",
" \"propagateRelationTypes\" : None,\n",
" \"propagateToOwner\" : False,\n",
" \"propagateToOwnerHierarchy\" : False,\n",
" \"propagateToTenant\" : False\n",
" }"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def formatName(name):\n",
" nameMap = {\n",
" \"vfd\": \"VFD\",\n",
" \"ww\": \"Water Well\",\n",
" \"tp\": \"Transfer Pump\",\n",
" \"alm\": \"Alarm\"\n",
" }\n",
"\n",
" partsUF = name.split(\"_\")\n",
" partsF = []\n",
" for part in partsUF:\n",
" partsF.append(nameMap.get(part, part.capitalize()))\n",
" return \" \".join(partsF)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"alarms = []\n",
"for alarm in alarmDatapoints:\n",
" id = str(uuid.uuid4())\n",
" alarmType = formatName(alarm)\n",
" alarmTemplate = copy.deepcopy(template)\n",
" alarmTemplate[\"alarmType\"] = alarmType\n",
" alarmTemplate[\"id\"] = id\n",
" alarmTemplate[\"clearRule\"][\"condition\"][\"condition\"][0][\"key\"][\"key\"] = alarm\n",
" alarmTemplate[\"createRules\"][\"CRITICAL\"][\"condition\"][\"condition\"][0][\"key\"][\"key\"] = alarm\n",
" alarms.append(alarmTemplate)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"device_profile[\"entity\"][\"profileData\"][\"alarms\"] = alarms\n",
"with open(base_profile_path + device_profile_id + \".json\", \"w\") as f:\n",
" json.dump(device_profile, f, indent=4)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}