Neu: Die KI-Firewall überwacht die gesamte Plattform und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

ESP32’yi kendi Flask sunucumdan Hermetry’ye taşıdım, MQTT bağlantısı rc=-2 veriyor

ESP32’yi kendi Flask sunucumdan Hermetry’ye taşıdım, MQTT bağlantısı rc=-2 veriyor

Gelöst 2 3

Selamlar. Bir süredir ESP32’deki sensör verilerini (sıcaklık, akım) kendi yazdığım Flask-SocketIO sunucusuna gönderiyordum, canlı bir sayfada izliyordum. Sunucuyla uğraşmaktan bıktım, veriyi Hermetry’ye göndermeye karar verdim. SocketIO istemcisini söktüm, yerine PubSubClient + WiFiClientSecure koydum.

Bağlanmıyor:

WiFi OK, IP 192.168.1.44
MQTT connecting... failed, rc=-2
MQTT connecting... failed, rc=-2

Kod kabaca şöyle:

WiFiClientSecure net;
PubSubClient mqtt(net);
mqtt.setServer(IPAddress(203,0,113,25), 8883);
mqtt.connect("esp32-atolye", TOKEN, "");

IP adresini host adını ping’leyerek buldum, DNS’e takılmasın diye. Token cihazın sayfasından kopyalandı. Neyi kaçırıyorum?

♥ 1

Ben derste net.setInsecure() ile geçmiştik bunu, onu dene belki?

♥ 1

setInsecure ile bağlanır belki ama sertifikayı hiç doğrulamadığın için önerilmez. Asıl sorun IP ile bağlanman. Hermetry’de SNI zorunlu, TLS el sıkışmasında host adını göndermen gerekiyor, IP ile gidince el sıkışma kuruluyor ve kopuyor, PubSubClient de bunu -2 (bağlantı kurulamadı) olarak görüyor. Saha cihazlarında bunu ben de yaşadım.

Düzeltilmiş hali:

WiFiClientSecure net;
net.setCACert(ROOT_CA_PEM);        // sunucu sertifikası genel bir CA'dan, onun kök sertifikası
PubSubClient mqtt(net);
mqtt.setServer("<Connection details'teki host>", 8883);
mqtt.setKeepAlive(60);
mqtt.setBufferSize(1024);           // varsayılan 256 bayt, büyük JSON sessizce gitmez
mqtt.connect("esp32-atolye", TOKEN, NULL);

Kullanıcı adı token, şifre boş. Bağlandıktan sonra v1/telemetry‚ye QoS 1 ile gönder. Aynı token ile iki cihaz çalıştırma, ikinci bağlantı birincisini düşürür.

Bir de saat: ESP32 TLS için tarih kontrolü yapıyor, configTime() ile NTP alıp sonra bağlan, yoksa sertifika „henüz geçerli değil“ görünebilir. Bağlantı kuralları burada: MQTT.

Akzeptierte Lösung♥ 9
Ansicht von 3 Beiträgen – 1 bis 3 (von insgesamt 3)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.

Mitdiskutieren

Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

Teilen