This integration will allow you to get events from your SleepAsAndroid application in a form of the sensor states and events in Home assistant.
You will need:
- Home Assistant with configured MQTT integration
example of configuration.yaml:mqtt: broker: mqtt.myserver port: 1883 username: ha_user discovery: true
- Sleep As android application
- go to Settings -> Services -> Automatization -> MQTT
- enable and configure MQTT
- go to HACS ->
Integrations - press
+ Explore & Add repositoriesbutton - type
Sleep As Androidin search field and click at integration name - press
Install this repository to HACSbutton - press
Installbutton (if you have outdated version of Home Assistant -- check integration version in Wiki ) - restart Home Assistant
- go to Home Assistant
Settings->Integrations->Add Integration(right bottom conner) - type
Sleep As Androidin search field and click at integration name. Clean browser cache if nothing found.
Name: name of the device/sensor and a prefix for the events. Will be used as a default prefix for devices and events.Topic template: template for MQTT topic whereSleep as Androidwill publish event.%%%device%%%may be used in template to point to device name position. Examples:- SleepAsAndroid/igor - no
%%%device%%%in template just one device will be tracked and one device will be created forHomeAssistant - SleepAsAndroid/%%%device%%% - all sub topics in
SleepAsAndroid/will be recognized as devices - devices/%%%device%%%/SleepAsAndroidData - all subtopic in
devices/will be used as devices, data will be taken from/SleepAsAndroidDatafor every device, iedevices/igor/SleepAsAndroidDatafor device igor
- SleepAsAndroid/igor - no
QOS: quality of service for MQTT
To configure Sleep As Android for working with this integration:
- Go to application settings
- Find Services in integration section
- Go to Automation
- Find MQTT section
Then:
- Enable it
URLis a URL for your MQTT server. It should look liketcp://mqtt_user:mqtt_password@mqtt_host:mqtt_portTopicis a topic name where the application will publish events. SeeTopic templatesection of component configuration for details. Application settings MUST NOT have%%%device%%%macro. Use desired device name at position of%%%device%%%of integration configuration. Examples related to integration configuration above: SleepAsAndroid/igor or devices/igor/SleepAsAndroidData. Device name will be "igor" in both cases.Client IDis any ID. It is not used by integration and is not published to MQTT (now).
More details in Wiki.
- import blueprint:
- Got to Home Assistant
settings blueprintsimport blueprintbutton- put blueprint URL
- press
previewbutton - press
importbutton
- Got to Home Assistant
- create automatization based on blueprint:
personandstateis using to run actions only if person in state (to avoid run home automatization related to sleep tracking while vacation in Siberia, for example)- add actions for evens
- select
Devicein automatization trigger and useSleepAsAndroiddevice; - select trigger from a list.
events will be fired up for every MQTT message
<name> is an integration name in lower case without spaces from the Settings dialog.
<device> is a device name
List of events is available at Sleep As Android documentation page
State of sensor sensor.<name>_<device> will contain the recent event name, that got published by the application.
<name> is an integration name in lower case without spaces from the Settings dialog.
If application publishes a new event, then integration fires <name> event with payload:
{
"event": "<event_name_from_application>"
} events will be fired up for every MQTT message
Sensor have additional attributes:
timestamp-- value1 from application event. It is usually timestamp of something. Meaning is depended on event. Please check Sleep As Android events documentation for more details;label-- value2 from application event. It is usually alarm label. You can use this attribute to tell one alarm from another.
If event have no value<N> field, then attribute will be set to unknown.
configuration.yaml:
logger:
default: warning
logs:
custom_components.sleep_as_android: debug