Tafuta Msimbo

Mafunzo ya ESP32 48/55 - Ufuatiliaji wa Joto kwa Mbali na Udhibiti wa LED MQTT | Kifurushi cha IoT cha ESP32 cha SunFounder

Mafunzo ya ESP32 48/55 - Ufuatiliaji wa Joto kwa Mbali na Udhibiti wa LED MQTT | Kifurushi cha IoT cha ESP32 cha SunFounder

Katika mafunzo haya, tutachunguza jinsi ya kutumia moduli ya ESP32 pamoja na bodi ya upanuzi ya ESP32 ya SunFounder kufuatilia joto na unyevu kwa mbali kwa kutumia jukwaa la Adafruit IO. Zaidi ya hayo, tutatekeleza utendaji wa kudhibiti LED kupitia kiolesura cha wavuti. Kufikia mwisho wa mradi huu, utaweza kuona data ya joto na unyevu kwa wakati halisi na kuwasha na kuzima LED kutoka kwenye kivinjari chako.

Mradi huu unatumia itifaki ya MQTT kwa mawasiliano bora kati ya ESP32 na huduma ya Adafruit IO. MQTT ni nyepesi na inafaa kwa programu za IoT, ikituruhusu kuchapisha data ya vitambuzi kwa urahisi na kujisajili kwa amri za udhibiti wa LED. Kwa ufafanuzi zaidi wa msimbo na uunganishaji wa nyaya, hakikisha unatazama video inayoambatana na mafunzo haya (katika video saa 00:00).

Vifaa Vimeelezwa

Vipengele vikuu vya mradi huu vinajumuisha kidhibiti kidogo cha ESP32, kitambuzi cha joto na unyevu cha DHT11, na LED. ESP32 ni kidhibiti kidogo chenye nguvu ambacho kina Wi-Fi iliyojengewa ndani na uwezo wa Bluetooth, na kuifanya kuwa chaguo bora kwa miradi ya IoT. Inaweza kushughulikia kazi nyingi na kuunganishwa kwenye intaneti kwa urahisi.

Kitambuzi cha DHT11 kinawajibika kupima joto na unyevu. Kinatoa mawimbi ya dijitali ambayo yanaweza kusomwa na ESP32. LED hutumika kama kiashiria na inaweza kudhibitiwa kwa mbali kuonyesha ufanisi wa itifaki ya MQTT katika kusimamia vifaa kwenye intaneti.

Maelezo ya Datasheet

Mtengenezaji Adafruit
Nambari ya sehemu DHT11
Voltage ya Logic/IO 3.3 V
Voltage ya usambazaji 3.3 V
Mkondo wa pato (kwa kila chaneli) 20 mA
Mkondo wa kilele (kwa kila chaneli) 50 mA
Mwongozo wa mzunguko wa PWM Haipatikani
Viwango vya kizingiti cha mantiki ya ingizo 0.3 V (chini), 0.7 V (juu)
Kushuka kwa voltage / RDS(on) / kueneza Haipatikani
Mipaka ya joto 0 hadi 50 °C
Kifurushi Pini 3
Vidokezo / lahaja Tumia DHT22 kwa usahihi wa juu zaidi.

 

  • Hakikisha uunganishaji sahihi wa nyaya ili kuzuia uharibifu.
  • Tumia kipingamizi cha Ohm 220 na LED kwa kudhibiti mkondo.
  • Tumia vipingamizi vya kuvuta-juu kwa pini ya data ya DHT11 ikiwa ni lazima.
  • Angalia hati za Wi-Fi kwa usikivu wa herufi kubwa na ndogo.
  • Fuatilia pato la serial kwa kutatua matatizo ya muunganisho.
  • Weka mada za MQTT kuwa za kipekee ili kuepuka migongano.
  • Jaribu usomaji wa kitambuzi ili kuhakikisha ni sahihi.
  • Kuwa makini na muda wa majibu wa DHT11; inaweza kuchukua muda kusawazisha usomaji.

LED = dhibiti LED; temperature = chapisha data ya joto; humidity = chapisha data ya unyevu.

Maagizo ya Uunganishaji wa Nyaya

Ili kuunganisha vifaa, anza kwa kuunganisha kitambuzi cha DHT11. Unganisha pini ya kushoto ya DHT11 kwenye reli ya nguvu ya 3.3V kwenye bodi ya mkate kwa kutumia waya nyekundu. Pini ya kati ya DHT11 inapaswa kuunganishwa kwenye pini 13 kwenye ESP32 kwa kutumia waya ya njano. Hatimaye, unganisha pini ya kulia ya DHT11 kwenye reli ya ardhi kwa kutumia waya ya bluu.

Kisha, kwa LED, unganisha anode (mguu mrefu) kwenye pini 15 ya ESP32 kupitia kipingamizi cha Ohm 220. Unganisha cathode (mguu mfupi) moja kwa moja kwenye reli ya ardhi kwenye bodi ya mkate. Hakikisha miunganisho yote ni thabiti na angalia mara mbili kwa nyaya zozote zisizo imara.

Kusanidi Dashibodi

  1. Tembelea Adafruit IO, kisha bonyeza Anza Bure kuunda akaunti ya bure.

    ../../_images/sp230516_102503.png
  2. Jaza fomu kuunda akaunti.

    ../../_images/sp230516_102629.png
  3. Baada ya kuunda akaunti ya Adafruit, utahitaji kufungua tena Adafruit IO. Bonyeza Dashboards, kisha bonyeza Dashboard Mpya.

    ../../_images/sp230516_103347.png
  4. Unda Dashboard Mpya.

    ../../_images/sp230516_103744.png
  5. Ingia kwenye Dashboard mpya iliyoundwa na uunde kizuizi kipya.

    ../../_images/sp230516_104234.png
  6. Unda kizuizi 1 cha Toggle.

    ../../_images/sp230516_105727.png
  7. Ifuatayo, utahitaji kuunda feed mpya hapa. Toggle hii itatumika kudhibiti LED, na tutaiita feed hii “LED”.

    ../../_images/sp230516_105641.png
  8. Angalia feed ya LED, kisha endelea hatua inayofuata.

    ../../_images/sp230516_105925.png
  9. Kamilisha mipangilio ya kizuizi (hasa Kichwa cha Kizuizi, Maandishi ya Washa, na Maandishi ya Zima), kisha bonyeza kitufe cha Unda kizuizi chini kulia kumaliza.

    ../../_images/sp230516_110124.png
  10. Pia tunahitaji kuunda Vizuizi vya Maandishi viwili vinavyofuata. Vitatumika kuonyesha joto na unyevu. Kwa hivyo, unda feed mbili zinazoitwa temperature na humidity.

    ../../_images/sp230516_110657.png
  11. Baada ya kuunda, Dashboard yako inapaswa kuonekana kama hii:

    ../../_images/sp230516_111134.png
  12. Unaweza kurekebisha mpangilio kwa kutumia chaguo la Hariri Mpangilio kwenye Dashboard.

    ../../_images/sp230516_111240.png
  13. Bonyeza API KEY, na utaona jina lako la mtumiaji na API KEY vikionyeshwa. Andika hizi kwa sababu utazihitaji kwa msimbo wako.

    ../../_images/sp230516_111641.png

 

Mifano ya Msimbo na Maelekezo

Msimbo huanza kwa kujumuisha maktaba muhimu, kuweka vitambulisho vya Wi-Fi, na kufafanua vigezo vya MQTT. Vitambulisho muhimu kama AIO_USERNAME na AIO_KEY vinatumika kuthibitisha na huduma ya Adafruit IO.

#define AIO_USERNAME "YourUsername"
#define AIO_KEY "YourKey"

Mistari hii inafafanua jina lako la mtumiaji na ufunguo wa Adafruit IO, ambavyo ni muhimu kwa kuunganisha kwenye broker ya MQTT. Hakikisha maadili haya ni sahihi ili kuanzisha muunganisho wenye mafanikio.

Katika kazi ya setup(), muunganisho wa Wi-Fi unaanzishwa, na mteja wa MQTT anasanidiwa na cheti cha mizizi cha CA kwa mawasiliano salama.

WiFi.begin(WLAN_SSID, WLAN_PASS);
client.setCACert(adafruitio_root_ca);

Msimbo huu unaunganisha ESP32 kwenye mtandao wa Wi-Fi uliobainishwa na kuweka CA ya mizizi kwa muunganisho salama wa MQTT. Kushughulikia muunganisho huu kwa usahihi ni muhimu kwa usambazaji wa data wa kuaminika.

Hatimaye, kazi ya loop() inasimamia muunganisho wa MQTT na kuchapisha usomaji wa joto na unyevu kwa vipindi vya kawaida.

mqtt.processPackets(5000);

Mstari huu unaruhusu ESP32 kuchakata ujumbe unaoingia kwa mada zilizosajiliwa, kuhakikisha kifaa kinabaki kuitikia amri zinazotumwa kutoka kwenye kiolesura cha wavuti.

Kwa msimbo kamili, tafadhali rejelea programu nzima iliyopakiwa chini ya makala hii.

Maonyesho / Nini cha Kutarajia

Baada ya kusanidiwa kwa mafanikio, unapaswa kuona masasisho ya wakati halisi ya joto na unyevu kwenye dashibodi yako ya Adafruit IO. Unaweza pia kuwasha na kuzima LED kupitia kiolesura cha wavuti. Ikiwa LED haijibu kama inavyotarajiwa, angalia wiring yako na uhakikishe kwamba majina ya mada ya MQTT yanalingana na yale yaliyofafanuliwa kwenye msimbo.

Fahamu kwamba hitilafu fulani za muunganisho wa MQTT zinaweza kutokea kwa sababu ya vyeti vilivyokwisha muda wake. Hakikisha una cheti cha mizizi cha CA cha hivi karibuni kwenye msimbo wako ili kuepuka matatizo haya (katika video saa 15:30).

Vidokezo vya Muda wa Video

  • 00:00 Mwanzo
  • 1:50 Utangulizi wa mradi
  • 3:16 MQTT ni nini
  • 6:36 Usanidi wa Adafruit IO
  • 11:13 Wiring
  • 13:38 Msimbo wa Arduino umeelezwa
  • 22:03 Kuchagua bodi ya ESP32 na bandari ya COM
  • 23:44 Maonyesho ya mradi
  • 27:05 Kusasisha dashibodi
849-ESP32 Tutorial 48/55- Arduino code for Remote Temperature Monitoring and LED control MQTT
Språk: C++
/***********************************************************************
  Adafruit MQTT Library ESP32 Adafruit IO SSL/TLS example

  Use the latest version of the ESP32 Arduino Core:
    https://github.com/espressif/arduino-esp32

  Works great with Adafruit Huzzah32 Feather and Breakout Board:
    https://www.adafruit.com/product/3405
    https://www.adafruit.com/products/4172

  Adafruit invests time and resources providing this open source code,
  please support Adafruit and open-source hardware by purchasing
  products from Adafruit!

  Written by Tony DiCola for Adafruit Industries.
  Modified by Brent Rubell for Adafruit Industries
  MIT license, all text above must be included in any redistribution
 **********************************************************************/


/// ref: https://www.electronicwings.com/esp32/esp32-mqtt-client

#include <WiFi.h>
#include "WiFiClientSecure.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

/************************* WiFi Access Point *********************************/

#define WLAN_SSID "SSID"
#define WLAN_PASS "PASSWORD"

/************************* Adafruit.io Setup *********************************/

#define AIO_SERVER "io.adafruit.com"

// Using port 8883 for MQTTS
#define AIO_SERVERPORT 8883

// Adafruit IO Account Configuration
// (to obtain these values, visit https://io.adafruit.com and click on Active Key)
// #define AIO_USERNAME "YOUR_ADAFRUIT_IO_USERNAME"
// #define AIO_KEY      "YOUR_ADAFRUIT_IO_KEY"

#define AIO_USERNAME "JimmyKernel"
#define AIO_KEY "aio_Mxiv12i74b5jKfKNSKLYjlhPmoHC"

/************ Global State (you don't need to change this!) ******************/

// WiFiFlientSecure for SSL/TLS support
WiFiClientSecure client;

// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);


// io.adafruit.com root CA
const char* adafruitio_root_ca = \
      "-----BEGIN CERTIFICATE-----\n"
      "MIIEjTCCA3WgAwIBAgIQDQd4KhM/xvmlcpbhMf/ReTANBgkqhkiG9w0BAQsFADBh\n"
      "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
      "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH\n"
      "MjAeFw0xNzExMDIxMjIzMzdaFw0yNzExMDIxMjIzMzdaMGAxCzAJBgNVBAYTAlVT\n"
      "MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n"
      "b20xHzAdBgNVBAMTFkdlb1RydXN0IFRMUyBSU0EgQ0EgRzEwggEiMA0GCSqGSIb3\n"
      "DQEBAQUAA4IBDwAwggEKAoIBAQC+F+jsvikKy/65LWEx/TMkCDIuWegh1Ngwvm4Q\n"
      "yISgP7oU5d79eoySG3vOhC3w/3jEMuipoH1fBtp7m0tTpsYbAhch4XA7rfuD6whU\n"
      "gajeErLVxoiWMPkC/DnUvbgi74BJmdBiuGHQSd7LwsuXpTEGG9fYXcbTVN5SATYq\n"
      "DfbexbYxTMwVJWoVb6lrBEgM3gBBqiiAiy800xu1Nq07JdCIQkBsNpFtZbIZhsDS\n"
      "fzlGWP4wEmBQ3O67c+ZXkFr2DcrXBEtHam80Gp2SNhou2U5U7UesDL/xgLK6/0d7\n"
      "6TnEVMSUVJkZ8VeZr+IUIlvoLrtjLbqugb0T3OYXW+CQU0kBAgMBAAGjggFAMIIB\n"
      "PDAdBgNVHQ4EFgQUlE/UXYvkpOKmgP792PkA76O+AlcwHwYDVR0jBBgwFoAUTiJU\n"
      "IBiV5uNu5g/6+rkS7QYXjzkwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsG\n"
      "AQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMDQGCCsGAQUFBwEB\n"
      "BCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEIGA1Ud\n"
      "HwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEds\n"
      "b2JhbFJvb3RHMi5jcmwwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEW\n"
      "HGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwDQYJKoZIhvcNAQELBQADggEB\n"
      "AIIcBDqC6cWpyGUSXAjjAcYwsK4iiGF7KweG97i1RJz1kwZhRoo6orU1JtBYnjzB\n"
      "c4+/sXmnHJk3mlPyL1xuIAt9sMeC7+vreRIF5wFBC0MCN5sbHwhNN1JzKbifNeP5\n"
      "ozpZdQFmkCo+neBiKR6HqIA+LMTMCMMuv2khGGuPHmtDze4GmEGZtYLyF8EQpa5Y\n"
      "jPuV6k2Cr/N3XxFpT3hRpt/3usU/Zb9wfKPtWpoznZ4/44c1p9rzFcZYrWkj3A+7\n"
      "TNBJE0GmP2fhXhP1D/XVfIW/h0yCJGEiV9Glm/uGOa3DXHlmbAcxSyCRraG+ZBkA\n"
      "7h4SeM6Y8l/7MBRpPCz6l8Y=\n"
      "-----END CERTIFICATE-----\n";


/****************************** Feeds ***************************************/

// Setup a feed called 'test' for publishing and 'test2' for subscription.
// Notice MQTT paths for AIO follow the form: <username>/feeds/<feedname>
Adafruit_MQTT_Subscribe LED = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/LED");
Adafruit_MQTT_Publish humidity = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/humidity");
Adafruit_MQTT_Publish temperature = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/temperature");

/*************************** Sketch Code ************************************/

// set pin numbers
const int ledPin = 15;  // the number of the led pin

#include "DHT.h"

#define DHTPIN 13      // Set the pin connected to the DHT11 data pin
#define DHTTYPE DHT11  // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  delay(10);

  Serial.println(F("Adafruit IO MQTTS (SSL/TLS) Example"));

  // Connect to WiFi access point.
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WLAN_SSID);

  delay(1000);

  WiFi.begin(WLAN_SSID, WLAN_PASS);
  delay(2000);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  // Set Adafruit IO's root CA
  client.setCACert(adafruitio_root_ca);

  // register callback for feed
  LED.setCallback(ledCallback);
  // Setup MQTT subscription for time feed.
  mqtt.subscribe(&LED);

  // initialize the LED pin as an output
  pinMode(ledPin, OUTPUT);

  // Initialize the dht11
  dht.begin();
}

// uint32_t x=0;


void loop() {

  // Ensure the connection to the MQTT server is alive (this will make the first
  // connection and automatically reconnect when disconnected).  See the MQTT_connect
  // function definition further below.
  MQTT_connect();

  indicatorPublish();

  // wait 10 seconds for subscription messages
  mqtt.processPackets(5000);

  // wait a couple seconds to avoid rate limit
  //delay(2000);
}

void ledCallback(char* message, uint16_t len) {
  char messageBuffer[40];
  snprintf(messageBuffer, sizeof(messageBuffer), "LED status is :: %s, len :: %u", message, len);
  Serial.println(messageBuffer);
  if (strcmp(message, "ON") == 0) {
    Serial.println("Turning ON LED");
    digitalWrite(ledPin, HIGH);
  } else {
    Serial.println("Turning OFF LED");
    digitalWrite(ledPin, LOW);
  }
}

void indicatorPublish() {

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
  float humValue = dht.readHumidity();
  float tempValue = dht.readTemperature();

  if (isnan(humValue) || isnan(tempValue)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  if (!temperature.publish(tempValue)) {
    Serial.println(F("Failed"));
  } else {
    Serial.print("Temperature: ");
    Serial.println(tempValue);
  }
  if (!humidity.publish(humValue)) {
    Serial.println(F("Failed"));
  } else {
    Serial.print("Humidity: ");
    Serial.println(humValue);
  }
}

// Function to connect and reconnect as necessary to the MQTT server.
// Should be called in the loop function and it will take care if connecting.
void MQTT_connect() {
  int8_t ret;
  // Stop if already connected.
  if (mqtt.connected()) {
    return;
  }
  Serial.print("Connecting to MQTT... ");
  uint8_t retries = 3;
  while ((ret = mqtt.connect()) != 0) {  // connect will return 0 for connected
    Serial.println(mqtt.connectErrorString(ret));
    Serial.println("Retrying MQTT connection in 5 seconds...");
    mqtt.disconnect();
    delay(5000);  // wait 5 seconds
    retries--;
    if (retries == 0) {
      // basically die and wait for WDT to reset me
      while (1)
        ;
    }
  }
  Serial.println("MQTT Connected!");
}
850-ESP32 Tutorial 48/55- Basic Adafruit MQTT code (watch video)
Språk: C++
/***********************************************************************
  Adafruit MQTT Basic lesson 1
Watch video instruction for this code on YouTube https://youtu.be/M9BQweAsHJM
Resource page for this lesson and code:
📚⬇️ Download and resource page https://robojax.com/RJT670
Tutoril by https://youTube.com/@robojax

  Adafruit MQTT Library ESP32 Adafruit IO SSL/TLS example

  Use the latest version of the ESP32 Arduino Core:
    https://github.com/espressif/arduino-esp32

  Works great with Adafruit Huzzah32 Feather and Breakout Board:
    https://www.adafruit.com/product/3405
    https://www.adafruit.com/products/4172

  Adafruit invests time and resources providing this open source code,
  please support Adafruit and open-source hardware by purchasing
  products from Adafruit!

  Written by Tony DiCola for Adafruit Industries.
  Modified by Brent Rubell for Adafruit Industries
  MIT license, all text above must be included in any redistribution
 **********************************************************************/


/// ref: https://www.electronicwings.com/esp32/esp32-mqtt-client

#include <WiFi.h>
#include "WiFiClientSecure.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

/************************* WiFi Access Point *********************************/

#define WLAN_SSID "dars"
#define WLAN_PASS "5152535455"

/************************* Adafruit.io Setup *********************************/

#define AIO_SERVER "io.adafruit.com"

// Using port 8883 for MQTTS
#define AIO_SERVERPORT 8883

// Adafruit IO Account Configuration
// (to obtain these values, visit https://io.adafruit.com and click on Active Key)
// #define AIO_USERNAME "YOUR_ADAFRUIT_IO_USERNAME"
// #define AIO_KEY      "YOUR_ADAFRUIT_IO_KEY"

#define AIO_USERNAME "robojax"
#define AIO_KEY "aio_wCyL33EVKLcGoAotGNEQ4dGQYOLZ"

/************ Global State (you don't need to change this!) ******************/

// WiFiFlientSecure for SSL/TLS support
WiFiClientSecure client;

// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);


// io.adafruit.com root CA
const char* adafruitio_root_ca =
  "-----BEGIN CERTIFICATE-----\n"
  "MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n"
  "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
  "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n"
  "QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\n"
  "MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n"
  "b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n"
  "9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\n"
  "CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\n"
  "nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n"
  "43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\n"
  "T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\n"
  "gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\n"
  "BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\n"
  "TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\n"
  "DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\n"
  "hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n"
  "06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\n"
  "PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\n"
  "YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n"
  "CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n"
  "-----END CERTIFICATE-----\n";

/****************************** Feeds ***************************************/

// Setup a feed called 'test' for publishing and 'test2' for subscription.
// Notice MQTT paths for AIO follow the form: <username>/feeds/<feedname>
Adafruit_MQTT_Subscribe LED = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/LED");
//Adafruit_MQTT_Publish humidity = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/humidity");
//Adafruit_MQTT_Publish temperature = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/temperature");

/*************************** Sketch Code ************************************/

// set pin numbers
const int ledPin = 15;  // the number of the led pin



void setup() {
  Serial.begin(115200);
  delay(10);

  Serial.println(F("Adafruit IO MQTTS (SSL/TLS) Example"));

  // Connect to WiFi access point.
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WLAN_SSID);

  delay(1000);

  WiFi.begin(WLAN_SSID, WLAN_PASS);
  delay(2000);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  // Set Adafruit IO's root CA
  client.setCACert(adafruitio_root_ca);

  // register callback for feed
  LED.setCallback(ledCallback);
  // Setup MQTT subscription for time feed.
  mqtt.subscribe(&LED);

  // initialize the LED pin as an output
  pinMode(ledPin, OUTPUT);


}

// uint32_t x=0;


void loop() {

  // Ensure the connection to the MQTT server is alive (this will make the first
  // connection and automatically reconnect when disconnected).  See the MQTT_connect
  // function definition further below.
  MQTT_connect();

 // indicatorPublish();

  // wait 10 seconds for subscription messages
  mqtt.processPackets(10000);

  // wait a couple seconds to avoid rate limit
  //delay(2000);
}

void ledCallback(char* message, uint16_t len) {
  char messageBuffer[40];
  snprintf(messageBuffer, sizeof(messageBuffer), "LED status is :: %s, len :: %u", message, len);
  Serial.println(messageBuffer);
  if (strcmp(message, "ON") == 0) {
    Serial.println("Turning ON LED");
    digitalWrite(ledPin, LOW);
  } else {
    Serial.println("Turning OFF LED");
    digitalWrite(ledPin, HIGH);
  }
}



// Function to connect and reconnect as necessary to the MQTT server.
// Should be called in the loop function and it will take care if connecting.
void MQTT_connect() {
  int8_t ret;
  // Stop if already connected.
  if (mqtt.connected()) {
    return;
  }
  Serial.print("Connecting to MQTT... ");
  uint8_t retries = 3;
  while ((ret = mqtt.connect()) != 0) {  // connect will return 0 for connected
    Serial.println(mqtt.connectErrorString(ret));
    Serial.println("Retrying MQTT connection in 5 seconds...");
    mqtt.disconnect();
    delay(5000);  // wait 5 seconds
    retries--;
    if (retries == 0) {
      // basically die and wait for WDT to reset me
      while (1)
        ;
    }
  }
  Serial.println("MQTT Connected!");
}

Filer📁

Inga filer tillgängliga.