2017-12-12 7 views
0

Ich bin auf der Suche nach einem einfachen JavaScript-Beispiel, wie Sie Nachrichten von einem Thema erhalten. Ich versuche, einen Build-Cop mit CodeBuild, Lambda, SNS und schließlich IoT zu erstellen. Ich habe erfolgreich Nachrichten zu dem Thema veröffentlicht, aber ich kann nicht für das Leben von mir herausfinden, was zu tun ist, um die Nachricht zu erhalten.Einfaches Beispiel, wie Sie ein AWS IOT-Thema auf einem Raspberry Pi erhalten

Die Beispiele im SDK sind nicht gut dokumentiert (zumindest für mich) und ich kann nicht herausfinden, welchen Import zu verwenden oder warum und wie man ein einfaches Thema abonnieren kann.

Der Code zu senden die Nachricht an die Sache ist das Folgende. Ich schicke es von einem Lambda. Der Code ist in TypeScript geschrieben, aber ich kopiere und kopiere das transpilierte JavaScript in die Konsole, da TypeScript nativ nicht unterstützt wird.

const params = { 
    topic: 'topic/buildcop', 
    payload: color, 
    qos: 1 
}; 


this.iotdata.publish(params, function(err, data){ 
    if(err){ 
    console.log(`error: ${err}`); 
    } 
    else{ 
    console.log("success?"); 
    //context.succeed(event); 
    } 
}); 
+0

Können Sie Ihre Frage zu dem, was Sie fragen, klären. Sie erwähnen, dass Sie ein Thema abonnieren, eine Nachricht erhalten usw. Fügen Sie den Code hinzu, den Sie geschrieben haben, und welches Problem Sie haben. –

+0

Grundsätzlich konzentriert sich mein aktueller Code darauf, die roten, gelben und grünen Lichter am Pi ein- und auszuschalten. Ich habe noch keinen Code zum Lesen des Themas, weil ich nicht sicher bin, wie es weitergehen soll. Ich habe den Pi als eine Sache in der AWS-Konsole registriert, und mein JavaScript (TypScript-Code, wirklich) im Zusammenhang mit dem Empfangen der Nachrichten kocht jetzt auf eine einzige Anweisung: const awsIot = require ('aws-iot -device-sdk '); Ich habe das Geräte-SDK installiert. Ich konnte mich mit dem IoT "verbinden", indem ich die Beispiele ausführte, aber sie sind so schlecht dokumentiert, ich bin mir nicht sicher warum oder wie. –

+0

Mein Lambda-Code - der Code, der auf die Sache schickt --- ist folgende: 'const params = {' ' Thema: 'Thema/buildcop',' ' Nutzlast: Farbe,' ' qos: 1' } ';' '' '' ' this.iotdata.publish (params, Funktion (err, data) { ' 'if (err) { ' 'console.log ('eRROR:' + err); '' } '' else { '' console.log ("Erfolg?"); '' //context.succeed (event); '' } '' }); ' –

Antwort

1

Ich bin mir nicht sicher, ob dies ist, was Sie wollen, aber hier ist ein Beispiel, wie man ein Thema mit der Javascript-sdk abonnieren:

var awsIot = require('aws-iot-device-sdk'); 

// 
// Replace the values of '<YourUniqueClientIdentifier>' and '<YourCustomEndpoint>' 
// with a unique client identifier and custom host endpoint provided in AWS IoT. 
// NOTE: client identifiers must be unique within your AWS account; if a client attempts 
// to connect with a client identifier which is already in use, the existing 
// connection will be terminated. 
// 
var device = awsIot.device({ 
    keyPath: <YourPrivateKeyPath>, 
    certPath: <YourCertificatePath>, 
    caPath: <YourRootCACertificatePath>, 
    clientId: <YourUniqueClientIdentifier>, 
     host: <YourCustomEndpoint> 
}); 

// 
// Device is an instance returned by mqtt.Client(), see mqtt.js for full 
// documentation. 
// 
device 
    .on('connect', function() { 
    console.log('connect'); 
    device.subscribe('topic_1'); 
    device.publish('topic_2', JSON.stringify({ test_data: 1})); 
    }); 

device 
    .on('message', function(topic, payload) { 
    console.log('message', topic, payload.toString()); 
    }); 

Sie können weitere Beispiele sehen an hier : https://github.com/aws/aws-iot-device-sdk-js#jobs

+0

Das ist _exactly_ was ich meinte. Vielen Dank!!! –

+0

können Sie klären, was Sie mit UniqueClientIdentifier und CustomEndpoints meinen? –

+1

UniqueClientIdentifier ist eine eindeutige clientId, die Sie für Ihr Gerät erstellen, kann eine beliebige Zeichenfolge sein, die Ihr Gerät eindeutig identifiziert. Der benutzerdefinierte Endpunkt ist der AWS IoT-Host. Sie finden ihn im AWS IoT-Dashboard unter "Einstellungen". –