lavva.exalushome.extalife
Version:
Library implementing communication and abstraction layers for ExtaLife API in ExalusHome system
2 lines • 19.8 kB
JavaScript
"use strict";(self.webpackChunklavva_exalushome_extalife=self.webpackChunklavva_exalushome_extalife||[]).push([[701],{1701:(t,e,n)=>{n.d(e,{l:()=>O,J:()=>y});var i,r,o,a=n(5046),s=n(6895),l=n(5389),u=n(9897),c=n(5564),d=n(624),h=n(4533),p=n(7418),C=n(2160),b=n(6440),v=n(7460);class m{constructor(){this.Correction=0,this.AvaliableCorrections=[],this.CorrectionType="LOWER"}}class f{constructor(){this.Channel=0,this.Position1=0,this.Position2=0}}class g{constructor(){this.Channel=0,this.InputModeBlind=i.Local,this.ButtonTypeBlind=r.SingleButton}}!function(t){t[t.Local=0]="Local",t[t.Central=1]="Central"}(i||(i={})),function(t){t[t.SingleButton=0]="SingleButton",t[t.DoubleButton=1]="DoubleButton"}(r||(r={}));class S{constructor(){this.Channel=0,this.State=o.DoNothing,this.BlindPosition=0}}!function(t){t[t.OpenBlind=0]="OpenBlind",t[t.CloseBlind=1]="CloseBlind",t[t.DoNothing=2]="DoNothing",t[t.OpenPercentage=3]="OpenPercentage"}(o||(o={}));var y,w=n(6532),E=n(9967),A=function(t,e,n,i){return new(n||(n=Promise))((function(r,o){function a(t){try{l(i.next(t))}catch(t){o(t)}}function s(t){try{l(i.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}l((i=i.apply(t,e||[])).next())}))};class O{constructor(){this._connection=null,this._controllerConfigurationService=null,this._manualCalibrationContext=new T,this._connection=a.V.Get(s.c.ServiceName),this._controllerConfigurationService=a.V.Get(h.Q.ServiceName),this._logger=a.V.Get(c.m.ServiceName)}static Init(){u.Q.Instance.RegisterService(new O),a.V.Get(c.m.ServiceName).Debug("Initialized BlindConfigService")}GetServiceName(){return O.ServiceName}ManualCalibration(t,e){try{return t.Channels.any((t=>t.Number===e))?{StepAOpenBlindAsync:()=>A(this,void 0,void 0,(function*(){const n=new p.O7;if(n.Data.Channel=e,n.Data.CloseTime=65535,n.Data.OpenTime=65535,this._logger.Debug("Manual calibration start, STEP A - clearing context data."),this._manualCalibrationContext=new T,(yield t.Channels.first((t=>t.Number==e)).ExecuteTaskAsync(n))!==C.G.Executed)return this._logger.Debug("Manual calibration failed - cannot set open/close time to max values."),b.qb.Error;const i=new p.LO;return i.Action=p.IC.Open,(yield t.Channels.first((t=>t.Number==e)).ExecuteTaskAsync(i))!==C.G.Executed?(this._logger.Debug("Manual calibration failed - unable to open blind."),b.qb.Error):(this._manualCalibrationContext.StepAFinished=!0,b.qb.OK)})),StepBCalibrateOpeningTime:()=>this._manualCalibrationContext.StepAFinished?{StepAInitBlindMoveAsync:()=>A(this,void 0,void 0,(function*(){const n=new p.LO;return n.Action=p.IC.Close,(yield t.Channels.first((t=>t.Number==e)).ExecuteTaskAsync(n))===C.G.Executed?(this._manualCalibrationContext.OpeningStartTime=Date.now(),this._manualCalibrationContext.StepBAFinished=!0,b.qb.OK):b.qb.Error})),StepBConfirmBlindPositionAsync:()=>A(this,void 0,void 0,(function*(){if(!this._manualCalibrationContext.StepBAFinished)return b.qb.NoPermissionToPerformThisOperation;const n=new p.LO;return n.Action=p.IC.Stop,(yield t.Channels.first((t=>t.Number==e)).ExecuteTaskAsync(n))===C.G.Executed?(this._manualCalibrationContext.OpeningEndTime=Date.now(),this._manualCalibrationContext.StepBFinished=!0,b.qb.OK):b.qb.Error}))}:new d.tp(y.WrongStepOfOperation,'Unable to run step "StepBCalibrateOpeningTime" - make sure previous steps have been completed.'),StepCCalibrateClosingTime:()=>this._manualCalibrationContext.StepAFinished&&this._manualCalibrationContext.StepBFinished?{StepAInitBlindMoveAsync:()=>A(this,void 0,void 0,(function*(){const n=new p.LO;return n.Action=p.IC.Open,(yield t.Channels.first((t=>t.Number==e)).ExecuteTaskAsync(n))===C.G.Executed?(this._manualCalibrationContext.ClosingStartTime=Date.now(),this._manualCalibrationContext.StepCAFinished=!0,b.qb.OK):b.qb.Error})),StepBConfirmBlindPositionAsync:()=>A(this,void 0,void 0,(function*(){if(!this._manualCalibrationContext.StepCAFinished)return b.qb.NoPermissionToPerformThisOperation;const n=new p.LO;return n.Action=p.IC.Stop,(yield t.Channels.first((t=>t.Number==e)).ExecuteTaskAsync(n))===C.G.Executed?(this._manualCalibrationContext.ClosingEndTime=Date.now(),this._manualCalibrationContext.StepCFinished=!0,b.qb.OK):b.qb.Error}))}:new d.tp(y.WrongStepOfOperation,'Unable to run step "StepCCalibrateClosingTime" - make sure previous steps have been completed.'),StepDSaveCalibrationAsync:()=>A(this,void 0,void 0,(function*(){if(!this._manualCalibrationContext.StepAFinished||!this._manualCalibrationContext.StepBFinished||!this._manualCalibrationContext.StepCFinished)return b.qb.NoPermissionToPerformThisOperation;const n=new p.O7;return n.Data.Channel=e,n.Data.OpenTime=Math.ceil((this._manualCalibrationContext.OpeningEndTime-this._manualCalibrationContext.OpeningStartTime)/10),n.Data.CloseTime=Math.ceil((this._manualCalibrationContext.ClosingEndTime-this._manualCalibrationContext.ClosingStartTime)/10),this._logger.Debug(`Mamual calibration finished - OpenTime: ${n.Data.OpenTime}, CloseTime: ${n.Data.CloseTime}.`),(yield t.Channels.first((t=>t.Number==e)).ExecuteTaskAsync(n))===C.G.Executed?(this._manualCalibrationContext=new T,this._logger.Debug("Manual calibration - clearing context data."),b.qb.OK):(this._manualCalibrationContext=new T,this._logger.Debug("Manual calibration failed, cannot save open/close time - clearing context data."),b.qb.Error)}))}:new d.tp(y.InvalidChannelNumber,`Cannot get manual calibration functions - invalid channel number, channel: ${e}`)}catch(t){return new d.tp(y.OtherError,"Failed to get manual calibration functions - unknown error.")}}RunAutomaticCalibrationAsync(t,e){var n,i,r,o,s,u;return A(this,void 0,void 0,(function*(){try{if(!t.Channels.any((t=>t.Number===e)))return new d.tp(y.InvalidChannelNumber,`Cannot calibrate blind - invalid channel number: ${e}`);const u=yield this.IsCalibrationRunningAsync();if(u.Type==y.CannotCheckIfCalibrationsIsRunning)return u;if(u)return new d.tp(y.CalibrationsIsCurrentlyRunning,"Cannot calibrate blind - calibration is currently running - make sure no blind is currently calibrated and try again.");yield null===(n=this._controllerConfigurationService)||void 0===n?void 0:n.EnterConfigurationModeAsync();const c=new p.LO;if(c.Action=p.IC.Stop,(yield t.Channels.first((t=>t.Number==e)).ExecuteTaskAsync(c))!==C.G.Executed)return null===(i=this._controllerConfigurationService)||void 0===i||i.ExitConfigurationModeAsync(),new d.tp(y.DeviceNotResponding,"Cannot calibrate blind - device is not responding.");const h=yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(new x(t.Guid),8e3,!1);if(null==h||null==h.Status)return new d.tp(y.OtherError,"Cannot calibrate blind - calibration request failed for an unknown reason.");if(h.Status!==b.qb.OK)return new d.tp(y.OtherError,`Cannot calibrate blind - calibration request failed - request status code: ${h.Status}`);const m=new Promise(((e,n)=>{let i,r=!1;const o=a=>{if(a.TypeAsEnum==l._s.BlindCalibration)switch(a.Data.CalibrationStatus){case v.oQ.AutoLernCancelled:t.OnDeviceStateRefreshedOrChangedEvent().Unsubscribe(o),r=!1,clearTimeout(i),n(new d.tp(y.CalibrationCancelled,"Calibration canceled - recived AutoLernCancelled message."));break;case v.oQ.AutoLernSuccessfull:this._logger.Debug("Calibration finished - recived AutoLernSuccessfull message."),t.OnDeviceStateRefreshedOrChangedEvent().Unsubscribe(o),r=!1,clearTimeout(i),e(a.Data);break;case v.oQ.AutoLernInProgress:this._logger.Debug("Recived AutoLernInProgress message."),r=!0,null==i&&(this._logger.Debug("Calibration start - recived AutoLernInProgress message."),i=setTimeout((()=>{t.OnDeviceStateRefreshedOrChangedEvent().Unsubscribe(o),n(new d.tp(y.Timeout,"Calibration failed - calibration status message timeout has been reached."))}),8e3));break;case v.oQ.AutoLernIdle:r=!1,t.OnDeviceStateRefreshedOrChangedEvent().Unsubscribe(o),clearTimeout(i),n(new d.tp(y.IncorrectResponse,"Calibration failed - recived AutoLernIdle message received before completion of calibration."))}else r&&a.TypeAsEnum==l._s.BlindPosition&&(this._logger.Debug("Calibration in progress - recived BlindPosition message."),clearTimeout(i),i=setTimeout((()=>{t.OnDeviceStateRefreshedOrChangedEvent().Unsubscribe(o),n(new d.tp(y.Timeout,"Calibration failed - calibration status message timeout has been reached."))}),8e3))};t.OnDeviceStateRefreshedOrChangedEvent().Subscribe(o)})),f=a.V.Get(E.Z.ServiceName);try{f.DisallowHibernation();const t=yield m;return null===(o=this._controllerConfigurationService)||void 0===o||o.ExitConfigurationModeAsync(),t}catch(t){return null===(s=this._controllerConfigurationService)||void 0===s||s.ExitConfigurationModeAsync(),t}finally{f.AllowHibernation()}}catch(t){return null===(u=this._controllerConfigurationService)||void 0===u||u.ExitConfigurationModeAsync(),new d.tp(y.OtherError,"Cannot calibrate blind - unknown error.")}}))}StopAutomaticCalibrationAsync(t){var e;return A(this,void 0,void 0,(function*(){try{const n=yield this.IsCalibrationRunningAsync();if(n.Type==y.CannotCheckIfCalibrationsIsRunning)return b.qb.Error;if(!n)return b.qb.OperationNotPermitted;const i=new p.LO;i.Action=p.IC.Stop;for(let e=0;e<t.Channels.length;e++)yield t.Channels[e].ExecuteTaskAsync(i);const r=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new D(t.Guid),8e3,!1);return null==r||null==r.Status?(this._logger.Error("Failed to stop calibration - unknow error."),b.qb.FatalError):(r.Status!==b.qb.OK&&this._logger.Error(`Failed to stop calibration - response status: ${r.Status}`),r.Status)}catch(t){return b.qb.FatalError}}))}GetCorrectionStepAsync(t,e,n){var i;return A(this,void 0,void 0,(function*(){const e=yield null===(i=this._connection)||void 0===i?void 0:i.SendAndWaitForResponseAsync(new N(t.Guid,n),8e3,!1);if(null==e)return new d.tp(y.OtherError,"Failed to retrieve parameters - unknow error.");if(e.Status!==b.qb.OK)return new d.tp(y.OtherError,`Failed to retrieve parameters - controller responded with error code: ${e.Status}.`);if(null!=e.Data){const t=e.Data,i=new m;i.Correction=t.Correction,i.CorrectionType=n;for(var r=t.Min;r<=t.Max;r+=t.Step)i.AvaliableCorrections.push(r);return i}return new d.tp(y.OtherError,"Failed to retrieve parameters - unknown error.")}))}SetCorrectionStepAsync(t,e,n,i){var r,o;return A(this,void 0,void 0,(function*(){const e=yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(new N(t.Guid,i),8e3,!1);if(null==e)return b.qb.ResourceIsNotAvailable;if(e.Status!==b.qb.OK)return null!=e.Status?e.Status:b.qb.UnknownError;if(null!=e.Data){const r=e.Data;let s=!1;for(var a=r.Min;a<=r.Max;a+=r.Step)if(n==a){s=!0;break}if(!s)return b.qb.WrongData;const l=new F;l.Correction=n,l.DeviceGuid=t.Guid;const u=yield null===(o=this._connection)||void 0===o?void 0:o.SendAndWaitForResponseAsync(new R(l,i),8e3,!1);return null==u?b.qb.FatalError:null!=u.Status?u.Status:b.qb.UnknownError}return e.Status}))}GetComfortPositionsAsync(t,e){var n;return A(this,void 0,void 0,(function*(){try{if(!t.Channels.any((t=>t.Number===e)))return new d.tp(y.InvalidChannelNumber,`Cannot get comfort position - invalid channel number, channel: ${e}`);const i=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new B(new w.W(t.Guid,e)),8e3,!1);if(null==i||null==i.Status)return new d.tp(y.OtherError,"Cannot get comfort position - unknown error.");if(i.Status!==b.qb.OK)return new d.tp(y.OtherError,`Cannot get comfort position - controller responded with error code: ${i.Status}.`);if(null==i.Data)return new d.tp(y.NoData,"Cannot get comfort position - no data in response.");const r=new f;return r.Channel=i.Data.Channel,r.Position1=i.Data.Position1,r.Position2=i.Data.Position2,r}catch(t){return new d.tp(y.OtherError,"Failed to retrieve comfort position - unknown error.")}}))}SetComfortPositionAsync(t,e){var n;return A(this,void 0,void 0,(function*(){try{if(null!=(yield this.GetComfortPositionsAsync(t,e.Channel)).Type)return b.qb.ResourceIsNotAvailable;const i=new I;i.Channel=e.Channel,i.DeviceGuid=t.Guid,i.Position1=e.Position1,i.Position2=e.Position2;const r=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new G(i),8e3,!1);return null==r||null==r.Status?(this._logger.Error("Failed to set comfort position - unknow error."),b.qb.FatalError):(r.Status!==b.qb.OK&&this._logger.Error(`Failed to set comfort position, response status: ${r.Status}`),r.Status)}catch(t){return b.qb.FatalError}}))}SwapRelaysAsync(t,e){var n;return A(this,void 0,void 0,(function*(){try{const i=new p.LO;if(i.Action=p.IC.Stop,(yield t.Channels.first((t=>t.Number==e)).ExecuteTaskAsync(i))!==C.G.Executed)return this._logger.Error("Failed to swap relays - cannot execute 'blind stop' task."),b.qb.Error;yield new Promise((t=>setTimeout(t,500)));const r=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new q(t.Guid),8e3,!1);return null==r||null==r.Status?(this._logger.Error("Failed to swap relays - unknow error."),b.qb.FatalError):(r.Status!==b.qb.OK&&this._logger.Error(`Failed to swap relays - response status: ${r.Status}`),r.Status)}catch(t){return b.qb.FatalError}}))}GetBlindInputOutputParamAsync(t,e){var n;return A(this,void 0,void 0,(function*(){try{if(!t.Channels.any((t=>t.Number===e)))return new d.tp(y.InvalidChannelNumber,`Cannot get input/output parameters - invalid channel number, channel: ${e}`);const i=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new k(new w.W(t.Guid,e)),8e3,!1);if(null==i||null==i.Status)return new d.tp(y.OtherError,"Cannot get input/output parameters - unknown error.");if(i.Status!==b.qb.OK)return new d.tp(y.OtherError,`Cannot get input/output parameters - controller responded with error code: ${i.Status}.`);if(null==i.Data)return new d.tp(y.NoData,"Cannot get input/output parameters - no data in response.");const r=i.Data.firstOrDefault();if(null==r)return new d.tp(y.InputOutputNotFound,"Cannot get input/output parameters - input/output not exists.");const o=new g;return o.Channel=r.Channel,o.ButtonTypeBlind=r.ButtonTypeBlind,o.InputModeBlind=r.InputModeBlind,o}catch(t){return new d.tp(y.OtherError,"Failed to retrieve input/output parameters - unknown error.")}}))}SetBlindInputOutputParamAsync(t,e){var n;return A(this,void 0,void 0,(function*(){try{const i=new P;i.DeviceGuid=t.Guid,i.ButtonTypeBlind=e.ButtonTypeBlind,i.InputModeBlind=e.InputModeBlind,i.Channel=e.Channel;const r=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new M(i),8e3,!1);return null==r||null==r.Status?(this._logger.Error("Failed to set input/output parameters - unknow error."),b.qb.FatalError):(r.Status!==b.qb.OK&&this._logger.Error(`Failed to set input/output parameters, response status: ${r.Status}`),r.Status)}catch(t){return b.qb.FatalError}}))}GetTurnOnBehaviourAsync(t,e){var n;return A(this,void 0,void 0,(function*(){try{if(!t.Channels.any((t=>t.Number===e)))return new d.tp(y.InvalidChannelNumber,`Cannot get turn on behaviour - invalid channel number, channel: ${e}`);const i=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new $(new w.W(t.Guid,e)),8e3,!1);if(null==i||null==i.Status)return new d.tp(y.OtherError,"Cannot get turn on behaviour - unknown error.");if(i.Status!==b.qb.OK)return new d.tp(y.OtherError,`Cannot get turn on behaviour - controller responded with error code: ${i.Status}.`);if(null==i.Data)return new d.tp(y.NoData,"Cannot get turn on behaviour - no data in response.");const r=new S;return r.BlindPosition=i.Data.BlindPosition,r.Channel=i.Data.Channel,r.State=i.Data.State,r}catch(t){return new d.tp(y.OtherError,"Failed to retrieve turn on behaviour - unknown error.")}}))}SetTurnOnBehaviourAsync(t,e){var n;return A(this,void 0,void 0,(function*(){try{const i=new L;i.DeviceGuid=t.Guid,i.Channel=e.Channel,i.BlindPosition=e.BlindPosition,i.State=e.State;const r=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new W(i),8e3,!1);return null==r||null==r.Status?(this._logger.Error("Failed to set turn on behaviour - unknow error."),b.qb.FatalError):(r.Status!==b.qb.OK&&this._logger.Error(`Failed to set turn on behaviour, response status: ${r.Status}`),r.Status)}catch(t){return b.qb.FatalError}}))}IsCalibrationRunningAsync(){var t;return A(this,void 0,void 0,(function*(){const e=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new _,8e3,!1);return null==e||null==e.Status||e.Status!==b.qb.OK||null==e.Data?new d.tp(y.CannotCheckIfCalibrationsIsRunning,"Calibration failed - it is not possible to check whether any cabling is running."):e.Data}))}}O.ServiceName="BlindConfigService",function(t){t.OtherError="OtherError",t.InvalidChannelNumber="InvalidChannelNumber",t.DeviceNotResponding="DeviceNotResponding",t.CalibrationCancelled="CalibrationCancelled",t.Timeout="Timeout",t.IncorrectResponse="IncorrectResponse",t.CannotCheckIfCalibrationsIsRunning="CannotCheckIfCalibrationsIsRunning",t.CalibrationsIsCurrentlyRunning="CalibrationsIsCurrentlyRunning",t.InputOutputNotFound="InputOutputNotFound",t.NoData="NoData",t.WrongStepOfOperation="WrongStepOfOperation"}(y||(y={}));class x extends b.NE{constructor(t){super(),this.Resource="/extafree2/blind/calibration/auto",this.Method=b.n$.Get,this.Data=t}}class D extends b.NE{constructor(t){super(),this.Resource="/extafree2/blind/calibration/stop",this.Method=b.n$.Get,this.Data=t}}class _ extends b.NE{constructor(){super(),this.Resource="/extafree2/blind/calibration/isrunning",this.Method=b.n$.Get,this.Data=null}}class T{constructor(){this.StepAFinished=!1,this.StepBFinished=!1,this.StepCFinished=!1,this.StepBAFinished=!1,this.StepCAFinished=!1,this.OpeningStartTime=0,this.OpeningEndTime=0,this.ClosingStartTime=0,this.ClosingEndTime=0}}class F{constructor(){this.DeviceGuid="",this.Correction=0}}class N extends b.NE{constructor(t,e){super(),this.Resource="LOWER"==e?"/extalife/device/blind/correction/lower":"/extalife/device/blind/correction/upper",this.Method=b.n$.Get,this.Data=t}}class R extends b.NE{constructor(t,e){super(),this.Resource="LOWER"==e?"/extalife/device/blind/correction/lower":"/extalife/device/blind/correction/upper",this.Method=b.n$.Put,this.Data=t}}class I extends f{constructor(){super(...arguments),this.DeviceGuid=""}}class B extends b.NE{constructor(t){super(),this.Resource="/extalife/device/parameters/comfort/position",this.Method=b.n$.Get,this.Data=t}}class G extends b.NE{constructor(t){super(),this.Resource="/extalife/device/parameters/comfort/position",this.Method=b.n$.Put,this.Data=t}}class q extends b.NE{constructor(t){super(),this.Resource="/extalife/device/blind/relays/swap",this.Method=b.n$.Get,this.Data=t}}class k extends b.NE{constructor(t){super(),this.Resource="/extalife/device/parameters/input/output",this.Method=b.n$.Get,this.Data=t}}class P extends g{constructor(){super(...arguments),this.DeviceGuid=""}}class M extends b.NE{constructor(t){super(),this.Resource="/extalife/device/parameters/input/output",this.Method=b.n$.Put,this.Data=t}}class $ extends b.NE{constructor(t){super(),this.Resource="/extalife/device/parameters/state/turnon",this.Method=b.n$.Get,this.Data=t}}class W extends b.NE{constructor(t){super(),this.Resource="/extalife/device/parameters/state/turnon",this.Method=b.n$.Put,this.Data=t}}class L extends S{constructor(){super(...arguments),this.DeviceGuid=""}}},6532:(t,e,n)=>{n.d(e,{W:()=>r,_:()=>i});class i{constructor(t){this.DeviceGuid="",this.DeviceGuid=t}}class r{constructor(t,e){this.DeviceGuid="",this.Channel=0,this.DeviceGuid=t,this.Channel=e}}}}]);
//# sourceMappingURL=701-exalushome-extalife.bundle.js.map