UNPKG

node-red-contrib-home-assistant-websocket

Version:
2 lines (1 loc) 2.41 kB
"use strict";var u=Object.create;var r=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty;var m=(s,t)=>{for(var e in t)r(s,e,{get:t[e],enumerable:!0})},o=(s,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of f(t))!E.call(s,a)&&a!==e&&r(s,a,{get:()=>t[a],enumerable:!(i=y(t,a))||i.enumerable});return s};var b=(s,t,e)=>(e=s!=null?u(p(s)):{},o(t||!s||!s.__esModule?r(e,"default",{value:s,enumerable:!0}):e,s)),l=s=>o(r({},"__esModule",{value:!0}),s);var C={};m(C,{default:()=>c});module.exports=l(C);var n=require("../../homeAssistant/index"),g=require("./helpers"),d=require("./Integration"),h=b(require("./UnidirectionalEntityIntegration"));class c extends h.default{#t;async register(){if(!this.isIntegrationLoaded||this.isRegistered)return;const t=(0,g.createHaConfig)(this.entityConfigNode.config.haConfig);try{const e=this.getDiscoveryPayload({config:t,state:this.state});this.entityConfigNode.debug(`Registering ${this.entityConfigNode.config.entityType} node with Home Assistant`),this.#t=await this.homeAssistant.websocket.subscribeMessage(this.onHaEventMessage.bind(this),e,{resubscribe:!1})}catch(e){this.status.forEach(a=>a.setFailed("home-assistant.status.error_registering"));const i=e instanceof Error?e.message:e;this.entityConfigNode.error(`Error registering entity. Error Message: ${i}`);return}this.saveHaConfigToContext(t),this.status.forEach(e=>e?.setSuccess("home-assistant.status.registered")),this.registered=!0}async unregister(){await this.#t?.(),this.#t=void 0,await super.unregister()}async updateHomeAssistant(t){if(!this.isIntegrationLoaded)return;const e={type:d.MessageType.Entity,server_id:this.entityConfigNode.config.server,node_id:this.entityConfigNode.id,state:t??this.state.isEnabled()};try{await this.homeAssistant.websocket.send(e)}catch(i){this.entityConfigNode.error(`Error updating entity. Error Message: ${i}`)}}onHaEventMessage(t){switch(t.type??=n.HaEvent.StateChanged,t.type){case n.HaEvent.AutomationTriggered:this.entityConfigNode.emit(n.HaEvent.AutomationTriggered,t.data);break;case n.HaEvent.StateChanged:{const e=this.state.isEnabled();this.state.setEnabled(t.state),this.entityConfigNode.emit(n.HaEvent.StateChanged,{state:t.state,changed:t.state!==e}),this.updateHomeAssistant();break}}}getStateData(t){return t?{state:t.isEnabled()}:{}}}