Zásuvka Tapo P110 je jedním z produktů od společnosti TP-Link, který umožňuje smart ovládání přes WiFi. Jedna z výhod této zásuvky je, Dnes se podíváme na tuto chytrou zásuvku, kterou budeme na dálku ovládat a měřit spotřebu. Jednou z výhod této zásuvky oproti nižšímu modelu P100 je monitorování spotřeby elektrické energie. To nám umožní sledovat kolik elektřiny jednotlivá zařízení spotřebovávají.
Dnešní řešení provedeme v programovací m jazyce Python s využitím knihovny PyP100. Nenechte se zmást názvem knihovny PyP100, tato knihovna umí pracovat i se zásvkou P110.
Neprve zapojte zásuvku do elektřiny, přidejte si ji do vaší domácnosti a zprozněte v aplikaci TAPO.
Zásuvka komunikuje s okolím přes WiFi, tekže zařízení kterým budete zásvuku ovládat / monitorovat odběr přes zásuvku musí být ve stejné síti. V mém případě se jedná o Raspberry.
V apliakci je pořeba zjistit IP adresu zásvuky. Provedete to v detailu zásuvky -> Info o zařízení -> IP adresa.
Instalace Python na Raspberry Pi
Na Raspberry Pi mám Ubuntu:
sudo apt update
sudo apt upgrade
sudo apt install python3
python3 --version
Programujeme
Použijeme Python s knihovnu https://pypi.org/project/PyP100/
sudo pip install PyP100
V případě chyby:
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
sudo pip install PyP100 --break-system-packages
Pak už jen napíšeme kód pro ovládání zásvuky. Nezapomeňte, že zásuvku musíte mít přidanou ve va3i aplikaci, protože pro ovládání zásuvky bude potřeba jméno a heslo k vašemu účtu TAPO.
from PyP100 import PyP110
p110 = PyP100.P110("192.168.X.X", "email@email.cz", "heslo") #IP adresa zasuvky, email, heslo
p110.handshake() #cookies pozadavek
p110.login()
p110.getEnergyUsage() #aktualni spotreba zasuvky
#sprace se stavy zasuvky
p110.turnOn() #Zapne zasuvku
p110.turnOff() #Vypne zasuvku
p110.toggleState() #zmeni stav zasuvky na opacny zapne/vypne
p110.turnOnWithDelay(10) #zapne se zpozdenim 10s
p110.turnOffWithDelay(10) #vypne se zpozdenim 10s
p110.getDeviceInfo() #informace o zasuvce
p110.getDeviceName() #jmeno zasuvky