Unofficial TP-Link Tapo smart device library for C#.
- Ported to dotnet 8.0
- Linux friendly
Build clients to interact with Tapo Cloud or smart device.
TapoCloudClient cloudClient = new TapoCloudClient();
TapoDeviceClient deviceClient = new TapoDeviceClient();
//Specify order of login protocols to try.
TapoDeviceClient deviceClient = new TapoDeviceClient(new List<ITapoDeviceClient>
{
new KlapDeviceClient(),
new SecurePassthroughDeviceClient(),
});
Get devices from cloud.
CloudLoginResult cloudKey = await cloudClient.LoginAsync("<Username>", "<Password>");
CloudListDeviceResult deviceResult = await cloudClient.ListDevicesAsync(cloudKey.Token);
Select devices by type.
IEnumerable<TapoDeviceDto> devices = deviceResult.DeviceList
.Where(x => x.DeviceType == TapoUtils.TapoBulbDeviceType);
Select device by alias.
TapoDeviceDto device = deviceResult.DeviceList.First(x => x.Alias == "<Device Name>")
Login to device by known IP address.
TapoDeviceKey deviceKey = await deviceClient.LoginByIpAsync("<Username>", "<Password>", "<IpAddress>");
Login to device by known MAC address (finds the MAC address on local network through a Windows ARP request).
string ip = TapoUtils.GetIpAddressByMacAddress(device.DeviceMac);
TapoDeviceKey deviceKey = await deviceClient.LoginByIpAsync("<Username>", "<Password>", ip);
Get Device info.
DeviceGetInfoResult deviceInfo = await deviceClient.GetDeviceInfoAsync(deviceKey);
Set Device's power, brightness, color, and state.
await deviceClient.SetPowerAsync(deviceKey, true);
await deviceClient.SetBrightnessAsync(deviceKey, 80);
await deviceClient.SetColorAsync(deviceKey, TapoColor.FromHex("#e8d974"));
await deviceClient.SetColorAsync(deviceKey, TapoColor.FromHsl(200, 100, 100));
await deviceClient.SetColorAsync(deviceKey, TapoColor.FromRgb(100, 25, 32));
await deviceClient.SetColorAsync(deviceKey, TapoColor.FromTemperature(3500));
await deviceClient.SetStateAsync(deviceKey, new TapoSetBulbState(
color: TapoColor.FromTemperature(3800, brightness: 1),
deviceOn: true));
This is an unofficial SDK that has no affiliation with TP-Link. TP-Link and all respective product names are copyright TP-Link Technologies Co, Ltd. and/or its subsidiaries and affiliates.
Credit to this API go to:
- Forked from cwakefie27/TapoConnect
Many thanks to cwakefie27 for this fork.