hoffmation-base 2.8.3 → 2.8.5

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.
@@ -0,0 +1,14 @@
1
+ /// <reference types="iobroker" />
2
+ import { iMotionSensor } from './iMotionSensor';
3
+ import { CameraSettings } from '../../../models';
4
+ export interface iCameraDevice extends iMotionSensor {
5
+ settings: CameraSettings;
6
+ readonly lastImage: string;
7
+ readonly mpegStreamLink: string;
8
+ readonly h264IosStreamLink: string;
9
+ readonly currentImageLink: string;
10
+ readonly alarmBlockedByGriff: boolean;
11
+ readonly alarmBlockedByGriffTimeStamp: number;
12
+ onGriffUpdate(open: boolean): void;
13
+ update(stateName: string, state: ioBroker.State): void;
14
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -3,6 +3,7 @@ export * from './iActuator';
3
3
  export * from './iBaseDevice';
4
4
  export * from './iBatteryDevice';
5
5
  export * from './iButtonSwitch';
6
+ export * from './iCameraDevice';
6
7
  export * from './iEnergyManager';
7
8
  export * from './iExcessEnergyConsumer';
8
9
  export * from './iHandleSensor';
@@ -19,6 +19,7 @@ __exportStar(require("./iActuator"), exports);
19
19
  __exportStar(require("./iBaseDevice"), exports);
20
20
  __exportStar(require("./iBatteryDevice"), exports);
21
21
  __exportStar(require("./iButtonSwitch"), exports);
22
+ __exportStar(require("./iCameraDevice"), exports);
22
23
  __exportStar(require("./iEnergyManager"), exports);
23
24
  __exportStar(require("./iExcessEnergyConsumer"), exports);
24
25
  __exportStar(require("./iHandleSensor"), exports);
@@ -1,7 +1,7 @@
1
1
  /// <reference types="iobroker" />
2
- import { CameraDevice } from './cameraDevice';
2
+ import { iCameraDevice } from '../baseDeviceInterfaces';
3
3
  export declare class BlueIrisCoordinator {
4
4
  private static cameraDeviceMap;
5
- static addDevice(device: CameraDevice, devName: string): void;
5
+ static addDevice(device: iCameraDevice, devName: string): void;
6
6
  static update(idSplit: string[], state: ioBroker.State): void;
7
7
  }
@@ -1,11 +1,11 @@
1
1
  /// <reference types="iobroker" />
2
- import { iMotionSensor, iRoomDevice } from '../baseDeviceInterfaces';
2
+ import { iCameraDevice, iRoomDevice } from '../baseDeviceInterfaces';
3
3
  import { CameraSettings, LogLevel, RoomBase } from '../../../models';
4
4
  import { LogDebugType } from '../../services';
5
5
  import { DeviceInfo } from '../DeviceInfo';
6
6
  import { DeviceCapability } from '../DeviceCapability';
7
7
  import { DeviceType } from '../deviceType';
8
- export declare class CameraDevice implements iRoomDevice, iMotionSensor {
8
+ export declare class CameraDevice implements iCameraDevice {
9
9
  readonly blueIrisName: string;
10
10
  get lastImage(): string;
11
11
  settings: CameraSettings;
@@ -17,9 +17,13 @@ export declare class CameraDevice implements iRoomDevice, iMotionSensor {
17
17
  private _movementDetectedCallback;
18
18
  private _lastImage;
19
19
  private _personDetected;
20
+ private _alarmGriffBlockCount;
21
+ private _alarmBlockedByGriffTimeStamp;
20
22
  readonly mpegStreamLink: string;
21
23
  readonly h264IosStreamLink: string;
22
24
  readonly currentImageLink: string;
25
+ get alarmBlockedByGriffTimeStamp(): number;
26
+ get alarmBlockedByGriff(): boolean;
23
27
  constructor(mqttName: string, roomName: string, blueIrisName: string);
24
28
  private _detectionsToday;
25
29
  get detectionsToday(): number;
@@ -42,6 +46,7 @@ export declare class CameraDevice implements iRoomDevice, iMotionSensor {
42
46
  * @param pCallback Function that accepts the new state as parameter
43
47
  */
44
48
  addMovementCallback(pCallback: (newState: boolean) => void): void;
49
+ onGriffUpdate(open: boolean): void;
45
50
  persistMotionSensor(): void;
46
51
  update(stateName: string, state: ioBroker.State): void;
47
52
  updateMovement(newState: boolean): void;
@@ -16,6 +16,12 @@ class CameraDevice {
16
16
  get lastImage() {
17
17
  return this._lastImage;
18
18
  }
19
+ get alarmBlockedByGriffTimeStamp() {
20
+ return this._alarmBlockedByGriffTimeStamp;
21
+ }
22
+ get alarmBlockedByGriff() {
23
+ return this._alarmGriffBlockCount > 0;
24
+ }
19
25
  constructor(mqttName, roomName, blueIrisName) {
20
26
  var _a;
21
27
  this.settings = new models_1.CameraSettings();
@@ -26,6 +32,8 @@ class CameraDevice {
26
32
  this._movementDetectedCallback = [];
27
33
  this._lastImage = '';
28
34
  this._personDetected = false;
35
+ this._alarmGriffBlockCount = 0;
36
+ this._alarmBlockedByGriffTimeStamp = 0;
29
37
  this.mpegStreamLink = '';
30
38
  this.h264IosStreamLink = '';
31
39
  this.currentImageLink = '';
@@ -102,6 +110,13 @@ class CameraDevice {
102
110
  addMovementCallback(pCallback) {
103
111
  this._movementDetectedCallback.push(pCallback);
104
112
  }
113
+ onGriffUpdate(open) {
114
+ this._alarmGriffBlockCount += open ? 1 : -1;
115
+ if (this._alarmGriffBlockCount == 1) {
116
+ this._alarmBlockedByGriffTimeStamp = new Date().getTime();
117
+ }
118
+ this.log(models_1.LogLevel.Debug, `Handle change to open (${open}), new open amount: ${this._alarmGriffBlockCount}`);
119
+ }
105
120
  persistMotionSensor() {
106
121
  var _a;
107
122
  (_a = services_1.Utils.dbo) === null || _a === void 0 ? void 0 : _a.persistMotionSensor(this);
@@ -129,7 +144,7 @@ class CameraDevice {
129
144
  this._lastImage = state.val;
130
145
  services_1.Utils.guardedTimeout(() => {
131
146
  // Give Person Detected Update some time, as otherwise personDetected might still be false
132
- if (this.settings.alertPersonOnTelegram && this._personDetected) {
147
+ if (this.settings.alertPersonOnTelegram && this._personDetected && !this.alarmBlockedByGriff) {
133
148
  services_1.TelegramService.sendImage(`${this.name} detected Person`, new models_1.Base64Image(this._lastImage, 'person_alert'));
134
149
  }
135
150
  }, 1000);