Add support for 'complex_alarm_system' service

This commit is contained in:
Adrian Jagielak 2025-07-27 00:14:09 +02:00
parent ac435719a5
commit cfe51c6e71
No known key found for this signature in database
GPG Key ID: 0818CF7AF6C62BFB
5 changed files with 58 additions and 8 deletions

File diff suppressed because one or more lines are too long

View File

@ -10,6 +10,7 @@
- Added support for 'user_code' service (keypads). - Added support for 'user_code' service (keypads).
- Added support for 'schedule_entry' service (for scheduling access). - Added support for 'schedule_entry' service (for scheduling access).
- Added support for 'doorman' service (Yale door locks). - Added support for 'doorman' service (Yale door locks).
- Added support for 'complex_alarm_system' service (part of alarm sirens control).
## 0.1.5 (25.07.2025) ## 0.1.5 (25.07.2025)

File diff suppressed because one or more lines are too long

View File

@ -13,6 +13,7 @@ import { basic__components } from '../services/basic';
import { battery__components } from '../services/battery'; import { battery__components } from '../services/battery';
import { chargepoint__components } from '../services/chargepoint'; import { chargepoint__components } from '../services/chargepoint';
import { color_ctrl__components } from '../services/color_ctrl'; import { color_ctrl__components } from '../services/color_ctrl';
import { complex_alarm_system__components } from '../services/complex_alarm_system';
import { door_lock__components } from '../services/door_lock'; import { door_lock__components } from '../services/door_lock';
import { doorman__components } from '../services/doorman'; import { doorman__components } from '../services/doorman';
import { fan_ctrl__components } from '../services/fan_ctrl'; import { fan_ctrl__components } from '../services/fan_ctrl';
@ -153,6 +154,7 @@ const serviceHandlers: {
battery: battery__components, battery: battery__components,
chargepoint: chargepoint__components, chargepoint: chargepoint__components,
color_ctrl: color_ctrl__components, color_ctrl: color_ctrl__components,
complex_alarm_system: complex_alarm_system__components,
door_lock: door_lock__components, door_lock: door_lock__components,
doorman: doorman__components, doorman: doorman__components,
fan_ctrl: fan_ctrl__components, fan_ctrl: fan_ctrl__components,

View File

@ -0,0 +1,51 @@
import { sendFimpMsg } from '../fimp/fimp';
import {
VinculumPd7Device,
VinculumPd7Service,
} from '../fimp/vinculum_pd7_device';
import { HaMqttComponent } from '../ha/mqtt_components/_component';
import {
CommandHandlers,
ServiceComponentsCreationResult,
} from '../ha/publish_device';
export function complex_alarm_system__components(
topicPrefix: string,
device: VinculumPd7Device,
svc: VinculumPd7Service,
svcName: string,
): ServiceComponentsCreationResult | undefined {
const components: Record<string, HaMqttComponent> = {};
const commandHandlers: CommandHandlers = {};
if (svc.intf?.includes('cmd.alarm.silence')) {
const silenceCommandTopic = `${topicPrefix}${svc.addr}/silence/command`;
components[`${svc.addr}_silence`] = {
unique_id: `${svc.addr}_silence`,
platform: 'button',
name: 'Silence sirens without deactivating raised alarms',
entity_category: 'config',
icon: 'mdi:alarm-light-off',
command_topic: silenceCommandTopic,
};
commandHandlers[silenceCommandTopic] = async (_payload: string) => {
await sendFimpMsg({
address: svc.addr,
service: svcName,
cmd: 'cmd.alarm.silences',
val_t: 'null',
val: null,
});
};
}
// Nothing useful to expose?
if (!Object.keys(components).length) return undefined;
return {
components,
commandHandlers,
};
}