无法使用 React Native 连接到 aws 物联网设备

can not connect to aws iot device with react native

我正在使用 React Native 构建 IoT 应用程序。 使用了这个包

https://github.com/aws/aws-iot-device-sdk-js

但在 运行 应用

时出现错误

import React, {Component} from 'react';
import {Platform, 
  StyleSheet, 
  Text, 
  View,
  TextInput,
  TouchableOpacity,
  StatusBar,
} from 'react-native';
import AwsIot from 'aws-iot-device-sdk'
export default class App extends Component {
  constructor(props){
    super(props)
    this.connectToIoT()
  }
  connectToIoT(){
    var device = AwsIot.device({
       keyPath:'1d8bea736f-private.pem.key',
       certPath: '1d8bea736f-certificate.pem.crt',
       caPath:   'AmazonRootCA1.pem',
       clientId: 'IoTcloud',
       host: 'a3ckca0x6pesml.iot.ap-northeast-2.amazonaws.com'
   });
   console.log(device)
   device
    .on('connect', function() {
      console.log('connect');
    });
    device
    .on('message', function(topic, payload) {
      console.log('message', topic, payload.toString());
    });
    }
}

这里我在打开应用程序时调用了这个函数 connectToIoT .. keyPath,certPath,caPath 文件存放在项目的根目录下

如何消除此错误并将我的设备连接到 aws-iot???

已经从堆栈中遵循了这个解决方案

但仍然卡在这个错误

您正在尝试将数据发送到 AWS IoT Core 代理吗?此外,您的程序中没有主题可以发布或订阅消息

import Aws from 'aws-sdk/dist/aws-sdk-react-native'
import AwsIot from 'aws-iot-device-sdk'

AWS_REGION = 'us-east-1' // Change if needed.
AWS_COGNITO_IDENTITY_POOL = 'us-east-1:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' 
// Fill in.
AWS_IOT_ENDPOINT = 'XXXXXXXXXXXXX.iot.us-east-1.amazonaws.com' // Fill in.

Aws.config.region = AWS_REGION
Aws.config.credentials = new Aws.CognitoIdentityCredentials({
IdentityPoolId: AWS_COGNITO_IDENTITY_POOL
})

Aws.config.credentials.get(() => {
const config = {}
let client

config.host = AWS_IOT_ENDPOINT
config.protocol = 'wss'
config.clientId = `client-${Math.floor((Math.random() * 100000) + 1)}`
config.accessKeyId = Aws.config.credentials.accessKeyId
config.secretKey = Aws.config.credentials.secretAccessKey
config.sessionToken = Aws.config.credentials.sessionToken

client = AwsIot.device(config)

client.on('connect', () => {
    client.subscribe('some_topic')
})

client.on('message', (topic, message) => {
    console.log(topic, message)
})

client.on('error', error => {
    console.log(error)
})
})

不要使用您尝试连接物联网设备的证书,请使用 'MQTT over the WebSocket Protocol' 或 https://github.com/aws/aws-iot-device-sdk-js/issues/86#issuecomment-371159865

我不知道这是否晚了但是我分享这个,我也关注了它并且它正在工作!

他设法使 aws 物联网和本地反应与 AWS amplify 一起工作。 https://www.youtube.com/watch?v=EfbRKaPt2S4&list=PL8kT3V3swTBluh_HQ98YHrUacqZWCfmyU