Как внедрить AWS IoT (устройство) в React-Native? - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь реализовать AWS-IoT (устройство) с помощью React-Native.

Я использовал пакеты,

1) aws-iot-device-sdk-js

2) response-native-aws-iot-device-shadows

и получил много ошибок при использовании пакета.Я мог отладить несколько сообщений, но не получил ожидаемых результатов.

Я внедряю приложение AWS-IoT для чата.

Я успешно создаю сеанс IoT с использованием API REST и получаю их в качестве ответов iotEndpoint, region, accessKey, secretKey, sessionToken.Но, используя эти учетные данные, я не могу подключиться с помощью вышеуказанных пакетов.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Я прочитал этот пост и журнал чата, но не смог найти решение этой проблемы, которое, похоже, у меня тоже есть.Я выполнил все шаги, описанные здесь Роном, но я получаю файлysys.existsSync, который не является ошибкой функции.Я включил импорт shim в качестве первой строки кода в index.js.Код для связи с AWS выглядит следующим образом.

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 *
 * @format
 * @flow
 * @lint-ignore-every XPLATJSCOPYRIGHT1
 */

import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import AwsIot from 'aws-iot-device-sdk'

const instructions = Platform.select({
  ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
  android:
    'Double tap R on your keyboard to reload,\n' +
    'Shake or press menu button for dev menu',
});

type Props = {};
export default class App extends Component<Props> {
  constructor(props){
    super(props)
    this.connectToIoT()
  }

  connectToIoT(){
    var device = AwsIot.device({
       keyPath: './cert/mykey-private.pem.key',
       certPath: '/cert/mycert-certificate.pem.crt',
       caPath:   './cert/AmazonRootCA1.pem.key',
       clientId: 'myclientid',
       host: 'myhost'
   });
   console.log(device)
   device
    .on('connect', function() {
      console.log('connect');
    });
    device
    .on('message', function(topic, payload) {
      console.log('message', topic, payload.toString());
    });
    }

  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>Welcome to React Native!</Text>
        <Text style={styles.instructions}>To get started, edit App.js</Text>
        <Text style={styles.instructions}>{instructions}</Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

Какие-либо возможные решения или другие способы связи с AWS IoT с использованием MQTT в реагируют на использование при использовании сертификатов для аутентификации?

0 голосов
/ 14 декабря 2018

Я понял это,

Шаг 1: Установить aws-iot npm пакет npm install --save aws-sdk aws-iot-device-sdk

Шаг 2: Установите пакет nodeify npm install --save-dev rn-nodeify

Шаг 3: Запустите эту команду, чтобы установить серию указанных пакетов

npx rn-nodeify --install "fs,util,path,tls,stream,buffer,global,process" --hack

«Пожалуйста, подождите, пока не будут установлены все пакеты»

Шаг 4: Перейти к package.json -> в разделе scripts add,

"postinstall": "rn-nodeify --install fs,util,path,tls,stream,buffer,global,process --hack"

Шаг 5: Установите пакет asyncstorage-down npm install --save asyncstorage-down

Шаг 6: rn-nodeify автоматически сгенерирует файл shim.js в корневой части вашего реактивного проекта.Просто импортируйте его в index.js файл, подобный этому import './shim'

Наконец, вы готовы использовать пакет aws-iot !!!

Желательно сгенерировать ключи iot-sessionкак указано в вопросе выше с использованием API REST в бэкэнде.

...