iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
82 lines (76 loc) • 2.46 kB
JavaScript
const utils = require('./../entities/utils');
const adapterData = require('./../dataSingleton');
exports.processLock = function (id, control, name, room, func, _obj, objects, forcedEntityId) {
const entity = utils.processCommon(name, room, func, _obj, 'lock', forcedEntityId);
let state = control.states.find(s => s.id && s.name === 'SET');
entity.context.STATE = { setId: null, getId: null };
if (state && state.id) {
entity.context.STATE.setId = state.id;
entity.context.STATE.getId = state.id; //fallback if no getId.
utils.addID2entity(state.id, entity);
}
state = control.states.find(s => s.id && s.name === 'ACTUAL');
if (state && state.id) {
entity.context.STATE.getId = state.id;
utils.addID2entity(state.id, entity);
}
state = control.states.find(s => s.id && s.name === 'OPEN');
if (state && state.id) {
entity.attributes.supported_features = 1;
entity.context.COMMANDS = [
{
service: 'open',
setId: state.id,
parseCommand: (entity, command, data, user) => {
return new Promise((resolve, reject) => {
adapterData.adapter.setForeignState(command.setId, true, false, { user }, err =>
err ? reject(err) : resolve(),
);
});
},
},
];
}
return [entity];
};
function augmentServices(services) {
services.lock = {
open: {
name: 'Open',
description: 'Open the lock.',
fields: {},
target: {
entity: [
{
domain: ['lock'],
},
],
},
},
lock: {
name: 'Lock',
description: 'Lock the lock.',
fields: {},
target: {
entity: [
{
domain: ['lock'],
},
],
},
},
unlock: {
name: 'Unlock',
description: 'Unlock the lock.',
fields: {},
target: {
entity: [
{
domain: ['lock'],
},
],
},
},
};
}
augmentServices(adapterData.services);