Person detection via direct MQTT instead of HA entities
- Electron main process subscribes to Frigate's MQTT topics (frigate/<camera>/person and frigate/events) directly via mqtt.js, bypassing the broken HA MQTT integration - Watched cameras: Front_Porch, FPE, Porch_Downstairs, Driveway_door - On person detection, exits photo-frame idle and shows full-screen camera feed for 30 seconds - Removed HA entity-based person detection code (entityToCameraName, personDetectionEntities config dependency) - Deleted unused useFrigateDetection HTTP polling hook (superseded)
This commit is contained in:
@@ -6,12 +6,14 @@ import { ScreenManager } from './services/ScreenManager';
|
||||
import { PresenceDetector } from './services/PresenceDetector';
|
||||
import { FrigateStreamer } from './services/FrigateStreamer';
|
||||
import { PhotoManager } from './services/PhotoManager';
|
||||
import { FrigateDetector } from './services/FrigateDetector';
|
||||
|
||||
let mainWindow: BrowserWindow | null = null;
|
||||
let screenManager: ScreenManager | null = null;
|
||||
let presenceDetector: PresenceDetector | null = null;
|
||||
let frigateStreamer: FrigateStreamer | null = null;
|
||||
let photoManager: PhotoManager | null = null;
|
||||
let frigateDetector: FrigateDetector | null = null;
|
||||
let powerSaveBlockerId: number | null = null;
|
||||
|
||||
// Photos directory: env var PHOTOS_PATH wins, else fall back to ~/Pictures/dashboard
|
||||
@@ -66,6 +68,20 @@ function createWindow(): void {
|
||||
photoManager = new PhotoManager(resolvePhotosDir());
|
||||
console.log(`PhotoManager: watching ${photoManager.getDir()}`);
|
||||
|
||||
// Frigate person detection via MQTT (bypasses HA entities)
|
||||
frigateDetector = new FrigateDetector({
|
||||
mqttUrl: 'mqtt://192.168.1.50:1883',
|
||||
mqttUser: 'mqtt',
|
||||
mqttPassword: '11xpfcryan',
|
||||
topicPrefix: 'frigate',
|
||||
cameras: ['Front_Porch', 'FPE', 'Porch_Downstairs', 'Driveway_door'],
|
||||
});
|
||||
frigateDetector.on('personDetected', (camera: string) => {
|
||||
console.log(`FrigateDetector: person on ${camera}`);
|
||||
mainWindow?.webContents.send('frigate:personDetected', camera);
|
||||
});
|
||||
frigateDetector.start();
|
||||
|
||||
// Handle window close
|
||||
mainWindow.on('closed', () => {
|
||||
mainWindow = null;
|
||||
@@ -225,6 +241,7 @@ app.on('window-all-closed', () => {
|
||||
}
|
||||
presenceDetector?.stop();
|
||||
frigateStreamer?.stop();
|
||||
frigateDetector?.stop();
|
||||
|
||||
if (process.platform !== 'darwin') {
|
||||
app.quit();
|
||||
|
||||
Reference in New Issue
Block a user