node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
2 lines (1 loc) • 1.7 kB
JavaScript
"use strict";var r=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var g=(s,t)=>{for(var e in t)r(s,e,{get:t[e],enumerable:!0})},v=(s,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of m(t))!H.call(s,o)&&o!==e&&r(s,o,{get:()=>t[o],enumerable:!(n=d(t,o))||n.enumerable});return s};var f=s=>v(r({},"__esModule",{value:!0}),s);var E={};g(E,{default:()=>c});module.exports=f(E);var h=require("../../const"),l=require("../../helpers/utils"),C=require("../../homeAssistant"),i=require("../../homeAssistant/Websocket");const a="homeassistant";class c{#n;#e;constructor(t,e){this.#n=e,this.#e=t;const n=this.#e.context().global.get(a);n?.[this.#s]||(n||this.#e.context().global.set(a,{}),this.#i()),this.#o()}get#s(){return(0,l.toCamelCase)(this.#e.config.name)}#i(){this.#e.context().global.set(`${a}.${this.#s}`,{states:{},services:{},isConnected:!1,isRunning:!1})}#o(){this.#n.addListeners(this,[[i.ClientEvent.Close,this.#c],[i.ClientEvent.Open,this.#a],[i.ClientEvent.Connecting,this.#C],[i.ClientEvent.Error,this.#m],[i.ClientEvent.Running,this.#d],[i.ClientEvent.StatesLoaded,this.#h],[h.HA_EVENT_SERVICES_UPDATED,this.#l],[`ha_events:${C.HaEvent.StateChanged}`,this.#r]])}#t(t,e){const n=`${a}.${this.#s}.${t}`;this.#e.context().global.set(n,e)}#a(){this.#t("isConnected",!0)}#r(t){const e=t.event;this.#t(`states["${e.entity_id}"]`,e.new_state)}#h(t){this.#t("states",t)}#l(t){this.#t("services",t)}#C(){this.#t("isConnected",!1),this.#t("isRunning",!1)}#c(){this.#t("isConnected",!1),this.#t("isRunning",!1)}#d(){this.#t("isRunning",!0)}#m(){this.#t("isConnected",!1),this.#t("isRunning",!1)}}