Control Amazon Alexa via Raspberry Pi - amazon-web-services

I want to integrate Amazon Alexa in my current Smart Home setup.
The main function that I would like to have is control the volume and play and pause music (for an alarm clock like function). I am not able to find such an API.
I am planing to controll Amazon Alexa (Dot) via an Raspberry Pi.
Does anyone know such an API?
Thanks!

Amazon has not publicly released an API to control Alexa enabled devices as of now.
If you look at the Amazon Alexa's IFTT page, there are no actions:
https://ifttt.com/amazon_alexa (scroll down to and click, show more actions and triggers). Quite a few triggers are available, but no actions, which is what you are interested in currently.
The closest you could get is by hacking into the network using Wireshark, figure out what messages are sent by Alexa to Echo when volume up/down commands are given. But that is again over a TLS connection, so you wouldn't get anything.

Related

web interface for potentiometer in aws iot

actually, I write program in Arduino ide which read potentiometer value and send it to AWS MQTT. whenever I revolve my potentiometer it prints value in AWS MQTT and now I want it to access from web page tell me what are the possible ways we access the data on web page
thanks.
I try to access it through node red in AWS cloud formation.my node is complete but it shows connecting error and not connected.
There are several ways available. I think this blog will be helpful - 7 patterns for IoT data ingestion and visualization- How to decide what works best for your use case
If you want to directory interact with IoT Core from Web browser, Amplify PubSub Library may be good.

AWS IoT Device online/offline check

I am currently working on an IoT device using AWS IoT core. I am new to working with IoT device. What is the standard/best way for determining whether the device is online and connected to the internet?
Thanks you!
Since you have been using AWS IoT Core, I would recommend that you stay in fully managed services provided by AWS IoT suite. No need to reinvent the wheel such as provisioning a separate database for a basic requirement of pretty much every IoT-enabled solution.
What I understand is that you want to monitor your IoT device fleets for state changes or failures in operation, and to trigger actions when such events occur. To address this challenge, I'd suggest using AWS IoT Events. It accepts inputs from many different IoT telemetry data sources including smart sensors, edge devices, management applications, and other AWS IoT services. You can easily push any telemetry data input to AWS IoT Events by using a standard API interface.
In specific to device heartbeat, please take a look at this sample detector model. A detector model simply represents your equipment or process. On the console, you can find some other pre-made detector model templates which you can customize based on your use-case.
One way to know if a device is online is to check for a heartbeat.
A device heartbeat is a small mqtt message to a topic that the device sends every 5 minutes.
In IoT Core, you would configure a rule that would update a Dynamodb table with a timestamp each time a message is sent to the heartbeat topic.
By checking this timestamp in Dynamodb, you can confirm if your device is currently online.
You can follow this Developer Guide to get connect disconnect events. it works on MQTT topics so we can use rules to trigger Lambda or other services.

How to provide iot service to our devices during aws code update roll out?

We are using AWS IOT for our home automation product.
Recently we started to face a new issue with AWS IOT services.
The problem is when AWS IOT team release new code updates, they disconnect certain devices from mqtt.
Our devices connect to mqtt , aws disconnects them immediately , ultimately leading to connect -> disconnect cycle.Our devices make shadow update/get request whenever they connect to mqtt.
As a result this causes high iot message usage. The worst thing is mqtt service remains unavailable during this time so users can't use our product and they start calling our customer support and we have no valid reason to satisfy them, leading to very bad user experience.
This issue has been occurred three times in last couple of months.
We tried to get some solution from AWS developer support but no benefit.
Could anyone please suggest a way that we can use to provide service to our customers when this issue occurs?
We are using nodemcu esp8266 and mongoose os on hardware side.

Pointing to Azure Event Hub instead of AWS Kinesis

My company currently uses Azure for our Data Warehousing infrastructure. In the past we have used Azure Event Hubs for streaming data. When working on previous projects this hasn't been an issue we just provide the connection details and they start sending us data.
However we have recently started working on a new project where most of their infrastructure is hosted on AWS, we have been asked to set up a Amazon Kinesis endpoint instead as they do not support Azure Event Hubs.
I don't know much about sending the data, but is it asking a lot to send to an Event Hub instead of Kinesis?
My suggestion for this is you could introduce a middle layer which understands both Kinesis and Event hub. And the middle layer I know is Spring Cloud Stream. It provides binder abstraction to supports various message middleware such as Kafka, Kinesis and Event hub.

How to send msg to device and wait for the response by aws IoT?

I used Aws IoT Device management to register my laptop as a device and run a node js script on my laptop.
My laptop will publish the message to a topic and it also can subscribe to a topic.
But what I want is, aws cloud send msg to my deivce( which is my laptop), periodically, if my laptop doesn't give the responses back to the cloud, cloud will know that my device is dead.
But how to send msg to my device and wait for the response? I read the tutorial about the jobs and shadow in aws IoT device management, none of them are sending something to device, they are just existing on the cloud and device will go and grab them.
How to make aws IoT device management automatically send msg or publish the msg to the device? All I know is go to the "Test" page and publish to the topic the manually.
Okay, so you're trying to use AWS IoT to create a monitoring system to detect if your device (laptop) is alive or not.
Sending data from the cloud -> laptop is not needed. You can do this by only sending data from your laptop -> cloud.
Configure the Node.JS script on your laptop to periodically send messages to a topic in AWS IoT. Configure an AWS IoT Rule on that topic that will publish a metric to AWS CloudWatch. This metric will represent your laptop sending a heartbeat to the cloud.
You can additionally configure an alarm in AWS CloudWatch to watch this metric and perform an action if the alarm threshold is ever breached. For your use case you can probably set the alarm to breach when it's missing data points because that'll mean your laptop has stopped sending messages.