Case study
tapo-local: reconstructing local control of the Tapo P110
tapo-local implements local control of the TP-Link Tapo P110 smart plug using TPAP communication recovered from the Tapo Android app. Python clients provision the plug over BLE, then use Wi-Fi sessions with SPAKE2+ and AES-128-CCM for relay control, power readings and automation.
- Targets
- Protocol
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
- Evidence class
- C2 code & docs, no demo or download
- Stars
- 2
- Last commit
- 2026-09-16
- Language
- Python
- License (GitHub)
- MIT
GitHub data as of 2026-11-10
Evidence
- Observed
- Code and documentation observed; no download method or demo found.
- Checked
- 2026-11-08
Requirements & limits
- Prerequisites: A TP-Link Tapo P110 is required; setup uses BLE and a 2.4 GHz Wi-Fi network.
- Prerequisites: Python 3.10 or later is required, with bleak for provisioning and cryptography plus aiohttp for Wi-Fi control.
- Limits: The toolkit does not ship a verified helper for creating calendar schedule rules.
- License: MIT license.
Cite
BibTeX
@misc{tapo-local-case,
title = {{tapo-local: reconstructing local control of the Tapo P110}},
howpublished = {\url{https://github.com/carboni123/tapo-local}},
url = {https://github.com/carboni123/tapo-local},
urldate = {2026-11-06},
note = {Awesome REA entry: \url{https://awesomerea.org/resources/tapo-local-case/}}
}Plain text
tapo-local: reconstructing local control of the Tapo P110. https://github.com/carboni123/tapo-local (accessed 2026-11-06). Awesome REA entry: https://awesomerea.org/resources/tapo-local-case/
Useful? Star Awesome REA on GitHub2.4k
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · carboni123/tapo-local · Revision 2e8888c
More in Protocols
- castty: reconstructing Mionix Castor control on Linux · Case study
- legion-gpu-rgb: reconstructing Lenovo GPU lighting control · Case study
- SoundcoreBridge: reconstructing Soundcore Space 2 headphone controls · Case study
- NiimBridge: reconstructing the NIIMBOT D110_M print protocol · Case study
- OMS fingerprint module: reconstructing USB communication for a Linux driver · Case study
- zwift-api: mapping Zwift's private data endpoints · Case study