Added report generator for thingsboard
This commit is contained in:
197
Code Snippets/addNewUsers.ipynb
Normal file
197
Code Snippets/addNewUsers.ipynb
Normal file
@@ -0,0 +1,197 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from tb_rest_client.rest_client_pe import *\n",
|
||||
"from tb_rest_client.rest import ApiException\n",
|
||||
"from tb_rest_client.api_client import *\n",
|
||||
"import re, ast, json\n",
|
||||
"from uuid import uuid4"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"url = \"https://www.enxlekkocloud.com\"\n",
|
||||
"username = \"nico.a.melone@gmail.com\"\n",
|
||||
"password = \"9EE#mqb*b6bXV9hJrPYGm&w3q5Y@3acumvvb5isQ\"\n",
|
||||
"userIdToCopy = \"\"\n",
|
||||
"entity_group_id=\"616d62f0-3300-11ef-9c57-29fbfd438c8b\"\n",
|
||||
"default_dashboard = \"c157d8a0-32f9-11ef-9c57-29fbfd438c8b\""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"data = [\n",
|
||||
" \"Michael Montgomery - mmontgomery@apollopetro.com\",\n",
|
||||
" \"Jerry Pourciau - jpourciau@apollopetro.com\",\n",
|
||||
" \"Dimitri Menutis - dmenutis@apollopetro.com\",\n",
|
||||
" \"Chris Jean - cjean@apollopetro.com\",\n",
|
||||
" \"Josh Spence - jspence@apollopetro.com\"\n",
|
||||
" ]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def checkUserExists(userEmail, rest_client):\n",
|
||||
" resp = rest_client.get_user_users(page_size=100, page=0,text_search=userEmail)\n",
|
||||
" resp = resp.to_dict()\n",
|
||||
" if resp[\"total_elements\"] > 0:\n",
|
||||
" return True\n",
|
||||
" return False"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def copyUser(userIdToCopy, rest_client):\n",
|
||||
" resp = rest_client.get_user_by_id(userIdToCopy)\n",
|
||||
" resp = resp.to_dict()\n",
|
||||
" del resp[\"id\"]\n",
|
||||
" del resp[\"tenant_id\"]\n",
|
||||
" del resp[\"created_time\"]\n",
|
||||
" return resp\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def process_data(data,entity_group_id,default_dashboard):\n",
|
||||
" result = []\n",
|
||||
" for item in data:\n",
|
||||
" parts = item.split(' - ')\n",
|
||||
" first_last_name = parts[0].split()\n",
|
||||
" first_name = first_last_name[0]\n",
|
||||
" last_name = ' '.join(first_last_name[1:])\n",
|
||||
" email = parts[1]\n",
|
||||
" phone = ''\n",
|
||||
" if len(parts) > 2:\n",
|
||||
" phone = '+' + re.sub(r'\\D', '', parts[2])\n",
|
||||
" \n",
|
||||
" owner_id = {\n",
|
||||
" \"id\": entity_group_id,\n",
|
||||
" \"entity_type\": \"CUSTOMER\"\n",
|
||||
" }\n",
|
||||
" if default_dashboard:\n",
|
||||
" additionalInfo = {\n",
|
||||
" \"description\": \"\",\n",
|
||||
" \"defaultDashboardId\": default_dashboard,\n",
|
||||
" \"defaultDashboardFullscreen\": False,\n",
|
||||
" \"homeDashboardId\": default_dashboard,\n",
|
||||
" \"homeDashboardHideToolbar\": False,\n",
|
||||
" \"userCredentialsEnabled\": True\n",
|
||||
" }\n",
|
||||
" else:\n",
|
||||
" additionalInfo = {}\n",
|
||||
" \n",
|
||||
" result.append({\n",
|
||||
" \"email\": email,\n",
|
||||
" \"authority\": \"CUSTOMER_USER\",\n",
|
||||
" \"firstName\": first_name,\n",
|
||||
" \"lastName\": last_name,\n",
|
||||
" \"phone\": phone,\n",
|
||||
" \"additionalInfo\": additionalInfo,\n",
|
||||
" \"ownerId\": owner_id\n",
|
||||
" })\n",
|
||||
" \n",
|
||||
" return result"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"filtered_users = process_data(data, entity_group_id=entity_group_id,default_dashboard=default_dashboard)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"with RestClientPE(base_url=url) as rest_client:\n",
|
||||
" try:\n",
|
||||
" rest_client.login(username=username, password=password)\n",
|
||||
" if userIdToCopy:\n",
|
||||
" templateUser = copyUser(userIdToCopy=userIdToCopy, rest_client=rest_client)\n",
|
||||
" templateUser[\"additionalInfo\"] = ast.literal_eval(templateUser['additional_info'].replace(\"'\", '\"'))\n",
|
||||
" del templateUser[\"additional_info\"]\n",
|
||||
" else:\n",
|
||||
" templateUser = {\n",
|
||||
" \"email\": \"user@example.com\",\n",
|
||||
" \"authority\": \"CUSTOMER_USER\",\n",
|
||||
" \"firstName\": \"John\",\n",
|
||||
" \"lastName\": \"Doe\",\n",
|
||||
" \"phone\": \"38012345123\",\n",
|
||||
" \"additionalInfo\": {},\n",
|
||||
" \"ownerId\": {\n",
|
||||
" \"id\": \"efe3a0d0-bb6b-11ec-9326-ad8278896f52\",\n",
|
||||
" \"entityType\": \"CUSTOMER\"\n",
|
||||
" }\n",
|
||||
" }\n",
|
||||
" for user in filtered_users:\n",
|
||||
" if not checkUserExists(user[\"email\"], rest_client=rest_client):\n",
|
||||
" \n",
|
||||
" \"\"\"\n",
|
||||
" templateUser[\"email\"] = user[\"email\"]\n",
|
||||
" templateUser[\"name\"] = user[\"email\"]\n",
|
||||
" templateUser[\"firstName\"] = user[\"information\"][\"first\"]\n",
|
||||
" templateUser[\"lastName\"] = user[\"information\"][\"last\"]\n",
|
||||
" if user[\"phone\"]:\n",
|
||||
" templateUser[\"phone\"] = \"+1\" + \"\".join(user[\"phone\"].split(\"-\"))\n",
|
||||
" else:\n",
|
||||
" templateUser[\"phone\"] = \"\"\n",
|
||||
" \"\"\"\n",
|
||||
" #print(json.dumps(user, indent=4))\n",
|
||||
" rest_client.save_user(send_activation_mail=True, body=user, entity_group_id=entity_group_id)\n",
|
||||
" except ApiException as e:\n",
|
||||
" print(e)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "thingsboard",
|
||||
"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.10.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
91
Code Snippets/add_alarms.py
Normal file
91
Code Snippets/add_alarms.py
Normal file
@@ -0,0 +1,91 @@
|
||||
import json,uuid
|
||||
|
||||
# Load the existing JSON data from the file
|
||||
path = "ek_chemical.json"
|
||||
with open(path, 'r') as f:
|
||||
data = json.load(f)
|
||||
|
||||
# Define the new keys to add as alarms
|
||||
new_keys = {
|
||||
"vfd_01_faulted_alm": {"severity": "CRITICAL", "alarmType": "VFD 01 Faulted Alarm"},
|
||||
"vfd_01_status_alm": {"severity": "CRITICAL", "alarmType": "VFD 01 Status Alarm"},
|
||||
"vfd_01_undervoltage_alm": {"severity": "CRITICAL", "alarmType": "VFD 01 Undervoltage Alarm"},
|
||||
"vfd_02_faulted_alm": {"severity": "CRITICAL", "alarmType": "VFD 02 Faulted Alarm"},
|
||||
"vfd_02_status_alm": {"severity": "CRITICAL", "alarmType": "VFD 02 Status Alarm"},
|
||||
"vfd_02_undervoltage_alm": {"severity": "CRITICAL", "alarmType": "VFD 02 Undervoltage Alarm"}
|
||||
}
|
||||
def checkDuplicates(key, alarms):
|
||||
if alarms:
|
||||
for alarm in alarms:
|
||||
if alarm["clearRule"]["condition"]["condition"][0]["key"]["key"] == key:
|
||||
return False
|
||||
return True
|
||||
|
||||
# Loop through the new keys and create a new alarm based on the existing ones
|
||||
for key, value in new_keys.items():
|
||||
if checkDuplicates(key, data["profileData"]["alarms"]):
|
||||
id = str(uuid.uuid4())
|
||||
createRules = {
|
||||
value["severity"]: {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {"type": "TIME_SERIES", "key": key},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": None,
|
||||
"predicate": {"type": "BOOLEAN", "operation": "EQUAL", "value": {"defaultValue": True, "userValue": None, "dynamicValue": None}}
|
||||
}
|
||||
],
|
||||
"spec": {"type": "SIMPLE"}
|
||||
},
|
||||
"schedule": None,
|
||||
"alarmDetails": "",
|
||||
"dashboardId": None
|
||||
}
|
||||
}
|
||||
clearRule = {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {"type": "TIME_SERIES", "key": key},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": None,
|
||||
"predicate": {"type": "BOOLEAN", "operation": "EQUAL", "value": {"defaultValue": False, "userValue": None, "dynamicValue": None}}
|
||||
}
|
||||
],
|
||||
"spec": {"type": "DURATION", "unit": "MINUTES", "predicate": {"defaultValue": 30, "userValue": None, "dynamicValue": None}}
|
||||
},
|
||||
"schedule": None,
|
||||
"alarmDetails": None,
|
||||
"dashboardId": None
|
||||
}
|
||||
propagate = False
|
||||
propagateToOwner = False
|
||||
propagateToOwnerHierarchy = False
|
||||
propagateToTenant = False
|
||||
propagateRelationTypes = None
|
||||
|
||||
# Create a new alarm with the updated createRules and clearRule
|
||||
new_alarm = {
|
||||
"id": id,
|
||||
"alarmType": value["alarmType"],
|
||||
"createRules": createRules,
|
||||
"clearRule": clearRule,
|
||||
"propagate": propagate,
|
||||
"propagateToOwner": propagateToOwner,
|
||||
"propagateToOwnerHierarchy": propagateToOwnerHierarchy,
|
||||
"propagateToTenant": propagateToTenant,
|
||||
"propagateRelationTypes": propagateRelationTypes
|
||||
}
|
||||
|
||||
# Add the new alarm to the existing alarms array
|
||||
if not data["profileData"]["alarms"]:
|
||||
data["profileData"]["alarms"] = []
|
||||
data["profileData"]["alarms"].append(new_alarm)
|
||||
print(f"Added {value['severity']} alarm for {key}")
|
||||
else:
|
||||
print(f"Skipped {key}")
|
||||
# Save the updated JSON data back to the file
|
||||
with open(path, 'w') as f:
|
||||
json.dump(data, f, indent=4)
|
||||
|
||||
4458
Code Snippets/alarm_data.json
Normal file
4458
Code Snippets/alarm_data.json
Normal file
File diff suppressed because it is too large
Load Diff
37
Code Snippets/csv-to-kmz.py
Normal file
37
Code Snippets/csv-to-kmz.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import csv
|
||||
import simplekml
|
||||
|
||||
# Create a new KML document
|
||||
kml = simplekml.Kml()
|
||||
|
||||
# Open the CSV file and read its contents
|
||||
with open('inputcoords.csv', 'r') as csvfile:
|
||||
reader = csv.reader(csvfile, delimiter=';')
|
||||
next(reader) # Skip the header row
|
||||
|
||||
# Loop through each device in the CSV file
|
||||
for row in reader:
|
||||
name = row[0]
|
||||
lat_tel = float(row[1]) if row[1] else None
|
||||
lon_tel = float(row[2]) if row[2] else None
|
||||
lat_att = float(row[3]) if row[3] else None
|
||||
lon_att = float(row[4]) if row[4] else None
|
||||
|
||||
# Ignore devices with "Gateway" in the name
|
||||
if "Gateway" in name or "Camera Trailer" in name:
|
||||
continue
|
||||
|
||||
# Prefer latitude and longitude from "tel" columns if available
|
||||
lat = lat_tel or lat_att
|
||||
lon = lon_tel or lon_att
|
||||
|
||||
# If no coordinates are available, print a warning message
|
||||
if not (lat and lon):
|
||||
print(f"No coordinates for device: {name}")
|
||||
continue
|
||||
|
||||
# Create a new placemark for the device
|
||||
pnt = kml.newpoint(name=name, coords=[(lon, lat)])
|
||||
|
||||
# Save the KML document to a file (KMZ file)
|
||||
kml.savekmz("devices_tb.kmz")
|
||||
BIN
Code Snippets/devices_tb.kmz
Normal file
BIN
Code Snippets/devices_tb.kmz
Normal file
Binary file not shown.
483
Code Snippets/ek_chemical.json
Normal file
483
Code Snippets/ek_chemical.json
Normal file
@@ -0,0 +1,483 @@
|
||||
{
|
||||
"name": "ek_chemical",
|
||||
"description": "",
|
||||
"image": null,
|
||||
"type": "DEFAULT",
|
||||
"transportType": "DEFAULT",
|
||||
"provisionType": "DISABLED",
|
||||
"defaultRuleChainId": {
|
||||
"entityType": "RULE_CHAIN",
|
||||
"id": "f773e6b0-fcf1-11ee-bef7-5131a0fcf1e6"
|
||||
},
|
||||
"defaultDashboardId": null,
|
||||
"defaultQueueName": "Main",
|
||||
"profileData": {
|
||||
"configuration": {
|
||||
"type": "DEFAULT"
|
||||
},
|
||||
"transportConfiguration": {
|
||||
"type": "DEFAULT"
|
||||
},
|
||||
"provisionConfiguration": {
|
||||
"type": "DISABLED",
|
||||
"provisionDeviceSecret": null
|
||||
},
|
||||
"alarms": [
|
||||
{
|
||||
"id": "b630bd0c-7bd1-429b-ae11-b5d62317b22c",
|
||||
"alarmType": "VFD 01 Faulted Alarm",
|
||||
"createRules": {
|
||||
"CRITICAL": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_01_faulted_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": true,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "SIMPLE"
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": "",
|
||||
"dashboardId": null
|
||||
}
|
||||
},
|
||||
"clearRule": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_01_faulted_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": false,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "DURATION",
|
||||
"unit": "MINUTES",
|
||||
"predicate": {
|
||||
"defaultValue": 30,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": null,
|
||||
"dashboardId": null
|
||||
},
|
||||
"propagate": false,
|
||||
"propagateToOwner": false,
|
||||
"propagateToOwnerHierarchy": false,
|
||||
"propagateToTenant": false,
|
||||
"propagateRelationTypes": null
|
||||
},
|
||||
{
|
||||
"id": "c1af9cd2-b66a-42a2-8927-3e3e632202d3",
|
||||
"alarmType": "VFD 01 Status Alarm",
|
||||
"createRules": {
|
||||
"CRITICAL": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_01_status_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": true,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "SIMPLE"
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": "",
|
||||
"dashboardId": null
|
||||
}
|
||||
},
|
||||
"clearRule": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_01_status_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": false,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "DURATION",
|
||||
"unit": "MINUTES",
|
||||
"predicate": {
|
||||
"defaultValue": 30,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": null,
|
||||
"dashboardId": null
|
||||
},
|
||||
"propagate": false,
|
||||
"propagateToOwner": false,
|
||||
"propagateToOwnerHierarchy": false,
|
||||
"propagateToTenant": false,
|
||||
"propagateRelationTypes": null
|
||||
},
|
||||
{
|
||||
"id": "02423836-58c6-4a98-83dd-f54a32b9a03d",
|
||||
"alarmType": "VFD 01 Undervoltage Alarm",
|
||||
"createRules": {
|
||||
"CRITICAL": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_01_undervoltage_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": true,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "SIMPLE"
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": "",
|
||||
"dashboardId": null
|
||||
}
|
||||
},
|
||||
"clearRule": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_01_undervoltage_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": false,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "DURATION",
|
||||
"unit": "MINUTES",
|
||||
"predicate": {
|
||||
"defaultValue": 30,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": null,
|
||||
"dashboardId": null
|
||||
},
|
||||
"propagate": false,
|
||||
"propagateToOwner": false,
|
||||
"propagateToOwnerHierarchy": false,
|
||||
"propagateToTenant": false,
|
||||
"propagateRelationTypes": null
|
||||
},
|
||||
{
|
||||
"id": "badde6a4-8aa2-45b4-9b45-25b47f6fe817",
|
||||
"alarmType": "VFD 02 Faulted Alarm",
|
||||
"createRules": {
|
||||
"CRITICAL": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_02_faulted_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": true,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "SIMPLE"
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": "",
|
||||
"dashboardId": null
|
||||
}
|
||||
},
|
||||
"clearRule": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_02_faulted_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": false,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "DURATION",
|
||||
"unit": "MINUTES",
|
||||
"predicate": {
|
||||
"defaultValue": 30,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": null,
|
||||
"dashboardId": null
|
||||
},
|
||||
"propagate": false,
|
||||
"propagateToOwner": false,
|
||||
"propagateToOwnerHierarchy": false,
|
||||
"propagateToTenant": false,
|
||||
"propagateRelationTypes": null
|
||||
},
|
||||
{
|
||||
"id": "c6f5ceee-097b-4cdc-ab5b-f881700a6a07",
|
||||
"alarmType": "VFD 02 Status Alarm",
|
||||
"createRules": {
|
||||
"CRITICAL": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_02_status_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": true,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "SIMPLE"
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": "",
|
||||
"dashboardId": null
|
||||
}
|
||||
},
|
||||
"clearRule": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_02_status_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": false,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "DURATION",
|
||||
"unit": "MINUTES",
|
||||
"predicate": {
|
||||
"defaultValue": 30,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": null,
|
||||
"dashboardId": null
|
||||
},
|
||||
"propagate": false,
|
||||
"propagateToOwner": false,
|
||||
"propagateToOwnerHierarchy": false,
|
||||
"propagateToTenant": false,
|
||||
"propagateRelationTypes": null
|
||||
},
|
||||
{
|
||||
"id": "0ad5d0ab-4f0a-48b3-9d0b-57919a475d84",
|
||||
"alarmType": "VFD 02 Undervoltage Alarm",
|
||||
"createRules": {
|
||||
"CRITICAL": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_02_undervoltage_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": true,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "SIMPLE"
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": "",
|
||||
"dashboardId": null
|
||||
}
|
||||
},
|
||||
"clearRule": {
|
||||
"condition": {
|
||||
"condition": [
|
||||
{
|
||||
"key": {
|
||||
"type": "TIME_SERIES",
|
||||
"key": "vfd_02_undervoltage_alm"
|
||||
},
|
||||
"valueType": "BOOLEAN",
|
||||
"value": null,
|
||||
"predicate": {
|
||||
"type": "BOOLEAN",
|
||||
"operation": "EQUAL",
|
||||
"value": {
|
||||
"defaultValue": false,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"spec": {
|
||||
"type": "DURATION",
|
||||
"unit": "MINUTES",
|
||||
"predicate": {
|
||||
"defaultValue": 30,
|
||||
"userValue": null,
|
||||
"dynamicValue": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"schedule": null,
|
||||
"alarmDetails": null,
|
||||
"dashboardId": null
|
||||
},
|
||||
"propagate": false,
|
||||
"propagateToOwner": false,
|
||||
"propagateToOwnerHierarchy": false,
|
||||
"propagateToTenant": false,
|
||||
"propagateRelationTypes": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"provisionDeviceKey": null,
|
||||
"firmwareId": null,
|
||||
"softwareId": null,
|
||||
"defaultEdgeRuleChainId": null,
|
||||
"default": false
|
||||
}
|
||||
4458
Code Snippets/ek_facility.json
Normal file
4458
Code Snippets/ek_facility.json
Normal file
File diff suppressed because it is too large
Load Diff
307
Code Snippets/inputcoords.csv
Normal file
307
Code Snippets/inputcoords.csv
Normal file
@@ -0,0 +1,307 @@
|
||||
Name;latitude tel;longitude tel;latitude att;longitude att
|
||||
"12"" Flow Meter";31.939630;-104.030778;;
|
||||
1701 1;;;32.008171;-102.337949
|
||||
1701 10;;;;
|
||||
1701 11;;;32.007424;-102.347182
|
||||
1701 12;;;;
|
||||
1701 2;;;;
|
||||
1701 9;;;32.007593;-102.346486
|
||||
1701 Gateway;;;;
|
||||
1701 Pond;;;32.007794;-102.339572
|
||||
AA-101;;;32.014750;-102.220396
|
||||
AA Pond;;;32.012669;-102.223246
|
||||
AA Transfer;;;;
|
||||
AdvVFDIPP #3;;;;
|
||||
AL-101;;;32.287894;-102.353608
|
||||
AL-901;;;32.274323;-102.368214
|
||||
AS-11;;;32.074713;-102.180584
|
||||
AT-101;;;32.055767;-102.191373
|
||||
AU-3401;;;32.051447;-102.369505
|
||||
Aurora 10;;;31.329965;-102.042210
|
||||
Aurora 11;;;31.328801;-102.048474
|
||||
Aurora 6;;;31.333529;-102.024099
|
||||
Aurora 7;;;31.333874;-102.024464
|
||||
Aurora 8;;;31.332901;-102.026872
|
||||
Aurora 9;;;31.332249;-102.030431
|
||||
AV-701;;;32.024790;-102.240240
|
||||
AW-3401;;;32.091929;-102.241150
|
||||
AW-901;;;32.069396;-102.245434
|
||||
AW Battery;;;32.090579;-102.244011
|
||||
Banay WW 18 #8;;;31.675614;-102.243897
|
||||
Banay WW 7-2;;;31.677993;-102.252632
|
||||
Barnett 19-2 WW;;;31.350333;-102.061960
|
||||
Barnett 24-1;;;31.329354;-102.070197
|
||||
Baylee Remote Booster;;;31.558139;-102.172528
|
||||
BE-51;;;;
|
||||
BE-601;;;32.056301;-102.277344
|
||||
BE-71;;;32.038507;-102.263096
|
||||
BE Pond;;;;
|
||||
BI-31;;;32.034010;-102.323120
|
||||
BJ-101;;;32.067810;-102.298672
|
||||
BJ-701;;;32.073971;-102.272705
|
||||
BK-1701;;;32.055834;-102.316510
|
||||
BK-801;;;32.075204;-102.335508
|
||||
BL-3201;;;32.050612;-102.341836
|
||||
BL-3401;;;32.068716;-102.358516
|
||||
BM-1501;;;32.134943;-102.267789
|
||||
BN-2202;;;32.111258;-102.254015
|
||||
BN-301;;;32.118530;-102.270160
|
||||
BN Pond;;;32.112270;-102.257490
|
||||
BP-201;;;32.131795;-102.294616
|
||||
BP-601;;;32.128150;-102.308500
|
||||
BP Battery;32.119443;-102.301507;32.119443;-102.301507
|
||||
BP Compressor;;;;
|
||||
BP Inlet;32.131920;-102.287505;;
|
||||
BP Pond;;;32.132034;-102.288982
|
||||
BQ-301;;;32.093284;-102.305847
|
||||
BQ-41;;;32.114358;-102.299758
|
||||
BV-101;;;32.178548;-102.281074
|
||||
BV-4601;;;32.198494;-102.273250
|
||||
BV-601;;;32.157367;-102.274653
|
||||
BV-602;;;32.155210;-102.258540
|
||||
BV Battery;31.965177;-102.123915;31.965177;-102.123915
|
||||
BW-041;;;32.151020;-102.298150
|
||||
BW-72;;;32.150861;-102.315472
|
||||
BX-101;;;32.173490;-102.317370
|
||||
BX-1601;;;32.168472;-102.334750
|
||||
BX-901;;;32.185633;-102.313754
|
||||
BX-902;;;32.176339;-102.300210
|
||||
BY-501;;;32.209417;-102.304694
|
||||
BZ-201;;;32.184045;-102.329931
|
||||
BZ-202;;;32.197854;-102.324920
|
||||
Caden WW #1;;;31.424971;-102.011564
|
||||
Caden WW #2;;;31.426582;-102.004652
|
||||
Caden WW #3;;;31.428291;-101.997159
|
||||
Caden WW #4;;;31.429292;-101.992556
|
||||
Caden WW #6;;;31.428559;-101.991219
|
||||
Camera Trailer 100;31.142255;-103.147965;;
|
||||
Camera Trailer 101;31.965302;-102.124730;;
|
||||
Camera Trailer 102;32.313893;-102.367877;;
|
||||
Camera Trailer 103;31.966095;-102.125094;;
|
||||
Camera Trailer 104;31.966085;-102.125123;;
|
||||
Camera Trailer 105;31.965380;-102.124730;;
|
||||
Camera Trailer 106;31.966133;-102.125096;;
|
||||
Camera Trailer 107;32.102407;-103.823707;;
|
||||
Camera Trailer 108;31.968196;-102.126852;;
|
||||
Camera Trailer 109;31.623276;-103.631850;;
|
||||
Camera Trailer 110;32.153607;-102.272630;;
|
||||
Camera Trailer 111;31.965916;-102.125094;;
|
||||
Camera Trailer 112;31.965927;-102.125056;;
|
||||
Camera Trailer 113;31.949004;-102.160070;;
|
||||
Camera Trailer 114;31.965885;-102.125070;;
|
||||
Camera Trailer 115;31.965828;-102.125046;;
|
||||
Camera Trailer 116;32.109723;-103.541167;;
|
||||
Camera Trailer 117;32.153028;-103.588695;;
|
||||
Camera Trailer 118;32.066612;-103.782402;;
|
||||
Camera Trailer 119;31.966031;-102.125101;;
|
||||
Camera Trailer 120;32.304702;-101.872473;;
|
||||
Camera Trailer 121;32.112238;-102.527553;;
|
||||
Camera Trailer 122;32.208428;-102.360184;;
|
||||
Camera Trailer 123;31.965646;-102.124758;;
|
||||
Camera Trailer 125;31.965985;-102.125090;;
|
||||
Camera Trailer 126;31.965331;-102.124706;;
|
||||
Camera Trailer 127;31.966071;-102.125113;;
|
||||
Camera Trailer 128;32.077878;-103.909418;;
|
||||
Camera Trailer 129;31.965685;-102.124829;;
|
||||
Camera Trailer 130;31.965685;-102.124842;;
|
||||
Camera Trailer 200;32.207930;-103.876821;;
|
||||
Camera Trailer 201;32.313567;-101.831447;;
|
||||
Camera Trailer 202;32.313282;-101.823884;;
|
||||
Camera Trailer 203;32.210359;-103.871380;;
|
||||
Camera Trailer 204;32.015870;-101.826887;;
|
||||
Camera Trailer 205;30.228071;-95.526871;;
|
||||
Camera Trailer 206;32.178407;-102.280877;;
|
||||
Camera Trailer 300;31.965136;-102.124625;;
|
||||
Camera Trailer 301;31.965156;-102.124603;;
|
||||
Camera Trailer 302;32.207931;-103.876112;;
|
||||
Camera Trailer 303;31.965226;-102.124314;;
|
||||
Camera Trailer 304;31.965134;-102.124679;;
|
||||
Camera Trailer 305;32.210167;-103.872161;;
|
||||
Camera Trailer 306;32.102767;-102.225360;;
|
||||
Camera Trailer 307;32.304978;-101.873035;;
|
||||
Camera Trailer 308;32.280076;-102.299571;;
|
||||
Camera Trailer 309;32.150764;-102.272134;;
|
||||
Camera Trailer 310;32.023837;-102.029614;;
|
||||
Camera Trailer 311;32.312862;-101.831165;;
|
||||
Camera Trailer 312;32.482383;-101.859808;;
|
||||
Camera Trailer 313;32.471947;-101.935862;;
|
||||
CF-1501;;;32.254407;-102.289776
|
||||
CF-1601;;;32.253675;-102.321603
|
||||
CF-2101;;;32.238472;-102.284806
|
||||
CF-501;;;32.288194;-102.332453
|
||||
CF-701;;;32.271506;-102.327233
|
||||
CF-801;;;32.266433;-102.305903
|
||||
CF Inlet;32.265871;-102.342135;;
|
||||
CF Pond;;;32.265197;-102.341933
|
||||
CG-1001;;;32.257922;-102.362356
|
||||
CG-1101;;;32.240281;-102.357294
|
||||
CG-601;;;32.253131;-102.342499
|
||||
CG-701;;;32.269994;-102.347869
|
||||
Chuda Flow Meter #1;;;32.487164;-101.870672
|
||||
Chuda Flow Meter #2;;;32.486408;-101.865952
|
||||
Chuda Flow Meter #3;;;32.484286;-101.867593
|
||||
Chuda Flow Meter #4;;;32.487430;-101.862969
|
||||
CI-1301;;;32.208100;-102.361340
|
||||
CI-1302;;;32.222400;-102.350200
|
||||
CI-401;;;32.216214;-102.330655
|
||||
CI-501;;;32.236507;-102.337326
|
||||
CJ-1801;;;32.243756;-102.305267
|
||||
CJ-2201;;;32.226575;-102.313603
|
||||
CrossBarRanch #3116 WS;;;32.105892;-102.195275
|
||||
Davis Check Meter;;;30.385079;-100.398005
|
||||
Dawn #2;;;31.427301;-102.119062
|
||||
Dawn #3;;;31.423635;-102.121751
|
||||
Dawn to Terri;;;31.426996;-102.118992
|
||||
EKKO 1;;;;
|
||||
FB-501;;;32.035592;-102.204997
|
||||
Fee BM Battery;;;32.141825;-102.253097
|
||||
Florence WW #1;;;31.389539;-101.977307
|
||||
Florence WW #2;;;31.389809;-101.974169
|
||||
Flow Meter 11;31.965532;-102.124231;;
|
||||
Flow Meter 12;31.965514;-102.124253;;
|
||||
Flow Meter 6;31.939516;-104.030772;;
|
||||
Foundation Check Meter;;;30.401581;-100.807881
|
||||
Francis Hill Check Meter;;;30.267756;-100.541178
|
||||
Glasscock Check Meter;;;30.601340;-100.993300
|
||||
Great Western Check Meter;;;30.429062;-100.802917
|
||||
Headlee 3401 WS;31.969551;-102.297012;31.969551;-102.297012
|
||||
"HP 10"" 60K #1";31.618667;-102.120201;;
|
||||
"HP 12"" 40K #1 US";31.618745;-102.119999;;
|
||||
"HP 12"" 40K #2";31.618721;-102.119852;;
|
||||
"HP 12"" 40K #3";31.618723;-102.119812;;
|
||||
"HP 12"" 60K #2";31.620732;-102.121136;;
|
||||
"HP 12"" 60K #3";31.620829;-102.121155;;
|
||||
"HP 8"" 40K #4 R";31.620769;-102.121099;;
|
||||
HP Test Location;;;32.000000;-102.000000
|
||||
HP Test Location 2;;;31.965225;-102.124103
|
||||
Jessica WW #1;;;31.374467;-101.963489
|
||||
Jessica WW #2;;;31.368209;-101.961262
|
||||
Jessica WW #3;;;31.368043;-101.960620
|
||||
Jessica WW #4;;;31.384569;-101.956347
|
||||
Jessica WW #5;;;31.381946;-101.955482
|
||||
Jessica WW #7;;;31.377569;-101.953845
|
||||
Kate A1;;;31.346283;-102.086868
|
||||
Kate A2;;;31.341675;-102.084076
|
||||
Kate B1;;;31.335507;-102.081482
|
||||
KD #2;;;31.474076;-102.197786
|
||||
KD #4;;;31.479206;-102.201117
|
||||
KD #5;;;31.474872;-102.209439
|
||||
KD #7;;;31.479147;-102.216474
|
||||
Kelsey Pit;;;31.516559;-102.166829
|
||||
Laney A #2;;;31.356207;-102.052619
|
||||
Laurie Gwen Transfer;;;31.425452;-101.987885
|
||||
Laurie Gwen WW #1;;;31.414602;-101.998772
|
||||
Lisa Water Transfer;;;31.420228;-101.968562
|
||||
Lisa WW #1;;;31.419889;-101.975526
|
||||
Lively Check Meter;;;30.401581;-100.807881
|
||||
LUDEMAN #1;31.921785;-103.424975;;
|
||||
"Mabee 16""";31.620073;-102.120593;;
|
||||
Madeline WW #2;;;31.394942;-101.992428
|
||||
Madelyn Kate #3 WW;;;31.390507;-101.986781
|
||||
Mann Check Meter;;;30.228770;-100.379522
|
||||
Mary 43 #1;;;31.481471;-102.199637
|
||||
Mary 43 #2;;;31.457938;-102.197870
|
||||
Mary 43 #3;;;31.477186;-102.186897
|
||||
Mary 43 #5;;;31.474287;-102.187780
|
||||
Monique #1;;;31.430164;-102.126619
|
||||
Monique #2;;;31.426953;-102.126039
|
||||
Monique #3;;;31.429928;-102.125681
|
||||
Nancy Pit;;;31.513194;-102.230482
|
||||
Office Water Management;;;;
|
||||
P2P 2326;31.809850;-102.144562;;
|
||||
P2P #3;31.620072;-102.120629;;
|
||||
P2P CROSS L;31.617627;-102.148728;;
|
||||
P2P HP ;31.618782;-102.119069;;
|
||||
"Parks Inlet #1- 10""";31.816311;-102.138278;;
|
||||
"Parks Inlet #2 - 10""";31.816290;-102.138280;;
|
||||
"PARKS OUTLET - 10""";31.814745;-102.139394;;
|
||||
Pond A;;;31.987505;-102.318024
|
||||
Pond A Gateway;;;;
|
||||
Power Plant Transfer;;;;
|
||||
Rachel Gwen Transfer;;;31.393684;-101.961127
|
||||
Ratliff Prod Well 27;;;31.987753;-102.344529
|
||||
Ratliff Well 28;;;31.983872;-102.345029
|
||||
Ratliff Well 29;;;31.983482;-102.344455
|
||||
Ratliff Well 31;;;31.987715;-102.327278
|
||||
Ratliff Well 36;;;;
|
||||
Ratliff Well 38;;;;
|
||||
Ratliff Well 42;;;31.964041;-102.332986
|
||||
Ratliff Well 45;;;31.962430;-102.340150
|
||||
Ratliff Well A 30;;;31.988380;-102.328844
|
||||
Ratliff Well A 32;;;32.003628;-102.323035
|
||||
Ratliff Well A 33;;;31.997734;-102.321101
|
||||
Ratliff Well A 34;;;31.987116;-102.317512
|
||||
Ratliff Well A 35;;;31.985142;-102.316897
|
||||
Ratliff Well A 37;;;31.982706;-102.316073
|
||||
Ratliff Well A 39;;;31.981049;-102.315328
|
||||
Ratliff Well A 40;;;31.981164;-102.315928
|
||||
Ratliff Well A 41;;;31.965060;-102.330468
|
||||
Ratliff Well A 43;;;31.963629;-102.333210
|
||||
Ratliff Well A 44;;;31.962098;-102.339928
|
||||
Ratliff Well A 46;;;31.963278;-102.340511
|
||||
Ratliff Well B 36;;;;
|
||||
Rhonda Pit;;;31.567326;-102.285167
|
||||
Rig Pump #03;31.809937;-101.762311;31.902849;-101.877387
|
||||
Rig Pump #04;32.342715;-101.671300;32.320571;-101.695251
|
||||
Rig Pump #06;32.015579;-101.826784;31.902959;-101.877407
|
||||
Rig Pump #07;32.337589;-101.891645;31.867502;-101.819380
|
||||
Rig Pump #08;32.008296;-101.840682;32.008296;-101.840682
|
||||
Rig Pump #10;32.058536;-101.681551;32.210607;-101.630561
|
||||
Rig Pump #11;31.848657;-101.766952;31.870703;-101.756014
|
||||
Rig Pump #12;32.015573;-101.826779;31.872968;-101.752086
|
||||
Rig Pump #13;32.457135;-101.783249;32.337629;-101.891645
|
||||
S-601;;;32.219803;-102.280277
|
||||
"Single 12""";31.860729;-102.303110;;
|
||||
Sonya;;;31.750722;-102.046389
|
||||
Stephanie 41 #2;;;31.507569;-102.173839
|
||||
Stephanie 41 #3;;;31.505766;-102.181310
|
||||
Terri #1;;;31.476535;-102.178382
|
||||
Terri #2;;;31.481768;-102.180497
|
||||
Terri #3;;;31.489832;-102.184831
|
||||
Terri #4;;;31.490261;-102.183292
|
||||
Terri #6;;;31.492807;-102.168766
|
||||
Terri Pond;;;31.482556;-102.166806
|
||||
Tessa Lyn;;;31.349740;-102.076933
|
||||
TM1;;;31.498894;-102.205459
|
||||
TM2;;;31.493274;-102.203603
|
||||
TPRW Line;31.621735;-102.120537;;
|
||||
Tree 13;;;32.001432;-102.360229
|
||||
Tree 14;;;;
|
||||
Tree 15;;;32.000017;-102.359792
|
||||
Tree 16;;;;
|
||||
Tree 17;;;;
|
||||
Tree 18;;;;
|
||||
Tree 19;;;;
|
||||
Tree 20;;;;
|
||||
Tree 21;;;31.996249;-102.358587
|
||||
Tree 22;;;31.995313;-102.358832
|
||||
Tree 23;;;31.994288;-102.357783
|
||||
Tree 25;;;;
|
||||
Tree 26;;;31.996235;-102.356192
|
||||
Tree Gateway;;;;
|
||||
Tree Pond;;;31.994993;-102.359162
|
||||
"Triple 4""";31.860729;-102.303110;;
|
||||
Trumann 1;;;31.335545;-102.006756
|
||||
Trumann 2;;;31.335545;-102.006756
|
||||
Trumann 3;;;31.341717;-102.007934
|
||||
Trumann 4;;;31.343077;-102.010384
|
||||
Trumann 5;;;31.348845;-102.008811
|
||||
Valve Controller;;;32.178726;-102.280974
|
||||
WC41-1;;;31.481766;-102.219535
|
||||
WC41-2;;;31.480950;-102.223040
|
||||
WC41-3;;;31.479859;-102.227972
|
||||
Wess Hill Check Meter;;;30.496197;-100.877146
|
||||
Windham 107-1;;;31.381876;-102.122542
|
||||
Windham 107-2;;;31.380609;-102.122112
|
||||
Windham 108-1;;;31.390889;-102.120610
|
||||
Windham 108-10;;;31.389643;-102.122629
|
||||
Windham 108-2;;;31.390139;-102.119854
|
||||
Windham 108-3;;;31.390587;-102.126189
|
||||
Windham 108-5;;;31.390815;-102.127345
|
||||
Windham 108-6;;;31.391496;-102.129272
|
||||
Windham 108-7;;;31.391321;-102.131313
|
||||
Windham 108-8;;;31.386190;-102.127263
|
||||
Windham 108-9;;;31.388959;-102.123217
|
||||
Yvonne Transfer Pump 1;;;31.562778;-102.248611
|
||||
Yvonne Transfer Pump 2;;;31.562778;-102.248611
|
||||
Yvonne Transfer Pump 3;;;31.562778;-102.248611
|
||||
|
18
Code Snippets/mqtt-js-rpc-from-server.js
Normal file
18
Code Snippets/mqtt-js-rpc-from-server.js
Normal file
@@ -0,0 +1,18 @@
|
||||
var mqtt = require('mqtt');
|
||||
var client = mqtt.connect('mqtt://localhost',{
|
||||
username: process.env.TOKEN
|
||||
});
|
||||
|
||||
client.on('connect', function () {
|
||||
console.log('connected');
|
||||
client.subscribe('v1/devices/me/rpc/request/+')
|
||||
client.subscribe('v1/devices/me/attributes')
|
||||
});
|
||||
|
||||
client.on('message', function (topic, message) {
|
||||
console.log('request.topic: ' + topic);
|
||||
console.log('request.body: ' + message.toString());
|
||||
var requestId = topic.slice('v1/devices/me/rpc/request/'.length);
|
||||
//client acts as an echo service
|
||||
client.publish('v1/devices/me/rpc/response/' + requestId, message);
|
||||
});
|
||||
457
Code Snippets/package-lock.json
generated
Normal file
457
Code Snippets/package-lock.json
generated
Normal file
@@ -0,0 +1,457 @@
|
||||
{
|
||||
"name": "Code Snippets",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"mqtt": "^5.7.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
"version": "7.24.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz",
|
||||
"integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==",
|
||||
"dependencies": {
|
||||
"regenerator-runtime": "^0.14.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.14.9",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz",
|
||||
"integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==",
|
||||
"dependencies": {
|
||||
"undici-types": "~5.26.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/readable-stream": {
|
||||
"version": "4.0.14",
|
||||
"resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.14.tgz",
|
||||
"integrity": "sha512-xZn/AuUbCMShGsqH/ehZtGDwQtbx00M9rZ2ENLe4tOjFZ/JFeWMhEZkk2fEe1jAUqqEAURIkFJ7Az/go8mM1/w==",
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"safe-buffer": "~5.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/ws": {
|
||||
"version": "8.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
|
||||
"integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==",
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/abort-controller": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
|
||||
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
|
||||
"dependencies": {
|
||||
"event-target-shim": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.5"
|
||||
}
|
||||
},
|
||||
"node_modules/base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/bl": {
|
||||
"version": "6.0.13",
|
||||
"resolved": "https://registry.npmjs.org/bl/-/bl-6.0.13.tgz",
|
||||
"integrity": "sha512-tMncAcpsyjZgAVbVFupVIaB2xud13xxT59fdHkuszY2jdZkqIWfpQdmII1fOe3kOGAz0mNLTIHEm+KxpYsQKKg==",
|
||||
"dependencies": {
|
||||
"@types/readable-stream": "^4.0.0",
|
||||
"buffer": "^6.0.3",
|
||||
"inherits": "^2.0.4",
|
||||
"readable-stream": "^4.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
|
||||
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"base64-js": "^1.3.1",
|
||||
"ieee754": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer-from": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
||||
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
|
||||
},
|
||||
"node_modules/commist": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/commist/-/commist-3.2.0.tgz",
|
||||
"integrity": "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw=="
|
||||
},
|
||||
"node_modules/concat-stream": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
|
||||
"integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
|
||||
"engines": [
|
||||
"node >= 6.0"
|
||||
],
|
||||
"dependencies": {
|
||||
"buffer-from": "^1.0.0",
|
||||
"inherits": "^2.0.3",
|
||||
"readable-stream": "^3.0.2",
|
||||
"typedarray": "^0.0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/concat-stream/node_modules/readable-stream": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||
"dependencies": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.3.5",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
|
||||
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"supports-color": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/event-target-shim": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
|
||||
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/events": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
|
||||
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
|
||||
"engines": {
|
||||
"node": ">=0.8.x"
|
||||
}
|
||||
},
|
||||
"node_modules/fast-unique-numbers": {
|
||||
"version": "8.0.13",
|
||||
"resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-8.0.13.tgz",
|
||||
"integrity": "sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.8",
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/help-me": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz",
|
||||
"integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg=="
|
||||
},
|
||||
"node_modules/ieee754": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
|
||||
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/js-sdsl": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz",
|
||||
"integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/js-sdsl"
|
||||
}
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "10.3.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz",
|
||||
"integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==",
|
||||
"engines": {
|
||||
"node": "14 || >=16.14"
|
||||
}
|
||||
},
|
||||
"node_modules/minimist": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt": {
|
||||
"version": "5.7.3",
|
||||
"resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.7.3.tgz",
|
||||
"integrity": "sha512-v+5la6Q6zjl0AWsI7ICDA/K3hclkNj7CMa0khMugCC+LKPLrQF+sSQb/9ckezZLMvcBC1tXhRzqmcagQoDl9fQ==",
|
||||
"dependencies": {
|
||||
"@types/readable-stream": "^4.0.5",
|
||||
"@types/ws": "^8.5.9",
|
||||
"commist": "^3.2.0",
|
||||
"concat-stream": "^2.0.0",
|
||||
"debug": "^4.3.4",
|
||||
"help-me": "^5.0.0",
|
||||
"lru-cache": "^10.0.1",
|
||||
"minimist": "^1.2.8",
|
||||
"mqtt": "^5.2.0",
|
||||
"mqtt-packet": "^9.0.0",
|
||||
"number-allocator": "^1.0.14",
|
||||
"readable-stream": "^4.4.2",
|
||||
"reinterval": "^1.1.0",
|
||||
"rfdc": "^1.3.0",
|
||||
"split2": "^4.2.0",
|
||||
"worker-timers": "^7.1.4",
|
||||
"ws": "^8.17.1"
|
||||
},
|
||||
"bin": {
|
||||
"mqtt": "build/bin/mqtt.js",
|
||||
"mqtt_pub": "build/bin/pub.js",
|
||||
"mqtt_sub": "build/bin/sub.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt-packet": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-9.0.0.tgz",
|
||||
"integrity": "sha512-8v+HkX+fwbodsWAZIZTI074XIoxVBOmPeggQuDFCGg1SqNcC+uoRMWu7J6QlJPqIUIJXmjNYYHxBBLr1Y/Df4w==",
|
||||
"dependencies": {
|
||||
"bl": "^6.0.8",
|
||||
"debug": "^4.3.4",
|
||||
"process-nextick-args": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node_modules/number-allocator": {
|
||||
"version": "1.0.14",
|
||||
"resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz",
|
||||
"integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==",
|
||||
"dependencies": {
|
||||
"debug": "^4.3.1",
|
||||
"js-sdsl": "4.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
|
||||
"engines": {
|
||||
"node": ">= 0.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/process-nextick-args": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
||||
},
|
||||
"node_modules/readable-stream": {
|
||||
"version": "4.5.2",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
|
||||
"integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
|
||||
"dependencies": {
|
||||
"abort-controller": "^3.0.0",
|
||||
"buffer": "^6.0.3",
|
||||
"events": "^3.3.0",
|
||||
"process": "^0.11.10",
|
||||
"string_decoder": "^1.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/regenerator-runtime": {
|
||||
"version": "0.14.1",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
|
||||
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
|
||||
},
|
||||
"node_modules/reinterval": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz",
|
||||
"integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
|
||||
},
|
||||
"node_modules/rfdc": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
|
||||
"integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="
|
||||
},
|
||||
"node_modules/safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"node_modules/split2": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
|
||||
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
|
||||
"engines": {
|
||||
"node": ">= 10.x"
|
||||
}
|
||||
},
|
||||
"node_modules/string_decoder": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
|
||||
"dependencies": {
|
||||
"safe-buffer": "~5.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/string_decoder/node_modules/safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/tslib": {
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
|
||||
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
|
||||
},
|
||||
"node_modules/typedarray": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
||||
"integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "5.26.5",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
|
||||
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
|
||||
},
|
||||
"node_modules/util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||
},
|
||||
"node_modules/worker-timers": {
|
||||
"version": "7.1.8",
|
||||
"resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-7.1.8.tgz",
|
||||
"integrity": "sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.24.5",
|
||||
"tslib": "^2.6.2",
|
||||
"worker-timers-broker": "^6.1.8",
|
||||
"worker-timers-worker": "^7.0.71"
|
||||
}
|
||||
},
|
||||
"node_modules/worker-timers-broker": {
|
||||
"version": "6.1.8",
|
||||
"resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-6.1.8.tgz",
|
||||
"integrity": "sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.24.5",
|
||||
"fast-unique-numbers": "^8.0.13",
|
||||
"tslib": "^2.6.2",
|
||||
"worker-timers-worker": "^7.0.71"
|
||||
}
|
||||
},
|
||||
"node_modules/worker-timers-worker": {
|
||||
"version": "7.0.71",
|
||||
"resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-7.0.71.tgz",
|
||||
"integrity": "sha512-ks/5YKwZsto1c2vmljroppOKCivB/ma97g9y77MAAz2TBBjPPgpoOiS1qYQKIgvGTr2QYPT3XhJWIB6Rj2MVPQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.24.5",
|
||||
"tslib": "^2.6.2"
|
||||
}
|
||||
},
|
||||
"node_modules/ws": {
|
||||
"version": "8.18.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
|
||||
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bufferutil": "^4.0.1",
|
||||
"utf-8-validate": ">=5.0.2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bufferutil": {
|
||||
"optional": true
|
||||
},
|
||||
"utf-8-validate": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
5
Code Snippets/package.json
Normal file
5
Code Snippets/package.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"mqtt": "^5.7.3"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user