openHAB Google Assistant Integration v2.0

As you may read in my previous post, the metadata option just adds the metadata to the results but does not filter anything.
By default metadata is not included in the result.

We actually ran into a similar issue with the Alexa skill using the REST API recursive option and found out that you have all the necessary information needed to find child elements on standard calls using the groupNames field.

Keep in mind part of that change, we discovered a bug trying to filter out the editable field and we also ended up filtered out the state field as image item states increase drastically the size of the calls.

Uhh, thank you very much for pointing me to that.
Will definitely have a look and probably incorporate some stuff. :+1:

1 Like

Raspberry pi4 4gb
Openhabian

Having problems with Google assistant saying
After switching light on and off saying "I’m sorry can’t reach the n right now please try again "
I have just installed it yesterday.
Looked here says there’s a problem, is there a fix yet or simple work around?

Make sure you say it exactly as you have set it up, (the label name).
Please show your items.

Cheers all ok now

Is there a funcition to call a google connected device that’s not connected to OH? I mean call from OH a pre defined tool for example a Samsung TV via smarthings that are working in google home?

No thats not possible.

1 Like

Hi @michikrug
Do you have any plans to allow the Google Assistant “broadcast” feature that would interface with openHAB and the Chromecast binding similar to OrangeAssist? OrangeAssist - Google Assistant Integration

I don’t know how active that code is and would prefer a binding integration for ease of installation.

Thanks.

You can use the built in “say” command with the chromecast binding.

rule "Voice Testing Rule"
when
	Item Voice_Robot changed from OFF to ON  
then
	say("This is a test", "googletts:enUSWavenetA", "chromecast:chromecast:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
end

item:
Switch Voice_Robot "Pushbutton to test Voice TTS [%s]" <switch> { expire="5s,command=OFF" }

He will have to install GoogleTTS to get this to work.

Thanks. I’ve already tried that a while ago and got it all working. The problem is it stops the media stream and doesn’t restart. The way it is implemented in OrangeAssist, the TTS or audio is sent as a “broadcast” and then resumes the playing media.

Agree.
Having “boradcast” feature would be much more efficient.

I have a garage roller door opener which in reality is just a switch. Rather that say “turn on” garage roller door, I would prefer to say “open” garage roller door. I tried setting ga=lock, and it allows me to say “open / unlock”…but…open turns the switch on rather than off and vice vera. Is there something I can do to get the behaviour I want?

Thanks

I have a simular issue with my garagedoor as well.
The problem is (in my case, and probably yours as well) the garagedoor is operating from a push button which means:
When I push the button, the garagedoor starts moving.
When I push it again, it stops. And when I push it again (third time), it starts moving in the opposit direction.

This is something I havnt figure how Google is able to handle. I tried inserting the ga=garagedoor, and I can then use open/close just fine. But there is no check from Google, wether the garagedoor is open, when I say “open garagdorr”. And even if there were, Google would not be able to do anything, other than “push the button”.
It makes it guiet useless to me, or I simply fail to understand how the heck this is beeing configured!

I fixed it! Ended up creating a virtual switch and rule to swap the On / Off Commands…seems to be working :slight_smile:

I have created a PR that enables to use inverted=true as metadata attribute for most devices. When this is merged and released you can get rid of that “virtual switch”.

2 Likes

I have more than 120 items imported from Niko Home Control into GA and modified their Tags using Rest API.
I am trying to add room hints as metadata [ roomHint=“yourRoom” ] using rest api as I do not have items file.
This could help mi to sort those items into rooms at GA side for so many items.
Please could anybody explain how should json with roomHint metadata look?

For my example rollershuter item I’ve tried:
{“name”:“nikohomecontrol_blind_440e003a2369_35_rollershutter”,
“tags”:[Blinds],
“type”:“Rollershutter”,
“link”:“http://X.X.X.X:8080/rest/items/nikohomecontrol_blind_440e003a2369_35_rollershutter",“state”:“1”,“editable”:false,“label”:"kitchen window”,“category”:“Blinds”,“groupNames”:[],
"metadata":{“roomHint”: {“value”:“Kitchen”} } }

but it doesn’t work.
When i tried to get metadata using rest api, there is nothing stored.
I would like to avoid to change naming convention of all the items to put the rooms into item names.
Thanks.

To see metadata with the REST API you need to specify which metadata to retrieve:
E.g. /rest/items?metadata=ga.
By default it is not attached to the response.

The JSON for a correctly added roomHint would look like this:

"metadata": {
  "ga": {
    "value": "Blinds",
    "config": {
      "roomHint": "your room"
    }
  }
}

Short off-topic comment here: Due to Announcements being used for discussions / questions etc, I have restricted posting rights to @maintainers only.

To allow all of you to have lively discussions on Google Assistant, I have created a new dedicated category at https://community.openhab.org/c/apps-services/google-assistant/67.

3 Likes