Skip to content

Instantly share code, notes, and snippets.

@xbmcnut
Created February 5, 2019 00:40
Show Gist options
  • Save xbmcnut/e238c00ec929e357e46462675dce3988 to your computer and use it in GitHub Desktop.
Save xbmcnut/e238c00ec929e357e46462675dce3988 to your computer and use it in GitHub Desktop.
Package to allow Google TTS to advise of HA states for key devices. Scripts added directly to Cloud config.
script:
speak_garage_status:
alias: 'Ask Google for Garage Status'
sequence:
- delay:
seconds: 2
- service: tts.google_say
entity_id:
- media_player.kitchen_home
- media_player.insignia_speaker
data_template:
message: >-
The garage door is currently {{states('sensor.garage_status')}}
speak_pool_status:
alias: 'Ask Google for Pool Temperature'
sequence:
- delay:
seconds: 2
- service: tts.google_say
entity_id:
- media_player.kitchen_home
- media_player.insignia_speaker
data_template:
message: >-
The pool temperature is currently {{states('sensor.pool_temperature')}} degrees
## Template takes only the time value in 24hr time ##
speak_next_high_tide:
alias: 'Ask Google for next High Tide time'
sequence:
- delay:
seconds: 2
- service: tts.google_say
entity_id:
- media_player.kitchen_home
- media_player.insignia_speaker
data_template:
message: >-
The next high tide is at {{ as_timestamp(states.sensor.onetaunga_bay_tides.attributes.high_tide_time_utc) | timestamp_custom("%H:%M") }}
@xbmcnut
Copy link
Author

xbmcnut commented Aug 21, 2020

@ptrg13 I'm unsure how Google integrates with Home Assistant on the do it yourself version as I use Nabu Casa. Best to test with a switch or light first (add the dummy component if you don't have any switches or lights yet) as those will show in the Google Home app once synched.

@Tuttle13
Copy link

Yep, so I added it as a single entity, it by default said OFF. So I clicked on it, then clicked execute. When I did this, it ran, and all my devices responded correctly with the price.
So I think my google minis aren't triggering this when I ask them directly

@Tuttle13
Copy link

Solved it! I needed to add the line: expose_by_default: true above my exposed entities, and voila! its working... ITS WORKING (in 8yo Anakin voice).

Thank you again for all your help, absolute ANZAC spirit! haha. I wouldn't have stood a chance without your ongoing help. :)

@xbmcnut
Copy link
Author

xbmcnut commented Aug 21, 2020

Well that's great to hear. Well done. It's awesome when you finally get something working!

@Tuttle13
Copy link

There's one remaining (small) issue. My wife cannot run this script from her Google home account. When I make the identical routine on her phone, and run it, Google replies "not sure"..

Her GH can see all the room assigned switches etc, but c nt access the script.

I read on another forum that assigning a room to the script in the config can make these scripts "appear" as an item in GH, do you know if this is correct? (I think remember seeing an example that replicated the "- script" for each room. Reckon this can make them "appear" as they seem to do for some people?

@Tuttle13
Copy link

Tuttle13 commented Aug 21, 2020

@xbmcnut
Copy link
Author

xbmcnut commented Aug 21, 2020

You all need to be part of one home with added people, not everyone with their own account. https://support.google.com/assistant/answer/9155535?hl=en

@Tuttle13
Copy link

Yeah I thought that was it, but I checked and my wife is definitely already a home member ( already listed under "people in this home")
She can see a test added HA switch for a bhyve timer I added in her GH, but like mentioned in that thread, she can't "access" the script.
It doesn't show as a "device" (not does it for me), and when she replicates my routine, she gets a "sorry..."
If she doesn't have the routine and tries the same routine trigger I have "hey Google power price" Google says sorry (but I can ask the same question straight after and get the correct response)..

@xbmcnut
Copy link
Author

xbmcnut commented Aug 22, 2020

I've got my wife to test a script tonight and it does not work for here though other routines that don't use scripts do. I'll look into that room theory when I get some time.

@Tuttle13
Copy link

Tuttle13 commented Aug 22, 2020

Well, I’m not sure what I did, but I got it working? Like I mentioned, my wife could see the HA switches, so I went to Routines, created a new one, “add actions” then “browse popular actions”.
There it was, speak_power_rates, on her google home.
So I added it, made a voice trigger, and voila!

@Tuttle13
Copy link

One final, some what unrelated question for you, absolutely fine if you can’t answer it or it’s outside your knowledge.
I am trying to setup a IFTTT trigger, from HA, to change a wifi light colour.
In other words, I’m hoping, when the power price is say below 24c, so send a trigger to IFTTT. A second trigger would be when price is between 24.01 and 35c, and a third trigger would be anything greater than 35c.

I’m not sure if a multi-option trigger can be sent beyond on/off, but even if it’s 3 individual triggers, that would be fine.

I’m looking at runing this in HA service tab (obviously with the ifttt and it’s API key added to my config)
Domain: ifttt
Service: tigger
Service domain: {"event": "EventName", "value1": "Hello World", "target": "YOUR_KEY_NAME1"}

I think the first 2 stay the same, but how would I translate my data required (say a first range trigger from -999c to 24.00c) ?

That way I could have a lamp set up which, being always on, will change colour based on the power price.
Cheers for any assistance (once again!)

@Tuttle13
Copy link

Tuttle13 commented Aug 23, 2020

Or would an automation and script be a better idea?

# Example configuration.yaml Automation entry
automation:
  alias: Startup Notification
  trigger:
    platform: homeassistant
    event: start
  action:
    service: script.ifttt_notify
    data_template:
      value1: 'HA Status:'
      value2: "{{ trigger.event.data.entity_id.split('_')[1] }} is "
      value3: "{{ trigger.event.data.to_state.state }}"

and

#Example Script to send TestHA_Trigger to IFTTT but with some other data (homeassistant UP).
ifttt_notify:
  sequence:
    - service: ifttt.trigger
      data_template: {"event":"TestHA_Trigger", "value1":"{{ value1 }}", "value2":"{{ value2 }}", "value3":"{{ value3 }}"}

Edit, I have been experimenting (trial and many errors) in template with the following
value_template: "{% if states.sensor.amber_general_usage_price.state | float > 35.005 %} red {% endif %}"
value_template: "{% if states.sensor.amber_general_usage_price.state | float < 23.00 %} green {% endif %}"
value_template: "{% if states.sensor.amber_general_usage_price.state | 23.005 < float > 35.00 %} yellow {% endif %}"

The current price is dictating the red and green text to be output (currently only outputting green due to the price being below 23c right now). But I can’t get yellow working. Is there a particular format needed to do a greater than AND less than?

Is any of this event helpful in creating a trigger for IFTTT lol?

@xbmcnut
Copy link
Author

xbmcnut commented Aug 23, 2020

Probably best to post on HA forum as everyone gets to benefit from the solution. Personally, I wouldn't involved IFTTT unless you have no other choice as it will add unnecessary delays.

@kmanan
Copy link

kmanan commented Mar 31, 2023

What do you mean by cloud config? Is this added to the config.yaml? Which files am I editing here?

@xbmcnut
Copy link
Author

xbmcnut commented Mar 31, 2023

What do you mean by cloud config? Is this added to the config.yaml? Which files am I editing here?

In configuration.yaml

## Includes ##
automation: !include automations.yaml
binary_sensor: !include_dir_merge_list binary_sensor
cloud: !include cloud.yaml

That points us to a file in your config folder called cloud.yaml and all code above is in there.

@kmanan
Copy link

kmanan commented Apr 2, 2023

What do you mean by cloud config? Is this added to the config.yaml? Which files am I editing here?

In configuration.yaml

## Includes ##
automation: !include automations.yaml
binary_sensor: !include_dir_merge_list binary_sensor
cloud: !include cloud.yaml

That points us to a file in your config folder called cloud.yaml and all code above is in there.

That's helpful, thank you. Any ideas why I am getting this error:

image

Here's my config.yaml:
image

@kmanan
Copy link

kmanan commented Apr 2, 2023

Since I couldn't add cloud.yaml, pasted the script code in script.yaml.

This what my script.yaml looks like:
script:
speak_last_feed:
alias: 'Ask Google for Last Feed'
sequence:
- delay:
seconds: 2
- service: tts.google_say
entity_id:
- media_player.bedroom_speaker
- media_player.kitchen_speaker
- media_player.living_room_speaker
data_template:
message: >-
The last feed was {{ as_timestamp('sensor.last_feeding')}}

This is what my configuration.yaml looks like

Example configuration.yaml entry

google_assistant:
project_id:
service_account: !include SERVICE_ACCOUNT.JSON
report_state: true
exposed_domains:
- switch
- input_boolean
- input_select
- script
- media_player
- sensor
entity_config:
switch.speak_last_feed:
name: speak_last_feed
aliases:
- Last Feed
-

This is the error I am getting:
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment