def test_get_age(self): """Test get_age.""" diff = dt_util.now() - timedelta(seconds=0) self.assertEqual(dt_util.get_age(diff), "0 seconds") diff = dt_util.now() - timedelta(seconds=1) self.assertEqual(dt_util.get_age(diff), "1 second") diff = dt_util.now() - timedelta(seconds=30) self.assertEqual(dt_util.get_age(diff), "30 seconds") diff = dt_util.now() - timedelta(minutes=5) self.assertEqual(dt_util.get_age(diff), "5 minutes") diff = dt_util.now() - timedelta(minutes=1) self.assertEqual(dt_util.get_age(diff), "1 minute") diff = dt_util.now() - timedelta(minutes=300) self.assertEqual(dt_util.get_age(diff), "5 hours") diff = dt_util.now() - timedelta(minutes=320) self.assertEqual(dt_util.get_age(diff), "5 hours") diff = dt_util.now() - timedelta(minutes=2 * 60 * 24) self.assertEqual(dt_util.get_age(diff), "2 days") diff = dt_util.now() - timedelta(minutes=32 * 60 * 24) self.assertEqual(dt_util.get_age(diff), "1 month") diff = dt_util.now() - timedelta(minutes=365 * 60 * 24) self.assertEqual(dt_util.get_age(diff), "1 year")
def test_get_age(self): """Test get_age.""" diff = dt_util.now() - timedelta(seconds=0) self.assertEqual(dt_util.get_age(diff), "0 seconds") diff = dt_util.now() - timedelta(seconds=1) self.assertEqual(dt_util.get_age(diff), "1 second") diff = dt_util.now() - timedelta(seconds=30) self.assertEqual(dt_util.get_age(diff), "30 seconds") diff = dt_util.now() - timedelta(minutes=5) self.assertEqual(dt_util.get_age(diff), "5 minutes") diff = dt_util.now() - timedelta(minutes=1) self.assertEqual(dt_util.get_age(diff), "1 minute") diff = dt_util.now() - timedelta(minutes=300) self.assertEqual(dt_util.get_age(diff), "5 hours") diff = dt_util.now() - timedelta(minutes=320) self.assertEqual(dt_util.get_age(diff), "5 hours") diff = dt_util.now() - timedelta(minutes=2*60*24) self.assertEqual(dt_util.get_age(diff), "2 days") diff = dt_util.now() - timedelta(minutes=32*60*24) self.assertEqual(dt_util.get_age(diff), "1 month") diff = dt_util.now() - timedelta(minutes=365*60*24) self.assertEqual(dt_util.get_age(diff), "1 year")
def test_get_age(self): """Test get_age.""" diff = dt_util.now() - timedelta(seconds=0) assert dt_util.get_age(diff) == "0 seconds" diff = dt_util.now() - timedelta(seconds=1) assert dt_util.get_age(diff) == "1 second" diff = dt_util.now() - timedelta(seconds=30) assert dt_util.get_age(diff) == "30 seconds" diff = dt_util.now() - timedelta(minutes=5) assert dt_util.get_age(diff) == "5 minutes" diff = dt_util.now() - timedelta(minutes=1) assert dt_util.get_age(diff) == "1 minute" diff = dt_util.now() - timedelta(minutes=300) assert dt_util.get_age(diff) == "5 hours" diff = dt_util.now() - timedelta(minutes=320) assert dt_util.get_age(diff) == "5 hours" diff = dt_util.now() - timedelta(minutes=2*60*24) assert dt_util.get_age(diff) == "2 days" diff = dt_util.now() - timedelta(minutes=32*60*24) assert dt_util.get_age(diff) == "1 month" diff = dt_util.now() - timedelta(minutes=365*60*24) assert dt_util.get_age(diff) == "1 year"
def test_get_age(): """Test get_age.""" diff = dt_util.now() - timedelta(seconds=0) assert dt_util.get_age(diff) == "0 seconds" diff = dt_util.now() - timedelta(seconds=1) assert dt_util.get_age(diff) == "1 second" diff = dt_util.now() - timedelta(seconds=30) assert dt_util.get_age(diff) == "30 seconds" diff = dt_util.now() - timedelta(minutes=5) assert dt_util.get_age(diff) == "5 minutes" diff = dt_util.now() - timedelta(minutes=1) assert dt_util.get_age(diff) == "1 minute" diff = dt_util.now() - timedelta(minutes=300) assert dt_util.get_age(diff) == "5 hours" diff = dt_util.now() - timedelta(minutes=320) assert dt_util.get_age(diff) == "5 hours" diff = dt_util.now() - timedelta(minutes=2 * 60 * 24) assert dt_util.get_age(diff) == "2 days" diff = dt_util.now() - timedelta(minutes=32 * 60 * 24) assert dt_util.get_age(diff) == "1 month" diff = dt_util.now() - timedelta(minutes=365 * 60 * 24) assert dt_util.get_age(diff) == "1 year"
def extra_state_attributes(self) -> Dict[str, Any]: """Return the state attributes.""" attributes = self._attrs for variable in DEVICE_ATTRIBUTES_HOST: if variable not in self._data: continue if variable == "last-seen": if self._data[variable]: attributes[format_attribute(variable)] = get_age( self._data[variable] ) else: attributes[format_attribute(variable)] = "unknown" else: if self._data[variable] in [ "dhcp", "dns", "capsman", "wireless", "restored", ]: attributes[format_attribute(variable)] = format_value( self._data[variable] ) else: attributes[format_attribute(variable)] = self._data[variable] return attributes
def device_state_attributes(self): a = self._data.attributes attrs = {} for k, v in DATA_ATTRS_CAR_INFO.items(): if a.get(v): attrs[k.title()] = a.get(v) attrs["Odometer"] = self._data.get_odometer() # If wakeup available add details if self._data.wakeup: if self._data.wakeup.get( "state") == "RECEIVING_SCHEDULE_ACCEPTANCE_WINDOW": attrs["State"] = "Active" attrs["Active Until"] = self.to_local_datetime( self._data.wakeup.get("scheduleWakeup").get( "scheduleAcceptanceEnd")) elif self._data.wakeup.get("state") == "SLEEPING": attrs["State"] = self._data.wakeup.get("state").title() attrs["Next Update"] = self.to_local_datetime( self._data.wakeup.get("wakeupTime")) if self._data.status.get("lastUpdatedTime"): attrs["Last Contacted"] = self.to_local_datetime( self._data.status.get("lastUpdatedTime")) attrs["Last Contacted Age"] = (dt.get_age( self.to_local_datetime( self._data.status.get("lastUpdatedTime"))) + " ago") return attrs
def extra_state_attributes(self): a = self._vehicle.attributes attrs = {} attrs["Engine Type"] = self._engine_type for k, v in DATA_ATTRS_CAR_INFO.items(): if a.get(v): attrs[k.title()] = a.get(v) attrs["Odometer"] = self.get_odometer(self._vehicle) if self._vehicle.status.get("lastUpdatedTime"): last_contacted = self.to_local_datetime( self._vehicle.status.get("lastUpdatedTime")) attrs["Last Contacted"] = last_contacted attrs["Last Contacted Age"] = dt.get_age(last_contacted) + " ago" return attrs
def relative_time(value): """ Take a datetime and return its "age" as a string. The age can be in second, minute, hour, day, month or year. Only the biggest unit is considered, e.g. if it's 2 days and 3 hours, "2 days" will be returned. Make sure date is not in the future, or else it will return None. If the input are not a datetime object the input will be returned unmodified. """ if not isinstance(value, datetime): return value if not value.tzinfo: value = dt_util.as_local(value) if dt_util.now() < value: return value return dt_util.get_age(value)
def interval_time_change_listener( event ): now = event.data[ATTR_NOW] for entity in entities: if now >= entity['nextCheck']: state = hass.states.get( entity['id'] ) if state.attributes: attributes = dict(state.attributes) else: attributes = {} if 'last_update' in attributes: # t = datetime( *attributes['last_update'] ).replace(tzinfo=dt_util.DEFAULT_TIME_ZONE) t = dt_util.now().replace( *attributes['last_update'] ) newState = dt_util.get_age( t ) attributes['dt'] = newState else: newState = '-' newState = state.state # hass.states.set( entity['id'], newState, attributes ) entity['nextCheck'] = dt_util.now() + timedelta(seconds=20)
def state(self): if self._vehicle.status.get("lastUpdatedTime"): last_contacted = self.to_local_datetime( self._vehicle.status.get("lastUpdatedTime")) return dt.get_age(last_contacted) + " ago" return "Unknown"