Сообщение об ошибке «Не удается установить соединение SSL при попытке отправить данные» при отправке данных ESP8266 в AWS IOT Shadows - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь отправить тестовое значение в AWS IOT Shadows, но когда я загружаю его на свое устройство, оно продолжает говорить: «Не удается настроить SSL-соединение. Попытка отправки данных».Пожалуйста, помогите мне отправить это значение в AWS IOT Shaodws!Я пытался изменить ARN на конечную точку HTTPS ARN ... и продолжаю получать эти сообщения об ошибках.

#include <ESP8266WiFi.h>
#include <AmazonIOTClient.h>
#include <ESP8266AWSImplementations.h>

Esp8266HttpClient httpClient;
Esp8266DateTimeProvider dateTimeProvider;

AmazonIOTClient iotClient;
ActionError actionError;

const char* ssid = "xxx";
const char* password = "xxx";

void initWLAN()
{
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
  }
}

void initAWS()
{
  iotClient.setAWSRegion("ap-southeast-2");
  iotClient.setAWSEndpoint("amazonaws.com");
  iotClient.setAWSDomain("arn:aws:iot:ap-southeast-2:489747887701:thing/IoTTestDevice");
  iotClient.setAWSPath("/things/IoTTestDevice/shadow");
  iotClient.setAWSKeyID("the-id");
  iotClient.setAWSSecretKey("the-secret-key");
  iotClient.setHttpClient(&httpClient);
  iotClient.setDateTimeProvider(&dateTimeProvider);
}

void setup() {
  Serial.begin(115200);
  delay(10);
  Serial.println("begin");
  initWLAN();
  Serial.println("wlan initialized");
  initAWS();
  Serial.println("iot initialized");
}

void loop()
{
  char shadow[100];
  strcpy(shadow, "{\"state\":{\"reported\":{\"test_value1\":123, \"test_value2\":234}}}");

  Serial.println("Trying to send data");
  Serial.print(shadow);

  char* result = iotClient.update_shadow(shadow, actionError);
  Serial.print(result);

  delay(10000);
}

продолжать получать эти сообщения об ошибках ..

12:31:04.295 -> can't setup SSL connectionTrying to send data
12:31:14.262 -> {"state":{"reported":{"test_value1":123, "test_value2":234}}}did not connect to timeserver
12:31:14.564 -> 
12:31:14.564 -> 
12:31:14.564 -> Exception (3):
12:31:14.564 -> epc1=0x4010011d epc2=0x00000000 epc3=0x00000000 excvaddr=0x40008550 depc=0x00000000
12:31:14.564 -> 
12:31:14.564 -> ctx: cont 
12:31:14.564 -> sp: 3ffefd60 end: 3fff0630 offset: 01a0

, пожалуйста, помогите мне!Спасибо

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Как упомянуто выше, следующую строку необходимо обновить с помощью вашей конечной точки:

From:
iotClient.setAWSDomain("arn:aws:iot:ap-southeast-2:489747887701:thing/IoTTestDevice");

To:
iotClient.setAWSDomain("axxxxxxxxxxxxz-ats.iot.ap-southeast-2.amazonaws.com");

Даже после устранения этой проблемы и принятия версии платы esp8266> 2.3.0 и <2.6.0 вы, вероятно, все еще будетеиспытывают ту же проблему: - (</p>

FWIW, версия платы esp8266 2.3.0 будет подключаться к aws iot, но при сбое приложения возникает другая проблема (ссылка: https://github.com/esp8266/Arduino/issues/4811). У меня нетудалось найти решение еще ... Кто-нибудь еще имел успех?

0 голосов
/ 29 января 2019

setAWSDomain() ожидает конечную точку API, а не ARN.

Вот пример .

Чтобы найти конечную точку API, выберите устройство в консоли, перейдя к IoT > Manage > Things > ThingName > Interact и найдите конечную точку HTTPS.

В качестве альтернативы вы можете использовать describe-endpointкоманда от интерфейса командной строки AWS.

...