UNPKG

iobroker.lovelace

Version:

With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI

1 lines 9.93 kB
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[87857],{12575:function(t,e,n){n.a(t,async function(t,i){try{n.d(e,{J:function(){return y},computeStateDisplay:function(){return h},computeStateToParts:function(){return p}});n(74423),n(44114),n(18111),n(61701),n(62953);var s=n(22675),a=n(46927),o=n(72487),r=n(95747),c=n(82591),u=n(30162),l=n(20058),d=n(8549),m=n(71727),f=n(64808),_=t([c,l,o,u,r]);[c,l,o,u,r]=_.then?(await _)():_;const h=(t,e,n,i,s,a,o)=>{const r=null==a?void 0:a[e.entity_id];return y(t,n,i,s,r,e.entity_id,e.attributes,void 0!==o?o:e.state)},y=(t,e,n,i,s,a,o,r)=>v(t,e,n,i,s,a,o,r).map(t=>t.value).join(""),v=(t,e,n,i,_,h,y,v)=>{if(v===s.HV||v===s.Hh)return[{type:"value",value:t(`state.default.${v}`)}];const p=(0,m.m)(h),b="counter"===p||"number"===p||"input_number"===p;if((0,l.ty)(y,"sensor"===p?n:[])||b){if("duration"===y.device_class&&y.unit_of_measurement&&c.Z8.includes(y.unit_of_measurement))try{return[{type:"value",value:(0,c.a3)(e,v,y.unit_of_measurement,null==_?void 0:_.display_precision)}]}catch(g){}if("monetary"===y.device_class){let t=[];try{t=(0,l.QL)(v,e,Object.assign({style:"currency",currency:y.unit_of_measurement,minimumFractionDigits:2},(0,l.ZQ)({state:v,attributes:y},_)))}catch(g){}if(t.length){const e={integer:"value",group:"value",decimal:"value",fraction:"value",minusSign:"value",plusSign:"value",literal:"literal",currency:"unit"},n=[];for(const i of t){const t=e[i.type];if(!t)continue;const s=n[n.length-1];"value"===t&&"value"===(null==s?void 0:s.type)?s.value+=i.value:n.push({type:t,value:i.value})}return n}}const n=(0,l.ZV)(v,e,(0,l.ZQ)({state:v,attributes:y},_)),i=(null==_?void 0:_.translation_key)&&t(`component.${_.platform}.entity.${p}.${_.translation_key}.unit_of_measurement`)||y.unit_of_measurement;return i?[{type:"value",value:n},{type:"literal",value:(0,d.A)(i,e)},{type:"unit",value:i}]:[{type:"value",value:n}]}if(["date","input_datetime","time"].includes(p))try{const t=v.split(" ");if(2===t.length)return[{type:"value",value:(0,r.r6)(new Date(t.join("T")),Object.assign(Object.assign({},e),{},{time_zone:a.Wj.local}),i)}];if(1===t.length){if(v.includes("-"))return[{type:"value",value:(0,o.Yq)(new Date(`${v}T00:00`),Object.assign(Object.assign({},e),{},{time_zone:a.Wj.local}),i)}];if(v.includes(":")){const t=new Date;return[{type:"value",value:(0,u.fU)(new Date(`${t.toISOString().split("T")[0]}T${v}`),Object.assign(Object.assign({},e),{},{time_zone:a.Wj.local}),i)}]}}return[{type:"value",value:v}]}catch(j){return[{type:"value",value:v}]}if(["ai_task","button","conversation","event","image","infrared","input_button","notify","radio_frequency","scene","stt","tag","tts","wake_word","datetime"].includes(p)||"sensor"===p&&f.G6.includes(y.device_class))try{return[{type:"value",value:(0,r.r6)(new Date(v),e,i)}]}catch(g){return[{type:"value",value:v}]}return[{type:"value",value:(null==_?void 0:_.translation_key)&&t(`component.${_.platform}.entity.${p}.${_.translation_key}.state.${v}`)||y.device_class&&t(`component.${p}.entity_component.${y.device_class}.state.${v}`)||t(`component.${p}.entity_component._.state.${v}`)||v}]},p=(t,e,n,i,s,a,o)=>{const r=null==a?void 0:a[e.entity_id];return v(t,n,i,s,r,e.entity_id,e.attributes,void 0!==o?o:e.state)};i()}catch(h){i(h)}})},25064:function(t,e,n){n.a(t,async function(t,i){try{n.d(e,{Fp:function(){return D},IQ:function(){return _},Jo:function(){return m},Lj:function(){return S},Mm:function(){return $},_1:function(){return k},tG:function(){return T}});n(74423),n(44114),n(26910),n(13609),n(18111),n(22489),n(20116),n(7588),n(61701),n(13579),n(3362),n(17642),n(58004),n(33853),n(45876),n(32475),n(15024),n(31698),n(62953);var s=n(71727),a=n(12575),o=n(28978),r=t([a]);a=(r.then?(await r)():r)[0];const c=["climate","humidifier","water_heater"],u=["climate","humidifier","input_datetime","water_heater","person","device_tracker"],l=["temperature","current_temperature","target_temp_low","target_temp_high","hvac_action","humidity","mode","action","current_humidity"],d=(t,e)=>!t.states[e]||u.includes((0,s.m)(e)),m=(t,e,n,i,s)=>h(t,e,()=>({type:"history/stream",entity_ids:s,start_time:n.toISOString(),end_time:i.toISOString(),minimal_response:!0,no_attributes:!s.some(e=>d(t,e))}));class f{processMessage(t){if(!this.combinedHistory||!Object.keys(this.combinedHistory).length)return this.combinedHistory=t.states,this.combinedHistory;if(!Object.keys(t.states).length)return this.combinedHistory;const e=this.hoursToShow?((new Date).getTime()-3600*this.hoursToShow*1e3)/1e3:void 0,n={};for(const i of Object.keys(this.combinedHistory))n[i]=[];for(const i of Object.keys(t.states))n[i]=[];for(const i of Object.keys(n)){if(i in this.combinedHistory&&i in t.states){const e=this.combinedHistory[i],s=e[e.length-1];n[i]=e.concat(t.states[i]),t.states[i][0].lu<s.lu&&(n[i]=n[i].sort((t,e)=>t.lu-e.lu))}else i in this.combinedHistory?n[i]=this.combinedHistory[i]:n[i]=t.states[i];if(e&&i in this.combinedHistory){const t=n[i].filter(t=>t.lu<e);if(!t.length)continue;if(n[i]=n[i].filter(t=>t.lu>=e),n[i].length&&n[i][0].lu===e)continue;const s=t[t.length-1];s.lu=e,delete s.lc,n[i].unshift(s)}}return this.combinedHistory=n,this.combinedHistory}constructor(t,e){this.hass=t,this.hoursToShow=e,this.combinedHistory={}}}const _=(t,e,n,i,s,a=!0,o=!0)=>h(t,e,()=>({type:"history/stream",entity_ids:i,start_time:new Date((new Date).getTime()-3600*n*1e3).toISOString(),minimal_response:a,significant_changes_only:o,no_attributes:null!=s?s:!i.some(e=>d(t,e))}),n),h=async(t,e,n,i)=>{let s,a=!1;const o=async()=>{const o=new f(t,i),r=await t.connection.subscribeMessage(t=>e(o.processMessage(t)),n(),{resubscribe:!1});a?r().catch(()=>{}):s=r},r=()=>{a||(s=void 0,o().catch(()=>{}))};return await o(),t.connection.addEventListener("ready",r),async()=>{a=!0,t.connection.removeEventListener("ready",r),s&&await s()}},y=(t,e)=>t.state===e.state&&(!t.attributes||!e.attributes||l.every(n=>t.attributes[n]===e.attributes[n])),v=(t,e,n,i,s,r,c)=>{const u=[],l=r[0];for(const o of r){if(u.length>0&&o.s===u[u.length-1].state)continue;const r={};null!=c&&c.attributes.device_class&&(r.device_class=null==c?void 0:c.attributes.device_class),u.push({state_localize:(0,a.J)(t,e,[],n,i[s],s,Object.assign(Object.assign({},o.a||l.a),r),o.s),state:o.s,last_changed:1e3*(o.lc?o.lc:o.lu)})}return{name:(0,o._)(s,(null==c?void 0:c.attributes)||l.a),entity_id:s,data:u}},p=(t,e,n,i)=>{const a=[];return Object.keys(n).forEach(t=>{const e=n[t],r=e[0],u=(0,s.m)(t),d=[];for(const n of e){let t;if(c.includes(u)){t={state:n.s,last_changed:1e3*n.lu,attributes:{}};for(const e of l)e in n.a&&(t.attributes[e]=n.a[e])}else t={state:n.s,last_changed:1e3*(n.lc?n.lc:n.lu),attributes:{}};d.length>1&&y(t,d[d.length-1])&&y(t,d[d.length-2])||d.push(t)}const m=t in i?i[t].attributes:"friendly_name"in r.a?r.a:void 0;a.push({domain:u,name:(0,o._)(t,m||{}),entity_id:t,states:d})}),{unit:t,device_class:e,identifier:Object.keys(n).join(""),data:a}},b=["counter","input_number","number"],g=t=>b.includes(t),j=t=>"unit_of_measurement"in t||"state_class"in t,O=(t,e)=>null!=t.attributes.device_class&&e.includes(t.attributes.device_class),w=" ",k=(t,e,n,i,s=!1)=>{const a={};n.forEach(t=>{t in e&&(a[t]=e[t])});const o={};Object.entries(a).forEach(([t,e])=>{const n=e.map(t=>({s:null!=t.mean?t.mean.toString():t.state.toString(),lc:t.end/1e3,a:{},lu:t.end/1e3}));o[t]=n});const r=$(t,o,[],t.localize,i,s,!0);return((null==r?void 0:r.line)||[]).forEach(t=>{t.data.forEach(t=>{t.statistics=t.states,t.states=[]})}),r},S=t=>[{s:t.state,a:t.attributes,lu:new Date(t.last_updated).getTime()/1e3}],$=(t,e,n,i,a,o=!1,r=!1)=>{const c={},u=[],l={};if(new Set([...n,...Object.keys(e)]).forEach(n=>{n in e?l[n]=e[n]:t.states[n]&&(l[n]=S(t.states[n]))}),!l)return{line:[],timeline:[]};Object.keys(l).forEach(e=>{var n;const d=l[e];if(0===d.length)return;const m=(0,s.m)(e),f=e in t.states?t.states[e]:void 0,_=f||g(m)?void 0:d.find(t=>t.a&&j(t.a));let h;h=D(m,f,_,a,r)?(null==f?void 0:f.attributes.unit_of_measurement)||(null==_?void 0:_.a.unit_of_measurement)||w:{zone:i("ui.dialogs.more_info_control.zone.graph_unit"),climate:t.config.unit_system.temperature,humidifier:"%",water_heater:t.config.unit_system.temperature}[m];const y={climate:"temperature",humidifier:"humidity",water_heater:"temperature"}[m]||(null===(n=(null==f?void 0:f.attributes)||(null==_?void 0:_.a))||void 0===n?void 0:n.device_class),p=H(h,y,o);h?p&&p in c&&e in c[p]?c[p][e].push(...d):p&&(p in c||(c[p]={}),c[p][e]=d):u.push(v(i,t.locale,t.config,t.entities,e,d,f))});return{line:Object.keys(c).map(e=>{const n=e.split("_"),i=n[0],s=n.slice(1).join("_")||void 0;return p(i,s,c[e],t.states)}),timeline:u}},H=(t,e,n)=>n?`${t}_${e||""}`:t,D=(t,e,n,i,s=!1)=>s||g(t)||null!=e&&j(e.attributes)||null!=e&&"sensor"===t&&O(e,i)||null!=n,T=(t,e,n=!0)=>{if(!e)return t;const i=Object.assign(Object.assign({},t),{},{line:[]}),s={};for(const c of t.line){const t=H(c.unit,c.device_class,n);t&&(s[t]={historyItem:c})}for(const c of e.line){var a,o;if(c.unit===w)c.unit=null!==(a=null===(o=t.line.find(t=>t.identifier===c.identifier))||void 0===o?void 0:o.unit)&&void 0!==a?a:w;const e=H(c.unit,c.device_class,n);e&&(e in s?s[e].ltsItem=c:s[e]={ltsItem:c})}for(const{historyItem:c,ltsItem:u}of Object.values(s)){if(!c||!u){i.line.push(c||u);continue}const t=Object.assign(Object.assign({},c),{},{data:[]}),e=new Set([...c.data.map(t=>t.entity_id),...u.data.map(t=>t.entity_id)]);for(const n of e){var r;const e=c.data.find(t=>t.entity_id===n),i=u.data.find(t=>t.entity_id===n);if(!e||!i){t.data.push(e||i);continue}const s=(null===(r=e.states[0])||void 0===r?void 0:r.last_changed)||i.statistics[i.statistics.length-1].last_changed+1,a=[];for(const t of i.statistics){if(t.last_changed>=s)break;a.push(t)}t.data.push(0===a.length?e:Object.assign(Object.assign({},e),{},{statistics:a}))}i.line.push(t)}return i};i()}catch(c){i(c)}})}}]);