custom-card-helpers
Version:
Set of helpful functions and types for Custom Card creators
42 lines (37 loc) • 1.16 kB
text/typescript
import { HomeAssistant } from "./types";
import { STATES_OFF } from "./const";
import { computeDomain } from "./compute-domain";
export const turnOnOffEntities = (
hass: HomeAssistant,
entityIds: string[],
turnOn = true
): void => {
const domainsToCall = {};
entityIds.forEach((entityId) => {
if (STATES_OFF.includes(hass.states[entityId].state) === turnOn) {
const stateDomain = computeDomain(entityId);
const serviceDomain = ["cover", "lock"].includes(stateDomain)
? stateDomain
: "homeassistant";
if (!(serviceDomain in domainsToCall)) {
domainsToCall[serviceDomain] = [];
}
domainsToCall[serviceDomain].push(entityId);
}
});
Object.keys(domainsToCall).forEach((domain) => {
let service;
switch (domain) {
case "lock":
service = turnOn ? "unlock" : "lock";
break;
case "cover":
service = turnOn ? "open_cover" : "close_cover";
break;
default:
service = turnOn ? "turn_on" : "turn_off";
}
const entities = domainsToCall[domain];
hass.callService(domain, service, { entity_id: entities });
});
};