Expected states for garage - google-assistant-sdk

I can't seem to find a reference in any of the SDK documentation for Google home, so my apologies if this is a super easy question that I should have found myself - I'll ask the question first then details on what my use case is -
What are the expected states from a garage door in Google home? I know "open" and "closed", but I need to know what Google expects to see when a door is opening or closing.
The use case here is a Home Assistant integration with a Meross garage door opener. When Meross is connected directly to Google Home, both opening and closing through Google works fine. When connected through Home Assistant, Google can open the garage just fine but gives an error saying Home Assistant is unavailable when closing.
The problem seems to stem from the fact that my sensor reports closed when the garage door is closed, and immediately upon opening, the contact in the sensor breaks reporting "open." But when the garage is open, the sensor reports open until the garage has completed it's close action and the contact is re-established in the sensor (approximately 20 seconds after the close command is sent).
I worked around the issue by having Home Assistant immediately send the state of "closed" upon the close service call, but this is less than ideal. I would imagine that Google is expecting a specific state when the garage is closing and since it is not getting that state it is timing out.
Any ideas?

In the smart home platform, there are no expected states for a given device type. Rather, there are expected states for given device traits. While the Garage type recommends a single trait, it could have numerous traits with a union of those traits' states.
In particular you would be referring to the OpenClose trait. Its states would be openPercent as a required state and openDirection as an optional descriptive label. This assumes your device opens on a single axis (up/down).
In the platform, there is a short timeframe to expect a response to the EXECUTE intent, about five seconds. If it does take longer to complete the action, you may want to consider returning a status of PENDING rather than SUCCESS. That will short-circuit a response back to Assistant. You can later follow-up the confirmed change in state with Report State.

https://www.androidpolice.com/2018/01/16/google-home-hidden-api-local-devices-can-use/
google home has internal api
Please read article and find garage states.

Related

Google Actions on the Assistant app on iPhone no longer work

Our Action has worked as expected for years on iPhone, but something changed and now access is blocked for our customers.
How to reproduce the issue: Simply go to Assistant on iPhone and say "Hey Google, talk to the mobile concierge" (our Action). Instead of launching the Action, Assistant says "I need permission before I can use your personal info for anything. To change your settings, just open the Google Home app on your phone. Once that's done, ask me again!".
My question: Can Google confirm that this is a bug and not expected behavior? (Specifically, that a user must have 'Personal Results' turned on in order to access an Action on iPhone.)
I truly hope this is not expected behavior, but even if it is there are 2 issues:
instructions that are provided to users when Personal Results are turned off are wrong. Pointing users to the Google Home app is incorrect. Many iPhone users won't even have the Google Home app installed. But if you do have it installed, launching it and then following Assistant's directions does not lead to being able to open the Action. The correct instructions are to stay in the Google Assistant app, click on your profile pic, go to Devices, and then select your iphone. There, you can turn Personal Results on/off.
The additional problem is that upon testing, I already had Personal Results turned ON. In order to get access to our Action, I had to turn it off, and then turn it back on again. So this pretty clearly seems like a bug.
As an aside, we don't collect any personal information as part of our Action so I am unclear why Google implemented a change involving the Personal Results option as it relates to the ability to launch Actions like ours. All it has done is made it so that our customers can't use it from a huge percentage of phones out there (iPhones), and phones are the only device we are targeting for use with this Action.

Facebook Analytics SDK for iOS app: how to disable value tracking for non-valuable events like App Install or Start Trial?

I'm running Facebook Ads campaigns for my iOS app and quite naturally I have Facebook Analytics SDK integrated inside my app to track App Installs and Start Trial events to measure the "quality" of the traffic my campaigns bring.
At the Analytics settings page inside Facebook developer dashboard.
https://developers.facebook.com/apps/XXX_APP_ID_XXX/analytics/settings/?business_id=XXX_BUSINESS_ID_XXX
I have the option Log In-App Events Automatically (Recommended) set to "Yes", which I presume enables the tracking of App Install and Start Trial events. There's also a Shared App Secret field filled in with the value from iTunesConnect.
Indeed, the App Install and Start Trial events have started to appear inside Analytics dashboard
https://www.facebook.com/analytics/XXX_APP_ID_XXX/AppEvents?__aref_src=landing_page&__aref_id=entity_name&force_desktop=1&user_id=XXX_USER_ID_XXX
However I noticed when viewing the stats for just App Installs there's a quite considerable value in USD attributed to these events. I decided to take a closer look into these events using Event Debugging
https://www.facebook.com/analytics/XXX_APP_ID_XXX/most_recent?since=1577923200000&until=1580256000000&__aref_src=landing_page&__aref_id=entity_name&force_desktop=1&user_id=XXX_USER_ID_XXX
and selecting "App Install" in the events filter.
There I saw that some (only some and as if randomly) App Installs have a value associated with them. To me this is an unexpected behavior since I can't imagine revenue being made by just receiving an install.
Same goes for Start Trial event, which always has the value associated to it (equal to the sale price of a subscription period) and once again this makes no sense to me because started trials themselves bring no value to me. They may be canceled or may end up in Billing Retry when the user has no money on the bank card attached to their iTunes account, etc. I track the conversions from Start Trial to Purchase on my backend separately with great precision and only these conversions as well as subsequent renewals would bring real value to my business.
I can and will track these Purchases manually and post them to Facebook (server-to-server style) and I will supply the corresponding value to these events myself, which will help to understand the overall performance and ROI but I need to clean my stats from these "false" automatically and erroneously attributed values to App Install and Start Trial events first.
I've already reported this issue to Facebook few days ago, however they seem to be slow in handling such requests so I've decided to ask here if anybody ran into similar issue.
Add this to your plist file to disable Auto Event Logging
<key>FacebookAutoLogAppEventsEnabled</key>
<false/>
Thanks to Lena Bru for giving enough food to find a solution.
The Facebook documentation is scarce on the raised questions and the support answer literally headed me towards the documentation. To recap things, there were 2 main issues (the second one I've mentioned in the comments to Lena's reply):
Facebook was tracking value for the events, which brought no value to my business
Some of the events I've sent from backend didn't appear in the campaign reports
To solve both of these problems, I:
Turned off the value tracking option in the Facebook app settings
On the client side I've started setting up User ID (which the client receives from backend) according to Facebook documentation
I've started to send all of the events, which I wanted to view inside Facebook business cabinet, under custom names from backend. I've supplemented them with app_user_id parameter (see Advanced Matching for App Events in Facebook documentation) so that they could match the App Installs reported from client.
There's still a smaller issue left (it feels like Facebook reports include 20% less installs than actually happening) but the current setup is already something to begin with.

Google Home no longer broadcasting messages from the SDK (10/17/2019)

Until yesterday, I was able to broadcast messages across my several google home speakers in my house. I've been using either the assistant-relay project (https://github.com/greghesp/assistant-relay) or the google-assistant-webserver project (https://github.com/AndBobsYourUncle/hassio-addons). Either project worked perfectly for the last year.
Has something changed in the last day/week?
Yesterday, I noticed I could send a command such as "What time is it?", or "What is the weather?", and it would return the appropriate weather or time. However, if I issued a "broadcast" command of text, or even using one of their precanned recorded messages (bed time, movie time, etc), the message was never broadcasted. Additionally, the MyActivity section of google shows that "You asked the Assistant to broadcast a message" and from the SDK.
Has something changed? Are we no longer able todo broadcasting programmatically?

Tracking User with Google Ad Link

I'm not sure I've stated the title correctly, but I have what I think is an unusual issue. Not something I'm terribly worried about but curious. If I'm tagging this inappropriately I apologize.
I have a google ad running and track clicks using Final URL. So I track keywords, Ad_ID, Location, etc. Looking at the database I noticed that I am getting a hit on my website from what appears to be one user fairly regularly (sometimes minutes apart - other times days - 3200 entries) for the last 2 years, at least to when I started tracking this way. The entry shows the same keywords and the same location - which is local - a mobile device - but not an Ad_ID or a referring URL. I take the google info from the query string in the url so the query string would have to be the same every time.
I recently added a tracking cookie (long expiration) on the user end and this activity shows up with a different cookie value every time meaning either its either a different device or the device doesn't accept cookies. Each hit also starts a new session.
These hits do not show up as clicks on Google Ads so I'm not being charged, it also means that someone is not actually out there clicking on the ad.
I don't see where this is causing problems but am curious as to where this may be coming from. I don't know if there is a way to stop it.
So nothing critical but ideas on what might be causing this would be appreciated. I also get a ton of spam or bot hits on the site but that's a different issue.
Thanks!

GPS location tracking of others in Corona SDK

I am building an iOS app in Corona SDK and am trying to implement a map feature where the user can see where they are compared to where others with the app open are. What would be the best way to go at this?
I already wrote the code for finding the current location of the owner of the device, but how do I retrieve data from other users?
Any advice is greatly appreciated!
This is very broad question, but basically you need a server (on the web) where each user's location gets stored while the app is open, and the app can request the location of other users specifically, at some time interval. Presumably you would need to have some form of rights management since every user would typically be interested in seeing only a small number of other users, and every user would want to have control over who can see their location.
One thing to remind users of is that the reported position is that of the device, not that of the user, and that it is the last reported position, not necessarily current (not all devices are on cellular network or wifi at every moment), so you'd also want a time-of-last-update to be shown with every location marker.

Resources