TasmotaManager/README.md

96 lines
2.2 KiB
Markdown

# 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.