UNPKG

iobroker.lovelace

Version:

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

2 lines 15.1 kB
export const __webpack_ids__=["64409"];export const __webpack_modules__={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(44249),s=(a(92745),a(9359),a(56475),a(1331),a(31526),a(70104),a(48136),a(92519),a(42179),a(89256),a(24931),a(88463),a(57449),a(19814),a(15093)),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]));c=(h.then?(await h)():h)[0];const f=5,_=12,p=8,v=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:()=>({nodes:[],links:[]})},{kind:"field",decorators:[(0,s.Cb)({type:Boolean})],key:"vertical",value:()=>!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=>e[0]?.contentRect})}},{kind:"method",key:"render",value:function(){const e={grid:{top:0,bottom:0,left:0,right:0},tooltip:{trigger:"item",formatter:this._renderTooltip,appendTo:document.body}};return r.dy`<ha-chart-base .data="${this._createData(this.data,this._sizeController.value?.width)}" .options="${e}" height="100%" .extraComponents="${[o.N]}"></ha-chart-base>`}},{kind:"field",key:"_renderTooltip",value(){return e=>{const t=e.data,a=this.valueFormatter?this.valueFormatter(t.value):t.value;if(t.id){const i=this.data.nodes.find((e=>e.id===t.id));return`${e.marker} ${i?.label??t.id}<br>${a}`}if(t.source&&t.target){const e=this.data.nodes.find((e=>e.id===t.source)),i=this.data.nodes.find((e=>e.id===t.target));return`${e?.label??t.source}${i?.label??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-v;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:p,lineStyle:{color:"gradient",opacity:.4},layoutIterations:0,label:{formatter:t=>e.nodes.find((e=>e.id===t.data.id))?.label??t.data.id,position:this.vertical?"bottom":"right",distance:v,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,_),i=Math.min(_,e.rect.width/a*_);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*_,_);return{fontSize:a,lineHeight:a,width:r,height:e.rect.height}},top:this.vertical?0:f,bottom:this.vertical?25:f,left:this.vertical?f:0,right:this.vertical?f:r+v,emphasis:{focus:"adjacency"}}}))}},{kind:"method",key:"_processLinks",value:function(e,t){const a=new Map,i=new Map,s=[];return t.forEach((t=>{const r=e.find((e=>e.id===t.source)),o=e.find((e=>e.id===t.target));if(!r||!o)return;const n=i.get(r.id)||0,l=a.get(o.id)||0,d=r.value-n,c=o.value-l,u=Math.min(t.value??d,d,c);a.set(o.id,l+u),i.set(r.id,n+u),u>0&&s.push({...t,value:u})})),s}},{kind:"field",static:!0,key:"styles",value:()=>r.iv`: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(e){t(e)}}))},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:()=>_,Nw:()=>v,PA:()=>r,Py:()=>l,Qm:()=>w,Z0:()=>b,_Y:()=>c,_m:()=>o,dL:()=>d,dO:()=>x,hN:()=>f,h_:()=>u,j2:()=>m,q6:()=>p,uR:()=>n});a(9359),a(52924);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: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}),_=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},p=(e,t)=>{let a=null;for(const i of t){if(!(i in e))continue;const t=_(e[i]);null!==t&&(null===a?a=t:a+=t)}return a},v=(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):a?.name||t},x=(e,t,a)=>{let i;return t&&(i=e.states[t]?.attributes.unit_of_measurement),void 0===i?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(44249),s=a(72621),r=(a(9359),a(52924),a(15093));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(){void 0===this.__unsubs&&this.isConnected&&void 0!==this.hass&&!this.hassSubscribeRequiredHostProps?.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(44249),r=(a(92745),a(84283),a(9359),a(31526),a(70104),a(48136),a(57243)),o=a(15093),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;(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:()=>["_config"]},{kind:"method",key:"setConfig",value:function(e){this._config=e}},{kind:"method",key:"hassSubscribe",value:function(){return[(0,n.UB)(this.hass,{key:this._config?.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 r.dy`${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){const e=(0,l.q6)(this._data.stats,t.grid[0].flow_from.map((e=>e.stat_energy_from)))??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){const e=(0,l.q6)(this._data.stats,t.grid[0].flow_to.map((e=>e.stat_energy_to)))??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 d={no_area:{value:0,devices:[]}},c={no_floor:{value:0,areas:["no_area"]}};let f=o.value;e.device_consumption.forEach(((e,t)=>{const i=this.hass.entities[e.stat_consumption],s=e.stat_consumption in this._data.stats&&(0,l.Kj)(this._data.stats[e.stat_consumption])||0;if(s<.01)return;f-=s;const r={id:e.stat_consumption,label:e.name||(0,l.Kd)(this.hass,e.stat_consumption,this._data.statsMetadata[e.stat_consumption]),value:s,tooltip:`${(0,h.uf)(s,this.hass.locale)} kWh`,color:(0,u.hZ)(t,a),index:4},o=i?.area_id??(i.device_id&&this.hass.devices[i.device_id]?.area_id);if(o&&o in this.hass.areas){const e=this.hass.areas[o];e.area_id in d?(d[e.area_id].value+=r.value,d[e.area_id].devices.push(r)):d[e.area_id]={value:r.value,devices:[r]},e.floor_id&&e.floor_id in this.hass.floors?e.floor_id in c?(c[e.floor_id].value+=r.value,c[e.floor_id].areas.includes(e.area_id)||c[e.floor_id].areas.push(e.area_id)):c[e.floor_id]={value:r.value,areas:[e.area_id]}:(c.no_floor.value+=r.value,c.no_floor.areas.includes(e.area_id)||c.no_floor.areas.unshift(e.area_id))}else d.no_area.value+=r.value,d.no_area.devices.push(r)})),Object.keys(c).sort(((e,t)=>(this.hass.floors[t]?.level??-1/0)-(this.hass.floors[e]?.level??-1/0))).forEach((e=>{let t=`floor_${e}`;"no_floor"===e?t="home":(i.push({id:t,label:this.hass.floors[e].name,value:c[e].value,tooltip:`${(0,h.uf)(c[e].value,this.hass.locale)} kWh`,index:2,color:a.getPropertyValue("--primary-color")}),s.push({source:"home",target:t})),c[e].areas.forEach((e=>{let r=`area_${e}`;"no_area"===e?r="home":(i.push({id:r,label:this.hass.areas[e].name,value:d[e].value,tooltip:`${(0,h.uf)(d[e].value,this.hass.locale)} kWh`,index:3,color:a.getPropertyValue("--primary-color")}),s.push({source:t,target:r,value:d[e].value})),d[e].devices.forEach((e=>{i.push(e),s.push({source:r,target:e.id,value:e.value})}))}))})),f>0?(i.push({id:"untracked",label:this.hass.localize("ui.panel.lovelace.cards.energy.energy_devices_detail_graph.untracked_consumption"),value:f,tooltip:`${(0,h.uf)(f,this.hass.locale)} kWh`,color:a.getPropertyValue("--state-unavailable-color"),index:4}),s.push({source:"home",target:"untracked",value:f})):f<0&&(o.value-=f),o.tooltip=`${(0,h.uf)(o.value,this.hass.locale)} kWh`;const _=i.some((e=>e.value>0));return r.dy` <ha-card .header="${this._config.title}"> <div class="card-content"> ${_?r.dy`<ha-sankey-chart .data="${{nodes:i,links:s}}" .vertical="${"vertical"===this._config.layout}" .valueFormatter="${this._valueFormatter}"></ha-sankey-chart>`:r.dy`${this.hass.localize("ui.panel.lovelace.cards.energy.no_data_period")}`} </div> </ha-card> `}},{kind:"field",key:"_valueFormatter",value(){return e=>`${(0,h.uf)(e,this.hass.locale)} kWh`}},{kind:"field",static:!0,key:"styles",value:()=>r.iv`: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(e){i(e)}}))},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.ff6d9294d7008ebf.js.map