Tutorial ESP32 48/55 - Kormeeridda Heerkulka Fog iyo Xakamaynta LED MQTT | Qalabka ESP32 IoT ee SunFounder
Cashiyaradan, waxaan sahamin doonaa sida loo isticmaalo qaybta ESP32 iyadoo lala kaashanayo sabuuradda kordhinta ee SunFounder ee ESP32 si meel fog loogu kormeero heerkulka iyo qoyaanka iyadoo la adeegsanayo madal Adafruit IO. Intaa waxaa dheer, waxaan hirgelin doonaa shaqada lagu xakameynayo LED-ka iyadoo la adeegsanayo interface web. Dhamaadka mashruucan, waxaad awood u yeelan doontaa inaad aragto xogta heerkulka iyo qoyaanka waqtiga dhabta ah oo aad shido ama damiso LED-ka browser-kaaga.
Mashruucani wuxuu ka faa'iideysanayaa borotokoolka MQTT ee isgaarsiinta hufan ee u dhaxaysa ESP32 iyo adeegga Adafruit IO. MQTT waa fudud yahay oo si fiican ugu habboon codsiyada IoT, taasoo noo ogolaanaysa inaan si fudud u daabacno xogta sensor-ka oo aan iska qaadno amarrada xakamaynta LED-ka. Si aad u sii caddeyso koodka iyo fiilooyinka, hubi inaad daawato fiidiyowga la socda casharran (fiidiyowga 00:00).
Qalabka La Sharaxay
Qaybaha ugu muhiimsan ee mashruucan waxaa ka mid ah kontoroolaha ESP32, sensor-ka heerkulka iyo qoyaanka ee DHT11, iyo LED. ESP32 waa kontorool awood badan oo leh awoodo Wi-Fi iyo Bluetooth oo ku dhex jira, taasoo ka dhigaysa doorasho ku habboon mashruucyada IoT. Wuxuu qaban karaa hawlo badan oo wuxuu ku xidhmi karaa internetka si toos ah.
Sensor-ka DHT11 ayaa mas'uul ka ah cabbiraadda heerkulka iyo qoyaanka. Wuxuu soo saaraa calaamado dijitaal ah oo uu akhrin karo ESP32. LED-ku wuxuu u shaqeeyaa sida tilmaame waxaana si fog loo xakameyn karaa si loo muujiyo waxtarka borotokoolka MQTT ee maaraynta qalabka internetka.
Faahfaahinta Xogta
| Soo saaraha | Adafruit |
|---|---|
| Nambarka qaybta | DHT11 |
| Danabka Logic/IO | 3.3 V |
| Danabka sahayda | 3.3 V |
| Korontada soo saarista (kanal kasta) | 20 mA |
| Korontada ugu sarreysa (kanal kasta) | 50 mA |
| Hagaha soo noqnoqoshada PWM | N/A |
| Heerarka caqabadaha gelinta | 0.3 V (hoose), 0.7 V (sare) |
| Hoos u dhaca danabka / RDS(on) / dheregsanaanta | N/A |
| Xadka kulaylka | 0 ilaa 50 °C |
| Baakad | 3-labin |
| Qoraallo / noocyo kale | Isticmaal DHT22 si sax ah oo sare u ah. |
- Hubi fiilooyinka saxda ah si looga hortago waxyeelada.
- Isticmaal resistor 220 Ohm oo LED-ka la socda si loo xaddido korontada.
- Isticmaal resistors-ka kor u jiidaya ee barta xogta DHT11 haddii loo baahdo.
- Hubi aqoonsiga Wi-Fi ee xasaasiyadda xarfaha.
- Kormeer soo saarista taxanaha ah si aad u ogaato dhibaatooyinka isku xirka.
- Ka ilaali mawduucyada MQTT inay gaar ahaadaan si looga fogaado isku dhacyada.
- Tijaabi akhrinta sensor-ka si aad u hubiso inay sax yihiin.
- Ka digtoonow waqtiga jawaabta DHT11; waxay qaadan kartaa waqti si ay u dejiso akhrinta.
LED = xakameyn LED; temperature = daabac xogta heerkulka; humidity = daabac xogta qoyaanka.
Tilmaamaha Fiilooyinka
Si aad u xidho qaybaha, waxaad ku bilaabaysaa isku xirka sensor-ka DHT11. Ku xidh bidixda bidix ee DHT11 ee raadka danabka 3.3V ee sabuuradda rootiga ah iyadoo la adeegsanayo fiil casaan ah. Barta dhexe ee DHT11 waa in lagu xidhaa barta 13 ee ESP32 iyadoo la adeegsanayo fiil huruud ah. Ugu dambeyntii, ku xidh barta midig ee DHT11 ee raadka dhulka iyadoo la adeegsanayo fiil buluug ah.
Marka xigta, LED-ka, ku xidh anode-ka (lugta dheer) ee barta 15 ee ESP32 iyadoo la marayo resistor 220 Ohm. Ku xidh cathode-ka (lugta gaaban) si toos ah raadka dhulka ee sabuuradda rootiga ah. Hubi in dhammaan isku xirku ay adag yihiin oo laba jeer hubi fiilooyinka dabacsan.
Dejinta Dashboard-ka
-
Booqo Adafruit IO, ka dibna guji Start for free si aad u abuurto akoon bilaash ah.

-
Buuxi foomka si aad u abuurto akoon.

-
Ka dib markaad abuurto akoonka Adafruit, waxaad u baahan doontaa inaad dib u furto Adafruit IO. Guji Dashboards, ka dibna guji New Dashboard.

-
Abuur New Dashboard.

-
Gel Dashboard-ka cusub ee la abuuray oo abuur block cusub.

-
Abuur 1 block oo Toggle ah.

-
Marka xigta, waxaad u baahan doontaa inaad halkan ku abuurto feed cusub. Toggle-kan waxaa loo isticmaali doonaa in lagu xakameeyo LED-ka, waxaana u magacaabi doonnaa feed-kan “LED”.

-
Hubi feed-ka LED, ka dibna u gudub tallaabada xigta.

-
Dhammeysti dejinta block-ka (gaar ahaan Block Title, On Text, iyo Off Text), ka dibna guji badhanka Create block ee hoose ee midigta si aad u dhammeysato.

-
Waxaan sidoo kale u baahanahay inaan abuurno laba Text Block oo xiga. Waxaa loo isticmaali doonaa in lagu muujiyo heerkulka iyo qoyaanka. Sidaas darteed, abuur laba feed oo loogu magac daray temperature iyo humidity.

-
Ka dib abuurista, Dashboard-kaagu waa inuu u ekaadaa sidan:

-
Waxaad hagaajin kartaa qaabka adigoo isticmaalaya ikhtiyaarka Edit Layout ee Dashboard-ka.

-
Guji API KEY, waxaadna arki doontaa username-kaaga iyo API KEY-ga oo la muujiyey. Qor kuwan hoos maxaa yeelay waxaad u baahan doontaa koodhkaaga.

Tusaalooyinka Koodhka & Sharaxaadda
Koodhku wuxuu ku bilaabmaa inuu ku daro maktabadaha lagama maarmaanka ah, isagoo dejinaaya xogta Wi-Fi, iyo qeexaya cabbirrada MQTT. Aqoonsiyada muhiimka ah sida AIO_USERNAME iyo AIO_KEY ayaa loo isticmaalaa in lagu xaqiijiyo adeegga Adafruit IO.
#define AIO_USERNAME "YourUsername"
#define AIO_KEY "YourKey"
Sadarradan waxay qeexayaan username-kaaga iyo furayaasha Adafruit IO, kuwaas oo muhiim u ah ku xirnaanshaha MQTT broker-ka. Hubi in qiyamyadan ay sax yihiin si aad u sameysid xiriir guul leh.
Gudaha shaqada setup(), xiriirka Wi-Fi waa la bilaabay, MQTT client-ka waxaa lagu dejiyay shahaadada CA-ga asaasiga ah si loo helo isgaarsiin ammaan ah.
WiFi.begin(WLAN_SSID, WLAN_PASS);
client.setCACert(adafruitio_root_ca);
Koodhkani wuxuu ku xiraa ESP32-ka shabakadda Wi-Fi ee cayiman wuxuuna dejiyaa CA-ga asaasiga ah ee xiriirrada MQTT ammaanka ah. Si fiican u maaraynta xiriirradan ayaa muhiim u ah gudbinta xogta lagu kalsoonaan karo.
Ugu dambeyntii, shaqada loop() waxay maamushaa xiriirka MQTT waxayna daabacdaa akhrinta heerkulka iyo qoyaanka wakhti kasta oo joogto ah.
mqtt.processPackets(5000);
Sadarkan wuxuu u oggolaanayaa ESP32-ka inuu farsameeyo fariimaha soo gala ee mawduucyada la rukumay, isagoo hubinaya in qalabku uu ka jawaabo amarrada laga soo diro interface-ka webka.
Koodhka dhammaystiran, fadlan tixraac barnaamijka buuxa ee hoos ku shuban maqaalka.
Muuujin / Waxa Lagu Filan Karaa
Mark guul kuul, waa inaad ku aragtaa cusboonaysiinta waqtiga-joogga ah ee heerkulka iyo qoyaanka dashboard-ka Adafruit IO. Waxaad sidoo kale toosi kartaa LED-ka oo aad dami kartaa iyada oo loo marayo interface-ka web-ka. Haddii LED-ku uusan u jawaabin sidii la filayay, hubi fiilooyinkaaga oo hubi in magacyada mawduuca MQTT ay la mid yihiin kuwa lagu qeexay code-ka.
Ogow in qaladaadka xidhiidhka MQTT qaarkood ay dhici karaan sababtoo ah shahaadooyin dhacay. Hubi inaad haysato shahaadada CA-ga xididka ee ugu cusub code-kaaga si aad uga fogaato arrimahan (fiidiyowga 15:30).
Waqtiyada Fiidiyowga
- 00:00 Bilow
- 1:50 Hordhaca mashruuca
- 3:16 Waa maxay MQTT
- 6:36 Dejinta Adafruit IO
- 11:13 Fiilooyinka
- 13:38 Sharaxaada code-ka Arduino
- 22:03 Doorashada guddiga ESP32 iyo dekedda COM
- 23:44 Bandejiga mashruuca
- 27:05 Cusboonaysiinta dashboard-ka
/***********************************************************************
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!");
}
/***********************************************************************
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!");
}
Common Course Links
Common Course Files
Kheyraadka & Tixraacyada
-
Dukumenti
Faylasha📁
Fayl la'aan.