UNPKG

iobroker.lovelace

Version:

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

2 lines 16.2 kB
"use strict";(self.webpackChunkhome_assistant_frontend=self.webpackChunkhome_assistant_frontend||[]).push([["64409"],{50875:function(e,t,a){a.d(t,{Eu:()=>o,hZ:()=>n,o9:()=>l});var i=a(27486),s=a(11259);const r=["#4269d0","#f4bd4a","#ff725c","#6cc5b0","#a463f2","#ff8ab7","#9c6b4e","#97bbf5","#01ab63","#9498a0","#094bad","#c99000","#d84f3e","#49a28f","#048732","#d96895","#8043ce","#7599d1","#7a4c31","#74787f","#6989f4","#ffd444","#ff957c","#8fe9d3","#62cc71","#ffadda","#c884ff","#badeff","#bf8b6d","#b6bac2","#927acc","#97ee3f","#bf3947","#9f5b00","#f48758","#8caed6","#f2b94f","#eff26e","#e43872","#d9b100","#9d7a00","#698cff","#d9d9d9","#00d27e","#d06800","#009f82","#c49200","#cbe8ff","#fecddf","#c27eb6","#8cd2ce","#c4b8d9","#f883b0","#a49100","#f48800","#27d0df","#a04a9b"];function o(e){return r[e%r.length]}function n(e,t){const a=t.getPropertyValue(`--graph-color-${e+1}`)||o(e);return(0,s.Rq)(a)}const l=(0,i.Z)((e=>r.map(((t,a)=>n(a,e)))),((e,t)=>e[0].getPropertyValue("--graph-color-1")===t[0].getPropertyValue("--graph-color-1")))},81520:function(e,t,a){a.a(e,(async function(e,t){try{var i=a(61701),s=(a(71695),a(92745),a(52805),a(9359),a(56475),a(1331),a(31526),a(70104),a(48136),a(19423),a(92519),a(42179),a(89256),a(24931),a(88463),a(57449),a(19814),a(47021),a(50778)),r=a(57243),o=a(30502),n=a(27486),l=a(18672),d=a(48066),c=a(25179),u=a(65786),h=(a(99426),e([c,l]));[c,l]=h.then?(await h)():h;let f,v,_=e=>e;const p=5,g=12,y=8,b=5;(0,i.Z)([(0,s.Mo)("ha-sankey-chart")],(function(e,t){return{F:class extends t{constructor(...t){super(...t),e(this)}},d:[{kind:"field",decorators:[(0,s.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:!1})],key:"data",value(){return{nodes:[],links:[]}}},{kind:"field",decorators:[(0,s.Cb)({type:Boolean})],key:"vertical",value(){return!1}},{kind:"field",decorators:[(0,s.Cb)({type:String,attribute:!1})],key:"valueFormatter",value:void 0},{kind:"field",key:"chart",value:void 0},{kind:"field",decorators:[(0,s.SB)()],key:"_sizeController",value(){return new l.Z(this,{callback:e=>{var t;return null===(t=e[0])||void 0===t?void 0:t.contentRect}})}},{kind:"method",key:"render",value:function(){var e;const t={grid:{top:0,bottom:0,left:0,right:0},tooltip:{trigger:"item",formatter:this._renderTooltip,appendTo:document.body}};return(0,r.dy)(f||(f=_`<ha-chart-base .data="${0}" .options="${0}" height="100%" .extraComponents="${0}"></ha-chart-base>`),this._createData(this.data,null===(e=this._sizeController.value)||void 0===e?void 0:e.width),t,[o.N])}},{kind:"field",key:"_renderTooltip",value(){return e=>{const t=e.data,a=this.valueFormatter?this.valueFormatter(t.value):t.value;if(t.id){var i;const s=this.data.nodes.find((e=>e.id===t.id));return`${e.marker} ${null!==(i=null==s?void 0:s.label)&&void 0!==i?i:t.id}<br>${a}`}if(t.source&&t.target){var s,r;const e=this.data.nodes.find((e=>e.id===t.source)),i=this.data.nodes.find((e=>e.id===t.target));return`${null!==(s=null==e?void 0:e.label)&&void 0!==s?s:t.source}${null!==(r=null==i?void 0:i.label)&&void 0!==r?r:t.target}<br>${a}`}return null}}},{kind:"field",key:"_createData",value(){return(0,n.Z)(((e,t=0)=>{const a=e.nodes.filter((e=>e.value>0)),i=[...new Set(a.map((e=>e.index)))],s=this._processLinks(a,e.links),r=t/i.length-u.TB-b;return{id:"sankey",type:"sankey",nodes:a.map((e=>({id:e.id,value:e.value,itemStyle:{color:e.color},depth:e.index}))),links:s,draggable:!1,orient:this.vertical?"vertical":"horizontal",nodeWidth:15,nodeGap:y,lineStyle:{color:"gradient",opacity:.4},layoutIterations:0,label:{formatter:t=>{var a,i;return null!==(a=null===(i=e.nodes.find((e=>e.id===t.data.id)))||void 0===i?void 0:i.label)&&void 0!==a?a:t.data.id},position:this.vertical?"bottom":"right",distance:b,minMargin:5,overflow:"break"},labelLayout:e=>{if(this.vertical){const t=e.text.split(" ").reduce(((e,t)=>e.length>t.length?e:t),""),a=(0,d.U)(t,g),i=Math.min(g,e.rect.width/a*g);return{fontSize:i>1?i:0,width:e.rect.width,align:"center"}}const t=Math.ceil(e.labelRect.width/r),a=Math.min(e.rect.height/t*g,g);return{fontSize:a,lineHeight:a,width:r,height:e.rect.height}},top:this.vertical?0:p,bottom:this.vertical?25:p,left:this.vertical?p:0,right:this.vertical?p:r+b,emphasis:{focus:"adjacency"}}}))}},{kind:"method",key:"_processLinks",value:function(e,t){const a=new Map,i=new Map,s=[];return t.forEach((t=>{var r;const o=e.find((e=>e.id===t.source)),n=e.find((e=>e.id===t.target));if(!o||!n)return;const l=i.get(o.id)||0,d=a.get(n.id)||0,c=o.value-l,u=n.value-d,h=Math.min(null!==(r=t.value)&&void 0!==r?r:c,c,u);a.set(n.id,d+h),i.set(o.id,l+h),h>0&&s.push(Object.assign(Object.assign({},t),{},{value:h}))})),s}},{kind:"field",static:!0,key:"styles",value(){return(0,r.iv)(v||(v=_`:host{display:block;flex:1;background:var(--ha-card-background,var(--card-background-color))}ha-chart-base{width:100%;height:100%}`))}}]}}),r.oi);t()}catch(f){t(f)}}))},65786:function(e,t,a){a.d(t,{N_:()=>i,Qs:()=>r,TB:()=>s});const i=10,s=30,r=20},17705:function(e,t,a){a.d(t,{Cj:()=>h,F7:()=>s,Hs:()=>S,Kd:()=>k,Kj:()=>v,Nw:()=>p,PA:()=>r,Py:()=>l,Qm:()=>w,Z0:()=>b,_Y:()=>c,_m:()=>o,dL:()=>d,dO:()=>x,hN:()=>f,h_:()=>u,j2:()=>m,q6:()=>_,uR:()=>n});a(19083),a(71695),a(9359),a(52924),a(61006),a(47021);var i=a(47194);let s=function(e){return e[e.NONE=0]="NONE",e[e.ARITHMETIC=1]="ARITHMETIC",e[e.CIRCULAR=2]="CIRCULAR",e}({});const r=99387==a.j?["entity_not_recorded","entity_no_longer_recorded","state_class_removed","units_changed","mean_type_changed","no_state"]:null,o=e=>e.sendMessagePromise({type:"recorder/info"}),n=(e,t)=>e.callWS({type:"recorder/list_statistic_ids",statistic_type:t}),l=(e,t)=>e.callWS({type:"recorder/get_statistics_metadata",statistic_ids:t}),d=(e,t,a,i,s="hour",r,o)=>e.callWS({type:"recorder/statistics_during_period",start_time:t.toISOString(),end_time:null==a?void 0:a.toISOString(),statistic_ids:i,period:s,units:r,types:o}),c=(e,t,a,i)=>e.callWS({type:"recorder/statistic_during_period",statistic_id:t,units:i,fixed_period:a.fixed_period?{start_time:a.fixed_period.start instanceof Date?a.fixed_period.start.toISOString():a.fixed_period.start,end_time:a.fixed_period.end instanceof Date?a.fixed_period.end.toISOString():a.fixed_period.end}:void 0,calendar:a.calendar,rolling_window:a.rolling_window}),u=e=>e.callWS({type:"recorder/validate_statistics"}),h=(e,t,a)=>e.callWS({type:"recorder/update_statistics_metadata",statistic_id:t,unit_of_measurement:a}),f=(e,t)=>e.callWS({type:"recorder/clear_statistics",statistic_ids:t}),v=e=>{let t=null;if(!e)return null;for(const a of e)null!==a.change&&void 0!==a.change&&(null===t?t=a.change:t+=a.change);return t},_=(e,t)=>{let a=null;for(const i of t){if(!(i in e))continue;const t=v(e[i]);null!==t&&(null===a?a=t:a+=t)}return a},p=(e,t)=>e.some((e=>void 0!==e[t]&&null!==e[t])),g=["mean","min","max"],y=["sum","state","change"],b=(e,t)=>!(!g.includes(t)||e.mean_type===s.NONE)||!(!y.includes(t)||!e.has_sum),m=(e,t,a,i,s)=>{const r=new Date(a).toISOString();return e.callWS({type:"recorder/adjust_sum_statistics",statistic_id:t,start_time:r,adjustment:i,adjustment_unit_of_measurement:s})},k=(e,t,a)=>{const s=e.states[t];return s?(0,i.C)(s):(null==a?void 0:a.name)||t},x=(e,t,a)=>{let i;var s;t&&(i=null===(s=e.states[t])||void 0===s?void 0:s.attributes.unit_of_measurement);return void 0===i?null==a?void 0:a.statistics_unit_of_measurement:i},S=e=>e.includes(":"),w=e=>e.callWS({type:"recorder/update_statistics_issues"})},6736:function(e,t,a){a.d(t,{f:()=>o});var i=a(61701),s=a(72621),r=(a(19083),a(71695),a(9359),a(52924),a(40251),a(61006),a(47021),a(50778));const o=e=>(0,i.Z)(null,(function(e,t){class a extends t{constructor(...t){super(...t),e(this)}}return{F:a,d:[{kind:"field",decorators:[(0,r.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",key:"hassSubscribeRequiredHostProps",value:void 0},{kind:"field",key:"__unsubs",value:void 0},{kind:"method",key:"connectedCallback",value:function(){(0,s.Z)(a,"connectedCallback",this,3)([]),this._checkSubscribed()}},{kind:"method",key:"disconnectedCallback",value:function(){if((0,s.Z)(a,"disconnectedCallback",this,3)([]),this.__unsubs){for(;this.__unsubs.length;){const e=this.__unsubs.pop();e instanceof Promise?e.then((e=>e())):e()}this.__unsubs=void 0}}},{kind:"method",key:"updated",value:function(e){if((0,s.Z)(a,"updated",this,3)([e]),e.has("hass"))this._checkSubscribed();else if(this.hassSubscribeRequiredHostProps)for(const t of e.keys())if(this.hassSubscribeRequiredHostProps.includes(t))return void this._checkSubscribed()}},{kind:"method",key:"hassSubscribe",value:function(){return[]}},{kind:"method",key:"_checkSubscribed",value:function(){var e;void 0!==this.__unsubs||!this.isConnected||void 0===this.hass||null!==(e=this.hassSubscribeRequiredHostProps)&&void 0!==e&&e.some((e=>void 0===this[e]))||(this.__unsubs=this.hassSubscribe())}}]}}),e)},10782:function(e,t,a){a.a(e,(async function(e,i){try{a.r(t);var s=a(61701),r=(a(19083),a(71695),a(92745),a(52805),a(61893),a(84283),a(9359),a(31526),a(70104),a(48136),a(61006),a(47021),a(57243)),o=a(50778),n=(a(54977),a(37583),a(1118)),l=a(17705),d=a(6736),c=a(81520),u=a(50875),h=a(50602),f=e([c,n,h]);[c,n,h]=f.then?(await f)():f;let v,_,p,g,y,b=e=>e;(0,s.Z)([(0,o.Mo)("hui-energy-sankey-card")],(function(e,t){return{F:class extends t{constructor(...t){super(...t),e(this)}},d:[{kind:"field",decorators:[(0,o.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_config",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_data",value:void 0},{kind:"field",key:"hassSubscribeRequiredHostProps",value(){return["_config"]}},{kind:"method",key:"setConfig",value:function(e){this._config=e}},{kind:"method",key:"hassSubscribe",value:function(){var e;return[(0,n.UB)(this.hass,{key:null===(e=this._config)||void 0===e?void 0:e.collection_key}).subscribe((e=>{this._data=e}))]}},{kind:"method",key:"getCardSize",value:function(){return 5}},{kind:"method",key:"getGridOptions",value:function(){return{columns:12,min_columns:6,rows:6,min_rows:2}}},{kind:"method",key:"shouldUpdate",value:function(e){return e.has("_config")||e.has("_data")}},{kind:"method",key:"render",value:function(){if(!this._config)return r.Ld;if(!this._data)return(0,r.dy)(v||(v=b`${0}`),this.hass.localize("ui.panel.lovelace.cards.energy.loading"));const e=this._data.prefs,t=(0,n.Jj)(e),a=getComputedStyle(this),i=[],s=[],o={id:"home",label:this.hass.localize("ui.panel.lovelace.cards.energy.energy_distribution.home"),value:0,color:a.getPropertyValue("--primary-color"),index:1};if(i.push(o),t.grid){var d;const e=null!==(d=(0,l.q6)(this._data.stats,t.grid[0].flow_from.map((e=>e.stat_energy_from))))&&void 0!==d?d:0;i.push({id:"grid",label:this.hass.localize("ui.panel.lovelace.cards.energy.energy_distribution.grid"),value:e,tooltip:`${(0,h.uf)(e,this.hass.locale)} kWh`,color:a.getPropertyValue("--energy-grid-consumption-color"),index:0}),s.push({source:"grid",target:"home"})}if(t.battery){const e=(0,l.q6)(this._data.stats,t.battery.map((e=>e.stat_energy_from)))||0;i.push({id:"battery",label:this.hass.localize("ui.panel.lovelace.cards.energy.energy_distribution.battery"),value:e,tooltip:`${(0,h.uf)(e,this.hass.locale)} kWh`,color:a.getPropertyValue("--energy-battery-out-color"),index:0}),s.push({source:"battery",target:"home"})}if(t.solar){const e=(0,l.q6)(this._data.stats,t.solar.map((e=>e.stat_energy_from)))||0;i.push({id:"solar",label:this.hass.localize("ui.panel.lovelace.cards.energy.energy_distribution.solar"),value:e,tooltip:`${(0,h.uf)(e,this.hass.locale)} kWh`,color:a.getPropertyValue("--energy-solar-color"),index:0}),s.push({source:"solar",target:"home"})}if(o.value=i.filter((e=>0===e.index)).reduce(((e,t)=>e+(t.value||0)),0),t.battery){const e=(0,l.q6)(this._data.stats,t.battery.map((e=>e.stat_energy_to)))||0;i.push({id:"battery_in",label:this.hass.localize("ui.panel.lovelace.cards.energy.energy_distribution.battery"),value:e,tooltip:`${(0,h.uf)(e,this.hass.locale)} kWh`,color:a.getPropertyValue("--energy-battery-in-color"),index:1}),i.forEach((e=>{0===e.index&&s.push({source:e.id,target:"battery_in"})})),o.value-=e}if(t.grid&&t.grid[0].flow_to){var c;const e=null!==(c=(0,l.q6)(this._data.stats,t.grid[0].flow_to.map((e=>e.stat_energy_to))))&&void 0!==c?c:0;i.push({id:"grid_return",label:this.hass.localize("ui.panel.lovelace.cards.energy.energy_distribution.grid"),value:e,tooltip:`${(0,h.uf)(e,this.hass.locale)} kWh`,color:a.getPropertyValue("--energy-grid-return-color"),index:1}),i.forEach((e=>{0===e.index&&"grid"!==e.id&&s.push({source:e.id,target:"grid_return"})})),o.value-=e}const f={no_area:{value:0,devices:[]}},y={no_floor:{value:0,areas:["no_area"]}};let m=o.value;e.device_consumption.forEach(((e,t)=>{var i,s;const r=this.hass.entities[e.stat_consumption],o=e.stat_consumption in this._data.stats&&(0,l.Kj)(this._data.stats[e.stat_consumption])||0;if(o<.01)return;m-=o;const n={id:e.stat_consumption,label:e.name||(0,l.Kd)(this.hass,e.stat_consumption,this._data.statsMetadata[e.stat_consumption]),value:o,tooltip:`${(0,h.uf)(o,this.hass.locale)} kWh`,color:(0,u.hZ)(t,a),index:4},d=null!==(i=null==r?void 0:r.area_id)&&void 0!==i?i:r.device_id&&(null===(s=this.hass.devices[r.device_id])||void 0===s?void 0:s.area_id);if(d&&d in this.hass.areas){const e=this.hass.areas[d];e.area_id in f?(f[e.area_id].value+=n.value,f[e.area_id].devices.push(n)):f[e.area_id]={value:n.value,devices:[n]},e.floor_id&&e.floor_id in this.hass.floors?e.floor_id in y?(y[e.floor_id].value+=n.value,y[e.floor_id].areas.includes(e.area_id)||y[e.floor_id].areas.push(e.area_id)):y[e.floor_id]={value:n.value,areas:[e.area_id]}:(y.no_floor.value+=n.value,y.no_floor.areas.includes(e.area_id)||y.no_floor.areas.unshift(e.area_id))}else f.no_area.value+=n.value,f.no_area.devices.push(n)})),Object.keys(y).sort(((e,t)=>{var a,i,s,r;return(null!==(a=null===(i=this.hass.floors[t])||void 0===i?void 0:i.level)&&void 0!==a?a:-1/0)-(null!==(s=null===(r=this.hass.floors[e])||void 0===r?void 0:r.level)&&void 0!==s?s:-1/0)})).forEach((e=>{let t=`floor_${e}`;"no_floor"===e?t="home":(i.push({id:t,label:this.hass.floors[e].name,value:y[e].value,tooltip:`${(0,h.uf)(y[e].value,this.hass.locale)} kWh`,index:2,color:a.getPropertyValue("--primary-color")}),s.push({source:"home",target:t})),y[e].areas.forEach((e=>{let r=`area_${e}`;"no_area"===e?r="home":(i.push({id:r,label:this.hass.areas[e].name,value:f[e].value,tooltip:`${(0,h.uf)(f[e].value,this.hass.locale)} kWh`,index:3,color:a.getPropertyValue("--primary-color")}),s.push({source:t,target:r,value:f[e].value})),f[e].devices.forEach((e=>{i.push(e),s.push({source:r,target:e.id,value:e.value})}))}))})),m>0?(i.push({id:"untracked",label:this.hass.localize("ui.panel.lovelace.cards.energy.energy_devices_detail_graph.untracked_consumption"),value:m,tooltip:`${(0,h.uf)(m,this.hass.locale)} kWh`,color:a.getPropertyValue("--state-unavailable-color"),index:4}),s.push({source:"home",target:"untracked",value:m})):m<0&&(o.value-=m),o.tooltip=`${(0,h.uf)(o.value,this.hass.locale)} kWh`;const k=i.some((e=>e.value>0));return(0,r.dy)(_||(_=b` <ha-card .header="${0}"> <div class="card-content"> ${0} </div> </ha-card> `),this._config.title,k?(0,r.dy)(p||(p=b`<ha-sankey-chart .data="${0}" .vertical="${0}" .valueFormatter="${0}"></ha-sankey-chart>`),{nodes:i,links:s},"vertical"===this._config.layout,this._valueFormatter):(0,r.dy)(g||(g=b`${0}`),this.hass.localize("ui.panel.lovelace.cards.energy.no_data_period")))}},{kind:"field",key:"_valueFormatter",value(){return e=>`${(0,h.uf)(e,this.hass.locale)} kWh`}},{kind:"field",static:!0,key:"styles",value(){return(0,r.iv)(y||(y=b`:host{display:block;height:calc(var(--row-size,8) * (var(--row-height,50px) + var(--row-gap,0px)) - var(--row-gap,0px))}ha-card{height:100%;display:flex;flex-direction:column}.card-content{flex:1;display:flex}`))}}]}}),(0,d.f)(r.oi));i()}catch(v){i(v)}}))},48066:function(e,t,a){let i;function s(e,t,a="Roboto, Noto, sans-serif"){i||(i=document.createElement("canvas"));const s=i.getContext("2d");if(!s)return 0;s.font=`${t}px ${a}`;const r=s.measureText(e);return Math.ceil(Math.max(r.actualBoundingBoxRight+r.actualBoundingBoxLeft,r.width))}a.d(t,{U:()=>s})}}]); //# sourceMappingURL=64409.6e761263d60d5ef6.js.map