Alexa skills kit interaction from my iOS app - ios

After reading Alexa Skills Kit docs, i have some doubts. What is meant by Alexa-enabled device here?(My custom home automation device support Alexa api or how to change my hardware to support Alexa api?).
This Alexa-enabled device will communicate with Smart Home Skill API and then AWS Lambda Skill adapter communicate with real device.
I am able to create Alexa skills (may be custom skills or Smart Home Skill). How to communicate with this skills from my ios app?

Any device with a microphone, a speaker and a network connection can interact with Alexa.
The developer portal is https://developer.amazon.com/alexa-voice-service
A good code base to start with a raspberry pi is https://github.com/alexa/alexa-avs-sample-app
Alexa Voice Service is currently only available in US. We are working hard at making it available for our customers in UK and DE.

I believe it's any device with Alexa Voice Services, which right now would mainly be the Echo and Echo Dot: https://developer.amazon.com/alexa-voice-service/what-is-avs
But in the US you can theoretically Alexa-enable any capable device with a microphone and speaker. It's launching later in the UK and Germany.

There are several Amazon products that qualify as Alexa-enabled. Some of them are the Echo, the Echo Dot, the Fire Tablet, in its latest versions at least, but might be available in older versions through software update, not sure. The Fire TV and the Amazon Tap are also Alexa-enabled.
To your point, only Amazon products are Alexa-enabled. I must say that there is a way to run some sort of SDK, perhaps with Alexa Voice service, and enable a Raspberry Pi or any other capable hardware to act as an Alexa-enabled device.
Of course, that doesn't include the iPhone. To interact with Alexa from your phone, you'd have to create an intermediary backend, be that in a Lambda function or in your own server.

Related

Is there a tutorial to develop its own app on Huawei band 6?

I own a Huawei band 6 and want to develop my own app to remote control the band and its sensors and then get data. Then I want to be able to send this data to a server through internet : to be able to access the health data (heart beat and Oximetry) of a remote patient.
If it seems more complicated, would it be easier to use Wear Os (Google) with another brand of the wearable ?
If you want to put an app directly onto the Huawei Band 6, it is currently not open to developers.
You can find a list of devices that are currently open to developers here. https://developer.huawei.com/consumer/en/doc/development/connectivity-Guides/service-introduction-0000000000018585
Alternatively, I recommend integrating the Huawei Health kit into a phone app based on the use case you described. Health kit allows phone apps to access the health & fitness data collected by Huawei wearables.
To answer B.M's question:
That is correct, you do not have to change the watch for the phone app option. These are two distinctly different options that I have described. Developing a watch app is different from creating a phone app that integrates the Huawei Health Kit. Each one serves a different purpose, and based on your use case, I believe that the a phone app makes the most sense.
Watch App: Can be only be developed on specific Huawei Watch models.
Phone App: Works with all Huawei wearables when Huawei Health Kit is integrated.
Please note that Wear OS (Google) is not used on Huawei wearables and does not work with the Huawei Health Kit.

Communicating with Google Home and Google Assistant with the Application We Developed Instead of the Smart Home Device

I work for a company that develops a smart home device.
The company is developing an android application for smart home devices it has developed/designed.
In addition, he wants to control the smart home devices he has developed with the Google Assistant.
We currently cannot use "Custom intents" for the "Voice-enable your Android app" feature. I wish we could add google assistant feature directly to our software independently (without any google home or nest affiliation)... (https://developers.google.com/assistant/app/custom-intents)
custom intents; It is not specialized for Smart Home and is not used in local languages ​​such as Turkish.
We are focusing on the Google Assistant feature for Smart Home. (https://developers.google.com/assistant/smarthome/overview)
Scenario 1: There is a way that Google communicates with the developer cloud via Access Token. (https://developers.google.com/assistant/smarthome/concepts/fulfillment-authentication)
Scenario 2: There is also a second way. Here google assistant is communicating with a google home or google nest device (rather than developer cloud).
(https://developers.google.com/assistant/smarthome/concepts/local) Obviously something strange is going on here. Google Assistant; It says it will contact google home. Is it the google home app installed on the phone he's talking about here, or a google home app like a speaker? Because at https://developers.google.com/assistant/smarthome/concepts/local#supported-devices, a speaker is shown as google home. If it's not talking about the google home app on the phone, or if it can't communicate with the google home app on the phone, it's not much use to us. Because the user may not have a physical google home product/device.
Neither of these scenarios fits exactly what we want to do. What we want to do is exactly this; Google Assistant should neither communicate with our cloud (to avoid lag) nor should it communicate with a google nest device (because the user may not have such a device). It should communicate directly with our app installed on the user's phone. Google Assistant or Google Home; should tell our application the purpose to be fulfilled. Let's send the request sent to us by google assistant or google home to our device or cloud (whatever options are possible).
Is there such a feature in the local home SDK of Google Assistant? Or is there another way google assistant can communicate directly with our app?
Because it is frankly very strange that google home or assistant try to communicate directly with a smart device when our app is installed on the user's phone. It can communicate with our cloud server, but why can't it communicate with our application installed on the phone?
Google assistant or google home; can communicate directly with our application installed on the phone while registering the first account instead of our oauth 2 server. Google is linking to our app instead of using oauth 2 directly. Our app connects to oauth 2 and gives a token to google. In other words, the user can make a sync with our local application on his phone. https://developers.google.com/assistant/smarthome/develop/implement-app-flip#implement-app-flip-in-your-native-apps
But I also think that in order to control smart devices, the user would have to communicate with our application installed on his phone.
Is there a way to this?
The platform does not support a way to directly control a smart home device through an app installed on a phone. Counter to your scenario, there are times when a person wants to control their device when their phone is not around.
Local Home SDK integrations are in addition to an existing cloud integration. This base cloud integration is needed in the cases that a person is not at home.

How to send direct command from Google Home to custom smart device without app name?

I try to build my custom IoT device that will be controlled via Google Home device, and serve people with disabilities.
The device itself is Tiva C Launchpad, that I program from scratch, meaning I will have a full control on it.
In my vision, the user wil say something like: "Ok Google, press play button", and as a result, the Google Home device will send a direct command of press_play_button to the IoT device, preferably via the local network.
I found the Google Action SDK, alongside with the Local SDK extention, but if I understood correctly, I have to be in the app mode first ("OK Google, play {app_name}") before pronouncing the action I want, which is inconvenient.
Is there any way to achieve my requirement?
If not, I may give up on the local network control, and use sort of a webhook to send HTTP request to my smart device, and in that case I wonder if MQTT will be more suitable.
Thanks.
The Local SDK is an extension to the Smart Home API. If your device matches up with the device types and traits that the Smart Home API supports then you can use that to control your device.
It has support for media players so things like play/stop should be possible.
I have build generic Smart Home control using MQTT to reach the device, but you have to provide a HTTP endpoint for the Google System to interface with. This take a little thought as you have to map MQTT asynchronous approach to HTTP's synchronous nature.

How do I get a user's iphone notifications using Amazon Echo?

I'm trying to build an alexa skill that will be able to read your iphone notifications. I've looked at a few node.js (the language we're building the skill with) options but those seem to only work on Mac computers.
It's not possible to read iPhone notifications with an Alexa skill, since Alexa has no way to talk to an iPhone. The code you write for an Alexa skill is run either on AWS Lambda (in the cloud) or in a web app you write, not on a personal Mac or iPhone.

Can you communicate with nearby devices using a website?

Can a website help a user communicate with nearby devices via bluetooth/WLAN without downloading software?
User requests that something be done on their device (which could be, for example a wirelessly connected printer or a bluetooth keyboard).
The site, which contains a repository of relevant actions, sends specific instructions for that device to the user's own machine.
Those instructions are then relayed to the correct device (with the user's permission) via the user's device's WLAN or existing bluetooth connection.
Part 3 is what I'm not sure of - is there a mechanism by which a website can contribute to a wireless/bluetooth connection held locally?
It is not possible. User browser can't interact with hardware for wireless networking.
You should force user to install some custom software to do this.
You would have to submit the "commands" first, then have the device make requests to the website server, i.e., check for any pending "commands" for the device, and then process them locally. A website is not "thing" that can directly interface with a hardware device.

Resources