node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
2 lines (1 loc) • 2.5 kB
JavaScript
;var c=Object.create;var s=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var I=(o,t)=>{for(var e in t)s(o,e,{get:t[e],enumerable:!0})},d=(o,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of C(t))!y.call(o,r)&&r!==e&&s(o,r,{get:()=>t[r],enumerable:!(n=N(t,r))||n.enumerable});return o};var a=(o,t,e)=>(e=o!=null?c(b(o)):{},d(t||!o||!o.__esModule?s(e,"default",{value:o,enumerable:!0}):e,o)),w=o=>d(s({},"__esModule",{value:!0}),o);var P={};I(P,{default:()=>g});module.exports=w(P);var l=a(require("../../common/controllers/InputOutputController")),u=a(require("../../common/errors/InputError")),h=a(require("../../common/errors/NoConnectionError")),f=require("../../common/integration/Integration"),p=require("../../const");class g extends l.default{#t;constructor(t){super(t),this.#t=this.integration?.getEntityConfigNode()}async#e({done:t,message:e,send:n}){const r=this.#t?.state?.getLastPayload()?.state;this.status.setSuccess(r),await this.setCustomOutputs(this.node.config.outputProperties,e,{config:this.node.config,value:r}),n(e),t()}async#o({done:t,message:e,parsedMessage:n,send:r}){if(!this.integration?.isConnected)throw new h.default;if(!this.integration?.isIntegrationLoaded)throw new u.default("home-assistant.error.integration_not_loaded","home-assistant.status.error");let i=await this.typedInputService.getValue(n.value.value,n.valueType.value,{message:e});if(typeof i!="number")throw new u.default("ha-number.error.value_not_number","home-assistant.status.error");i=this.#n(i);const m=this.#t?.state?.getLastPayload()?.state;await this.integration?.updateValue(i),this.#t?.emit(f.IntegrationEvent.ValueChange,i,m),await this.setCustomOutputs(this.node.config.outputProperties,e,{config:this.node.config,value:i,previousValue:m}),this.status.setSuccess(i.toString()),r(e),t()}async onInput({done:t,message:e,parsedMessage:n,send:r}){if(this.node.config.mode===p.ValueIntegrationMode.Get)this.#e({done:t,message:e,parsedMessage:n,send:r});else if(this.node.config.mode===p.ValueIntegrationMode.Set)await this.#o({done:t,message:e,parsedMessage:n,send:r});else throw new u.default("ha-text.error.mode_not_supported","home-assistant.status.error")}#n(t){const e=Number(this.integration?.getEntityHomeAssistantConfigValue("min_value")),n=Number(this.integration?.getEntityHomeAssistantConfigValue("max_value"));return e&&t<e&&(t=e),n&&t>n&&(t=n),t}}