iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 10.9 kB
JavaScript
export const __rspack_esm_id=62568;export const __rspack_esm_ids=[62568];export const __webpack_modules__={20559(e,t,s){s.d(t,{JW:()=>k,OW:()=>y,PO:()=>h,VN:()=>r,XG:()=>_,eB:()=>m,gZ:()=>u,hM:()=>p,k2:()=>c,lU:()=>v,m2:()=>l,nc:()=>g,vX:()=>f,z1:()=>d});s(18111),s(22489),s(20116),s(61701),s(17642),s(58004),s(33853),s(45876),s(32475),s(15024),s(31698);var i=s(36312),a=s(91926),n=s(58594),o=s(16790),d=function(e){return e.THREAD="thread",e.WIFI="wifi",e.ETHERNET="ethernet",e.UNKNOWN="unknown",e}({});const c=e=>e.auth.external?.config.canCommissionMatter,r=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,n.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 a=Object.values(e).filter(e=>e.identifiers.find(e=>"matter"===e[0])&&!s.has(e.id));a.length&&(i(),s=void 0,t(a[0]))});return()=>{i(),s=void 0}},p=(e,t)=>l(e,e=>{t?.(),(0,a.oo)(`/config/devices/device/${e.id}`)}),h=(e,t)=>e.callWS({type:"matter/commission",code:t}),_=(e,t)=>e.callWS({type:"matter/commission_on_network",pin:t}),v=(e,t,s)=>e.callWS({type:"matter/set_wifi_credentials",network_name:t,password:s}),u=(e,t)=>e.callWS({type:"matter/set_thread",thread_operation_dataset:t}),m=(e,t)=>e.callWS({type:"matter/node_diagnostics",device_id:t}),y=(e,t)=>e.callWS({type:"matter/ping_node",device_id:t}),g=(e,t)=>e.callWS({type:"matter/open_commissioning_window",device_id:t}),f=(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(e,t,s){s.d(t,{It:()=>d,W4:()=>r,dy:()=>o,l1:()=>l,rY:()=>c,sL:()=>n,wm:()=>a});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 a=(e,t)=>{const s=new i;return e.connection.subscribeMessage(e=>t(s.processEvent(e)),{type:"thread/discover_routers"})},n=e=>e.callWS({type:"thread/list_datasets"}),o=(e,t)=>e.callWS({type:"thread/get_dataset_tlv",dataset_id:t}),d=(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}),r=(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(e,t,s){s.d(t,{E:()=>n});s(74423),s(18111),s(13579);var i=s(62826),a=s(22441);const n=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(){void 0===this.__unsubs&&this.isConnected&&void 0!==this.hass&&!this.hassSubscribeRequiredHostProps?.some(e=>void 0===this[e])&&(this.__unsubs=this.hassSubscribe())}}return(0,i.Cg)([(0,a.MZ)({attribute:!1})],t.prototype,"hass",void 0),t}},20187(e,t,s){s.r(t),s.d(t,{HaDeviceInfoMatter:()=>h});s(18111),s(61701);var i=s(62826),a=s(5124),n=s(22441),o=(s(11382),s(20559)),d=s(54706),c=s(14503);s(44114),s(22489),s(20116),s(67094);const r="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",l={lock:r,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 p extends a.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=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 e of this._eventEntityIds||[]){const s=this.hass.states[e];if(s&&s.attributes.event_type){const e=s.attributes.event_type;l[e]&&t.push({event_type:e,timestamp:new Date(s.last_changed),description:this.hass.localize(`ui.panel.config.matter.lock.events.types.${e}`)||e})}}this._events=t.sort((e,t)=>t.timestamp.getTime()-e.timestamp.getTime()).slice(0,10)}render(){return this._isLock?a.qy` <ha-expansion-panel .header="${this.hass.localize("ui.panel.config.matter.lock.events.title")}"> ${0===this._events.length?a.qy`<p class="empty"> ${this.hass.localize("ui.panel.config.matter.lock.events.no_events")} </p>`:a.qy` <div class="events-list"> ${this._events.map(e=>a.qy` <div class="event-row"> <ha-svg-icon .path="${l[e.event_type]||r}"></ha-svg-icon> <div class="event-details"> <span class="event-description">${e.description}</span> <span class="event-time"> ${this._formatTime(e.timestamp)} </span> </div> </div> `)} </div> `} </ha-expansion-panel> `:a.s6}_formatTime(e){return e.toLocaleString(this.hass.locale.language,{dateStyle:"short",timeStyle:"short"})}static get styles(){return[c.RF,a.AH`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,n.MZ)({attribute:!1})],p.prototype,"hass",void 0),(0,i.Cg)([(0,n.MZ)({attribute:!1})],p.prototype,"device",void 0),(0,i.Cg)([(0,n.wk)()],p.prototype,"_events",void 0),(0,i.Cg)([(0,n.wk)()],p.prototype,"_lockEntityId",void 0),(0,i.Cg)([(0,n.wk)()],p.prototype,"_isLock",void 0),p=(0,i.Cg)([(0,n.EM)("ha-device-info-matter-lock")],p);class h extends((0,d.E)(a.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?a.qy` <ha-expansion-panel .header="${this.hass.localize("ui.panel.config.matter.device_info.matter_info")}"> <div class="row"> <span class="name">${this.hass.localize("ui.panel.config.matter.device_info.node_id")}:</span> <span class="value">${this._nodeDiagnostics.node_id}</span> </div> <div class="row"> <span class="name">${this.hass.localize("ui.panel.config.matter.device_info.network_type")}:</span> <span class="value">${this.hass.localize(`ui.panel.config.matter.network_type.${this._nodeDiagnostics.network_type}`)}</span> </div> <div class="row"> <span class="name">${this.hass.localize("ui.panel.config.matter.device_info.node_type")}:</span> <span class="value">${this.hass.localize(`ui.panel.config.matter.node_type.${this._nodeDiagnostics.node_type}`)}</span> </div> ${this._nodeDiagnostics.network_name?a.qy` <div class="row"> <span class="name">${this.hass.localize("ui.panel.config.matter.device_info.network_name")}:</span> <span class="value">${this._nodeDiagnostics.network_name}</span> </div> `:a.s6} ${this._nodeDiagnostics.mac_address?a.qy` <div class="row"> <span class="name">${this.hass.localize("ui.panel.config.matter.device_info.mac_address")}:</span> <span class="value">${this._nodeDiagnostics.mac_address}</span> </div> `:a.s6} <div class="row"> <span class="name">${this.hass.localize("ui.panel.config.matter.device_info.ip_adresses")}:</span> <span class="value">${this._nodeDiagnostics.ip_adresses.map(e=>a.qy`${e}<br>`)}</span> </div> </ha-expansion-panel> <ha-device-info-matter-lock .hass="${this.hass}" .device="${this.device}"></ha-device-info-matter-lock> `:a.s6}static get styles(){return[c.RF,a.AH`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,n.MZ)({attribute:!1})],h.prototype,"hass",void 0),(0,i.Cg)([(0,n.MZ)({attribute:!1})],h.prototype,"device",void 0),(0,i.Cg)([(0,n.wk)()],h.prototype,"_nodeDiagnostics",void 0),h=(0,i.Cg)([(0,n.EM)("ha-device-info-matter")],h)}};