ConfluentiaBus goes Alexa

Ab sofort können Sie ConfluentiaBus per Sprache steuern!
Durch Integration über einen eigenen Skill haben Sie nun die Möglichkeit, Ihre Hausautomation über ein vorhandenes Amazon Echo Gerät oder die Alexa App zu steuern.

Aktuell ist es nicht möglich, mit einem Amazon Smart-Home-Skill ohne Nutzung des Amazon AWS direkt auf die eigene Hausautomation zuzugreifen. Deshalb erfordert die Anbindung an den Alexa-Service einiges an Konfiguration. Sie beinhaltet folgende Schritte:

  • Freischalten des Zugangs aus dem Internet
  • Anmelden eines Developer-Kontos bei Amazon
  • Bereitstellen eines Alexa-Skills
  • Anlage einer AWS-Lambda-Funktion
  • Konfiguration der Gruppenadressen in ConfluentiaBuilder
  • Ergänzen der Aufrufparameter von ConfluentiaBus

Freischalten des Zugangs aus dem Internet

Ihre Hausautomation muss für den Alexa-Service freigeschaltet werden. Hierzu benötigen Sie eine von außen erreichbare feste Internetadresse, z.B. per DynDNS, und einen definierten Port. Hierbei verwenden wir den Port 3000. Diese Freischaltung müssen Sie z.B. in der Firewall-Einstellung Ihres DSL-Modems vornehmen.

Anmelden eines Developer-Kontos bei Amazon

Öffnen Sie in einem Browser die Seite developer.amazon.com und melden sich mit Ihrem bestehenden Amazon-Konto als Entwickler an (es entstehen Ihnen hierbei aktuell keine Kosten).
Die Seite ist derzeit nur in Englisch verfügbar. Wählen Sie „APPS&SERVICES“ aus, anschließend „Security Profiles“. Erzeugen Sie mit Klick auf „Create a new Security Profile“ eine neues Sicherheits-Profil. Die benötigten Web-Settings können erst nach dem nächsten Schritt vervollständigt werden.
Kopieren Sie an dieser Stelle schon die Client-ID und das Client-Secret für den nächsten Schritt.

Bereitstellen eines eigenen Alexa-Skills

Gehen Sie auf der Entwickler Seite auf „Alexa Skills“ und erzeugen einen neuen Skill mit Klick auf „Create Skill“.
Folgende Konfigurationen müssen vorgenommen werden:
Name: ConfluentiaBus, „Skill created will default to“ auf „German“ stellen.
Wählen Sie „Smart Home“ als Skill-Typ aus, danach „Create Skill“.
Payload-Version bleibt auf „v3“, den Service Endpoint wird auf „Europe“ eingestellt. Die benötigte URL erhalten Sie nach der AWS-Konfiguration.
Wechseln Sie also zunächst auf den Reiter „Account Linking“ und konfigurieren Sie folgende Parameter:
Authorization URL: https://www.amazon.com/ap/oa
Access Token URI: https://api.amazon.com/auth/o2/token
Client-ID: aus dem ersten Schritt (Security Profile)
Client-Secret: aus dem ersten Schritt (Security Profile)
Als Scope fügen Sie profile:user_id ein.
Die Redirect-URLs kopieren Sie sich bitte für die Web-Settings und schliessen nach dem Speichern dieser Seite den vorhergehenden Konfigurationsschritt (Security Profile) ab.

Anlage einer AWS-Lambda-Funktion

Erstellen Sie einen eigenen AWS-Account unter aws.amazon.com und wechslen auf die „Lambda“-Seite.
Wählen Sie für Europa rechts oben „Ireland“ aus und erzeugen per „Create Function“ einen neuen Lambda-Service.
Wählen Sie „Blueprints“ aus und geben im Suchfeld „alexa-smart-home-skill-adapter“ ein. Danach erscheint die gewünschte Kachel und kann ausgewählt werden, „Configure“ öffnet den Folgedialog:
Name: ConfluentiaBus
Im Trigger Block:
Application-ID: Skill-ID aus vorigem Abschnitt
Enable Trigger: Häkchen setzen
Existing Role: lambda_basic_execution
Als Function-Code folgenden Block einkopieren (die Variable Host auf die richtige Internet-Adresse  setzen):

const PORT=3000;
const HOST=’meine.internet-adresse.de‘;

const NAMESPACE_CONTROL = „Alexa.ConnectedHome.Control“;
const NAMESPACE_DISCOVERY = „Alexa.ConnectedHome.Discovery“;

const ERROR_TARGET_OFFLINE = „TargetOfflineError“;
const ERROR_UNSUPPORTED_OPERATION = „UnsupportedOperationError“;
const ERROR_UNEXPECTED_INFO = „UnexpectedInformationReceivedError“;

exports.handler = function(event, context, callback) {

console.log(`EVENT: ${event}`);
console.log(event);
console.log(`CONTEXT: ${context}`);

var post_data = JSON.stringify(event);
console.log(post_data);

var options = {
hostname: HOST,
port: PORT,
method: ‚POST‘,
rejectUnauthorized: false,
headers: {
‚Content-Type‘: ‚application/json; charset=UTF-8‘,
‚Content-Length‘: Buffer.byteLength(post_data)
}
};

var request = require(‚https‘).request(options, (result) => {
console.log(`STATUS: ${result.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(result.headers)}`);
result.setEncoding(‚utf8‘);
var body = “;
result.on(‚data‘, (chunk) => body += chunk);
result.on(‚end‘, () => {
console.log(`BODY: ${JSON.stringify(body)}`);
callback(null, JSON.parse(body) );
return;
});
});

request.on(‚error‘, (e) => {
console.log(`problem with request: ${e.message}`);
callback(null, createError(ERROR_TARGET_OFFLINE) );
return;
});
request.write(post_data, „utf8“);
request.end();
return;
}// exports.handler

var createMessageId = function() {
var d = new Date().getTime();
var uuid = ‚xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx‘.replace(/[xy]/g, function(c) {
var r = (d + Math.random()*16)%16 | 0;
d = Math.floor(d/16);
return (c==’x‘ ? r : (r&0x3|0x8)).toString(16);
});
return uuid;
}// createMessageId

var createHeader = function(namespace, name) {
return {
„messageId“: createMessageId(),
„namespace“: namespace,
„name“: name,
„payloadVersion“: „2“
};
}

var createError = function(error,payload) {
if( payload === undefined )
payload = {};
return {
„header“ : createHeader(NAMESPACE_CONTROL,error),
„payload“ : payload,
};
}// createError

 

Anschließend auf „Create Function“ klicken und nach Fertigstellung die URL „arn:…“ für den Abschluss der Skill-Konfiguration (Schritt zuvor) kopieren und unter dem Abschnitt „Smart Home“ als Default-Endpoint, sowie als Endpoint für „Europe“ eintragen.

Konfiguration der Gruppenadressen in ConfluentiaBuilder

Öffnen Sie das Konfigurationsprogramm „ConfluentiaBuilder“ und wählen eine Gruppenadresse aus. Sie finden nun im unteren Bereich die Möglichkeit, eine Gruppenadresse sprachsteuern zu können, den „Rufnamen“ können Sie ebenfalls konfigurieren:

Auch die Heizungsgruppen können durch Alexa gesteuert werden. Hierzu müssen analog die Einstellungen auf dem Heizungs-Abschnitt vorngenommen werden.

Ergänzen der Aufrufparameter von ConfluentiaBus

Ergänzen Sie den Aufruf von ConfluentiaBus um:

-alexa:Client-ID:3000

Die Client-ID finden Sie in Ihrem oben konfigurierten Security-Profile.

Alexa-App

Installieren Sie sich die Alexa-App auf Ihrem Smartphone oder nutzen Sie die Amazon-Alexa-Webseite. Aktivieren Sie den Skill und schalten Sie den Testmodus in der Developer-Console ein.

Neustart und Gerätesuche

Starten Sie nun ConfluentiaBus neu und starten die Gerätesuche in Ihrer Alexa-App.

FERTIG!

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.