|
|
||
|---|---|---|
| .gitignore | ||
| GITLAB_MIGRATION.md | ||
| network_configuration.json | ||
| README.md | ||
| TasmotaManager.py | ||
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
- Clone this repository
- Install required packages:
pip install requests urllib3 - Create a configuration file (see below)
Configuration
Create a network_configuration.json file with the following structure:
{
"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:
python TasmotaManager.py
With options:
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 devicesdeprecated.json: Devices that were previously active but are no longer presentTasmotaDevices.json: Detailed information about each device
License
This project is licensed under the MIT License - see the LICENSE file for details.