--- name: tasmota description: Discover, monitor, and control Tasmota smart home devices on local networks. Use when tasks involve finding Tasmota devices via network scanning, checking device status and power states, controlling devices (on-off, brightness, color), managing device inventory, or any other Tasmota management operations on ESP8266 or ESP32 devices running Tasmota firmware. --- # Tasmota Device Management ## Overview Automated discovery and control of Tasmota-powered smart home devices (ESP8266/ESP32) on local networks. Includes network scanning, status monitoring, power control, dimming, color control, and inventory management. ## Quick Start **Scan network for Tasmota devices:** ```bash python3 scripts/tasmota-discovery.py ``` **Check device status:** ```bash python3 scripts/tasmota-control.py status 0 ``` **Control device:** ```bash python3 scripts/tasmota-control.py power on|off|toggle python3 scripts/tasmota-control.py brightness 0-100 python3 scripts/tasmota-control.py color ``` ## Discovery ### Network Scan Run a full network scan to find all Tasmota devices: ```bash python3 scripts/tasmota-discovery.py ``` The script: 1. Performs ping sweep to identify live hosts 2. Scans HTTP (port 80) on live hosts 3. Detects Tasmota via Server header (e.g., "Tasmota/13.1.0") 4. Confirms via JSON API (`/cm?cmnd=status%200`) 5. Retrieves device names, versions, and hardware Output includes: - IP address - Device friendly name - Tasmota version - Hardware platform (ESP8266/ESP32) - Response time ### Identification Signals Tasmota devices are identified by: - **Server header:** `Tasmota/ ()` - **JSON API response:** `/cm?cmnd=status%200` returns structured status - **Content keywords:** "Tasmota" in HTML ## Device Control ### Power Control Toggle or set power state: ```bash # Toggle python3 scripts/tasmota-control.py power toggle # On/Off python3 scripts/tasmota-control.py power on python3 scripts/tasmota-control.py power off ``` ### Brightness (Dimmers) Set brightness level (0-100): ```bash python3 scripts/tasmota-control.py brightness 50 ``` Works on devices with Dimmer support (check StatusSTS). ### Color (RGB Lights) Set RGB color (hex or comma-separated): ```bash # Hex format python3 scripts/tasmota-control.py color FF0000 # Red python3 scripts/tasmota-control.py color 00FF00 # Green # RGB comma format python3 scripts/tasmota-control.py color 255,0,0 ``` Works on devices with RGB support (AiYaTo-RGBCW, etc.). ## Status Queries ### Device Status Retrieve status information: ```bash # Basic status python3 scripts/tasmota-control.py status 0 # All statuses python3 scripts/tasmota-control.py status all ``` **Status codes:** - `0 = Status` - Device info, friendly name, power state - `1 = StatusPRM` - Parameters, uptime, MAC - `2 = StatusFWR` - Firmware version, hardware - `3 = StatusLOG` - Log settings - `4 = StatusNET` - Network config (IP, gateway, WiFi) - `5 = StatusMQT` - MQTT configuration - `9 = StatusTIM` - Time, timezone, sunrise/sunset ### Key Status Fields **StatusSTS (Status 0):** - `POWER` - Current state (ON/OFF) - `Dimmer` - Brightness level (0-100) - `Wifi.RSSI` - Signal strength - `Wifi.SSId` - Connected WiFi network **StatusNET:** - `IPAddress` - Device IP - `Hostname` - mDNS hostname - `Mac` - MAC address ## Bulk Operations ### Get All Device Status ```bash python3 scripts/tasmota-status.py ``` Iterates through inventory file and shows power state for all devices. ### Managing Inventory Devices are tracked in a CSV inventory file. Format: ``` IP Address,Device Name,Version,Hardware,Response Time (ms) 192.168.1.116,Office Hall Light,13.1.0,ESP8266EX,53 ``` After discovery, save output to inventory file for batch operations. ## Common Tasks ### Finding Labeled Devices ```bash # Scan and grep for specific device names python3 scripts/tasmota-discovery.py | grep "Kitchen" python3 scripts/tasmota-discovery.py | grep "Bulb" ``` ### Checking All Lights ```bash # Get status of all devices python3 scripts/tasmota-status.py ``` ### Power Cycle a Device ```bash # Off, wait 2s, on python3 scripts/tasmota-control.py 192.168.1.116 power off sleep 2 python3 scripts/tasmota-control.py 192.168.1.116 power on ``` ## Tasmota API Reference ### Command Format ``` http:///cm?cmnd= ``` ### Common Commands | Command | Description | |---------|-------------| | `Power` | Toggle power | | `Power ON` | Turn on | | `Power OFF` | Turn off | | `Power TOGGLE` | Toggle state | | `Status 0` | Device status | | `Status 4` | Network status | | `Dimmer <0-100>` | Set brightness | | `Color ` | Set RGB color | | `Fade ` | Enable fade effects | ## Troubleshooting ### Device Not Found - Verify device is on same subnet - Check device has HTTP server enabled (Webserver 2 in config) - Ensure device is powered on and connected to WiFi - Try direct HTTP request: `curl http:///cm?cmnd=Status%200` ### Timeout Errors - Device may be power saving (WiFi sleep) - Network latency or packet loss - Check device uptime for recent restarts ### Unknown Power State Some devices (BLE gateways, sensors) don't have power control. Check capability in StatusSTS. ## Network Configuration Tasmota devices typically: - Connect on WiFi channel 1-11 - Use DHCP (check StatusNET for current IP) - May respond to mDNS (hostname patterns: tasmota-XXXXXX) - Use HTTP on port 80 (standard) ## Best Practices - Scan during network maintenance windows (avoid peak usage) - Cache inventory file to avoid repeated scans - Use device friendly names for easier identification - Set static IPs for critical devices (via Tasmota web UI or DHCP reservations) - Group devices by location/function in inventory comments ## Resources ### scripts/tasmota-discovery.py Network scanner that finds live hosts and identifies Tasmota devices via HTTP and JSON API. ### scripts/tasmota-control.py Device controller supporting power, brightness, color, and status queries via Tasmota JSON API. ### scripts/tasmota-status.py Bulk status checker that queries all devices in inventory and displays power states.