Commit Graph

2175 Commits

Author SHA1 Message Date
Sergey Krashevich c1ff7464d0 Add unit tests for HKSV 2026-03-06 20:48:32 +03:00
Sergey Krashevich c5b7ba7162 feat(hksv): add example CLI application for RTSP to HomeKit Secure Video streaming 2026-03-06 20:39:47 +03:00
Sergey Krashevich c567831c91 feat: add motion detection feature with EMA-based P-frame size analysis
- Implemented MotionDetector for detecting motion based on H.264 P-frame sizes.
- Introduced adjustable sensitivity threshold for motion detection.
- Added tests for various scenarios including motion detection, hold time, cooldown, and baseline adaptation.
- Created hksvSession to manage HDS DataStream connections for HKSV recording.
- Updated schema.json to include a new speaker option for 2-way audio support.
2026-03-06 19:58:15 +03:00
Sergey Krashevich 593dce6eb9 feat(homekit): add Speaker service and enhance Consumer with backtrack audio handling 2026-03-06 09:07:26 +03:00
Sergey Krashevich 78ef8fc064 perf(homekit): optimize motion detector with frame-based timing
Replace time.Now() calls in hot path with frame-based timing:
- Pre-compute triggerLevel (integer comparison instead of float division)
- Calibrate hold/cooldown budgets from FPS (default 30fps)
- Periodic FPS recalibration every 150 frames for accuracy
- Active motion path: 47ns → 3.6ns (13x faster)

Update schema.json with detect mode and motion_threshold.
Add threshold tuning guide to README.
2026-03-05 08:50:27 +03:00
Sergey Krashevich a591186da6 test(homekit): add tests and benchmarks for HDS protocol and HKSV consumer
HDS protocol tests (15 tests, 4 benchmarks):
- Message structure for SendMediaInit and SendMediaFragment
- Multi-chunk splitting for fragments > 256KB
- Chunk boundary handling and sequence preservation
- WriteEvent/WriteResponse/WriteRequest round-trip
- opack helper functions

HKSV consumer tests (14 tests, 3 benchmarks):
- Consumer creation and field initialization
- GOP buffer flush with sequence numbering
- Activate with init segment and seqNum=2
- Activate timeout and error handling
- Stop safety (double-stop, deactivation)
- WriteTo blocking until Stop

Also fixes broken hds_test.go (undefined Client → NewConn).
2026-03-05 06:43:11 +03:00
Sergey Krashevich 1856b7ace4 fix(homekit): fix HKSV recording by correcting HDS protocol and adding GOP buffering
The HKSV recording was failing because:
1. The dataSend.data message structure was wrong - `packets` was a flat integer
   instead of an array of objects with `data` and `metadata` fields matching
   the HAP-NodeJS specification
2. Each video/audio frame was sent as a separate mediaFragment, but Home Hub
   expects GOP-based fragments (~2-4 seconds of accumulated data)
3. Large fragments were not chunked (max 256 KiB per chunk)

Changes:
- Fix HDS dataSend.data message structure to use proper packets array with
  nested data/metadata (dataType, dataSequenceNumber, dataChunkSequenceNumber,
  isLastDataChunk, dataTotalSize)
- Add 256 KiB chunking for large media fragments
- Buffer moof+mdat pairs in hksvConsumer and flush on keyframe boundaries
  (GOP-based fragmentation)
- Pre-start consumer at pair-verify for instant init segment delivery
- Add write-response support to HAP PUT handler for ch131 DataStream setup
- Fix HAP service linking to match HAP-NodeJS reference
- Add default SelectedCameraRecordingConfiguration (ch209) value
- Start continuous motion generator at pair-verify with dedup protection
2026-03-05 06:26:06 +03:00
Sergey Krashevich 35fd1383c8 fix(homekit): adjust motion detection threshold and improve hold time checks 2026-03-05 03:09:02 +03:00
Sergey Krashevich 15b0cc4c0c feat(homekit): implement motion detection with configurable threshold and add motion detector functionality 2026-03-04 15:08:06 +03:00
Sergey Krashevich 81dd9e37d8 chore: update .gitignore to include .claude* and .ruff* files 2026-03-04 14:20:33 +03:00
Sergey Krashevich ab27a042c1 feat(homekit): add HKSV support with motion detection and doorbell functionality
- Introduced HKSV configuration options in homekit.go, allowing for motion detection and doorbell features.
- Implemented API endpoints for triggering motion detection and doorbell events.
- Enhanced server.go to handle HKSV sessions and manage motion detection states.
- Created new accessory types for HKSV and doorbell in accessory.go.
- Added support for audio recording configurations in ch207.go.
- Defined new services for motion detection and doorbell in services_hksv.go.
- Implemented opack encoding/decoding for HDS protocol in opack.go and protocol.go.
- Updated OpenAPI documentation to reflect new endpoints and features.
- Extended schema.json to include HKSV configuration options.
2026-03-04 13:53:17 +03:00
Alex X 01c7451556 Restore fix audio sample rate for some xiaomi cameras #2006 2026-02-13 10:59:38 +03:00
Alex X f68c602a7d Add sitemap to website 2026-02-08 14:00:55 +03:00
Alex X 7f36033bff Merge pull request #2080 from skrashevich/260208-fix-grammar
Fix documentation grammar
2026-02-08 13:04:29 +03:00
Sergey Krashevich 6304987a26 Review uncommitted changes 2026-02-08 08:50:18 +03:00
Alex X 2735bafd86 Rename mpegts module to mpeg 2026-02-08 07:10:30 +03:00
Alex X 44f6f111c4 Move kasa source to separate module 2026-02-08 07:01:14 +03:00
Alex X e5bb03349b Add support pet feeder to xiaomi source #2078 2026-02-07 16:14:10 +03:00
Alex X e90f159c68 Add meta info to website 2026-02-07 13:19:11 +03:00
Alex X be4b6c3271 Update docs 2026-02-07 09:12:31 +03:00
Alex X f3ad4ad977 Fix links in docs 2026-02-07 00:08:47 +03:00
Alex X 7083afe9b2 Merge pull request #2044 from skrashevich/documentation-site
(website): new documentation site
2026-02-06 21:49:35 +03:00
Alex X d01b99d105 BIG docs refactoring 2026-02-06 21:45:55 +03:00
Alex X d1d7846aed Merge pull request #2064 from jmelancondev/webrtc/ice-server-urls-list
webrtc: Fix ice_servers parsing for a list of URLs
2026-02-03 13:42:13 +03:00
Alex X 8d58cc7f97 Merge pull request #2065 from skrashevich/260201-small-fixes
Fix error handling in stream creation and patching tests
2026-02-03 13:15:16 +03:00
Sergey Krashevich f1d61bf15a fix: handle errors in stream creation and patching in tests 2026-02-01 04:18:04 +03:00
José Mélançon d2c4e44844 webrtc: Fix ice_servers parsing for a list of URLs 2026-01-31 14:25:13 -05:00
Sergey Krashevich 5bf5327a45 Merge branch 'AlexxIT:master' into documentation-site 2026-01-29 00:38:10 +03:00
Sergey Krashevich 4bf0aef124 Merge branch 'documentation-site' of https://github.com/skrashevich/go2rtc into documentation-site 2026-01-26 17:06:11 +03:00
Sergey Krashevich 8e01d5cfa9 🔧 chore(gh-pages): change default branch for deployment 2026-01-26 17:05:55 +03:00
Alex X 6085c8aabe Merge pull request #2058 from skrashevich/260126-fix-spelling
📝 docs(README): update documentation for clarity and accuracy
2026-01-26 11:23:35 +03:00
Sergey Krashevich 8d4869fd08 Merge branch 'AlexxIT:master' into documentation-site 2026-01-26 04:22:35 +03:00
Sergey Krashevich 5970dd2fe4 📝 docs(README): update documentation for clarity and accuracy 2026-01-26 00:40:48 +03:00
Alex X a41185c22a Merge pull request #2054 from jeis4wpi/master
Propose fix a couple of typos
2026-01-25 21:41:31 +03:00
Alex X c793855800 Merge pull request #2056 from martinbjeldbak/patch-1
docs: fix link to updated JSONSchema
2026-01-25 14:46:33 +03:00
Martin Bjeldbak Madsen a556bca7bd docs: fix link to updated JSONSchema 2026-01-25 19:57:58 +11:00
John E 051aa664cd Propose fix a couple of typos
Signed-off-by: John E <jeis4wpi@outlook.com>
2026-01-23 17:17:53 -05:00
Alex X 6374366da5 Add support xiaomi isa.camera.df3 on old firmwares 2026-01-21 22:26:16 +03:00
Alex X de157eb144 Strip Userinfo from log entries and errors #2051 2026-01-21 17:15:36 +03:00
Sergey Krashevich 72ec880300 Merge branch 'AlexxIT:master' into documentation-site 2026-01-21 15:56:17 +03:00
Alex X 6eeba1ae4c Merge pull request #1720 from felipecrs/update-readme
Update README
2026-01-21 07:23:37 +03:00
Alex X 8f68f80bff Add support xiaomi chuangmi.camera.ipc019e 2026-01-20 20:51:40 +03:00
Alex X 2f9d138692 Fix zero channel for xiaomi source #2047 2026-01-20 17:05:14 +03:00
Alex X 366cbd200d Fix unknown msg 0xF0 for cs2 proto 2026-01-20 14:24:27 +03:00
Alex X 6f75b2f75e Add trace log for xiaomi devices list 2026-01-20 14:19:51 +03:00
Alex X 75bd1f1b2b Improve packet loss on old TUTK proto 2026-01-20 14:19:18 +03:00
Alex X 7793a55853 Add support xiaomi lumi.camera.gwagl01 2026-01-20 14:18:03 +03:00
Alex X 06cbbe5543 Add support xiaomi isa.camera.isc5c1 2026-01-19 21:55:07 +03:00
Felipe Santos 861bc9728b Fix some other markdownlint violations 2026-01-19 14:24:59 -03:00
Felipe Santos ae0646ea9e Remove outdated section about Tuya cameras 2026-01-19 14:16:12 -03:00