Star on GitHubStar2.4k stars

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

Copy as MarkdownView JSONCite

Evidence

Observed
Code and documentation observed; no download method or demo found.
Checked
2026-11-08

How evidence classes are assigned

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.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · carboni123/tapo-local · Revision 2e8888c

More in Protocols

All 720 entries in ProtocolsProtocols case studies (645)

↑↓ move↵ open⌘↵ new tab