GET JSON from the local sensing-server; None on any failure.
(path)
| 822 | logger.info(f"[rusense] deleted recording via fallback: {rid}") |
| 823 | return jsonify({'success': True, 'deleted': rid}) |
| 824 | except OSError as exc: |
| 825 | return jsonify({'success': False, 'error': str(exc)}), 500 |
| 826 | |
| 827 | excluded = {'content-encoding', 'content-length', 'transfer-encoding', 'connection'} |
| 828 | headers = [(k, v) for k, v in resp.headers.items() if k.lower() not in excluded] |
| 829 | return Response(resp.content, status=resp.status_code, headers=headers) |
| 830 | |
| 831 | |
| 832 | # ── RuSense sensing alerts (camera-free surveillance notifications) ────────── |
| 833 | # A lightweight background poller that watches the sensing-server's live output |
| 834 | # and fires Pushover alerts on meaningful transitions: room occupied/empty, |
| 835 | # motion onset, people-count threshold crossed, and CSI node offline. Running |
| 836 | # server-side means alerts fire even when nobody has the RuSense tab open. |
| 837 | # Edge detection lives here; enable/per-kind/cooldown gating lives in |
no test coverage detected