qubopy 0.2.1__tar.gz → 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. {qubopy-0.2.1/qubopy.egg-info → qubopy-0.2.2}/PKG-INFO +4 -3
  2. {qubopy-0.2.1 → qubopy-0.2.2}/README.md +3 -2
  3. {qubopy-0.2.1 → qubopy-0.2.2}/pyproject.toml +1 -1
  4. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/cli.py +1 -1
  5. {qubopy-0.2.1 → qubopy-0.2.2/qubopy.egg-info}/PKG-INFO +4 -3
  6. {qubopy-0.2.1 → qubopy-0.2.2}/LICENSE +0 -0
  7. {qubopy-0.2.1 → qubopy-0.2.2}/MANIFEST.in +0 -0
  8. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/__init__.py +0 -0
  9. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/__main__.py +0 -0
  10. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/auth.py +0 -0
  11. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/client.py +0 -0
  12. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/const.py +0 -0
  13. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/__init__.py +0 -0
  14. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/base.py +0 -0
  15. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/camera.py +0 -0
  16. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/dashcam.py +0 -0
  17. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/light.py +0 -0
  18. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/lock.py +0 -0
  19. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/plug.py +0 -0
  20. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/purifier.py +0 -0
  21. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/sensor.py +0 -0
  22. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/exceptions.py +0 -0
  23. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/models.py +0 -0
  24. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/mqtt.py +0 -0
  25. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/py.typed +0 -0
  26. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy.egg-info/SOURCES.txt +0 -0
  27. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy.egg-info/dependency_links.txt +0 -0
  28. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy.egg-info/entry_points.txt +0 -0
  29. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy.egg-info/requires.txt +0 -0
  30. {qubopy-0.2.1 → qubopy-0.2.2}/qubopy.egg-info/top_level.txt +0 -0
  31. {qubopy-0.2.1 → qubopy-0.2.2}/setup.cfg +0 -0
  32. {qubopy-0.2.1 → qubopy-0.2.2}/tests/__init__.py +0 -0
  33. {qubopy-0.2.1 → qubopy-0.2.2}/tests/conftest.py +0 -0
  34. {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_auth.py +0 -0
  35. {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_cli.py +0 -0
  36. {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_client.py +0 -0
  37. {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_devices.py +0 -0
  38. {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_lock_ble.py +0 -0
  39. {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_mqtt.py +0 -0
  40. {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_mqtt_live.py +0 -0
  41. {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_routes.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qubopy
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Asynchronous Python client library and local BLE enabler for Qubo smart home devices
5
5
  Author-email: Selva Kumaran K <selvakk2k@users.noreply.github.com>
6
6
  License: MIT
@@ -420,7 +420,7 @@ await camera.stop_stream()
420
420
  > - **Web Browsers**: Browsers and HTML5 video players do not natively support `rtsps://` streams. To view the stream in a browser or dashboard, use a translation proxy like [go2rtc](https://github.com/AlexxIT/go2rtc) or WebRTC.
421
421
  > - **Paired Mobile Device Authorization**: The cloud stream manager requires a registered mobile app device ID (`userAppID`) attached to the account. `camera.start_stream()` and `qubopy stream` automatically detect and supply the account's registered mobile device ID, which can also be overridden via `user_app_id`.
422
422
  > - **Single-Consumer Sessions**: Cloud Wowza URLs are single-consumer sessions. Opening the stream in another player terminates any active session using the same token. Invoke `await camera.stop_stream()` when playback ends to release server-side resources.
423
- > - **Video Doorbells (`HCD` series)**: Live video for video doorbells is delivered via local P2P UDP rather than cloud Wowza RTSPS. Use Method 2 below for doorbells.
423
+ > - **Video Doorbells (`HCD` series)**: Doorbells support cloud Wowza RTSPS identical to cameras, but operate on a duty cycle—the doorbell stops transmitting video when idle, which causes players to disconnect when there is no active event. For direct local media transport over P2P UDP, an alternative pathway is also available (see Method 2 below and `ha-qubo`'s go2rtc client), which negotiates initial session signaling via the cloud before streaming media directly over local UDP.
424
424
 
425
425
  ##### 2. Local Peer-to-Peer (P2P) UDP Streaming (`camera.initiate_p2p_call()`) (`⚠️ Experimental`)
426
426
 
@@ -702,7 +702,7 @@ python -m qubopy tokens --json
702
702
  python -m qubopy devices
703
703
  python -m qubopy list-devices
704
704
 
705
- # Mint live Wowza RTSPS stream URL for cameras (auto-resolves paired mobile userAppID)
705
+ # Mint live Wowza RTSPS stream URL for cameras & doorbells (auto-resolves paired mobile userAppID)
706
706
  python -m qubopy stream
707
707
  python -m qubopy stream --device-id <camera_uuid> --quality high --user-app-id <mobile_id>
708
708
 
@@ -1017,6 +1017,7 @@ mypy qubopy
1017
1017
  ### Author & Contributors
1018
1018
  * **Architecture & Lead Engineering**: [@selvakk2k](https://github.com/selvakk2k)
1019
1019
  * **Code Implementation & Engineering**: **Antigravity** (Google DeepMind)
1020
+ * **Automated Code Review & Auditing**: **CodeRabbit** ([@coderabbitai](https://github.com/coderabbitai))
1020
1021
  * **Code Review & Pre-Release Auditing**: **Claude** (Anthropic)
1021
1022
 
1022
1023
  Licensed under the **MIT License**. See the [LICENSE](LICENSE) file for details.
@@ -389,7 +389,7 @@ await camera.stop_stream()
389
389
  > - **Web Browsers**: Browsers and HTML5 video players do not natively support `rtsps://` streams. To view the stream in a browser or dashboard, use a translation proxy like [go2rtc](https://github.com/AlexxIT/go2rtc) or WebRTC.
390
390
  > - **Paired Mobile Device Authorization**: The cloud stream manager requires a registered mobile app device ID (`userAppID`) attached to the account. `camera.start_stream()` and `qubopy stream` automatically detect and supply the account's registered mobile device ID, which can also be overridden via `user_app_id`.
391
391
  > - **Single-Consumer Sessions**: Cloud Wowza URLs are single-consumer sessions. Opening the stream in another player terminates any active session using the same token. Invoke `await camera.stop_stream()` when playback ends to release server-side resources.
392
- > - **Video Doorbells (`HCD` series)**: Live video for video doorbells is delivered via local P2P UDP rather than cloud Wowza RTSPS. Use Method 2 below for doorbells.
392
+ > - **Video Doorbells (`HCD` series)**: Doorbells support cloud Wowza RTSPS identical to cameras, but operate on a duty cycle—the doorbell stops transmitting video when idle, which causes players to disconnect when there is no active event. For direct local media transport over P2P UDP, an alternative pathway is also available (see Method 2 below and `ha-qubo`'s go2rtc client), which negotiates initial session signaling via the cloud before streaming media directly over local UDP.
393
393
 
394
394
  ##### 2. Local Peer-to-Peer (P2P) UDP Streaming (`camera.initiate_p2p_call()`) (`⚠️ Experimental`)
395
395
 
@@ -671,7 +671,7 @@ python -m qubopy tokens --json
671
671
  python -m qubopy devices
672
672
  python -m qubopy list-devices
673
673
 
674
- # Mint live Wowza RTSPS stream URL for cameras (auto-resolves paired mobile userAppID)
674
+ # Mint live Wowza RTSPS stream URL for cameras & doorbells (auto-resolves paired mobile userAppID)
675
675
  python -m qubopy stream
676
676
  python -m qubopy stream --device-id <camera_uuid> --quality high --user-app-id <mobile_id>
677
677
 
@@ -986,6 +986,7 @@ mypy qubopy
986
986
  ### Author & Contributors
987
987
  * **Architecture & Lead Engineering**: [@selvakk2k](https://github.com/selvakk2k)
988
988
  * **Code Implementation & Engineering**: **Antigravity** (Google DeepMind)
989
+ * **Automated Code Review & Auditing**: **CodeRabbit** ([@coderabbitai](https://github.com/coderabbitai))
989
990
  * **Code Review & Pre-Release Auditing**: **Claude** (Anthropic)
990
991
 
991
992
  Licensed under the **MIT License**. See the [LICENSE](LICENSE) file for details.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "qubopy"
7
- version = "0.2.1"
7
+ version = "0.2.2"
8
8
  description = "Asynchronous Python client library and local BLE enabler for Qubo smart home devices"
9
9
  readme = "README.md"
10
10
  authors = [
@@ -590,7 +590,7 @@ async def _cmd_stream(args: argparse.Namespace) -> int:
590
590
  " Use go2rtc, WebRTC proxy, or Home Assistant Generic Camera / WebRTC card."
591
591
  )
592
592
  print(
593
- " - Note: Video Doorbells (HCD) stream via local P2P UDP rather than cloud Wowza."
593
+ " - Note: Video Doorbells (HCD) also support local P2P UDP streaming (see README)."
594
594
  )
595
595
  return 0
596
596
  except QuboError as err:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qubopy
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Asynchronous Python client library and local BLE enabler for Qubo smart home devices
5
5
  Author-email: Selva Kumaran K <selvakk2k@users.noreply.github.com>
6
6
  License: MIT
@@ -420,7 +420,7 @@ await camera.stop_stream()
420
420
  > - **Web Browsers**: Browsers and HTML5 video players do not natively support `rtsps://` streams. To view the stream in a browser or dashboard, use a translation proxy like [go2rtc](https://github.com/AlexxIT/go2rtc) or WebRTC.
421
421
  > - **Paired Mobile Device Authorization**: The cloud stream manager requires a registered mobile app device ID (`userAppID`) attached to the account. `camera.start_stream()` and `qubopy stream` automatically detect and supply the account's registered mobile device ID, which can also be overridden via `user_app_id`.
422
422
  > - **Single-Consumer Sessions**: Cloud Wowza URLs are single-consumer sessions. Opening the stream in another player terminates any active session using the same token. Invoke `await camera.stop_stream()` when playback ends to release server-side resources.
423
- > - **Video Doorbells (`HCD` series)**: Live video for video doorbells is delivered via local P2P UDP rather than cloud Wowza RTSPS. Use Method 2 below for doorbells.
423
+ > - **Video Doorbells (`HCD` series)**: Doorbells support cloud Wowza RTSPS identical to cameras, but operate on a duty cycle—the doorbell stops transmitting video when idle, which causes players to disconnect when there is no active event. For direct local media transport over P2P UDP, an alternative pathway is also available (see Method 2 below and `ha-qubo`'s go2rtc client), which negotiates initial session signaling via the cloud before streaming media directly over local UDP.
424
424
 
425
425
  ##### 2. Local Peer-to-Peer (P2P) UDP Streaming (`camera.initiate_p2p_call()`) (`⚠️ Experimental`)
426
426
 
@@ -702,7 +702,7 @@ python -m qubopy tokens --json
702
702
  python -m qubopy devices
703
703
  python -m qubopy list-devices
704
704
 
705
- # Mint live Wowza RTSPS stream URL for cameras (auto-resolves paired mobile userAppID)
705
+ # Mint live Wowza RTSPS stream URL for cameras & doorbells (auto-resolves paired mobile userAppID)
706
706
  python -m qubopy stream
707
707
  python -m qubopy stream --device-id <camera_uuid> --quality high --user-app-id <mobile_id>
708
708
 
@@ -1017,6 +1017,7 @@ mypy qubopy
1017
1017
  ### Author & Contributors
1018
1018
  * **Architecture & Lead Engineering**: [@selvakk2k](https://github.com/selvakk2k)
1019
1019
  * **Code Implementation & Engineering**: **Antigravity** (Google DeepMind)
1020
+ * **Automated Code Review & Auditing**: **CodeRabbit** ([@coderabbitai](https://github.com/coderabbitai))
1020
1021
  * **Code Review & Pre-Release Auditing**: **Claude** (Anthropic)
1021
1022
 
1022
1023
  Licensed under the **MIT License**. See the [LICENSE](LICENSE) file for details.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes