From 178c2aea611d0774e0cb89c2e27e494f42af5c6b Mon Sep 17 00:00:00 2001
From: Adam Mills
Date: Wed, 25 Oct 2017 15:42:16 -0400
Subject: [PATCH] Better documentation for state attributes (#3772)
* Better documentation for state attributes
* Fix extra tick
* Extra notes for new components
---
source/developers/development_states.markdown | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/source/developers/development_states.markdown b/source/developers/development_states.markdown
index 4a8d1b81a8f..369f87ea54b 100644
--- a/source/developers/development_states.markdown
+++ b/source/developers/development_states.markdown
@@ -124,13 +124,17 @@ After a start or a restart of Home Assistant the component will be visible in th
-In order to expose attributes of your component, you will need to define a method called `state_attributes` which will return a dictionary of attributes:
+In order to expose attributes for a platform, you will need to define a property called `device_state_attributes` on the entity class, which will return a dictionary of attributes:
```
@property
-def state_attributes(self):
- """Return the attributes of the entity."""
+def device_state_attributes(self):
+ """Return device specific state attributes."""
return self._attributes
```
+
+Entities also have a similar property `state_attributes`, which normally doesn't need to be defined by new platforms. This property is used by base components to add standard sets of attributes to a state. Example: The light component uses `state_attributes` to add brightness to the state dictionary. If you are designing a new component, you should define `state_attributes` instead.
+
+
To get your component included in the Home Assistant releases, follow the steps described in the [Submitting improvements](https://home-assistant.io/developers/#submitting-improvements) section. Basically you only need to move your component in the `homeassistant/component/` directory of your fork and create a Pull Request.