1 """Support for displaying details about a Gitter.im chat room."""
3 from __future__
import annotations
7 from gitterpy.client
import GitterClient
8 from gitterpy.errors
import GitterRoomError, GitterTokenError
9 import voluptuous
as vol
12 PLATFORM_SCHEMA
as SENSOR_PLATFORM_SCHEMA,
21 _LOGGER = logging.getLogger(__name__)
23 ATTR_MENTION =
"mention"
25 ATTR_USERNAME =
"username"
27 DEFAULT_NAME =
"Gitter messages"
28 DEFAULT_ROOM =
"home-assistant/home-assistant"
31 PLATFORM_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
33 vol.Required(CONF_API_KEY): cv.string,
34 vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
35 vol.Optional(CONF_ROOM, default=DEFAULT_ROOM): cv.string,
43 add_entities: AddEntitiesCallback,
44 discovery_info: DiscoveryInfoType |
None =
None,
46 """Set up the Gitter sensor."""
48 name = config.get(CONF_NAME)
49 api_key = config.get(CONF_API_KEY)
50 room = config.get(CONF_ROOM)
52 gitter = GitterClient(api_key)
54 username = gitter.auth.get_my_id[
"name"]
55 except GitterTokenError:
56 _LOGGER.error(
"Token is not valid")
63 """Representation of a Gitter sensor."""
65 _attr_icon =
"mdi:message-cog"
67 def __init__(self, data, room, name, username):
68 """Initialize the sensor."""
79 """Return the name of the sensor."""
80 return self.
_name_name
84 """Return the state of the sensor."""
89 """Return the unit the value is expressed in."""
94 """Return the state attributes."""
97 ATTR_ROOM: self.
_room_room,
102 """Get the latest data and updates the state."""
105 data = self.
_data_data.user.unread_items(self.
_room_room)
106 except GitterRoomError
as error:
110 if "error" not in data:
111 self.
_mention_mention = len(data[
"mention"])
112 self.
_state_state = len(data[
"chat"])
114 _LOGGER.error(
"Not joined: %s", self.
_room_room)
def native_unit_of_measurement(self)
def extra_state_attributes(self)
def __init__(self, data, room, name, username)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
def add_entities(account, async_add_entities, tracked)