Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
can';t将esp8266设备连接到azure IoT集线器_Azure_Arduino_Mqtt_Iot_Esp8266 - Fatal编程技术网

can';t将esp8266设备连接到azure IoT集线器

can';t将esp8266设备连接到azure IoT集线器,azure,arduino,mqtt,iot,esp8266,Azure,Arduino,Mqtt,Iot,Esp8266,我正在尝试使用arduino编写的代码将esp8266(esp-12e节点mcu 1.0)连接到azure iot hub。我已经创建了一个物联网集线器和一个使用对称密钥身份验证的设备。使用WifiClientSecure库提供安全的mqtt连接(端口8883)。已为设备生成SAS令牌。似乎无法连接到azure并继续获取mqtt断开连接错误(-1)。哦,下载并添加azure Baltimore CyberTrust根CA #define AZURE //#define AWS #ifdef A

我正在尝试使用arduino编写的代码将esp8266(esp-12e节点mcu 1.0)连接到azure iot hub。我已经创建了一个物联网集线器和一个使用对称密钥身份验证的设备。使用WifiClientSecure库提供安全的mqtt连接(端口8883)。已为设备生成SAS令牌。似乎无法连接到azure并继续获取mqtt断开连接错误(-1)。哦,下载并添加azure Baltimore CyberTrust根CA

#define AZURE
//#define AWS

#ifdef AZURE
#include "secretsAzure.h"
#elif defined(AWS)
#include "secretsAws.h"
#endif

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <ArduinoJson.h>
#include <PubSubClient.h>

BearSSL::WiFiClientSecure net;
BearSSL::X509List cert(cacert);
PubSubClient client(net);

void connectToWiFi()
{
    Serial.print("connecting to wifi");
    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print(".");
        delay(1000);
    }
    Serial.println("ok!");
}


void connectToMqtt()
{
    Serial.print("MQTT connecting ");
    while (!client.connected())
    {
        if (client.connect(THINGNAME, USER, SAS_TOKEN))
        {
            Serial.println("connected!");
            if (!client.subscribe(MQTT_SUB_TOPIC))
                Serial.println(client.state());
        }
        else
        {
            Serial.print("failed ");
            Serial.println(client.state());
            delay(5000);
        }
    }
}

void setup()
{
    pinMode(MYPIN, OUTPUT);
    Serial.begin(115200);

    WiFi.hostname(THINGNAME);
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, pass);
    connectToWiFi();

    net.setTrustAnchors(&cert);

    client.setServer(MQTT_HOST, MQTT_PORT);
    delay(5000);

    connectToMqtt();
}

unsigned long lastMillis = 0;
void loop()
{
    if (!client.connected())
        connectToMqtt();
    else
    {
        client.loop();
        if (millis() - lastMillis > 5000)
        {
            lastMillis = millis();
            //sendData();
        }
    }
}
#定义AZURE
//#定义AWS
#ifdef AZURE
#包括“secretsAzure.h”
#定义的elif(AWS)
#包括“secretsAws.h”
#恩迪夫
#包括
#包括
#包括
#包括
BearSSL::WiFiClientSecure网络;
BearSSL::X509List证书(cacert);
PubSubClient客户端(网络);
void connectToWiFi()
{
串行打印(“连接到wifi”);
while(WiFi.status()!=WL_已连接)
{
连续打印(“.”);
延迟(1000);
}
Serial.println(“ok!”);
}
void connectToMqtt()
{
串行打印(“MQTT连接”);
而(!client.connected())
{
if(client.connect(THINGNAME、USER、SAS_令牌))
{
Serial.println(“已连接!”);
if(!client.subscribe(MQTT_子主题))
Serial.println(client.state());
}
其他的
{
串行打印(“失败”);
Serial.println(client.state());
延迟(5000);
}
}
}
无效设置()
{
pinMode(MYPIN,输出);
序列号开始(115200);
WiFi.hostname(THINGNAME);
WiFi.模式(WiFi_STA);
WiFi.begin(ssid,pass);
connectToWiFi();
net.setTrustAnchors(&cert);
setServer(MQTT_主机、MQTT_端口);
延迟(5000);
connectToMqtt();
}
无符号长lastMillis=0;
void循环()
{
如果(!client.connected())
connectToMqtt();
其他的
{
client.loop();
如果(毫秒()-lastMillis>5000)
{
lastMillis=millis();
//sendData();
}
}
}

编辑问题以显示您的代码,我们无法调试看不到的内容。添加,谢谢@hardillbI在一年前尝试做类似的事情,但失败了,因为esp8266无法处理azure要求的令牌大小。我不知道这是不是同样的情况,但我会调查一下。