iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 11.7 kB
JavaScript
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[62568],{20559:function(e,t,s){s.d(t,{JW:function(){return k},OW:function(){return f},PO:function(){return h},VN:function(){return d},XG:function(){return u},eB:function(){return m},gZ:function(){return v},hM:function(){return p},k2:function(){return c},lU:function(){return _},m2:function(){return l},nc:function(){return y},vX:function(){return g},z1:function(){return r}});s(18111),s(22489),s(20116),s(61701),s(3362),s(17642),s(58004),s(33853),s(45876),s(32475),s(15024),s(31698),s(62953);var i=s(36312),n=s(91926),a=s(58594),o=s(16790),r=function(e){return e.THREAD="thread",e.WIFI="wifi",e.ETHERNET="ethernet",e.UNKNOWN="unknown",e}({});const c=e=>{var t;return null===(t=e.auth.external)||void 0===t?void 0:t.config.canCommissionMatter},d=async e=>{if((0,i.x)(e.config,"thread")){const t=(await(0,o.sL)(e)).datasets.find(e=>e.preferred);if(t)return e.auth.external.fireMessage({type:"matter/commission",payload:{active_operational_dataset:(await(0,o.dy)(e,t.dataset_id)).tlv,border_agent_id:t.preferred_border_agent_id,mac_extended_address:t.preferred_extended_address,extended_pan_id:t.extended_pan_id}})}return e.auth.external.fireMessage({type:"matter/commission"})},l=(e,t)=>{let s;const i=(0,a.Ag)(e.connection,e=>{if(!s)return void(s=new Set(Object.values(e).filter(e=>e.identifiers.find(e=>"matter"===e[0])).map(e=>e.id)));const n=Object.values(e).filter(e=>e.identifiers.find(e=>"matter"===e[0])&&!s.has(e.id));n.length&&(i(),s=void 0,t(n[0]))});return()=>{i(),s=void 0}},p=(e,t)=>l(e,e=>{null==t||t(),(0,n.oo)(`/config/devices/device/${e.id}`)}),h=(e,t)=>e.callWS({type:"matter/commission",code:t}),u=(e,t)=>e.callWS({type:"matter/commission_on_network",pin:t}),_=(e,t,s)=>e.callWS({type:"matter/set_wifi_credentials",network_name:t,password:s}),v=(e,t)=>e.callWS({type:"matter/set_thread",thread_operation_dataset:t}),m=(e,t)=>e.callWS({type:"matter/node_diagnostics",device_id:t}),f=(e,t)=>e.callWS({type:"matter/ping_node",device_id:t}),y=(e,t)=>e.callWS({type:"matter/open_commissioning_window",device_id:t}),g=(e,t,s)=>e.callWS({type:"matter/remove_matter_fabric",device_id:t,fabric_index:s}),k=(e,t)=>e.callWS({type:"matter/interview_node",device_id:t})},16790:function(e,t,s){s.d(t,{It:function(){return r},W4:function(){return d},dy:function(){return o},l1:function(){return l},rY:function(){return c},sL:function(){return a},wm:function(){return n}});class i{processEvent(e){return"router_discovered"===e.type?this.routers[e.key]=e.data:"router_removed"===e.type&&delete this.routers[e.key],Object.values(this.routers)}constructor(){this.routers={}}}const n=(e,t)=>{const s=new i;return e.connection.subscribeMessage(e=>t(s.processEvent(e)),{type:"thread/discover_routers"})},a=e=>e.callWS({type:"thread/list_datasets"}),o=(e,t)=>e.callWS({type:"thread/get_dataset_tlv",dataset_id:t}),r=(e,t,s)=>e.callWS({type:"thread/add_dataset_tlv",source:t,tlv:s}),c=(e,t)=>e.callWS({type:"thread/delete_dataset",dataset_id:t}),d=(e,t)=>e.callWS({type:"thread/set_preferred_dataset",dataset_id:t}),l=(e,t,s,i)=>e.callWS({type:"thread/set_preferred_border_agent",dataset_id:t,border_agent_id:s,extended_address:i})},54706:function(e,t,s){s.d(t,{E:function(){return a}});s(74423),s(18111),s(13579),s(3362),s(62953);var i=s(40445),n=s(67576);const a=e=>{class t extends e{connectedCallback(){super.connectedCallback(),this._checkSubscribed()}disconnectedCallback(){if(super.disconnectedCallback(),this.__unsubs){for(;this.__unsubs.length;){const e=this.__unsubs.pop();e instanceof Promise?e.then(e=>e()):e()}this.__unsubs=void 0}}updated(e){if(super.updated(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()}hassSubscribe(){return[]}_checkSubscribed(){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())}}return(0,i.Cg)([(0,n.MZ)({attribute:!1})],t.prototype,"hass",void 0),t}},20187:function(e,t,s){s.r(t),s.d(t,{HaDeviceInfoMatter:function(){return C}});s(18111),s(61701),s(3362);var i=s(40445),n=s(5124),a=s(67576),o=(s(11382),s(20559)),r=s(54706),c=s(14503);s(89463),s(44114),s(26910),s(22489),s(20116),s(62953),s(67094);let d,l,p,h,u,_=e=>e;const v="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z",m={lock:v,unlock:"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z",lock_jammed:"M10 17C11.1 17 12 16.1 12 15C12 13.9 11.1 13 10 13C8.9 13 8 13.9 8 15S8.9 17 10 17M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H5V6C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 3C8.3 3 7 4.3 7 6V8H13V6C13 4.3 11.7 3 10 3M22 13H20V7H22V13M22 17H20V15H22V17Z",lock_failure:"M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z",invalid_pin:"M4 6.5C4 4 6 2 8.5 2S13 4 13 6.5C13 8.46 11.75 10.13 10 10.74V15H13V18H10V22H7V10.74C5.25 10.13 4 8.46 4 6.5M7 6.5C7 7.33 7.67 8 8.5 8S10 7.33 10 6.5 9.33 5 8.5 5 7 5.67 7 6.5M18 7H20V13H18M18 17H20V15H18"};class f extends n.WF{willUpdate(e){if(super.willUpdate(e),e.has("device")&&this._findLockEntity(),e.has("hass")&&this._lockEntityId){const e=this.hass.states[this._lockEntityId];e!==this._prevLockState&&(this._prevLockState=e,this._updateEvents())}}_findLockEntity(){if(!this.hass||!this.device)return;const e=Object.values(this.hass.entities||{}),t=e.find(e=>e.device_id===this.device.id&&e.entity_id.startsWith("lock."));this._lockEntityId=null==t?void 0:t.entity_id,this._isLock=!!this._lockEntityId,this._eventEntityIds=e.filter(e=>e.device_id===this.device.id&&e.entity_id.startsWith("event.")).map(e=>e.entity_id)}_updateEvents(){if(!this._lockEntityId||!this.hass.states[this._lockEntityId])return;const e=this.hass.states[this._lockEntityId],t=[];"locked"===e.state?t.push({event_type:"lock",timestamp:new Date(e.last_changed),description:this.hass.localize("ui.panel.config.matter.lock.events.types.lock")}):"unlocked"===e.state?t.push({event_type:"unlock",timestamp:new Date(e.last_changed),description:this.hass.localize("ui.panel.config.matter.lock.events.types.unlock")}):"jammed"===e.state&&t.push({event_type:"lock_jammed",timestamp:new Date(e.last_changed),description:this.hass.localize("ui.panel.config.matter.lock.events.types.lock_jammed")});for(const s of this._eventEntityIds||[]){const e=this.hass.states[s];if(e&&e.attributes.event_type){const s=e.attributes.event_type;m[s]&&t.push({event_type:s,timestamp:new Date(e.last_changed),description:this.hass.localize(`ui.panel.config.matter.lock.events.types.${s}`)||s})}}this._events=t.sort((e,t)=>t.timestamp.getTime()-e.timestamp.getTime()).slice(0,10)}render(){return this._isLock?(0,n.qy)(d||(d=_` <ha-expansion-panel .header="${0}"> ${0} </ha-expansion-panel> `),this.hass.localize("ui.panel.config.matter.lock.events.title"),0===this._events.length?(0,n.qy)(l||(l=_`<p class="empty"> ${0} </p>`),this.hass.localize("ui.panel.config.matter.lock.events.no_events")):(0,n.qy)(p||(p=_` <div class="events-list"> ${0} </div> `),this._events.map(e=>(0,n.qy)(h||(h=_` <div class="event-row"> <ha-svg-icon .path="${0}"></ha-svg-icon> <div class="event-details"> <span class="event-description">${0}</span> <span class="event-time"> ${0} </span> </div> </div> `),m[e.event_type]||v,e.description,this._formatTime(e.timestamp))))):n.s6}_formatTime(e){return e.toLocaleString(this.hass.locale.language,{dateStyle:"short",timeStyle:"short"})}static get styles(){return[c.RF,(0,n.AH)(u||(u=_`ha-expansion-panel{margin:8px -16px 0;--expansion-panel-summary-padding:0 16px;--expansion-panel-content-padding:0 16px;--ha-card-border-radius:var(--ha-border-radius-square)}.empty{text-align:center;color:var(--secondary-text-color);padding:16px}.events-list{display:flex;flex-direction:column;gap:8px;padding:8px 0}.event-row{display:flex;align-items:center;gap:12px}.event-row ha-svg-icon{color:var(--secondary-text-color);--mdc-icon-size:20px}.event-details{display:flex;flex-direction:column;flex:1}.event-description{font-weight:500}.event-time{font-size:.875em;color:var(--secondary-text-color)}`))]}constructor(...e){super(...e),this._events=[],this._isLock=!1}}(0,i.Cg)([(0,a.MZ)({attribute:!1})],f.prototype,"hass",void 0),(0,i.Cg)([(0,a.MZ)({attribute:!1})],f.prototype,"device",void 0),(0,i.Cg)([(0,a.wk)()],f.prototype,"_events",void 0),(0,i.Cg)([(0,a.wk)()],f.prototype,"_lockEntityId",void 0),(0,i.Cg)([(0,a.wk)()],f.prototype,"_isLock",void 0),f=(0,i.Cg)([(0,a.EM)("ha-device-info-matter-lock")],f);let y,g,k,b,x,w=e=>e;class C extends((0,r.E)(n.WF)){willUpdate(e){super.willUpdate(e),e.has("device")&&this._fetchNodeDetails()}async _fetchNodeDetails(){if(this.device&&null===this.device.via_device_id)try{this._nodeDiagnostics=await(0,o.eB)(this.hass,this.device.id)}catch(e){this._nodeDiagnostics=void 0}}render(){return this._nodeDiagnostics?(0,n.qy)(y||(y=w` <ha-expansion-panel .header="${0}"> <div class="row"> <span class="name">${0}:</span> <span class="value">${0}</span> </div> <div class="row"> <span class="name">${0}:</span> <span class="value">${0}</span> </div> <div class="row"> <span class="name">${0}:</span> <span class="value">${0}</span> </div> ${0} ${0} <div class="row"> <span class="name">${0}:</span> <span class="value">${0}</span> </div> </ha-expansion-panel> <ha-device-info-matter-lock .hass="${0}" .device="${0}"></ha-device-info-matter-lock> `),this.hass.localize("ui.panel.config.matter.device_info.matter_info"),this.hass.localize("ui.panel.config.matter.device_info.node_id"),this._nodeDiagnostics.node_id,this.hass.localize("ui.panel.config.matter.device_info.network_type"),this.hass.localize(`ui.panel.config.matter.network_type.${this._nodeDiagnostics.network_type}`),this.hass.localize("ui.panel.config.matter.device_info.node_type"),this.hass.localize(`ui.panel.config.matter.node_type.${this._nodeDiagnostics.node_type}`),this._nodeDiagnostics.network_name?(0,n.qy)(g||(g=w` <div class="row"> <span class="name">${0}:</span> <span class="value">${0}</span> </div> `),this.hass.localize("ui.panel.config.matter.device_info.network_name"),this._nodeDiagnostics.network_name):n.s6,this._nodeDiagnostics.mac_address?(0,n.qy)(k||(k=w` <div class="row"> <span class="name">${0}:</span> <span class="value">${0}</span> </div> `),this.hass.localize("ui.panel.config.matter.device_info.mac_address"),this._nodeDiagnostics.mac_address):n.s6,this.hass.localize("ui.panel.config.matter.device_info.ip_adresses"),this._nodeDiagnostics.ip_adresses.map(e=>(0,n.qy)(b||(b=w`${0}<br>`),e)),this.hass,this.device):n.s6}static get styles(){return[c.RF,(0,n.AH)(x||(x=w`h4{margin-bottom:4px}div{word-break:break-all;margin-top:2px}.row{display:flex;justify-content:space-between;padding-bottom:4px}.value{text-align:right}ha-expansion-panel{margin:8px -16px 0;--expansion-panel-summary-padding:0 16px;--expansion-panel-content-padding:0 16px;--ha-card-border-radius:var(--ha-border-radius-square)}`))]}}(0,i.Cg)([(0,a.MZ)({attribute:!1})],C.prototype,"hass",void 0),(0,i.Cg)([(0,a.MZ)({attribute:!1})],C.prototype,"device",void 0),(0,i.Cg)([(0,a.wk)()],C.prototype,"_nodeDiagnostics",void 0),C=(0,i.Cg)([(0,a.EM)("ha-device-info-matter")],C)}}]);