updated add_alarms to have sorting
This commit is contained in:
File diff suppressed because it is too large
Load Diff
14806
Code Snippets/allDevices_2025_08_27.json
Normal file
14806
Code Snippets/allDevices_2025_08_27.json
Normal file
File diff suppressed because it is too large
Load Diff
81
Code Snippets/compareMistawayTBDevices.py
Normal file
81
Code Snippets/compareMistawayTBDevices.py
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
compare_names.py
|
||||||
|
|
||||||
|
Compares the `deviceName` values from File 1 with the `name` values from File 2.
|
||||||
|
If a `deviceName` does not appear in File 2, it is written to *missing.txt*.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import json
|
||||||
|
import argparse
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
def load_json(path: Path):
|
||||||
|
"""Return the parsed JSON data from *path*."""
|
||||||
|
try:
|
||||||
|
with path.open("r", encoding="utf-8") as f:
|
||||||
|
return json.load(f)
|
||||||
|
except FileNotFoundError:
|
||||||
|
print(f"❌ File not found: {path}", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
except json.JSONDecodeError as exc:
|
||||||
|
print(f"❌ Invalid JSON in {path}:\n{exc}", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def extract_device_names_from_file1(data):
|
||||||
|
"""Return a list of deviceName values from the File 1 structure."""
|
||||||
|
names = []
|
||||||
|
for mac, obj in data.items():
|
||||||
|
# Some devices may not have a name; skip them quietly.
|
||||||
|
name = obj.get("deviceName")
|
||||||
|
if isinstance(name, str):
|
||||||
|
names.append(name)
|
||||||
|
return names
|
||||||
|
|
||||||
|
def extract_names_from_file2(data):
|
||||||
|
"""Return a set of name values from the File 2 list."""
|
||||||
|
names = set()
|
||||||
|
for entry in data:
|
||||||
|
name = entry.get("name")
|
||||||
|
if isinstance(name, str):
|
||||||
|
names.add(name)
|
||||||
|
return names
|
||||||
|
|
||||||
|
def main(file1_path: Path, file2_path: Path, output_path: Path):
|
||||||
|
# Load data
|
||||||
|
data1 = load_json(file1_path)
|
||||||
|
data2 = load_json(file2_path)
|
||||||
|
|
||||||
|
# Pull out the two collections we care about
|
||||||
|
names_in_file1 = extract_device_names_from_file1(data1)
|
||||||
|
names_in_file2 = extract_names_from_file2(data2)
|
||||||
|
|
||||||
|
# Find names that are missing from File 2
|
||||||
|
missing = [name for name in names_in_file1 if name not in names_in_file2]
|
||||||
|
|
||||||
|
# Output
|
||||||
|
if missing:
|
||||||
|
print(f"⚠️ Found {len(missing)} device(s) whose name is missing in File 2.")
|
||||||
|
# Write to a text file – one name per line
|
||||||
|
with output_path.open("w", encoding="utf-8") as out:
|
||||||
|
out.write("\n".join(missing))
|
||||||
|
print(f"✔️ Missing names written to {output_path}")
|
||||||
|
else:
|
||||||
|
print("✅ All deviceNames from File 1 are present in File 2.")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Find deviceName values in File 1 that are not present in File 2."
|
||||||
|
)
|
||||||
|
parser.add_argument("file1", type=Path, help="Path to File 1 (JSON dict).")
|
||||||
|
parser.add_argument("file2", type=Path, help="Path to File 2 (JSON list).")
|
||||||
|
parser.add_argument(
|
||||||
|
"-o",
|
||||||
|
"--output",
|
||||||
|
type=Path,
|
||||||
|
default=Path("missing.txt"),
|
||||||
|
help="Where to write the list of missing names (default: missing.txt)",
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
main(args.file1, args.file2, args.output)
|
||||||
6856
Code Snippets/getAllDevices.ipynb
Normal file
6856
Code Snippets/getAllDevices.ipynb
Normal file
File diff suppressed because one or more lines are too long
3
Code Snippets/missing.txt
Normal file
3
Code Snippets/missing.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
Faudree Frac Pit Pump #1
|
||||||
|
Faudree Frac Pit Pump #2
|
||||||
|
Wilkinson Ranch 34 SR 2-2
|
||||||
Reference in New Issue
Block a user