32 lines
1.1 KiB
TypeScript
Raw Normal View History

import { sendFimpMsg } from "../fimp/fimp";
import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function out_bin_switch__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult {
if (!svc.address) { return { components: {} }; }
return {
components: {
[svc.address]: {
unique_id: svc.address,
p: 'switch',
command_topic: `${topicPrefix}${svc.address}/command`,
optimistic: false,//todo
value_template: `{{ (value_json['${svc.address}'].binary) | iif('ON', 'OFF') }}`,
},
},
commandHandlers: {
[`${topicPrefix}${svc.address}/command`]: async (payload: string) => {
await sendFimpMsg({
address: svc.address!,
service: 'out_bin_switch',
cmd: 'cmd.binary.set',
val: payload === 'ON',
val_t: 'bool',
});
},
}
};
}