UNPKG

lavva.exalushome.extalife

Version:

Library implementing communication and abstraction layers for ExtaLife API in ExalusHome system

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