#!/usr/bin/env python3 """ Script to initialize and persist sample tag metadata """ import sys import os import json # Add the src directory to the Python path sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src')) from src.core.tag_metadata_manager import tag_metadata_manager def create_and_save_sample_metadata(): """Create sample tag metadata and save to file""" print("Initializing Sample Tag Metadata...") print("=" * 60) # Create sample stations print("\nšŸ­ Creating Stations...") station1_id = tag_metadata_manager.add_station( name="Main Pump Station", tags=["primary", "control", "monitoring", "water_system"], description="Primary water pumping station for the facility", station_id="station_main" ) print(f" āœ“ Created station: {station1_id}") station2_id = tag_metadata_manager.add_station( name="Backup Pump Station", tags=["backup", "emergency", "monitoring", "water_system"], description="Emergency backup pumping station", station_id="station_backup" ) print(f" āœ“ Created station: {station2_id}") # Create sample equipment print("\nšŸ”§ Creating Equipment...") equipment1_id = tag_metadata_manager.add_equipment( name="Primary Pump", station_id="station_main", tags=["pump", "primary", "control", "automation"], description="Main water pump with variable speed drive", equipment_id="pump_primary" ) print(f" āœ“ Created equipment: {equipment1_id}") equipment2_id = tag_metadata_manager.add_equipment( name="Backup Pump", station_id="station_backup", tags=["pump", "backup", "emergency", "automation"], description="Emergency backup water pump", equipment_id="pump_backup" ) print(f" āœ“ Created equipment: {equipment2_id}") equipment3_id = tag_metadata_manager.add_equipment( name="Pressure Sensor", station_id="station_main", tags=["sensor", "measurement", "monitoring", "safety"], description="Water pressure monitoring sensor", equipment_id="sensor_pressure" ) print(f" āœ“ Created equipment: {equipment3_id}") equipment4_id = tag_metadata_manager.add_equipment( name="Flow Meter", station_id="station_main", tags=["sensor", "measurement", "monitoring", "industrial"], description="Water flow rate measurement device", equipment_id="sensor_flow" ) print(f" āœ“ Created equipment: {equipment4_id}") # Create sample data types print("\nšŸ“ˆ Creating Data Types...") data_type1_id = tag_metadata_manager.add_data_type( name="Pump Speed", tags=["setpoint", "control", "measurement", "automation"], description="Pump motor speed control and feedback", units="RPM", min_value=0, max_value=3000, default_value=1500, data_type_id="speed_pump" ) print(f" āœ“ Created data type: {data_type1_id}") data_type2_id = tag_metadata_manager.add_data_type( name="Water Pressure", tags=["measurement", "monitoring", "alarm", "safety"], description="Water pressure measurement", units="PSI", min_value=0, max_value=100, default_value=50, data_type_id="pressure_water" ) print(f" āœ“ Created data type: {data_type2_id}") data_type3_id = tag_metadata_manager.add_data_type( name="Pump Status", tags=["status", "monitoring", "alarm", "diagnostic"], description="Pump operational status", data_type_id="status_pump" ) print(f" āœ“ Created data type: {data_type3_id}") data_type4_id = tag_metadata_manager.add_data_type( name="Flow Rate", tags=["measurement", "monitoring", "optimization"], description="Water flow rate measurement", units="GPM", min_value=0, max_value=1000, default_value=500, data_type_id="flow_rate" ) print(f" āœ“ Created data type: {data_type4_id}") # Add some custom tags print("\nšŸ·ļø Adding Custom Tags...") custom_tags = ["water_system", "industrial", "automation", "safety", "municipal"] for tag in custom_tags: tag_metadata_manager.add_custom_tag(tag) print(f" āœ“ Added custom tag: {tag}") # Export metadata to file print("\nšŸ’¾ Saving metadata to file...") metadata_file = os.path.join(os.path.dirname(__file__), 'sample_metadata.json') metadata = tag_metadata_manager.export_metadata() with open(metadata_file, 'w') as f: json.dump(metadata, f, indent=2) print(f" āœ“ Metadata saved to: {metadata_file}") # Show summary print("\nšŸ“‹ FINAL SUMMARY:") print("-" * 40) print(f" Stations: {len(tag_metadata_manager.stations)}") print(f" Equipment: {len(tag_metadata_manager.equipment)}") print(f" Data Types: {len(tag_metadata_manager.data_types)}") print(f" Total Tags: {len(tag_metadata_manager.all_tags)}") print("\nāœ… Sample metadata initialization completed!") print("\nšŸ“ Sample metadata includes:") print(" - 2 Stations: Main Pump Station, Backup Pump Station") print(" - 4 Equipment: Primary Pump, Backup Pump, Pressure Sensor, Flow Meter") print(" - 4 Data Types: Pump Speed, Water Pressure, Pump Status, Flow Rate") print(" - 33 Total Tags including core and custom tags") if __name__ == "__main__": create_and_save_sample_metadata()