feat: Triggers should fire on startup if entities are in an active state (#2095)

- Closes: #2087
This commit is contained in:
Dermot Duffy
2025-06-08 16:01:26 -07:00
committed by GitHub
parent 2b92f84665
commit 3b4752b257
7 changed files with 166 additions and 5 deletions
+26
View File
@@ -1,5 +1,6 @@
import { orderBy, throttle } from 'lodash-es';
import { CameraEvent } from '../camera-manager/types';
import { isTriggeredState } from '../ha/is-triggered-state';
import { Timer } from '../utils/timer';
import { CardTriggersAPI } from './types';
@@ -34,6 +35,31 @@ export class TriggersManager {
return sorted.length ? sorted[0][0] : null;
}
public handleInitialCameraTriggers = async (): Promise<boolean> => {
const hass = this._api.getHASSManager().getHASS();
let triggered = false;
for (const [cameraID, camera] of this._api
.getCameraManager()
.getStore()
.getCameras()) {
if (
camera
.getConfig()
.triggers.entities.some((entityID) =>
isTriggeredState(hass?.states[entityID]?.state),
)
) {
triggered = true;
await this.handleCameraEvent({
cameraID,
type: 'new',
});
}
}
return triggered;
};
public async handleCameraEvent(ev: CameraEvent): Promise<void> {
const triggersConfig = this._api.getConfigManager().getConfig()?.view.triggers;
const selectedCameraID = this._api.getViewManager().getView()?.camera;