G6 Pro 360

Experimenting with G6 Pro 360.

Setup

Requires uv and Python 3.14.

uv sync

Copy .env.example to .env and fill in your values:

cp .env.example .env
HOST=192.168.1.1     # UniFi controller IP
API_KEY=             # API key from UniFi OS profile → API Tokens
UNIFI_USERNAME=      # Local UniFi OS username (for speaker volume control)
UNIFI_PASSWORD=      # Local UniFi OS password

API Reference

UniFi Protect API v6.2.88

Note: For use cases requiring real-time event subscriptions (WebSocket) or access to settings not exposed by the official API, consider uiprotect — an unofficial Python library wrapping the private UniFi Protect API.

Scripts

uv run dump_camera.py          # dump camera data from integration + private API
uv run play_speaker.py         # play hello.wav through the camera speaker
uv run record_mic.py           # record from the camera mic (Ctrl+C to stop)
uv run blink_led.py            # blink the status LED
uv run morse.py "HELLO WORLD"  # transmit Morse code on speaker + LED in sync

Toggles the status LED on and off, then restores its original state on exit.

uv run blink_led.py                        # 10 blinks at 0.5s interval (default)
uv run blink_led.py --count 20 --interval 0.3

morse.py

Encodes a message as Morse code, plays a 700 Hz tone through the talkback speaker, and blinks the status LED in sync.

uv run morse.py "SOS"                      # default: SOS at 0.2s unit
uv run morse.py "BACK HOME" --unit 0.25    # slower speed
uv run morse.py "SOS" --volume 80          # set speaker volume first (0-100)
uv run morse.py "SOS" --lead-in 0.8        # longer silence before morse starts

Standard Morse timing: dot = 1 unit, dash = 3 units, symbol gap = 1 unit, letter gap = 3 units, word gap = 7 units.

Description
No description provided
Readme 101 KiB
Languages
Python 100%