5.2 KiB
title, description, ha_category, ha_release, ha_domain
title | description | ha_category | ha_release | ha_domain | |
---|---|---|---|---|---|
Google Pub/Sub | Setup for Google Pub/Sub integration |
|
0.88 | google_pubsub |
The google_pubsub
integration allows you to hook into the Home Assistant event bus and send events to Google Cloud Pub/Sub. The current free tier of GCP should allow you to sync about 1 event every 2 seconds on average (2 million invocations per month).
First time setup
This assumes you already have a Google Cloud project. If you don't, please create one in the Google Cloud Console
You need to create a Service Account key in the Google Cloud API Console
- Choose a new "New Service Account", give it a name and leave the key type as JSON
- Select the role: Pub/Sub Publisher
This will download the Service Account JSON key to your machine. Do NOT share this with anyone. Place this file in your Home Assistant configuration folder.
Next, create a Google Pub/Sub topic in the Google Cloud API Console. The topic name will become something like projects/project-198373/topics/topic-name
. Note the last part only (the name you chose): topic-name
.
Configuration
Add the following lines to your configuration.yaml
file:
# Example configuration.yaml entry
google_pubsub:
project_id: YOUR_PROJECT_ID
topic_name: YOUR_TOPIC_NAME
credentials_json: CREDENTIALS_FILENAME
{% configuration %}
project_id:
description: Project ID from the Google console (looks like words-2ab12
).
required: true
type: string
topic_name:
description: The Pub/Sub relative topic name (looks like hass
).
required: true
type: string
credentials_json:
description: The filename of the Google Service Account JSON file.
required: true
type: string
filter:
description: Filter domains and entities for Google Cloud Pub/Sub. (Configure Filter)
required: true
type: map
keys:
include_domains:
description: List of domains to include (e.g., light
).
required: false
type: list
exclude_domains:
description: List of domains to exclude (e.g., light
).
required: false
type: list
include_entity_globs:
description: Include all entities matching a listed pattern (e.g., sensor.weather_*
).
required: false
type: list
exclude_entity_globs:
description: Exclude all entities matching a listed pattern (e.g., sensor.weather_*
).
required: false
type: list
include_entities:
description: List of entities to include (e.g., light.attic
).
required: false
type: list
exclude_entities:
description: List of entities to include (e.g., light.attic
).
required: false
type: list
{% endconfiguration %}
Configure Filter
By default, no entity will be excluded. To limit which entities are being exposed to Google Pub/Sub
, you can use the filter
parameter.
{% raw %}
# Example filter to include specified domains and exclude specified entities
google_pubsub:
project_id: YOUR_PROJECT_ID
topic_name: YOUR_TOPIC_NAME
credentials_json: CREDENTIALS_FILENAME
filter:
include_domains:
- alarm_control_panel
- light
include_entity_globs:
- binary_sensor.*_occupancy
exclude_entities:
- light.kitchen_light
{% endraw %}
Filters are applied as follows:
- No includes or excludes - pass all entities
- Includes, no excludes - only include specified entities
- Excludes, no includes - only exclude specified entities
- Both includes and excludes:
- Include domain and/or glob patterns specified
- If domain is included, and entity not excluded or match exclude glob pattern, pass
- If entity matches include glob pattern, and entity does not match any exclude criteria (domain, glob pattern or listed), pass
- If domain is not included, glob pattern does not match, and entity not included, fail
- Exclude domain and/or glob patterns specified and include does not list domains or glob patterns
- If domain is excluded and entity not included, fail
- If entity matches exclude glob pattern and entity not included, fail
- If entity does not match any exclude criteria (domain, glob pattern or listed), pass
- Neither include or exclude specifies domains or glob patterns
- If entity is included, pass (as #2 above)
- If entity include and exclude, the entity exclude is ignored
- Include domain and/or glob patterns specified
Saving the data using a Google Cloud Function
To save your data automatically to BigQuery, follow the instructions here. The current free tier of GCP should allow to store up to 10GB of data.