More robust geofence checking
This commit is contained in:
1 parent
42b80868d4
commit
9bdfa89b7c
7 files changed
+44
-36
No files matched your search
@@ -36,17 +36,13 @@ def trigger(hass, config, action):
|
||||
def zone_automation_listener(entity, from_s, to_s):
|
||||
""" Listens for state changes and calls action. """
|
||||
if from_s and None in (from_s.attributes.get(ATTR_LATITUDE),
|
||||
from_s.attributes.get(ATTR_LONGITUDE)):
|
||||
from_s.attributes.get(ATTR_LONGITUDE)) or \
|
||||
None in (to_s.attributes.get(ATTR_LATITUDE),
|
||||
to_s.attributes.get(ATTR_LONGITUDE)):
|
||||
return
|
||||
|
||||
if None in (to_s.attributes.get(ATTR_LATITUDE),
|
||||
to_s.attributes.get(ATTR_LONGITUDE)):
|
||||
return
|
||||
|
||||
from_zone = _in_zone(hass, from_s) if from_s else None
|
||||
to_zone = _in_zone(hass, to_s)
|
||||
from_match = from_zone and from_zone.entity_id == zone_entity_id
|
||||
to_match = to_zone and to_zone.entity_id == zone_entity_id
|
||||
from_match = _in_zone(hass, zone_entity_id, from_s) if from_s else None
|
||||
to_match = _in_zone(hass, zone_entity_id, to_s)
|
||||
|
||||
if event == EVENT_ENTER and not from_match and to_match or \
|
||||
event == EVENT_LEAVE and from_match and not to_match:
|
||||
@@ -71,22 +67,19 @@ def if_action(hass, config):
|
||||
|
||||
def if_in_zone():
|
||||
""" Test if condition. """
|
||||
state = hass.states.get(entity_id)
|
||||
|
||||
if not state or None in (state.attributes.get(ATTR_LATITUDE),
|
||||
state.attributes.get(ATTR_LONGITUDE)):
|
||||
return
|
||||
|
||||
cur_zone = _in_zone(hass, state)
|
||||
|
||||
return cur_zone and cur_zone.entity_id == zone_entity_id
|
||||
return _in_zone(hass, zone_entity_id, hass.states.get(entity_id))
|
||||
|
||||
return if_in_zone
|
||||
|
||||
|
||||
def _in_zone(hass, state):
|
||||
def _in_zone(hass, zone_entity_id, state):
|
||||
""" Check if state is in zone. """
|
||||
return zone.in_zone(
|
||||
hass, state.attributes.get(ATTR_LATITUDE),
|
||||
if not state or None in (state.attributes.get(ATTR_LATITUDE),
|
||||
state.attributes.get(ATTR_LONGITUDE)):
|
||||
return False
|
||||
|
||||
zone_state = hass.states.get(zone_entity_id)
|
||||
return zone_state and zone.in_zone(
|
||||
zone_state, state.attributes.get(ATTR_LATITUDE),
|
||||
state.attributes.get(ATTR_LONGITUDE),
|
||||
state.attributes.get(ATTR_GPS_ACCURACY, 0))
|
||||
@@ -364,7 +364,8 @@ class Device(Entity):
|
||||
elif self.location_name:
|
||||
self._state = self.location_name
|
||||
elif self.gps is not None:
|
||||
zone_state = zone.in_zone(self.hass, self.gps[0], self.gps[1])
|
||||
zone_state = zone.active_zone(self.hass, self.gps[0], self.gps[1],
|
||||
self.gps_accuracy)
|
||||
if zone_state is None:
|
||||
self._state = STATE_NOT_HOME
|
||||
elif zone_state.entity_id == zone.ENTITY_ID_HOME:
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
""" DO NOT MODIFY. Auto-generated by build_frontend script """
|
||||
VERSION = "8d460d7298e41397b4f94ef103b2a067"
|
||||
VERSION = "c4722afa376379bc4457d54bb9a38cee"
|
||||
@@ -5636,7 +5636,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
|
||||
}
|
||||
iron-image {
|
||||
border-radius: 50%;
|
||||
}</style><template><div class="marker"><template is="dom-if" if="[[value]]">[[value]]</template><template is="dom-if" if="[[image]]"><iron-image sizing="cover" class="fit" src="[[image]]"></iron-image></template></div></template></dom-module><dom-module id="partial-map" assetpath="layouts/"><style>.map {
|
||||
}</style><template><div class="marker"><template is="dom-if" if="[[icon]]"><iron-icon icon="[[icon]]"></iron-icon></template><template is="dom-if" if="[[value]]">[[value]]</template><template is="dom-if" if="[[image]]"><iron-image sizing="cover" class="fit" src="[[image]]"></iron-image></template></div></template></dom-module><dom-module id="partial-map" assetpath="layouts/"><style>.map {
|
||||
position: relative;
|
||||
}</style><template><div class="layout vertical fit"><paper-toolbar><paper-icon-button icon="menu" class$="[[computeMenuButtonClass(narrow, showMenu)]]" on-tap="toggleMenu"></paper-icon-button><div class="title">Map</div></paper-toolbar><div class="flex map"><leaflet-map class="fit" fit-to-markers="" id="map" max-zoom="17"><leaflet-tilelayer detect-retina="" max-zoom="18" url="http://otile1.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.png">© <a href="/copyright">OpenStreetMap contributors</a>. Tiles courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> <img src="https://developer.mapquest.com/content/osm/mq_logo.png"></leaflet-tilelayer><template is="dom-repeat" items="[[zoneEntities]]"><leaflet-divicon id="[[item.entityId]]" icon-width="24" icon-height="24"><template is="dom-if" if="[[item.attributes.icon]]"><iron-icon icon$="[[item.attributes.icon]]"></iron-icon></template><template is="dom-if" if="[[!item.attributes.icon]]">[[item.entityDisplay]]</template></leaflet-divicon><leaflet-marker latitude="[[item.attributes.latitude]]" icon="[[item.entityId]]" longitude="[[item.attributes.longitude]]" title="[[item.entityDisplay]]" no-clickable=""></leaflet-marker><leaflet-circle latitude="[[item.attributes.latitude]]" longitude="[[item.attributes.longitude]]" no-clickable="" radius="[[item.attributes.radius]]" fill="" color="#FF9800"></leaflet-circle></template><template is="dom-repeat" items="[[locationEntities]]"><leaflet-divicon id="[[item.entityId]]" icon-height="45" icon-width="45"><ha-entity-marker entity-id$="[[item.entityId]]"></ha-entity-marker></leaflet-divicon><leaflet-marker latitude="[[item.attributes.latitude]]" icon="[[item.entityId]]" longitude="[[item.attributes.longitude]]" title="[[item.entityDisplay]]"></leaflet-marker><template is="dom-if" if="[[item.attributes.gps_accuracy]]"><leaflet-circle latitude="[[item.attributes.latitude]]" longitude="[[item.attributes.longitude]]" no-clickable="" radius="[[item.attributes.gps_accuracy]]" fill="" color="#0288D1"></leaflet-circle></template></template></leaflet-map></div></div></template></dom-module><dom-module id="iron-autogrow-textarea" assetpath="../bower_components/iron-autogrow-textarea/"><style>:host {
|
||||
display: inline-block;
|
||||
@@ -6554,7 +6554,7 @@ paper-ripple {
|
||||
|
||||
.dev-tools {
|
||||
padding: 0 8px;
|
||||
}</style><template><paper-header-panel mode="scroll" class="sidenav fit"><paper-toolbar><paper-icon-button icon="menu" hidden$="[[!narrow]]" on-tap="toggleMenu"></paper-icon-button><div class="title">Home Assistant</div></paper-toolbar><div class="menu"><paper-icon-item on-click="menuClicked" data-panel="states"><iron-icon item-icon="" icon="apps"></iron-icon>States</paper-icon-item><template is="dom-if" if="[[hasHistoryComponent]]"><paper-icon-item on-click="menuClicked" data-panel="history"><iron-icon item-icon="" icon="assessment"></iron-icon>History</paper-icon-item></template><template is="dom-if" if="[[hasLogbookComponent]]"><paper-icon-item on-click="menuClicked" data-panel="logbook"><iron-icon item-icon="" icon="list"></iron-icon>Logbook</paper-icon-item></template><paper-icon-item on-click="menuClicked" data-panel="map"><iron-icon item-icon="" icon="maps:person-pin"></iron-icon>Map</paper-icon-item><paper-icon-item on-click="menuClicked" data-panel="logout" class="logout"><iron-icon item-icon="" icon="exit-to-app"></iron-icon>Log Out</paper-icon-item><paper-item class="divider horizontal layout justified"><div>Streaming updates</div><stream-status></stream-status></paper-item><div class="text label divider">Developer Tools</div><div class="dev-tools layout horizontal justified"><paper-icon-button icon="settings-remote" data-panel="devService" on-click="handleDevClick"></paper-icon-button><paper-icon-button icon="settings-ethernet" data-panel="devState" on-click="handleDevClick"></paper-icon-button><paper-icon-button icon="settings-input-antenna" data-panel="devEvent" on-click="handleDevClick"></paper-icon-button></div></div></paper-header-panel></template></dom-module><dom-module id="home-assistant-main" assetpath="layouts/"><template><notification-manager></notification-manager><more-info-dialog></more-info-dialog><iron-media-query query="(max-width: 870px)" query-matches="{{narrow}}"></iron-media-query><paper-drawer-panel id="drawer" force-narrow="[[computeForceNarrow(narrow, showSidebar)]]" responsive-width="0" disable-swipe="[[isSelectedMap]]" disable-edge-swipe="[[isSelectedMap]]"><ha-sidebar drawer=""></ha-sidebar><template is="dom-if" if="[[isSelectedStates]]"><partial-zone main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-zone></template><template is="dom-if" if="[[isSelectedLogbook]]"><partial-logbook main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-logbook></template><template is="dom-if" if="[[isSelectedHistory]]"><partial-history main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-history></template><template is="dom-if" if="[[isSelectedMap]]"><partial-map main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-map></template><template is="dom-if" if="[[isSelectedDevService]]"><partial-dev-call-service main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-dev-call-service></template><template is="dom-if" if="[[isSelectedDevEvent]]"><partial-dev-fire-event main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-dev-fire-event></template><template is="dom-if" if="[[isSelectedDevState]]"><partial-dev-set-state main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-dev-set-state></template></paper-drawer-panel></template></dom-module></div><dom-module id="home-assistant"><style>:host {
|
||||
}</style><template><paper-header-panel mode="scroll" class="sidenav fit"><paper-toolbar><paper-icon-button icon="menu" hidden$="[[!narrow]]" on-tap="toggleMenu"></paper-icon-button><div class="title">Home Assistant</div></paper-toolbar><div class="menu"><paper-icon-item on-click="menuClicked" data-panel="states"><iron-icon item-icon="" icon="apps"></iron-icon>States</paper-icon-item><paper-icon-item on-click="menuClicked" data-panel="map"><iron-icon item-icon="" icon="maps:person-pin"></iron-icon>Map</paper-icon-item><template is="dom-if" if="[[hasHistoryComponent]]"><paper-icon-item on-click="menuClicked" data-panel="history"><iron-icon item-icon="" icon="assessment"></iron-icon>History</paper-icon-item></template><template is="dom-if" if="[[hasLogbookComponent]]"><paper-icon-item on-click="menuClicked" data-panel="logbook"><iron-icon item-icon="" icon="list"></iron-icon>Logbook</paper-icon-item></template><paper-icon-item on-click="menuClicked" data-panel="logout" class="logout"><iron-icon item-icon="" icon="exit-to-app"></iron-icon>Log Out</paper-icon-item><paper-item class="divider horizontal layout justified"><div>Streaming updates</div><stream-status></stream-status></paper-item><div class="text label divider">Developer Tools</div><div class="dev-tools layout horizontal justified"><paper-icon-button icon="settings-remote" data-panel="devService" on-click="handleDevClick"></paper-icon-button><paper-icon-button icon="settings-ethernet" data-panel="devState" on-click="handleDevClick"></paper-icon-button><paper-icon-button icon="settings-input-antenna" data-panel="devEvent" on-click="handleDevClick"></paper-icon-button></div></div></paper-header-panel></template></dom-module><dom-module id="home-assistant-main" assetpath="layouts/"><template><notification-manager></notification-manager><more-info-dialog></more-info-dialog><iron-media-query query="(max-width: 870px)" query-matches="{{narrow}}"></iron-media-query><paper-drawer-panel id="drawer" force-narrow="[[computeForceNarrow(narrow, showSidebar)]]" responsive-width="0" disable-swipe="[[isSelectedMap]]" disable-edge-swipe="[[isSelectedMap]]"><ha-sidebar drawer=""></ha-sidebar><template is="dom-if" if="[[isSelectedStates]]"><partial-zone main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-zone></template><template is="dom-if" if="[[isSelectedLogbook]]"><partial-logbook main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-logbook></template><template is="dom-if" if="[[isSelectedHistory]]"><partial-history main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-history></template><template is="dom-if" if="[[isSelectedMap]]"><partial-map main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-map></template><template is="dom-if" if="[[isSelectedDevService]]"><partial-dev-call-service main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-dev-call-service></template><template is="dom-if" if="[[isSelectedDevEvent]]"><partial-dev-fire-event main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-dev-fire-event></template><template is="dom-if" if="[[isSelectedDevState]]"><partial-dev-set-state main="" narrow="[[narrow]]" show-menu="[[showSidebar]]"></partial-dev-set-state></template></paper-drawer-panel></template></dom-module></div><dom-module id="home-assistant"><style>:host {
|
||||
font-family: 'Roboto', 'Noto', sans-serif;
|
||||
font-weight: 300;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
@@ -6564,7 +6564,7 @@ paper-ripple {
|
||||
console.group&&(console.groupCollapsed("Dispatch: %s",t),console.group("payload"),console.debug(e),console.groupEnd())},e.dispatchError=function(t){console.group&&(console.debug("Dispatch error: "+t),console.groupEnd())},e.storeHandled=function(t,e,n){console.group&&e!==n&&console.debug("Store "+t+" handled action")},e.dispatchEnd=function(t){console.group&&(console.debug("Dispatch done, new state: ",t.toJS()),console.groupEnd())}},function(t,e,n){function r(t,e){this.__prevState=t,this.__evaluator=e,this.__prevValues=i.Map(),this.__observers=[]}var i=n(2),o=n(7),u=n(8);Object.defineProperty(r.prototype,"notifyObservers",{writable:!0,configurable:!0,value:function(t){if(this.__observers.length>0){var e=i.Map();this.__observers.forEach(function(n){var r,i=n.getter,a=o(i),s=this.__prevState;this.__prevValues.has(a)?r=this.__prevValues.get(a):(r=this.__evaluator.evaluate(s,i),this.__prevValues=this.__prevValues.set(a,r));var c=this.__evaluator.evaluate(t,i);u(r,c)||(n.handler.call(null,c),e=e.set(a,c))}.bind(this)),this.__prevValues=e}this.__prevState=t}}),Object.defineProperty(r.prototype,"onChange",{writable:!0,configurable:!0,value:function(t,e){var n={getter:t,handler:e};return this.__observers.push(n),function(){var t=this.__observers.indexOf(n);t>-1&&this.__observers.splice(t,1)}.bind(this)}}),Object.defineProperty(r.prototype,"reset",{writable:!0,configurable:!0,value:function(t){this.__prevState=t,this.__prevValues=i.Map(),this.__observers=[]}}),t.exports=r},function(t,e,n){var r=n(2);t.exports=function(t,e){if(t.hasOwnProperty("__hashCode"))return t.__hashCode;var n=r.fromJS(t).hashCode();return e||(Object.defineProperty(t,"__hashCode",{enumerable:!1,configurable:!1,writable:!1,value:n}),Object.freeze(t)),n}},function(t,e,n){var r=n(2);t.exports=function(t,e){return r.is(t,e)}},function(t,e,n){function r(t){return s(t)&&a(t[t.length-1])}function i(t){return t[t.length-1]}function o(t){return t.slice(0,t.length-1)}function u(t){if(!c(t))throw new Error("Cannot create Getter from KeyPath: "+t);return[t,l]}var a=n(3).isFunction,s=n(3).isArray,c=n(10).isKeyPath,l=function(t){return t};t.exports={isGetter:r,getComputeFn:i,getDeps:o,fromKeyPath:u}},function(t,e,n){var r=n(3).isArray,i=n(3).isFunction;e.isKeyPath=function(t){return r(t)&&!i(t[t.length-1])}},function(t,e,n){function r(){this.__cachedGetters=i.Map({})}var i=n(2),o=n(1).toImmutable,u=n(7),a=n(8),s=n(9).getComputeFn,c=n(9).getDeps,l=n(10).isKeyPath,f=n(9).isGetter,d=!1;Object.defineProperty(r.prototype,"evaluate",{writable:!0,configurable:!0,value:function(t,e){if(l(e))return t.getIn(e);if(!f(e))throw new Error("evaluate must be passed a keyPath or Getter");var n=u(e);if(this.__isCached(t,e))return this.__cachedGetters.getIn([n,"value"]);var r=c(e).map(function(e){return this.evaluate(t,e)}.bind(this));if(this.__hasStaleValue(t,e)){var i=this.__cachedGetters.getIn([n,"args"]);if(a(i,o(r))){var p=this.__cachedGetters.getIn([n,"value"]);return this.__cacheValue(t,e,i,p),p}}if(d===!0)throw d=!1,new Error("Evaluate may not be called within a Getters computeFn");var h;d=!0;try{h=s(e).apply(null,r),d=!1}catch(v){throw d=!1,v}return this.__cacheValue(t,e,r,h),h}}),Object.defineProperty(r.prototype,"__hasStaleValue",{writable:!0,configurable:!0,value:function(t,e){var n=u(e),r=this.__cachedGetters;return r.has(n)&&r.getIn([n,"stateHashCode"])!==t.hashCode()}}),Object.defineProperty(r.prototype,"__cacheValue",{writable:!0,configurable:!0,value:function(t,e,n,r){var a=u(e);this.__cachedGetters=this.__cachedGetters.set(a,i.Map({value:r,args:o(n),stateHashCode:t.hashCode()}))}}),Object.defineProperty(r.prototype,"__isCached",{writable:!0,configurable:!0,value:function(t,e){var n=u(e);return this.__cachedGetters.hasIn([n,"value"])&&this.__cachedGetters.getIn([n,"stateHashCode"])===t.hashCode()}}),Object.defineProperty(r.prototype,"untrack",{writable:!0,configurable:!0,value:function(t){}}),Object.defineProperty(r.prototype,"reset",{writable:!0,configurable:!0,value:function(){this.__cachedGetters=i.Map({})}}),t.exports=r},function(t,e,n){function r(t,e){var n={};return i(e,function(e,r){n[r]=t.evaluate(e)}),n}var i=n(3).each;t.exports=function(t){return{getInitialState:function(){return r(t,this.getDataBindings())},componentDidMount:function(){var e=this;e.__unwatchFns=[],i(this.getDataBindings(),function(n,r){var i=t.observe(n,function(t){var n={};n[r]=t,e.setState(n)});e.__unwatchFns.push(i)})},componentWillUnmount:function(){for(;this.__unwatchFns.length;)this.__unwatchFns.shift()()}}}},function(t,e,n){function r(t){return this instanceof r?(this.__handlers=o({}),t&&u(this,t),void this.initialize()):new r(t)}function i(t){return t instanceof r}var o=n(2).Map,u=n(3).extend,a=n(1).toJS,s=n(1).toImmutable;Object.defineProperty(r.prototype,"initialize",{writable:!0,configurable:!0,value:function(){}}),Object.defineProperty(r.prototype,"getInitialState",{writable:!0,configurable:!0,value:function(){return o()}}),Object.defineProperty(r.prototype,"handle",{wriLine truncated
|
||||
}function bt(t){var e,n,r,i,o=[];if(!t._d){for(r=gt(t),t._w&&null==t._a[cr]&&null==t._a[sr]&&Ot(t),t._dayOfYear&&(i=mt(t._a[ar],r[ar]),t._dayOfYear>at(i)&&(l(t)._overflowDayOfYear=!0),n=ut(i,0,t._dayOfYear),t._a[sr]=n.getUTCMonth(),t._a[cr]=n.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=o[e]=r[e];for(;7>e;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[lr]&&0===t._a[fr]&&0===t._a[dr]&&0===t._a[pr]&&(t._nextDay=!0,t._a[lr]=0),t._d=(t._useUTC?ut:ot).apply(null,o),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[lr]=24)}}function Ot(t){var e,n,r,i,o,u,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(o=1,u=4,n=mt(e.GG,t._a[ar],lt(Dt(),1,4).year),r=mt(e.W,1),i=mt(e.E,1)):(o=t._locale._week.dow,u=t._locale._week.doy,n=mt(e.gg,t._a[ar],lt(Dt(),o,u).year),r=mt(e.w,1),null!=e.d?(i=e.d,o>i&&++r):i=null!=e.e?e.e+o:o),a=_t(n,r,i,u,o),t._a[ar]=a.year,t._dayOfYear=a.dayOfYear}function wt(t){if(t._f===e.ISO_8601)return void rt(t);t._a=[],l(t).empty=!0;var n,r,i,o,u,a=""+t._i,s=a.length,c=0;for(i=z(t._f,t._locale).match(Gn)||[],n=0;n<i.length;n++)o=i[n],r=(a.match(G(o,t))||[])[0],r&&(u=a.substr(0,a.indexOf(r)),u.length>0&&l(t).unusedInput.push(u),a=a.slice(a.indexOf(r)+r.length),c+=r.length),Bn[o]?(r?l(t).empty=!1:l(t).unusedTokens.push(o),V(o,r,t)):t._strict&&!r&&l(t).unusedTokens.push(o);l(t).charsLeftOver=s-c,a.length>0&&l(t).unusedInput.push(a),l(t).bigHour===!0&&t._a[lr]<=12&&t._a[lr]>0&&(l(t).bigHour=void 0),t._a[lr]=St(t._locale,t._a[lr],t._meridiem),bt(t),Q(t)}function St(t,e,n){var r;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?(r=t.isPM(n),r&&12>e&&(e+=12),r||12!==e||(e=0),e):e}function Mt(t){var e,n,r,i,o;if(0===t._f.length)return l(t).invalidFormat=!0,void(t._d=new Date(NaN));for(i=0;i<t._f.length;i++)o=0,e=p({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[i],wt(e),f(e)&&(o+=l(e).charsLeftOver,o+=10*l(e).unusedTokens.length,l(e).score=o,(null==r||r>o)&&(r=o,n=e));a(t,n||e)}function jt(t){if(!t._d){var e=I(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],bt(t)}}function Tt(t){var e=new h(Q(Et(t)));return e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e}function Et(t){var e=t._i,n=t._f;return t._locale=t._locale||j(t._l),null===e||void 0===n&&""===e?d({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),v(e)?new h(Q(e)):(r(n)?Mt(t):n?wt(t):i(e)?t._d=e:It(t),t))}function It(t){var n=t._i;void 0===n?t._d=new Date:i(n)?t._d=new Date(+n):"string"==typeof n?it(t):r(n)?(t._a=o(n.slice(0),function(t){return parseInt(t,10)}),bt(t)):"object"==typeof n?jt(t):"number"==typeof n?t._d=new Date(n):e.createFromInputFallback(t)}function Pt(t,e,n,r,i){var o={};return"boolean"==typeof n&&(r=n,n=void 0),o._isAMomentObject=!0,o._useUTC=o._isUTC=i,o._l=n,o._i=t,o._f=e,o._strict=r,Tt(o)}function Dt(t,e,n,r){return Pt(t,e,n,r,!1)}function Ct(t,e){var n,i;if(1===e.length&&r(e[0])&&(e=e[0]),!e.length)return Dt();for(n=e[0],i=1;i<e.length;++i)(!e[i].isValid()||e[i][t](n))&&(n=e[i]);return n}function At(){var t=[].slice.call(arguments,0);return Ct("isBefore",t)}function xt(){var t=[].slice.call(arguments,0);return Ct("isAfter",t)}function kt(t){var e=I(t),n=e.year||0,r=e.quarter||0,i=e.month||0,o=e.week||0,u=e.day||0,a=e.hour||0,s=e.minute||0,c=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*c+6e4*s+36e5*a,this._days=+u+7*o,this._months=+i+3*r+12*n,this._data={},this._locale=j(),this._bubble()}function Lt(t){return t instanceof kt}function Nt(t,e){k(t,0,0,function(){var t=this.utcOffset(),n="+";return 0>t&&(t=-t,n="-"),n+x(~~(t/60),2)+e+x(~~t%60,2)})}function Rt(t){var e=(t||"").match(nr)||[],n=e[e.length-1]||[],r=(n+"").match(jr)||["-",0,0],i=+(60*r[1])+y(r[2]);return"+"===r[0]?i:-i}function zt(t,n){var r,o;return n._isUTC?(r=n.clone(),o=(v(t)||i(t)?+t:+Dt(t))-+r,r._d.setTime(+r._d+o),e.updateOffset(r,!1),r):Dt(t).local()}function Ht(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Yt(t,n){var r,i=this._offset||0;return null!=t?("string"==typeof t&&(t=Rt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&n&&(r=Ht(this)),this._offset=t,this._isUTC=!0,null!=r&&this.add(r,"m"),i!==t&&(!n||this._changeInProgress?ne(this,Zt(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?i:Ht(this)}function Gt(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Ft(t){return this.utcOffset(0,t)}function Ut(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ht(this),"m")),this}function Bt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Rt(this._i)),this}function Vt(t){return t=t?Dt(t).utcOffset():0,(this.utcOffset()-t)%60===0}function qt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Wt(){if("undefined"!=typeof this._isDSTShifted)return this._isDSTShifted;var Line truncated
|
||||
function n(t){return!!t&&"object"==typeof t}t.exports=n},function(t,e,n){"use strict";function r(t){return i(t)&&a.call(t)==o}var i=n(69),o="[object Function]",u=Object.prototype,a=u.toString;t.exports=r},function(t,e){"use strict";function n(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=["isLoadingEntityHistory"];e.isLoadingEntityHistory=i;var o=["currentEntityHistoryDate"];e.currentDate=o;var u=["entityHistory"];e.entityHistoryMap=u;var a=[o,u,function(t,e){return e.get(t)||r.toImmutable({})}];e.entityHistoryForCurrentDate=a;var s=[o,u,function(t,e){return!!e.get(t)}];e.hasDataForCurrentDate=s;var c=["recentEntityHistory"];e.recentEntityHistoryMap=c;var l=["recentEntityHistory"];e.recentEntityHistoryUpdatedMap=l},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({currentEntityHistoryDate:a["default"],entityHistory:c["default"],isLoadingEntityHistory:f["default"],recentEntityHistory:p["default"],recentEntityHistoryUpdated:v["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(199),a=i(u),s=n(200),c=i(s),l=n(201),f=i(l),d=n(202),p=i(d),h=n(203),v=i(h),_=n(198),y=r(_),m=n(70),g=r(m),b=y;e.actions=b;var O=g;e.getters=O},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),u=function(t,e,n){for(var r=!0;r;){var i=t,o=e,u=n;a=c=s=void 0,r=!1,null===i&&(i=Function.prototype);var a=Object.getOwnPropertyDescriptor(i,o);if(void 0!==a){if("value"in a)return a.value;var s=a.get;return void 0===s?void 0:s.call(u)}var c=Object.getPrototypeOf(i);if(null===c)return void 0;t=c,e=o,n=u,r=!0}},a=n(3),s=n(7),c="event",l=new a.Immutable.Record({event:null,listenerCount:0},"Event"),f=function(t){function e(t){var n=arguments.length<=1||void 0===arguments[1]?0:arguments[1];r(this,e),u(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,{event:t,listenerCount:n})}return i(e,t),o(e,null,[{key:"entity",value:c,enumerable:!0}]),o(e,[{key:"id",get:function(){return this.event}}],[{key:"fetchAll",value:function(t){return s.callApi(t,"GET","events")}},{key:"fromJSON",value:function(t){var n=t.event,r=t.listener_count;return new e(n,r)}}]),e}(l);e["default"]=f,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(5),o=r(i);e["default"]=o["default"]({SELECT_ENTITY:null,LOG_OUT:null}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({moreInfoEntityId:a["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(218),a=i(u),s=n(216),c=r(s),l=n(217),f=r(l),d=c;e.actions=d;var p=f;e.getters=p},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){t.dispatch(a["default"].SHOW_SIDEBAR,{show:e})}function o(t,e){t.dispatch(a["default"].NAVIGATE,{pane:e})}Object.defineProperty(e,"__esModule",{value:!0}),e.showSidebar=i,e.navigate=o;var u=n(40),a=r(u)},function(t,e){"use strict";function n(t){return[r,function(e){return e===t}]}Object.defineProperty(e,"__esModule",{value:!0}),e.isActivePane=n;var r=["selectedNavigationPanel"];e.activePane=r;var i=[["showSidebar"],function(t){return!!t}];e.showSidebar=i},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({selectedNavigationPanel:a["default"],showSidebar:c["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(219),a=i(u),s=n(220),c=i(s),l=n(75),f=r(l),d=n(76),p=r(d),h=n(221),v=r(h),_=f;e.actions=_;var y=p;e.getters=y;var m=v;e.urlSync=m},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?Line truncated
|
||||
camera:60};e["default"]=new a["default"]({is:"ha-zone-cards",properties:{showIntroduction:{type:Boolean,value:!1},columns:{type:Number,value:2},states:{type:Object},cards:{type:Object,computed:"computeDomains(columns, states, showIntroduction)"}},computeDomains:function(t,e,n){function r(t){return t.filter(function(t){return!(t.entityId in l)})}function u(){var e=p;return p=(p+1)%t,e}function a(t,e){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];0!==e.length&&(f._columns[u()].push(t),f[t]={entities:e,groupEntity:n})}for(var c=e.groupBy(function(t){return t.domain}),l={},f={_demo:!1,_badges:[],_columns:[]},d=0;t>d;d++)f._columns[d]=[];var p=0;return n&&u(),c.keySeq().sortBy(function(t){return i(t)}).forEach(function(t){if("a"===t)return void(f._demo=!0);var n=i(t);n>=0&&10>n?f._badges.push.apply(f._badges,r(c.get(t)).sortBy(o).toArray()):"group"===t?c.get(t).filter(function(t){return!t.attributes.auto}).sortBy(o).forEach(function(t){var n=s.util.expandGroup(t,e);n.forEach(function(t){return l[t.entityId]=!0}),a(t.entityDisplay,n.toArray(),t)}):a(t,r(c.get(t)).sortBy(o).toArray())}),f},computeShouldRenderColumn:function(t,e){return 0===t||e.length},computeShowIntroduction:function(t,e,n){return 0===t&&(e||n._demo)},computeShowHideInstruction:function(t,e){return t.size>0&&!0&&!e._demo},computeGroupEntityOfCard:function(t,e){return t[e].groupEntity},computeStatesOfCard:function(t,e){return t[e].entities}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(29),n(135),n(60),e["default"]=new u["default"]({is:"logbook-entry",entityClicked:function(t){t.preventDefault(),i.moreInfoActions.selectEntity(this.entryObj.entityId)}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(29),e["default"]=new u["default"]({is:"services-list",behaviors:[s["default"]],properties:{serviceDomains:{type:Array,bindNuclear:i.serviceGetters.entityMap}},computeDomains:function(t){return t.valueSeq().map(function(t){return t.domain}).sort().toJS()},computeServices:function(t,e){return t.get(e).get("services").keySeq().toArray()},serviceClicked:function(t){t.preventDefault(),this.fire("service-selected",{domain:t.model.domain,service:t.model.service})}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(91),o=r(i),u=n(87),a=r(u),s=n(89),c=r(s),l=n(92),f=r(l),d=n(1),p=r(d);e["default"]=new p["default"]({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){if(this.isAttached){for(var t=p["default"].dom(this),e=this.unit,n=this.data;t.lastChild;)t.removeChild(t.lastChild);if(0!==n.length){var r=new google.visualization.LineChart(this),i=new google.visualization.DataTable;i.addColumn({type:"datetime",id:"Time"});var u={legend:{position:"top"},titlePosition:"none",vAxes:{0:{title:e}},hAxis:{format:"H:mm"},lineWidth:1,chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}};this.isSingleDevice&&(u.legend.position="none",u.vAxes[0].title=null,u.chartArea.left=40,u.chartArea.height="80%",u.chartArea.top=5,u.enableInteractivity=!1);var s=o["default"](a["default"](n),"lastChangedAsDate");s=f["default"](c["default"](s,function(t){return t.getTime()}));for(var l=[],d=new Array(n.length),h=0;h<d.length;h++)d[h]=0;for(var v=1,_=new Date,h=0;h<s.length;h++){var y=new Date(s[h]);l.push([y].concat(d)),l.push([s[h]].concat(d)),v++}l.push([_].concat(d));var m=0;n.forEach(function(t){var e=t[t.length-1].attributes;i.addColumn("number",e.friendly_name);var n=0,r=0,o=0,u=0,a=l[0][0];t.forEach(function(t){n=t.state;var e=t.lastChangedAsDate;"None"===t.state&&(n=r);for(var i=o;i<l.length;i++){if(l[i][1+m]=parseFloat(r),a.getTime()===l[i][0].getTime()&&l[i][0].getTime()===e.getTime()){l[i][1+m]=parseFloat(n),o=i,a=l[i][0];break}a=l[i][0]}r=n,u++});for(var s=o;s<l.length;s++)l[s][1+m]=parseFloat(r);m++}),i.addRows(l),r.draw(i,u)}}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"state-history-chart-timeline",properties:{data:{type:Object,observer:"dataChanged"},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){funLine truncated
|
||||
camera:60};e["default"]=new a["default"]({is:"ha-zone-cards",properties:{showIntroduction:{type:Boolean,value:!1},columns:{type:Number,value:2},states:{type:Object},cards:{type:Object,computed:"computeDomains(columns, states, showIntroduction)"}},computeDomains:function(t,e,n){function r(t){return t.filter(function(t){return!(t.entityId in l)})}function u(){var e=p;return p=(p+1)%t,e}function a(t,e){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2];0!==e.length&&(f._columns[u()].push(t),f[t]={entities:e,groupEntity:n})}for(var c=e.groupBy(function(t){return t.domain}),l={},f={_demo:!1,_badges:[],_columns:[]},d=0;t>d;d++)f._columns[d]=[];var p=0;return n&&u(),c.keySeq().sortBy(function(t){return i(t)}).forEach(function(t){if("a"===t)return void(f._demo=!0);var n=i(t);n>=0&&10>n?f._badges.push.apply(f._badges,r(c.get(t)).sortBy(o).toArray()):"group"===t?c.get(t).filter(function(t){return!t.attributes.auto}).sortBy(o).forEach(function(t){var n=s.util.expandGroup(t,e);n.forEach(function(t){return l[t.entityId]=!0}),a(t.entityDisplay,n.toArray(),t)}):a(t,r(c.get(t)).sortBy(o).toArray())}),f},computeShouldRenderColumn:function(t,e){return 0===t||e.length},computeShowIntroduction:function(t,e,n){return 0===t&&(e||n._demo)},computeShowHideInstruction:function(t,e){return t.size>0&&!0&&!e._demo},computeGroupEntityOfCard:function(t,e){return t[e].groupEntity},computeStatesOfCard:function(t,e){return t[e].entities}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(29),n(135),n(60),e["default"]=new u["default"]({is:"logbook-entry",entityClicked:function(t){t.preventDefault(),i.moreInfoActions.selectEntity(this.entryObj.entityId)}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(29),e["default"]=new u["default"]({is:"services-list",behaviors:[s["default"]],properties:{serviceDomains:{type:Array,bindNuclear:i.serviceGetters.entityMap}},computeDomains:function(t){return t.valueSeq().map(function(t){return t.domain}).sort().toJS()},computeServices:function(t,e){return t.get(e).get("services").keySeq().toArray()},serviceClicked:function(t){t.preventDefault(),this.fire("service-selected",{domain:t.model.domain,service:t.model.service})}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(91),o=r(i),u=n(87),a=r(u),s=n(89),c=r(s),l=n(92),f=r(l),d=n(1),p=r(d);e["default"]=new p["default"]({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){if(this.isAttached){for(var t=p["default"].dom(this),e=this.unit,n=this.data;t.lastChild;)t.removeChild(t.lastChild);if(0!==n.length){var r=new google.visualization.LineChart(this),i=new google.visualization.DataTable;i.addColumn({type:"datetime",id:"Time"});var u={legend:{position:"top"},titlePosition:"none",vAxes:{0:{title:e}},hAxis:{format:"H:mm"},lineWidth:1,chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}};this.isSingleDevice&&(u.legend.position="none",u.vAxes[0].title=null,u.chartArea.left=40,u.chartArea.height="80%",u.chartArea.top=5,u.enableInteractivity=!1);var s=o["default"](a["default"](n),"lastChangedAsDate");s=f["default"](c["default"](s,function(t){return t.getTime()}));for(var l=[],d=new Array(n.length),h=0;h<d.length;h++)d[h]=0;for(var v=1,_=new Date,h=0;h<s.length;h++){var y=new Date(s[h]);l.push([y].concat(d)),l.push([s[h]].concat(d)),v++}l.push([_].concat(d));var m=0;n.forEach(function(t){var e=t[t.length-1].attributes;i.addColumn("number",e.friendly_name);var n=0,r=0,o=0,u=0,a=l[0][0];t.forEach(function(t){n=t.state;var e=t.lastChangedAsDate;"None"===t.state&&(n=r);for(var i=o;i<l.length;i++){if(l[i][1+m]=parseFloat(r),a.getTime()===l[i][0].getTime()&&l[i][0].getTime()===e.getTime()){l[i][1+m]=parseFloat(n),o=i,a=l[i][0];break}a=l[i][0]}r=n,u++});for(var s=o;s<l.length;s++)l[s][1+m]=parseFloat(r);m++}),i.addRows(l),r.draw(i,u)}}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"state-history-chart-timeline",properties:{data:{type:Object,observer:"dataChanged"},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){funLine truncated
|
||||
is:"state-card-configurator",properties:{stateObj:{type:Object}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(17);var u=["playing","paused"];e["default"]=new o["default"]({is:"state-card-media_player",properties:{stateObj:{type:Object},isPlaying:{type:Boolean,computed:"computeIsPlaying(stateObj)"}},computeIsPlaying:function(t){return-1!==u.indexOf(t.state)},computePrimaryText:function(t,e){return e?t.attributes.media_title:t.stateDisplay},computeSecondaryText:function(t){var e=void 0;return"music"===t.attributes.media_content_type?t.attributes.media_artist:"tvshow"===t.attributes.media_content_type?(e=t.attributes.media_series_title,t.attributes.media_season&&t.attributes.media_episode&&(e+=" S"+t.attributes.media_season+"E"+t.attributes.media_episode),e):t.attributes.app_name?t.attributes.app_name:""}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(33),n(62),e["default"]=new o["default"]({is:"state-card-scene",properties:{stateObj:{type:Object},allowToggle:{type:Boolean,value:!1,computed:"computeAllowToggle(stateObj)"}},computeAllowToggle:function(t){return"off"===t.state||t.attributes.active_requested}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(17),e["default"]=new o["default"]({is:"state-card-thermostat",properties:{stateObj:{type:Object}}}),t.exports=e["default"]},function(t,e){"use strict";function n(t){return{attached:function(){var e=this;this.__unwatchFns=Object.keys(this.properties).reduce(function(n,r){if(!("bindNuclear"in e.properties[r]))return n;var i=e.properties[r].bindNuclear;if(!i)throw new Error("Undefined getter specified for key "+r);return e[r]=t.evaluate(i),n.concat(t.observe(i,function(t){e[r]=t}))},[])},detached:function(){for(;this.__unwatchFns.length;)this.__unwatchFns.shift()()}}}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){return-1!==a.indexOf(t.domain)?t.domain:u["default"](t.entityId)?"toggle":"display"}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=i;var o=n(35),u=r(o),a=["thermostat","configurator","scene","media_player"];t.exports=e["default"]},function(t,e){"use strict";function n(t){return-1!==r.indexOf(t.domain)?t.domain:"default"}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n;var r=["light","group","sun","configurator","thermostat","script","media_player","camera","updater","alarm_control_panel"];t.exports=e["default"]},function(t,e){"use strict";function n(t,e,n){var r=1-t-e,i=n/255,o=i/e*t,u=i/e*r,a=1.612*o-.203*i-.302*u,s=.509*-o+1.412*i+.066*u,c=.026*o-.072*i+.962*u;a=.0031308>=a?12.92*a:1.055*Math.pow(a,1/2.4)-.055,s=.0031308>=s?12.92*s:1.055*Math.pow(s,1/2.4)-.055,c=.0031308>=c?12.92*c:1.055*Math.pow(c,1/2.4)-.055;var l=Math.max(a,s,c);return a/=l,s/=l,c/=l,a=255*a,0>a&&(a=255),s=255*s,0>s&&(s=255),c=255*c,0>c&&(c=255),[a,s,c]}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e,n){var r;(function(t,i,o){"use strict";(function(){function u(t){return"function"==typeof t||"object"==typeof t&&null!==t}function a(t){return"function"==typeof t}function s(t){return"object"==typeof t&&null!==t}function c(t){W=t}function l(t){Z=t}function f(){return function(){t.nextTick(_)}}function d(){return function(){q(_)}}function p(){var t=0,e=new tt(_),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function h(){var t=new MessageChannel;return t.port1.onmessage=_,function(){t.port2.postMessage(0)}}function v(){return function(){setTimeout(_,1)}}function _(){for(var t=0;$>t;t+=2){var e=rt[t],n=rt[t+1];e(n),rt[t]=void 0,rt[t+1]=void 0}$=0}function y(){try{var t=n(254);return q=t.runOnLoop||t.runOnContext,d()}catch(e){return v()}}function m(){}function g(){return new TypeError("You cannot resolve a promise with itself")}function b(){return new TypeError("A promises callback cannot return that same promise.")}function O(t){try{return t.then}catch(e){return at.error=e,at}}function w(t,e,n,r){try{t.call(e,n,r)}catch(i){return i}}function S(t,e,n){Z(function(t){var r=!1,i=w(n,e,function(n){r||(r=!0,e!==n?T(t,n):I(t,n))},function(e){r||(r=!0,P(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&i&&(r=!0,P(t,i))},t)}function M(t,e){e._state===ot?I(t,e._result):e._state===ut?P(t,e._result):D(e,void 0,function(e){T(t,e)},function(e){P(t,e)})}function j(t,e){if(e.constructor===t.constructor)M(t,e);else{var n=O(e);n===at?P(t,at.error):void 0===n?I(t,e):a(n)?S(t,e,n):I(t,e)}}function T(t,e){t===e?P(t,g()):u(e)?j(t,e):I(t,e)}function E(t){t._onLine truncated
|
||||
this.on(d["default"].RECENT_ENTITY_HISTORY_FETCH_SUCCESS,u),this.on(d["default"].LOG_OUT,a)}}]),e}(l.Store),v=new h;e["default"]=v,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(11),o=n(23),u=r(o),a=i.createApiActions(u["default"]);e["default"]=a,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(11),o=n(23),u=r(o),a=i.createHasDataGetter(u["default"]);e.hasData=a;var s=i.createEntityMapGetter(u["default"]);e.entityMap=s;var c=i.createByIdGetter(u["default"]);e.byId=c;var l=[s,function(t){return t.filter(function(t){return!t.attributes.hidden})}];e.visibleEntityMap=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(7),o=n(11),u=n(41),a=n(72),s=r(a),c=o.createApiActions(s["default"]);c.fireEvent=function(t,e){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];return i.callApi(t,"POST","events/"+e,n).then(function(){u.actions.createNotification(t,"Event "+e+" successful fired!")})},e["default"]=c,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(11),o=n(72),u=r(o),a=i.createHasDataGetter(u["default"]);e.hasData=a;var s=i.createEntityMapGetter(u["default"]);e.entityMap=s;var c=i.createByIdGetter(u["default"]);e.byId=c},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){t.dispatch(s["default"].LOGBOOK_DATE_SELECTED,{date:e})}function o(t,e){t.dispatch(s["default"].LOGBOOK_ENTRIES_FETCH_START,{date:e}),u.callApi(t,"GET","logbook/"+e).then(function(n){return t.dispatch(s["default"].LOGBOOK_ENTRIES_FETCH_SUCCESS,{date:e,entries:n})},function(){return t.dispatch(s["default"].LOGBOOK_ENTRIES_FETCH_ERROR,{})})}Object.defineProperty(e,"__esModule",{value:!0}),e.changeCurrentDate=i,e.fetchDate=o;var u=n(7),a=n(18),s=r(a)},function(t,e,n){"use strict";function r(t){return!t||(new Date).getTime()-t>o}Object.defineProperty(e,"__esModule",{value:!0});var i=n(3),o=6e4,u=["currentLogbookDate"];e.currentDate=u;var a=[u,["logbookEntriesUpdated"],function(t,e){return r(e.get(t))}];e.isCurrentStale=a;var s=[u,["logbookEntries"],function(t,e){return e.get(t)||i.toImmutable([])}];e.currentEntries=s;var c=["isLoadingLogbookEntries"];e.isLoadingEntries=c},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({currentLogbookDate:a["default"],isLoadingLogbookEntries:c["default"],logbookEntries:f["default"],logbookEntriesUpdated:p["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(212),a=i(u),s=n(213),c=i(s),l=n(214),f=i(l),d=n(215),p=i(d),h=n(208),v=r(h),_=n(209),y=r(_),m=v;e.actions=m;var g=y;e.getters=g},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function(t,e,n){for(var r=!0;r;){var i=t,o=e,u=n;a=c=s=void 0,r=!1,null===i&&(i=Function.prototype);var a=Object.getOwnPropertyDescriptor(i,o);if(void 0!==a){if("value"in a)return a.value;var s=a.get;return void 0===s?void 0:s.call(u)}var c=Object.getPrototypeOf(i);if(null===c)return void 0;t=c,e=o,n=u,r=!0}},s=n(3),c=n(46),l=r(c),f=new s.Immutable.Record({when:null,name:null,message:null,domain:null,entityId:null},"LogbookEntry"),d=function(t){function e(t,n,r,o,u){i(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).call(this,{when:t,name:n,message:r,domain:o,entityId:u})}return o(e,t),u(e,null,[{key:"fromJSON",value:function(t){var n=t.when,r=t.name,i=t.message,o=t.domain,u=t.entity_id;return new e(l["default"](n),r,i,o,u)}}]),e}(f);e["default"]=d,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Line truncated
|
||||
}),u(t)},function(e){return t.dispatch(h["default"].API_FETCH_ALL_FAIL,{message:e}),u(t),Promise.reject(e)})}function c(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],n=e.skipInitialSync,r=void 0===n?!1:n;t.dispatch(h["default"].SYNC_SCHEDULED),r?u(t):s(t)}function l(t){t.dispatch(h["default"].SYNC_SCHEDULE_CANCELLED),a(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.fetchAll=s,e.start=c,e.stop=l;var f=n(36),d=i(f),p=n(43),h=i(p),v=n(83),_=r(v),y=n(7),m=n(10),g=n(19),b=n(39),O=n(38),w=3e4,S={}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function(t,e,n){for(var r=!0;r;){var i=t,o=e,u=n;a=c=s=void 0,r=!1,null===i&&(i=Function.prototype);var a=Object.getOwnPropertyDescriptor(i,o);if(void 0!==a){if("value"in a)return a.value;var s=a.get;return void 0===s?void 0:s.call(u)}var c=Object.getPrototypeOf(i);if(null===c)return void 0;t=c,e=o,n=u,r=!0}},s=n(3),c=n(43),l=r(c),f=function(t){function e(){i(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).apply(this,arguments)}return o(e,t),u(e,[{key:"getInitialState",value:function(){return!0}},{key:"initialize",value:function(){this.on(l["default"].API_FETCH_ALL_START,function(){return!0}),this.on(l["default"].API_FETCH_ALL_SUCCESS,function(){return!1}),this.on(l["default"].API_FETCH_ALL_FAIL,function(){return!1}),this.on(l["default"].LOG_OUT,function(){return!1})}}]),e}(s.Store),d=new f;e["default"]=d,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=function(t,e,n){for(var r=!0;r;){var i=t,o=e,u=n;a=c=s=void 0,r=!1,null===i&&(i=Function.prototype);var a=Object.getOwnPropertyDescriptor(i,o);if(void 0!==a){if("value"in a)return a.value;var s=a.get;return void 0===s?void 0:s.call(u)}var c=Object.getPrototypeOf(i);if(null===c)return void 0;t=c,e=o,n=u,r=!0}},s=n(3),c=n(43),l=r(c),f=function(t){function e(){i(this,e),a(Object.getPrototypeOf(e.prototype),"constructor",this).apply(this,arguments)}return o(e,t),u(e,[{key:"getInitialState",value:function(){return!1}},{key:"initialize",value:function(){this.on(l["default"].SYNC_SCHEDULED,function(){return!0}),this.on(l["default"].SYNC_SCHEDULE_CANCELLED,function(){return!1}),this.on(l["default"].LOG_OUT,function(){return!1})}}]),e}(s.Store),d=new f;e["default"]=d,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){return h[t.hassId]}function o(t){var e=i(t),n=e.finalTranscript||e.interimTranscript;t.dispatch(d["default"].VOICE_TRANSMITTING,{finalTranscript:n}),l.actions.callService(t,"conversation","process",{text:n}).then(function(){t.dispatch(d["default"].VOICE_DONE)},function(){t.dispatch(d["default"].VOICE_ERROR)})}function u(t){var e=i(t);e&&(e.recognition.stop(),o(t),h[t.hassId]=!1)}function a(t){var e=u.bind(null,t);e();var n=c["default"](e,p),r=new webkitSpeechRecognition;h[t.hassId]={recognition:r,interimTranscript:"",finalTranscript:""},r.interimResults=!0,r.onstart=function(){return t.dispatch(d["default"].VOICE_START)},r.onerror=function(){return t.dispatch(d["default"].VOICE_ERROR)},r.onend=e,r.onresult=function(e){var r=i(t);if(r){for(var o="",u="",a=e.resultIndex;a<e.results.length;++a)e.results[a].isFinal?o+=e.results[a][0].transcript:u+=e.results[a][0].transcript;r.interimTranscript=u,r.finalTranscript+=o,t.dispatch(d["default"].VOICE_RESULT,{interimTranscript:u,finalTranscript:r.finalTranscript}),n()}},r.start()}Object.defineProperty(e,"__esModule",{value:!0}),e.stop=u,e.listen=a;var s=n(36),c=r(s),l=n(19),f=n(84),d=rLine truncated
|
||||
@@ -44,8 +44,8 @@ ATTR_ICON = 'icon'
|
||||
ICON_HOME = 'home'
|
||||
|
||||
|
||||
def in_zone(hass, latitude, longitude, radius=0):
|
||||
""" Find the zone for given latitude, longitude. """
|
||||
def active_zone(hass, latitude, longitude, radius=0):
|
||||
""" Find the active zone for given latitude, longitude. """
|
||||
# Sort entity IDs so that we are deterministic if equal distance to 2 zones
|
||||
zones = (hass.states.get(entity_id) for entity_id
|
||||
in sorted(hass.states.entity_ids(DOMAIN)))
|
||||
@@ -54,18 +54,32 @@ def in_zone(hass, latitude, longitude, radius=0):
|
||||
closest = None
|
||||
|
||||
for zone in zones:
|
||||
zone_dist = distance(latitude, longitude,
|
||||
zone.attributes[ATTR_LATITUDE],
|
||||
zone.attributes[ATTR_LONGITUDE])
|
||||
zone_dist = distance(
|
||||
latitude, longitude,
|
||||
zone.attributes[ATTR_LATITUDE], zone.attributes[ATTR_LONGITUDE])
|
||||
|
||||
if zone_dist - radius < zone.attributes[ATTR_RADIUS] and \
|
||||
(closest is None or zone_dist < min_dist):
|
||||
within_zone = zone_dist - radius < zone.attributes[ATTR_RADIUS]
|
||||
closer_zone = closest is None or zone_dist < min_dist
|
||||
smaller_zone = (zone_dist == min_dist and
|
||||
zone.attributes[ATTR_RADIUS] <
|
||||
closest.attributes[ATTR_RADIUS])
|
||||
|
||||
if within_zone and (closer_zone or smaller_zone):
|
||||
min_dist = zone_dist
|
||||
closest = zone
|
||||
|
||||
return closest
|
||||
|
||||
|
||||
def in_zone(zone, latitude, longitude, radius=0):
|
||||
""" Test if given latitude, longitude is in given zone. """
|
||||
zone_dist = distance(
|
||||
latitude, longitude,
|
||||
zone.attributes[ATTR_LATITUDE], zone.attributes[ATTR_LONGITUDE])
|
||||
|
||||
return zone_dist - radius < zone.attributes[ATTR_RADIUS]
|
||||
|
||||
|
||||
def setup(hass, config):
|
||||
""" Setup zone. """
|
||||
entities = set()
|
||||
|
||||
@@ -31,6 +31,6 @@ def detect_location_info():
|
||||
return LocationInfo(**data)
|
||||
|
||||
|
||||
def distance(lon1, lat1, lon2, lat2):
|
||||
def distance(lat1, lon1, lat2, lon2):
|
||||
""" Calculate the distance in meters between two points. """
|
||||
return vincenty((lon1, lat1), (lon2, lat2)) * 1000
|
||||
return vincenty((lat1, lon1), (lat2, lon2)) * 1000
|
||||
Reference in new issue
Block a user