@olegivaniv/n8n-nodes-overkiz-tahoma
Version:
This is an n8n community node. It lets you use Overkiz (Tahoma) in your n8n workflows.
97 lines • 3.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getObjectCurrentState = exports.getObjectAvailableCommands = exports.getObjectAvailableStates = exports.getSingleObject = exports.getUsedUIClasses = exports.getAllObjects = exports.getOverkizApi = exports.supportedDeviceTypes = void 0;
const n8n_workflow_1 = require("n8n-workflow");
const overkiz_api_1 = require("overkiz-api");
const light_1 = require("./controllers/light");
const blinds_1 = require("./controllers/blinds");
const apiInstances = {};
const supportedDeviceCommands = {
...blinds_1.blindsCommands,
...light_1.lightsCommands,
};
exports.supportedDeviceTypes = Object.keys(supportedDeviceCommands);
function simplifyObject(object) {
const simplifiedObject = {
name: object.name,
enabled: object.enabled,
available: object.available,
type: object.type,
URL: object.URL,
widget: object.widget,
states: object.states,
oid: object.oid,
definition: object.definition,
attributes: object.attributes,
exec: async (...commands) => object.exec(...commands),
refresh: async (stateName) => object.refreshState(stateName),
refreshAll: async () => object.refreshStates(),
getStateValue: (stateName) => object.getStateValue(stateName),
};
return simplifiedObject;
}
async function getOverkizApi() {
const credentials = await this.getCredentials('overkizApi');
if (credentials === undefined) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No credentials got returned!');
}
const hostname = credentials.hostname;
const email = credentials.email;
const password = credentials.password;
const instantiatedApi = apiInstances[email];
if (instantiatedApi) {
return instantiatedApi;
}
const api = new overkiz_api_1.API({
host: hostname,
polling: {
always: false,
interval: -1,
},
platformLoginHandler: new overkiz_api_1.DefaultLoginHandler(email, password),
});
apiInstances[email] = api;
return api;
}
exports.getOverkizApi = getOverkizApi;
async function getAllObjects() {
const api = await getOverkizApi.call(this);
const objects = await api.getObjects();
return objects.map((object) => simplifyObject(object));
}
exports.getAllObjects = getAllObjects;
async function getUsedUIClasses() {
const objects = await getAllObjects.call(this);
const types = objects.map((object) => {
const uiClass = object.definition.uiClass;
return uiClass;
});
return [...new Set(types)];
}
exports.getUsedUIClasses = getUsedUIClasses;
async function getSingleObject(objectURL) {
const objects = await getAllObjects.call(this);
const foundObject = objects.find((object) => object.URL === objectURL);
return foundObject;
}
exports.getSingleObject = getSingleObject;
async function getObjectAvailableStates(objectURL) {
const object = await getSingleObject.call(this, objectURL);
if (!object)
return [];
return object.definition.states;
}
exports.getObjectAvailableStates = getObjectAvailableStates;
async function getObjectAvailableCommands(objectUiClass) {
var _a, _b;
return (_b = (_a = supportedDeviceCommands[objectUiClass]) === null || _a === void 0 ? void 0 : _a.commands) !== null && _b !== void 0 ? _b : [];
}
exports.getObjectAvailableCommands = getObjectAvailableCommands;
async function getObjectCurrentState(objectURL) {
const object = await getSingleObject.call(this, objectURL);
if (!object)
return [];
return object.states;
}
exports.getObjectCurrentState = getObjectCurrentState;
//# sourceMappingURL=GenericFunctions.js.map