# TasmotaManager A Python utility for discovering, monitoring, and managing Tasmota devices on a network using UniFi Controller. ## Features - Discovers Tasmota devices on the network via UniFi Controller API - Tracks device changes over time (new, moved, deprecated devices) - Checks and updates MQTT settings on Tasmota devices - Generates detailed device information including firmware versions ## Requirements - Python 3.6+ - UniFi Controller with API access - Network with Tasmota devices ## Dependencies - requests - urllib3 - Standard library modules (json, logging, os, sys, datetime, re, time, argparse) ## Installation 1. Clone this repository 2. Install required packages: ```bash pip install requests urllib3 ``` 3. Create a configuration file (see below) ## Configuration Create a `network_configuration.json` file with the following structure: ```json { "unifi": { "host": "https://your-unifi-controller.local", "username": "your-username", "password": "your-password", "site": "default", "network_filter": { "network_name": { "name": "Human-readable name", "subnet": "192.168.1", "exclude_patterns": [ "device-to-exclude*" ], "unknown_device_patterns": [ "tasmota*", "ESP-*" ] } } }, "mqtt": { "Host": "mqtt-broker.local", "Port": 1883, "User": "mqtt-user", "Password": "mqtt-password", "Topic": "%hostname_base%", "FullTopic": "%prefix%/%topic%/", "NoRetain": false } } ``` ## Usage Basic usage: ```bash python TasmotaManager.py ``` With options: ```bash python TasmotaManager.py --config custom_config.json --debug --skip-unifi ``` Command-line options: - `--config`: Path to configuration file (default: network_configuration.json) - `--debug`: Enable debug logging - `--skip-unifi`: Skip UniFi discovery and use existing current.json ## Output Files The script generates several output files: - `current.json`: List of currently active Tasmota devices - `deprecated.json`: Devices that were previously active but are no longer present - `TasmotaDevices.json`: Detailed information about each device ## License This project is licensed under the MIT License - see the LICENSE file for details.