TasmotaManager/test_unknown_device_console_settings.py

71 lines
2.8 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Test script to verify that console settings are applied to unknown devices
before rebooting. This script will process a single device by IP address
or hostname and apply console settings from the configuration.
"""
import sys
import logging
import argparse
from TasmotaManager import TasmotaDiscovery
# Configure logging
logging.basicConfig(
level=logging.DEBUG, # Use DEBUG level to see all console settings being applied
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
def main():
"""Main function to test the unknown device console settings functionality."""
parser = argparse.ArgumentParser(description='Test unknown device console settings')
parser.add_argument('device_identifier', help='IP address or hostname of the device to test')
parser.add_argument('--debug', action='store_true', help='Enable debug mode')
args = parser.parse_args()
print(f"Testing unknown device console settings for: {args.device_identifier}")
# Initialize TasmotaDiscovery with debug mode if requested
discovery = TasmotaDiscovery(debug=args.debug)
# Load configuration
discovery.load_config()
# Get console settings from configuration
mqtt_config = discovery.config.get('mqtt', {})
# Prefer console_set if present, else fall back to legacy console dicts
console_set = discovery.config.get('console_set') or mqtt_config.get('console_set')
if console_set:
if isinstance(console_set, dict):
print("Available console_set profiles:")
for name, entries in console_set.items():
print(f"- {name} ({len(entries)} commands)")
print("\nCommands in 'Default' (if present):")
for entry in console_set.get('Default', []):
print(f" {entry}")
else:
print("Console commands that will be applied (console_set):")
for entry in console_set:
print(f" {entry}")
else:
console_params = discovery.config.get('console', {}) or mqtt_config.get('console', {})
if not console_params:
print("No console parameters found in configuration. Please add some to test.")
sys.exit(1)
print("Console parameters that will be applied (legacy console):")
for param, value in console_params.items():
print(f" {param}: {value}")
# Process the single device
print("\nProcessing device...")
result = discovery.process_single_device(args.device_identifier)
if result:
print(f"\nSuccessfully processed device: {args.device_identifier}")
print("Console settings should have been applied before reboot.")
else:
print(f"\nFailed to process device: {args.device_identifier}")
print("Check the logs for more information.")
if __name__ == "__main__":
main()