Files
hacs_integration/custom_components/hacs/sensor.py
Joakim Sørensen 81d7290108 Merge beta into master for 0.14 release (#550)
* Set version

* Trigger build

* Add issues.md

* Add link at the bottom

* Add appdaemon example

* Make links clickable

* Adds isssue note

* Handle persistent_directory

* Add check if self.repository_manifest exist

* Handle content_in_root for all categories

* Remove device_info property (#548)

* New devcontainer

* Add release_limit for version selector

* Fix multiloading of HACS

* Add default note

* Fix LGTM warnings

* Add badges

* Set 0.98 as minimum version

* Version bump
2019-09-21 11:09:04 +02:00

81 lines
2.3 KiB
Python

"""Sensor platform for HACS."""
# pylint: disable=unused-argument
from integrationhelper import Logger
from homeassistant.helpers.entity import Entity
from .hacsbase import Hacs as hacs
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
"""Setup sensor platform."""
async_add_entities([HACSSensor()])
async def async_setup_entry(hass, config_entry, async_add_devices):
"""Setup sensor platform."""
async_add_devices([HACSSensor()])
class HACSSensor(Entity):
"""HACS Sensor class."""
def __init__(self):
"""Initialize."""
self._state = None
self.logger = Logger("hacs.sensor")
self.has_update = []
self.repositories = []
async def async_update(self):
"""Update the sensor."""
if hacs.system.status.background_task:
return
self.repositories = []
for repository in hacs.repositories:
if repository.pending_upgrade:
self.repositories.append(repository)
self._state = len(self.repositories)
@property
def unique_id(self):
"""Return a unique ID to use for this sensor."""
return (
"0717a0cd-745c-48fd-9b16-c8534c9704f9-bc944b0f-fd42-4a58-a072-ade38d1444cd"
)
@property
def name(self):
"""Return the name of the sensor."""
return "hacs"
@property
def state(self):
"""Return the state of the sensor."""
return self._state
@property
def icon(self):
"""Return the icon of the sensor."""
return "mdi:package"
@property
def unit_of_measurement(self):
"""Return the unit of measurement."""
return "pending update(s)"
@property
def device_state_attributes(self):
"""Return attributes for the sensor."""
data = []
for repository in self.repositories:
data.append(
{
"name": repository.information.full_name,
"display_name": repository.display_name,
"installed version": repository.display_installed_version,
"available version": repository.display_available_version,
}
)
return {"repositories": data}