GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Create common Time module and add time set cli command by sdb9696 · Pull Request #1157 · python-kasa/python-kasa

Conversation

@sdb9696

@sdb9696 sdb9696 commented Oct 8, 2024 •
edited by rytilahti
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Fixes #436

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
sdb9696 added 2 commits October 8, 2024 12:17
@sdb9696
Create common Time module and add cli set time
52a2f44
@sdb9696
Fix readme example test
fc6e004
rytilahti
rytilahti reviewed Oct 8, 2024
View reviewed changes

@rytilahti rytilahti left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For a KP115, syncing sets an incorrect timezone name, but the time & offset are correct:

kasa --host 192.168.xx time sync
Old time: 2024-10-08 15:27:57-07:00 (PST8PDT)
New time: 2024-10-09 00:27:00+02:00 (Africa/Windhoek)

timedatectl says my current TZ is Europe/Berlin (CEST, +0200), maybe sync could/should prefer the locally set timezone?

On tapo P115, Europe/Istanbul should be one hour forward, but I'm getting this instead:

kasa --host 192.168.xx time sync --timezone Europe/Istanbul
Old time: 2024-10-09 00:33:57+02:00 (CEST)
New time: 2024-10-09 03:33:57+03:00 (+03)

Syncing it back to the correct time works, and this time with CEST instead of Africa/Windhoek:

kasa --host 192.168.xx time sync
Old time: 2024-10-09 03:35:25+03:00 (+03)
New time: 2024-10-09 00:35:27+02:00 (CEST)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread kasa/cli/time.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread kasa/interfaces/time.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread kasa/iot/iotdevice.py
Comment on lines +472 to +476
async def get_time(self) -> datetime:
"""Return current time from the device, if available."""
_LOGGER.warning(
"Use `time` property instead, this call will be removed in the future."
)
return await self.modules[Module.IotTime].get_time()
msg = "Use `time` property instead, this call will be removed in the future."
warn(msg, DeprecationWarning, stacklevel=1)
return self.time

@rytilahti rytilahti Oct 8, 2024

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should probably drop this and all other "this call will be removed in the future" marked functions, but that could be done in a separate PR.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@sdb9696 sdb9696 Oct 9, 2024

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking it could be about time to drop all of the deprecated support and making the next release 0.8.0. What do you think?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@rytilahti rytilahti Oct 14, 2024

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It hasn't been that long since the large refactor, so I'd tend to say that we keep them for the time being. Or is there some specific reason we should already go for a 0.8 and break things right away?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread kasa/iot/iottimezone.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread kasa/iot/modules/time.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

@rytilahti rytilahti added the enhancement New feature or request label Oct 8, 2024
sdb9696 added 3 commits October 9, 2024 13:30
@sdb9696
Update to allow setting time without timezone
c2c1217
@sdb9696
Fix flag
da0361a
@sdb9696
Merge remote-tracking branch 'upstream/master' into feat/common_time
c7c618b
@codecov

codecov Bot commented Oct 9, 2024 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

Codecov Report

Attention: Patch coverage is 82.00000% with 27 lines in your changes missing coverage. Please review.

Project coverage is 92.31%. Comparing base (885a04d) to head (18c39c7).
Report is 206 commits behind head on master.

Files with missing lines Patch % Lines
kasa/cli/time.py 74.07% 9 Missing and 5 partials ⚠️
kasa/iot/iottimezone.py 84.37% 1 Missing and 4 partials ⚠️
kasa/iot/iotdevice.py 72.72% 3 Missing ⚠️
kasa/cli/common.py 0.00% 1 Missing and 1 partial ⚠️
kasa/iot/modules/time.py 88.23% 2 Missing ⚠️
kasa/smart/modules/time.py 93.75% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1157      +/-   ##
==========================================
- Coverage   92.58%   92.31%   -0.28%     
==========================================
  Files          98       99       +1     
  Lines        6174     6282     +108     
  Branches     1523     1566      +43     
==========================================
+ Hits         5716     5799      +83     
- Misses        357      374      +17     
- Partials      101      109       +8     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@sdb9696

sdb9696 commented Oct 9, 2024

Copy link
Copy Markdown
Contributor Author

Marking as draft to fix iot with no timezone

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@sdb9696
sdb9696 marked this pull request as draft October 9, 2024 12:51
@sdb9696
Make iot accept naive times
6f138f6
@sdb9696
sdb9696 marked this pull request as ready for review October 9, 2024 12:57
@sdb9696
sdb9696 requested a review from rytilahti October 9, 2024 12:57
rytilahti
rytilahti approved these changes Oct 14, 2024
View reviewed changes

@rytilahti rytilahti left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is fine, the only thing I'm worried about is whether we really want sprinkle autodetection magic for the timezone setting. That being said, this is so seldomly used codepath so it doesn't really matter that much.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread kasa/iot/iottimezone.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

sdb9696 added 2 commits October 15, 2024 07:22
@sdb9696
Update docstring post review
b975cef
@sdb9696
Add tests
18c39c7
@sdb9696 sdb9696 changed the title Create common Time module and add cli set time Create common Time module and add time set cli command Oct 15, 2024
@sdb9696
sdb9696 merged commit 7fd8c14 into python-kasa:master Oct 15, 2024
@sdb9696
sdb9696 deleted the feat/common_time branch October 15, 2024 07:59
@sdb9696 sdb9696 added this to the 0.7.6 milestone Oct 29, 2024
@sdb9696 sdb9696 mentioned this pull request Oct 29, 2024
Prepare 0.7.6 #1213
Merged
sdb9696 added a commit that referenced this pull request Oct 29, 2024
@sdb9696
Prepare 0.7.6 (#1213)
530cf4b
## [0.7.6](https://github.com/python-kasa/python-kasa/tree/0.7.6) (2024-10-29)

[Full Changelog](0.7.5...0.7.6)

**Release summary:**

- Experimental support for Tapo cameras and the Tapo H200 hub which uses the same protocol.
- Better timestamp support across all devices.
- Support for new devices P304M, S200D and S200B (see README.md for note on the S200 support).
- Various other fixes and minor features.

**Implemented enhancements:**

- Add support for setting the timezone [\#436](#436)
- Add stream\_rtsp\_url to camera module [\#1197](#1197) (@sdb9696)
- Try default logon credentials in SslAesTransport [\#1195](#1195) (@sdb9696)
- Allow enabling experimental devices from environment variable [\#1194](#1194) (@sdb9696)
- Add core device, child and camera modules to smartcamera [\#1193](#1193) (@sdb9696)
- Fallback to get\_current\_power if get\_energy\_usage does not provide current\_power [\#1186](#1186) (@Fulch36)
- Add https parameter to device class factory [\#1184](#1184) (@sdb9696)
- Add discovery list command to cli [\#1183](#1183) (@sdb9696)
- Add Time module to SmartCamera devices [\#1182](#1182) (@sdb9696)
- Add try\_connect\_all to allow initialisation without udp broadcast [\#1171](#1171) (@sdb9696)
- Update dump\_devinfo for smart camera protocol [\#1169](#1169) (@sdb9696)
- Enable newer encrypted discovery protocol [\#1168](#1168) (@sdb9696)
- Initial TapoCamera support [\#1165](#1165) (@sdb9696)
- Add waterleak alert timestamp [\#1162](#1162) (@rytilahti)
- Create common Time module and add time set cli command [\#1157](#1157) (@sdb9696)

**Fixed bugs:**

- Only send 20002 discovery request with key included [\#1207](#1207) (@sdb9696)
- Fix SslAesTransport default login and add tests [\#1202](#1202) (@sdb9696)
- Fix device\_config serialisation of https value [\#1196](#1196) (@sdb9696)

**Added support for devices:**

- Add S200B\(EU\) fw 1.11.0 fixture [\#1205](#1205) (@sdb9696)
- Add TC65 fixture [\#1200](#1200) (@rytilahti)
- Add P304M\(UK\) test fixture [\#1185](#1185) (@Fulch36)
- Add H200 experimental fixture [\#1180](#1180) (@sdb9696)
- Add S200D button fixtures [\#1161](#1161) (@rytilahti)

**Project maintenance:**

- Fix mypy errors in parse_pcap_klap [\#1214](#1214) (@sdb9696)
- Make HSV NamedTuple creation more efficient [\#1211](#1211) (@sdb9696)
- dump\_devinfo: query get\_current\_brt for iot dimmers [\#1209](#1209) (@rytilahti)
- Add trigger\_logs and double\_click to dump\_devinfo helper [\#1208](#1208) (@sdb9696)
- Fix smartcamera childdevice module [\#1206](#1206) (@sdb9696)
- Add H200\(EU\) fw 1.3.2 fixture [\#1204](#1204) (@sdb9696)
- Do not pass None as timeout to http requests [\#1203](#1203) (@sdb9696)
- Update SMART test framework to use fake child protocols [\#1199](#1199) (@sdb9696)
- Allow passing an aiohttp client session during discover try\_connect\_all [\#1198](#1198) (@sdb9696)
- Add test framework for smartcamera [\#1192](#1192) (@sdb9696)
- Rename experimental fixtures folder to smartcamera [\#1191](#1191) (@sdb9696)
- Combine smartcamera error codes into SmartErrorCode [\#1190](#1190) (@sdb9696)
- Allow deriving from SmartModule without being registered [\#1189](#1189) (@sdb9696)
- Improve supported module checks for hub children [\#1188](#1188) (@sdb9696)
- Update smartcamera to support single get/set/do requests [\#1187](#1187) (@sdb9696)
- Add S200B\(US\) fw 1.12.0 fixture [\#1181](#1181) (@sdb9696)
- Add T110\(US\), T310\(US\) and T315\(US\) sensor fixtures [\#1179](#1179) (@sdb9696)
- Enforce EOLs for \*.rst and \*.md [\#1178](#1178) (@rytilahti)
- Convert fixtures to use unix newlines [\#1177](#1177) (@rytilahti)
- Add motion sensor to known categories [\#1176](#1176) (@rytilahti)
- Drop urllib3 dependency and create ssl context in executor thread [\#1175](#1175) (@sdb9696)
- Expose smart child device map as a class constant [\#1173](#1173) (@sdb9696)
pillarsdotnet pushed a commit to pillarsdotnet/python-kasa that referenced this pull request Oct 22, 2026
@sdb9696
Create common Time module and add time set cli command (python-kasa#1157
df56870
)
pillarsdotnet pushed a commit to pillarsdotnet/python-kasa that referenced this pull request Oct 22, 2026
@sdb9696
Prepare 0.7.6 (python-kasa#1213)
59b2aa4
## [0.7.6](https://github.com/python-kasa/python-kasa/tree/0.7.6) (2024-10-29)

[Full Changelog](python-kasa/python-kasa@0.7.5...0.7.6)

**Release summary:**

- Experimental support for Tapo cameras and the Tapo H200 hub which uses the same protocol.
- Better timestamp support across all devices.
- Support for new devices P304M, S200D and S200B (see README.md for note on the S200 support).
- Various other fixes and minor features.

**Implemented enhancements:**

- Add support for setting the timezone [\python-kasa#436](python-kasa#436)
- Add stream\_rtsp\_url to camera module [\python-kasa#1197](python-kasa#1197) (@sdb9696)
- Try default logon credentials in SslAesTransport [\python-kasa#1195](python-kasa#1195) (@sdb9696)
- Allow enabling experimental devices from environment variable [\python-kasa#1194](python-kasa#1194) (@sdb9696)
- Add core device, child and camera modules to smartcamera [\python-kasa#1193](python-kasa#1193) (@sdb9696)
- Fallback to get\_current\_power if get\_energy\_usage does not provide current\_power [\python-kasa#1186](python-kasa#1186) (@Fulch36)
- Add https parameter to device class factory [\python-kasa#1184](python-kasa#1184) (@sdb9696)
- Add discovery list command to cli [\python-kasa#1183](python-kasa#1183) (@sdb9696)
- Add Time module to SmartCamera devices [\python-kasa#1182](python-kasa#1182) (@sdb9696)
- Add try\_connect\_all to allow initialisation without udp broadcast [\python-kasa#1171](python-kasa#1171) (@sdb9696)
- Update dump\_devinfo for smart camera protocol [\python-kasa#1169](python-kasa#1169) (@sdb9696)
- Enable newer encrypted discovery protocol [\python-kasa#1168](python-kasa#1168) (@sdb9696)
- Initial TapoCamera support [\python-kasa#1165](python-kasa#1165) (@sdb9696)
- Add waterleak alert timestamp [\python-kasa#1162](python-kasa#1162) (@rytilahti)
- Create common Time module and add time set cli command [\python-kasa#1157](python-kasa#1157) (@sdb9696)

**Fixed bugs:**

- Only send 20002 discovery request with key included [\python-kasa#1207](python-kasa#1207) (@sdb9696)
- Fix SslAesTransport default login and add tests [\python-kasa#1202](python-kasa#1202) (@sdb9696)
- Fix device\_config serialisation of https value [\python-kasa#1196](python-kasa#1196) (@sdb9696)

**Added support for devices:**

- Add S200B\(EU\) fw 1.11.0 fixture [\python-kasa#1205](python-kasa#1205) (@sdb9696)
- Add TC65 fixture [\python-kasa#1200](python-kasa#1200) (@rytilahti)
- Add P304M\(UK\) test fixture [\python-kasa#1185](python-kasa#1185) (@Fulch36)
- Add H200 experimental fixture [\python-kasa#1180](python-kasa#1180) (@sdb9696)
- Add S200D button fixtures [\python-kasa#1161](python-kasa#1161) (@rytilahti)

**Project maintenance:**

- Fix mypy errors in parse_pcap_klap [\python-kasa#1214](python-kasa#1214) (@sdb9696)
- Make HSV NamedTuple creation more efficient [\python-kasa#1211](python-kasa#1211) (@sdb9696)
- dump\_devinfo: query get\_current\_brt for iot dimmers [\python-kasa#1209](python-kasa#1209) (@rytilahti)
- Add trigger\_logs and double\_click to dump\_devinfo helper [\python-kasa#1208](python-kasa#1208) (@sdb9696)
- Fix smartcamera childdevice module [\python-kasa#1206](python-kasa#1206) (@sdb9696)
- Add H200\(EU\) fw 1.3.2 fixture [\python-kasa#1204](python-kasa#1204) (@sdb9696)
- Do not pass None as timeout to http requests [\python-kasa#1203](python-kasa#1203) (@sdb9696)
- Update SMART test framework to use fake child protocols [\python-kasa#1199](python-kasa#1199) (@sdb9696)
- Allow passing an aiohttp client session during discover try\_connect\_all [\python-kasa#1198](python-kasa#1198) (@sdb9696)
- Add test framework for smartcamera [\python-kasa#1192](python-kasa#1192) (@sdb9696)
- Rename experimental fixtures folder to smartcamera [\python-kasa#1191](python-kasa#1191) (@sdb9696)
- Combine smartcamera error codes into SmartErrorCode [\python-kasa#1190](python-kasa#1190) (@sdb9696)
- Allow deriving from SmartModule without being registered [\python-kasa#1189](python-kasa#1189) (@sdb9696)
- Improve supported module checks for hub children [\python-kasa#1188](python-kasa#1188) (@sdb9696)
- Update smartcamera to support single get/set/do requests [\python-kasa#1187](python-kasa#1187) (@sdb9696)
- Add S200B\(US\) fw 1.12.0 fixture [\python-kasa#1181](python-kasa#1181) (@sdb9696)
- Add T110\(US\), T310\(US\) and T315\(US\) sensor fixtures [\python-kasa#1179](python-kasa#1179) (@sdb9696)
- Enforce EOLs for \*.rst and \*.md [\python-kasa#1178](python-kasa#1178) (@rytilahti)
- Convert fixtures to use unix newlines [\python-kasa#1177](python-kasa#1177) (@rytilahti)
- Add motion sensor to known categories [\python-kasa#1176](python-kasa#1176) (@rytilahti)
- Drop urllib3 dependency and create ssl context in executor thread [\python-kasa#1175](python-kasa#1175) (@sdb9696)
- Expose smart child device map as a class constant [\python-kasa#1173](python-kasa#1173) (@sdb9696)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@rytilahti rytilahti rytilahti approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

enhancement New feature or request

Projects

None yet

Milestone

0.7.6

Development

Successfully merging this pull request may close these issues.

Add support for setting the timezone

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@sdb9696 @rytilahti
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.