Releases: mihai-dinculescu/tapo
Releases · mihai-dinculescu/tapo
v0.7.3
Added
- Added support for the newly introduced KLAP protocol, which is required to interact with the latest firmware version of multiple devices.
Changed
- All uses of
time
have been replaced withchrono
:EnergyDataInterval
'stime::OffsetDateTime
andtime::Date
fields have been replaced withchrono::NaiveDate
.EnergyUsageResult::local_time
field is nowchrono::NaiveDateTime
instead oftime::OffsetDateTime
.EnergyDataResult::local_time
field is nowchrono::NaiveDateTime
instead oftime::OffsetDateTime
.TemperatureHumidityRecords
's andTemperatureHumidityRecord
datetime
fields are nowchrono::DateTime<chrono::Utc>
instead oftime::OffsetDateTime
.
EnergyDataInterval::Hourly::start_datetime
andEnergyDataInterval::Hourly::end_datetime
have been renamed tostart_date
andend_date
because the time component is not required.- The
login
function on all handlers has been renamed torefresh_session
to better reflect its purpose and it now takes and returns a&mut self
instead ofself
. L510DeviceInfoResult
has been renamed toLightDeviceInfoResult
to better reflect its purpose when used for L510 and L610 devices.L530DeviceInfoResult
has been renamed toColorLightDeviceInfoResult
to better reflect its purpose when used for L530, L630 and L900 devices.L930DeviceInfoResult
has been renamed toColorLightStripDeviceInfoResult
to better reflect its purpose when used for L920 and L930 devices.- The
default_states
field ofLightDeviceInfoResult
,ColorLightDeviceInfoResult
,ColorLightStripDeviceInfoResult
andPlugDeviceInfoResult
is now a struct instead of an enum.
Full Changelog: v0.7.2...v0.7.3
v0.7.2
Added
- Added
get_current_power
to theP110
andP115
plugs. (thanks to @Michal-Szczepaniak)
v0.7.1
Added
- Added
get_temperature_humidity_records
to theT310
andT315
sensors.
Changed
- The creation of device handlers has been simplified.
// old
let device = ApiClient::new(ip_address, tapo_username, tapo_password)?
.l530()
.login()
.await?;
// new
let device = ApiClient::new(tapo_username, tapo_password)?
.l530(ip_address)
.await?;
- The creation of child device handlers has been reworked so that they can be created without requiring a call to
get_child_device_list
when the child Device ID is known. ApiClient
now implementsClone
to allow for a cheaper duplication of the client.
Removed
- The
L510
andL610
devices no longer expose theset()
API because changing multiple properties simultaneously does not make sense for these devices.
v0.7.0
Added
- Added initial support for the H100 device, the S200B switch and the T100, T110, T310, T315 sensors. The child devices currently support
get_device_info
andget_trigger_logs
. - All responses now derive
serde::Serialize
to allow for more straightforward consumer serialisation. (thanks to @ClementNerma) ApiClient
has been marked as bothSend
andSync
to allow for sharing between threads. (thanks to @ClementNerma)
Changed
GenericDeviceInfoResult
'sdevice_on
property has been made optional to accommodate devices that do not provide this field.
v0.6.0
Added
- Added support for the L920 and L930 light strips. The highlight is the
tapo::ColorLightStripHandler::set_lighting_effect
function, which supports all the effects that the Tapo app contains alongside user-defined effects. - Added support for the L900 light strips.
- Each supported device now has it's own handler creator.
Changed
set_*
functions liketapo::requests::ColorLightSetDeviceInfoParams::set_brightness
now returnSelf
instead ofResult<Self, Error>
to allow for better ergonomics. The validations will now run whentapo::requests::ColorLightSetDeviceInfoParams::send
is called.tapo::requests::L510SetDeviceInfoParams
has been renamed totapo::requests::LightSetDeviceInfoParams
to better reflect its purpose when used for L510, L610, and L900 devices.tapo::requests::L530SetDeviceInfoParams
has been renamed totapo::requests::ColorLightSetDeviceInfoParams
to better reflect its purpose when used for L530, L630, L920 and L930 devices.tapo::P100Handler
has been renamed totapo::PlugHandler
.tapo::P110Handler
has been renamed totapo::EnergyMonitoringPlugHandler
.tapo::L510Handler
has been renamed totapo::LightHandler
.tapo::L530Handler
has been renamed totapo::ColorLightHandler
.tapo::L930Handler
has been renamed totapo::ColorLightStripHandler
.
v0.5.0
Changed
- The creation of an API Client for a specific device is now done through handler methods on the
ApiClient
struct. This allows for a more ergonomic API. (thanks to Octocrab for inspirations)
// old
let device = ApiClient::<L530>::new(ip_address, tapo_username, tapo_password, true).await?;
// new
let device = ApiClient::new(ip_address, tapo_username, tapo_password)?
.l530()
.login()
.await?;
ApiClient::new
parameters are nowimpl Into<String>
instead ofString
to allow for more flexibility.- Error handling has been reworked. All functions that could error now return a
Result<..., tapo::Error>
.
v0.4.0
Added
get_energy_data
is now available for the P110 devices. (thanks to @kuhschnappel)
Changed
EnergyUsageResult
'spast24h
,past7d
,past30d
andpast1y
fields are now deprecated.get_energy_data
should be used instead. (thanks to @felixhauptmann)
v0.3.1
Added
examples/tapo_generic_device_toggle.rs
demonstrates howdevice_info
can be used to assess the current status of a generic device and toggle it.
Changed
on_time
is now optional for theL510
andL530
devices because the v2 hardware no longer returns it.
v0.3.0
Added
- The
set
API allows multiple properties to be set in a single request for the L510 and L530 devices.
Changed
tapo::Color
has been moved totapo::requests::Color
.GenericDeviceInfoResult::on_time
has been changed fromu64
toOption<u64>
because some devices (like L930) do not provide this field.- All response structs have been moved under
tapo::responses
. - The docs have been improved.