Пример #1
0
    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")
Пример #2
0
    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")
Пример #3
0
    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"
Пример #4
0
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
Пример #6
0
    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
Пример #7
0
    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
Пример #8
0
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)
Пример #9
0
    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)
Пример #10
0
 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"