New: the AI firewall watches the whole platform and explains each incident in plain words. See how it works

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

Solved 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.

Accepted solution♥ 9
Viewing 3 posts – 1 through 3 (of 3 total)
  • You must be logged in to reply to this topic.

Join the conversation

Sign in to ask and answer, like helpful posts and mark the reply that solved your problem. Every contribution earns points and levels.

Share