homesec 0.1.0__py3-none-any.whl → 0.1.1__py3-none-any.whl

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.
homesec/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """HomeSec camera pipeline."""
2
2
 
3
- __version__ = "0.1.0"
3
+ __version__ = "0.1.1"
4
4
 
5
5
  # Export commonly used types
6
6
  from homesec.errors import PipelineError
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: homesec
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Pluggable async home security camera pipeline with detection, VLM analysis, and alerts.
5
5
  Project-URL: Homepage, https://github.com/lan17/homesec
6
6
  Project-URL: Source, https://github.com/lan17/homesec
@@ -261,6 +261,7 @@ best-effort, and non-critical stages can fail without losing the alert.
261
261
  - Policy-driven alerts with per-camera overrides
262
262
  - Fan-out notifiers (MQTT for Home Assistant, SendGrid email)
263
263
  - Postgres-backed state + events with graceful degradation
264
+ - Built around small, stable interfaces so new plugins drop in cleanly
264
265
  - Health endpoint plus optional Postgres telemetry logging
265
266
 
266
267
  ## Pipeline at a glance
@@ -377,6 +378,27 @@ storage:
377
378
  - For a quick local run, pair `local_folder` with `local` storage and drop a clip
378
379
  into `recordings/`.
379
380
 
381
+ ## Extensible by design
382
+
383
+ HomeSec is intentionally modular. Each major capability is an interface
384
+ (`ClipSource`, `StorageBackend`, `ObjectFilter`, `VLMAnalyzer`, `AlertPolicy`,
385
+ `Notifier`) defined in `src/homesec/interfaces.py`, and plugins are discovered at
386
+ runtime via entry points. This keeps the core pipeline small while making it
387
+ easy to add new backends without editing core code.
388
+
389
+ What this means in practice:
390
+ - Swap storage or notifications by changing config, not code.
391
+ - Add a new plugin type as a separate package and register it.
392
+ - Keep config validation strict by pairing each plugin with a Pydantic model.
393
+
394
+ Extension points (all pluggable):
395
+ - Sources: RTSP motion detection, FTP uploads, local folders
396
+ - Storage backends: Dropbox, local disk, or your own
397
+ - Filters: object detection (YOLO or custom models)
398
+ - VLM analyzers: OpenAI-compatible APIs or local models
399
+ - Alert policies: per-camera rules and thresholds
400
+ - Notifiers: MQTT, email, or anything else you can send from Python
401
+
380
402
  ## CLI
381
403
 
382
404
  - Run the pipeline:
@@ -399,6 +421,11 @@ storage:
399
421
  HomeSec discovers plugins via entry points in the `homesec.plugins` group. A plugin
400
422
  module just needs to import and register itself.
401
423
 
424
+ Each plugin provides:
425
+ - A unique name (used in config)
426
+ - A Pydantic config model for validation
427
+ - A factory that builds the concrete implementation
428
+
402
429
  ```python
403
430
  # my_package/filters/custom.py
404
431
  from pydantic import BaseModel
@@ -1,4 +1,4 @@
1
- homesec/__init__.py,sha256=V-CRoux1Qo5d8Logyv0k0VDtVyLdExE8vSU1dpMtVBU,452
1
+ homesec/__init__.py,sha256=tO_V5DJgS44qHCIySDUFIK5-Rbgjh3MpUBHa2HhZiB4,452
2
2
  homesec/app.py,sha256=I1N5V22_ERREFXt4lcmKtUkwby6agKcO8gewHHN04iQ,14327
3
3
  homesec/cli.py,sha256=4cOlJvdpz5iPuLtydSWNpWGvH978axk77AE3EvW7CYc,5637
4
4
  homesec/errors.py,sha256=RfdPTP8uMfdO3GQPtgakOIKSSelM2CIhGO7tkgNEPps,2123
@@ -55,8 +55,8 @@ homesec/telemetry/db_log_handler.py,sha256=7qjKB9q6YWuy8ySoNWcPA4ENmDcvq8yYV2ooE
55
55
  homesec/telemetry/postgres_settings.py,sha256=EVD2_oi_KReFJvQmXxW026aurl_YD-KexT7rkbGQPHc,1198
56
56
  homesec/telemetry/db/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
57
57
  homesec/telemetry/db/log_table.py,sha256=wcZLwRht7FMa0z2gf37f_RxdVTNIdDiK4i_N3c_ibwg,473
58
- homesec-0.1.0.dist-info/METADATA,sha256=fQu17bHr7Yw3tVupfPYSAbnJvNDSTzvVEgmMXdrNvjk,20374
59
- homesec-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
60
- homesec-0.1.0.dist-info/entry_points.txt,sha256=8ocCj_fP1qxIuL-DVDAUiaUbEdTMX_kg_BzVrJsbQYg,45
61
- homesec-0.1.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
62
- homesec-0.1.0.dist-info/RECORD,,
58
+ homesec-0.1.1.dist-info/METADATA,sha256=rP26T3y8E6t8d4dm1tqWq1BZrleLMM12YtpF7nUaAUM,21590
59
+ homesec-0.1.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
60
+ homesec-0.1.1.dist-info/entry_points.txt,sha256=8ocCj_fP1qxIuL-DVDAUiaUbEdTMX_kg_BzVrJsbQYg,45
61
+ homesec-0.1.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
62
+ homesec-0.1.1.dist-info/RECORD,,