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.
- {qubopy-0.2.1/qubopy.egg-info → qubopy-0.2.2}/PKG-INFO +4 -3
- {qubopy-0.2.1 → qubopy-0.2.2}/README.md +3 -2
- {qubopy-0.2.1 → qubopy-0.2.2}/pyproject.toml +1 -1
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/cli.py +1 -1
- {qubopy-0.2.1 → qubopy-0.2.2/qubopy.egg-info}/PKG-INFO +4 -3
- {qubopy-0.2.1 → qubopy-0.2.2}/LICENSE +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/MANIFEST.in +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/__init__.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/__main__.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/auth.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/client.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/const.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/__init__.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/base.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/camera.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/dashcam.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/light.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/lock.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/plug.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/purifier.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/devices/sensor.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/exceptions.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/models.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/mqtt.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy/py.typed +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy.egg-info/SOURCES.txt +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy.egg-info/dependency_links.txt +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy.egg-info/entry_points.txt +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy.egg-info/requires.txt +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/qubopy.egg-info/top_level.txt +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/setup.cfg +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/tests/__init__.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/tests/conftest.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_auth.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_cli.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_client.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_devices.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_lock_ble.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_mqtt.py +0 -0
- {qubopy-0.2.1 → qubopy-0.2.2}/tests/test_mqtt_live.py +0 -0
- {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.
|
|
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)**:
|
|
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)**:
|
|
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.
|
|
@@ -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)
|
|
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.
|
|
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)**:
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|