Docs/Kasa Smart Plugs

Kasa Smart Plugs

TP-Link Kasa EP25 and EP10 plugs are the backbone of TentPilot's environment and irrigation control. They're controlled via LAN — no cloud dependency, no API keys, sub-100ms toggle response time. Scout discovers them automatically.

Supported models

ModelNotes
EP25Recommended — energy monitoring, 15A, outdoor-rated
EP10Budget option — no energy monitoring, compact body, 15A
KP115Older EP25 equivalent — also works via python-kasa
KLAP authentication note

Newer Kasa firmware (2023+) uses TP-Link's KLAP auth protocol. Make sure you're running Scout v0.2+ which includes KLAP support. Older Scout builds will fail to authenticate against updated firmware.

Setup

1

Add plugs to the Kasa app

Use the TP-Link Kasa iOS/Android app to add your plugs to your Wi-Fi network. This is the only step that requires the Kasa app — once the plug is on your network, TentPilot takes over via LAN.

2

Scout auto-discovers plugs

Start Scout (tentpilot-scout) on a machine on the same network. It sends UDP broadcast discovery packets and finds all Kasa plugs automatically. No IP addresses or credentials needed.

Found: TP-Link EP25 @ 192.168.1.45 (fan-left)
Found: TP-Link EP25 @ 192.168.1.46 (humidifier)
Found: TP-Link EP10 @ 192.168.1.52 (irrigation-pump)
3

Assign roles in the dashboard

In the TentPilot dashboard, go to Devices. Each Kasa plug will appear with an "Assign" button. Select the room and role for each plug.

Available device roles

RoleControl modeUsed by
fanBang-bang (direct)Environment control loop
heaterBang-bang (direct)Environment control loop
humidifierBang-bang (direct)Environment control loop
dehumidifierBang-bang (direct)Environment control loop
irrigation_pumpTimed toggleIrrigation scheduler
nutrient_pump_[A-H]Timed toggleFertigation engine
Direct mode vs setpoint mode

Kasa plugs are controlled in "direct" mode — TentPilot toggles the outlet on and off directly. Inkbird controllers (ITC-308, IHC-200) use "setpoint" mode — TentPilot adjusts the controller's internal setpoint. If you're using both, TentPilot handles the distinction automatically based on device type.

Troubleshooting

Plug discovered but not controllable

This usually means KLAP auth failed. Update Scout: pip install --upgrade tentpilot-scout. If the plug was recently reset or firmware-updated, it may use a new credential. Re-run the Kasa app onboarding for that device, then restart Scout.

Plug not discovered at all

Confirm Scout is on the same subnet as the plug. Many routers block UDP broadcast across subnets or on guest networks. Try manually adding by IP: set KASA_STATIC_IPS=192.168.1.45,192.168.1.46 in your environment before running Scout.