Yeni: Yapay zekâ güvenlik duvarı tüm platformu izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

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

Çözüldü 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.

Kabul edilen çözüm♥ 9
3 yazı görüntüleniyor – 1 ile 3 arası (toplam 3)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.

Sohbete katılın

Soru sormak ve yanıtlamak, yararlı gönderileri beğenmek ve sorununuzu çözen yanıtı işaretlemek için oturum açın. Her katkı puan ve seviye kazandırır.

Paylaş