In diesem Blogbeitrag findest du alles wissenswertes über den Amazon IoT bzw. Dash-Button. Nachdem man die Grundlagen weiß, starten wir gleich mit der ersten Anwendung. Sollte noch kein AWS-Account erstellt wurden sein, kann man sich hier registrieren.
1) Slack vorbereiten
Damit Nachrichten an Slack gesendet werden können, müssen wir eine Slack-App registrieren. Diese App nennt sich „Incoming WebHooks“, und funktioniert wie ein Webserver, der einen Request entgegen nimmt, diesen auswertet und anschließend die Befehle des Requests ausführt. In unserem Fall nimmt dieser Webhook eine Nachricht an und sendet diese dann im entsprechenden Slack-Channel. Dazu gehen Sie zu den Slack-Apps und suchen nach „Incoming WebHooks“:
- Klicken Sie auf „Add Configuration„
- Wählen Sie den gewünschten Slack-Channel aus, zu welchem die Nachricht später gesendet werden soll
- Und klicken Sie auf „Add incoming Webhooks Configuration“
- Notieren Sie die angezeigte „Webhook URL“
Eine genaue Dokumentation zu „Incoming Webhooks“ findet man hier. Diese App dient wie eine Bridge, welche Requests von außerhalb entgegen nimmt und anschließend in Slack übertragen werden.
2) Lambda-Funktion erstellen
Nachdem anmelden auf der Amazon AWS-Seite wechseln wir zu den Lambda Funktionen, achten Sie darauf welche Region ausgewählt ist (ich wähle hier (recht oben im Menü) Frankfurt). Folgen Sie hier nun folgenden Schritten:
- Klicken Sie auf „Create function“
- Wählen Sie „Author from scratch“
- Name: Geben Sie einen Namen ein, zB. „iot_button_test“
- Runtime: Als Runtime können Sie die Standard-Einstellung lassen (Node.js 6.10)
- Role: Create new role from templates(s)
- Role name: Geben Sie einen beliebigen Namen ein, zB. „iot_lambda_role“
- Policy templates: Wählen Sie hier „AWS IoT Button permissions“ aus
- Schritt mittels „Create function“ abschließen
3) Lambda-Funktion konfigurieren
In diesem Schritt wird nun der richtige auslöser für die Lambda-Funktion konfiguriert:
- Unter „Add triggers“ wählen Sie „AWS IoT“ aus
- IoT type: Wählen Sie „IoT button“
- Device Serial Number: Die Seriennummer finden Sie auf der Rückseite des Buttons (startet meistens mit „G03″)
- Aktiviere „Enable trigger“
- Klicke auf den Button „Generate certificate and keys„.
- Die Daten müssen nun gespeichert werden:
- Your certificate PEM
- Your private key
- Endpoint subdomain
- Endpoint region
- Nachdem die Daten notiert wurden, klicken Sie auf „Add„
4) Lambda-Code schreiben
Nun geht es darum den Code der Funktion zu schreiben. Klicken Sie oben im Designer auf die Lambda-Funktion („iot_button_test“). Danach können Sie unten den folgenden Code einfügen:
//libraries einbinden
var https = require('https');
var util = require('util');
exports.handler = function(event, context) {
//Nachricht Daten -> channel, username uws.
var postData = {
"channel": "#varioous",
"username": "varioous_bot",
"icon_emoji": ":aws:"
};
//nachricht
postData.attachments = [
{
"text": "Wie wäre es mit einer Kaffeepause?"
}
];
//hook konfiguration -> hier url eintragen
var options = {
method: 'POST',
hostname: 'hooks.slack.com',
port: 443,
path: '/services/XXXXXXXXXX'
};
//request absenden
var req = https.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
context.done(null);
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.write(util.format("%j", postData));
req.end();
};
Hierbei müssen Sie aufpassen, dass Sie in Zeile 8-10 die richtigen Daten angeben, und in Zeile 25 die richtige URL für den Webhook angeben.
Klicken Sie anschließend nur noch auf „Save“.
5) Lambda + Slack Integration testen
Nun können wir die Funktion bereits testen: Wenn wir nun die Lambda Funktion aufrufen, muss die Nachricht bereits an den Slack-Channel gesendet werden. Dazu bei der Lambda-Funktion einfach ein Test-Event erstellen, dieses kann ein leeres json („{}“) sein. Klickt man nun auf „Test“ wird die Nachricht an den Slack Channel gesendet.
6) IoT-Button konfigurieren
Nun muss noch die Konfiguration (aus Schritt 2) auf den Button gespielt werden:
- Halten Sie die Taste am Button für 6 Sekunden gedrückt, damit wird der Button in den Wartungsmodus versetzt.
- Der Button beginnt nun blau zu blinken
- Verbinden Sie sich mit dem nun verfügbaren WLAN „Button ConfigureMe – ECE“
- Öffnen Sie im Browser die Seite http://192.168.0.1
- Wi-FI Configuration: Oben geben Sie die Daten Ihres WLAN’s ein (SSID und Password)
- AWS Iot Configuration: Geben Sie die zuvor notierten Daten ein (Zertifikat, Private-Key, Subdomain, Region).
- Klicken Sie auf Configure
7) Fertig und Testen
Damit ist die Konfiguration und das Demo abgeschlossen. Wenn Sie alle Schritte richtig gemacht haben, erhalten Sie nach einem Tastendruck auf den Button eine Slack-Nachricht. Sollte der Button nach einem Tastendruck rot und nicht grün leuchten, haben Sie vermutlich in Schritt 6 einen Fehler gemacht, heißt der Button kann nicht ordentlich mit Amazon kommunizieren.
In der Amazon AWS-Console finden Sie unter dem Punkt „AWS IoT“ noch weitere nützliche Informationen zum Button. Unter „Manage -> Things“ muss der Button nun ersichtlich sein. Mittels Monitor sehen Sie eine Übersicht der erfolgreichen Verbindung. Unter Test können Sie sich zu einem Topic registrieren und sehen somit welche Daten vom Button gesendet werden, bzw. ob diese Ordnungsgemäß bei Amazon ankommen.
Da Amazon immer wieder das Design ändert oder Funktionen wo anders platziert, kann es sein dass diese Anleitung (Stand: 01.02.2018) nicht mehr zu 100% passt, der Ablauf sollte allerdings der ungefähr der gleiche bleiben.
Quellen / Links
Wir entwickeln digitale Lösungen mit Leidenschaft
Warum wir das tun? Weil die Verwirklichung Ihrer Vision unser größter Anspruch und die schönste Anerkennung ist. Deshalb nehmen wir uns gerne ausreichend Zeit für die Realisierung Ihres digitalen Projekts.
Kontaktieren Sie uns, wir sind gerne für Ihre Fragen da: