node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
55 lines (54 loc) • 2.79 kB
JavaScript
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _DeviceIntegration_instances, _DeviceIntegration_getTriggerData, _DeviceIntegration_getCapabilitiesValue;
Object.defineProperty(exports, "__esModule", { value: true });
const ConfigError_1 = __importDefault(require("../../common/errors/ConfigError"));
const BidrectionalIntegration_1 = __importDefault(require("../../common/integration/BidrectionalIntegration"));
const Integration_1 = require("../../common/integration/Integration");
const const_1 = require("../../const");
class DeviceIntegration extends BidrectionalIntegration_1.default {
constructor() {
super(...arguments);
_DeviceIntegration_instances.add(this);
}
getDiscoveryPayload() {
return {
type: Integration_1.MessageType.DeviceTrigger,
node_id: this.node.id,
device_trigger: __classPrivateFieldGet(this, _DeviceIntegration_instances, "m", _DeviceIntegration_getTriggerData).call(this),
};
}
}
_DeviceIntegration_instances = new WeakSet(), _DeviceIntegration_getTriggerData = function _DeviceIntegration_getTriggerData() {
var _a;
if (!this.node.config.event) {
throw new ConfigError_1.default('ha-device.error.invalid_device_config');
}
const trigger = { ...this.node.config.event };
if ((_a = this.node.config.capabilities) === null || _a === void 0 ? void 0 : _a.length) {
this.node.config.capabilities.forEach((cap) => {
trigger[cap.name] = __classPrivateFieldGet(this, _DeviceIntegration_instances, "m", _DeviceIntegration_getCapabilitiesValue).call(this, cap);
});
}
return trigger;
}, _DeviceIntegration_getCapabilitiesValue = function _DeviceIntegration_getCapabilitiesValue(cap) {
switch (cap.type) {
case const_1.DeviceCapabilityType.PositiveTimePeriod: {
const unit = cap.unit || const_1.TimeUnit.Seconds;
return { [unit]: cap.value };
}
case const_1.DeviceCapabilityType.Float:
return Number(cap.value);
case const_1.DeviceCapabilityType.String:
default:
return cap.value;
}
};
exports.default = DeviceIntegration;
;