Arduino не может подключиться к IBM Watson IoT через Wi-Fi. Что мне не хватает? - PullRequest
0 голосов
/ 02 ноября 2019

Я потратил некоторое время на это, но не повезло, должно быть что-то простое ...

Я хочу подключиться к платформе Watson и отправить событие (некоторый текст) с MKR1000Arduino.

Я упал на первое препятствие, поскольку он не подключается к облаку.

Информация, которую они имеют в сети, довольно хорошая и держит меня в чтении в течение дня или 2 сейчас!

Если бы я мог получить вторую пару глаз, это было бы замечательно.

Само соединение Wi-Fi в порядке, так как я запустил его на другом коде, чтобы подтвердить, что оно в порядке. Кроме того, я получаю "?"к последовательному монитору, поэтому предположим, что это облачное соединение, а не Wi-Fi.

void connect() {
    Serial.print("checking wifi...");
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print("!");
        delay(1000);
    }

    Serial.print("\nconnecting...");
    while (!client.connect("d:slqo8v:Arduino:Sender01","use-token-auth","<as 
    on the hub>")) {
        Serial.print("?");
        delay(1000);
    }

    Serial.println("\nconnected!");
}

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

Большая часть кода указана ниже, я не хочу публиковать все это, так как он говорит, что не нужно вставлять весь код, но я не думаю, что моего опыта достаточно, чтобы этоэто не что-то тривиальное, как неуместная скобка.

Пример, который я показал, похож на

client.connect("clientID", "username", "password")
IBM Bluemix 
clientID = "d:<slqo8v>:<Arduino>:<Sender01>"
username is aways: "use-token-auth"
password is: Token auth provided by Bluemix
Example:
client.connect("d:iqwckl:arduino:oxigenarbpm","use-token-auth","90wT2?a*1WAMVJStb1")    

Я воспроизвел как это ..

    Serial.print("\nconnecting...");
    while (!client.connect("d:slqo8v:Arduino:Sender01","use-token- 
    auth","as provided online")) {
        Serial.print("?");
        delay(1000);
    }
    Serial.println("\nconnected!");
}

void setup() {
    Serial.begin(9800);
    WiFi.begin("", "");

    client.begin("slqo8v.messaging.internetofthings.ibmcloud.com", 1883, net);

    connect();
}


void loop() {
    client.loop();

    if (!client.connected()) {
        connect();
    }
}

У меня естьтакже изменил код, но не нашел ничего работоспособного.

Любая помощь очень ценится.

Спасибо!

1 Ответ

0 голосов
/ 04 ноября 2019

Глядя на сторону сервера, я вижу, что последние ошибки связаны с пробелом в идентификаторе клиента, что приводит к неавторизованной ошибке. Используемая клиентская строка: d: slqo8v:Arduino:Sender01 Обратите внимание на пробел перед slqo8v.

Я не вижу этого пробела в вашем примере кода, так что, возможно, это специальный символ из копирования и вставки? или код изменился с этого поста?

...