Make it more clear that the user should use the short relative pubsub name like "mytopic" and not the longer like "projects/myproject/topics/mytopic".
3.4 KiB
layout, title, description, date, sidebar, comments, sharing, footer, logo, ha_category, ha_release
| layout | title | description | date | sidebar | comments | sharing | footer | logo | ha_category | ha_release |
|---|---|---|---|---|---|---|---|---|---|---|
| page | Google Pub/Sub | Setup for Google Pub/Sub integration | 2019-01-12 13:30 | true | false | true | true | google-pubsub.png | History | 0.88 |
The google_pubsub component 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).
{% linkable_title 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 config 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.
{% linkable_title 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.
required: false
type: map
default: Includes all entities from all domains
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_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 %}
Not filtering domains or entities will send every event to Google PubSub, thus hitting the free tier limit very fast. Be sure to fill in this configuration parameter or have a paid subscription for Google Cloud.
{% linkable_title 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.