TasmotaManager/README.md

2.2 KiB

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:
    pip install requests urllib3
    
  3. 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 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.