Πίνακας περιεχομένων:

Αναφορά καιρού χρησιμοποιώντας μικροεφαρμογές ThingSpeak MQTT και IFTTT: 8 βήματα
Αναφορά καιρού χρησιμοποιώντας μικροεφαρμογές ThingSpeak MQTT και IFTTT: 8 βήματα

Βίντεο: Αναφορά καιρού χρησιμοποιώντας μικροεφαρμογές ThingSpeak MQTT και IFTTT: 8 βήματα

Βίντεο: Αναφορά καιρού χρησιμοποιώντας μικροεφαρμογές ThingSpeak MQTT και IFTTT: 8 βήματα
Βίντεο: ΔΗΜΟΚΡΑΤΙΚΗ ΑΡΙΣΤΕΡΑ ΛΕΣΒΟΥ ενεργειακο του Αιγαιου 2024, Νοέμβριος
Anonim
Αναφορά καιρού χρησιμοποιώντας μικροεφαρμογές ThingSpeak MQTT και IFTTT
Αναφορά καιρού χρησιμοποιώντας μικροεφαρμογές ThingSpeak MQTT και IFTTT

Εισαγωγή

Μια εφαρμογή καιρού με βάση το σύννεφο που παρέχει καθημερινές αναφορές καιρού ως ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου. Αυτή η εφαρμογή Ιστού μετρά τη θερμοκρασία και την υγρασία χρησιμοποιώντας SHT25 και Adafruit Huzzah ESP8266. Μας παρέχει δεδομένα θερμοκρασίας και υγρασίας σε πραγματικό χρόνο και ωριαία ανάλυση. Τα δεδομένα αποστέλλονται χρησιμοποιώντας το ThingSpeak MQTT API και αργότερα παρέχουμε μια ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου στον χρήστη κάθε φορά που η θερμοκρασία φτάσει το καθορισμένο όριο χρησιμοποιώντας το πρωτόκολλο IFTTT. Το SHT25 είναι αισθητήρες θερμοκρασίας και υγρασίας που κατασκευάζεται από την Sensirion. Το SHT25 παρέχει υψηλό επίπεδο ακρίβειας περίπου ± 2% RH. Το εύρος υγρασίας του κυμαίνεται από 0 έως 100% και το εύρος θερμοκρασίας μεταξύ -40 και 125 ° C. Είναι πολύ πιο αξιόπιστο και γρήγορο με 8 δευτερόλεπτα χρόνου απόκρισης αισθητήρα.

Χαρακτηριστικά

  • Σας παρέχει αναλυτικά στοιχεία και στατιστικά στοιχεία σε πραγματικό χρόνο χρησιμοποιώντας το Thing Speak MQTT API
  • Μια ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου παρέχεται στο χρήστη σε καθορισμένη ώρα χρησιμοποιώντας το IFTTT
  • Το Task Scheduler χρησιμοποιείται για τον προγραμματισμό της εργασίας, όπως η ανάκτηση δεδομένων από αισθητήρες, η δημοσίευση των μετρήσεων των αισθητήρων, η εγγραφή στο θέμα MQTT
  • Χρησιμοποιεί πρωτόκολλο I2C για την ανάκτηση της ένδειξης του αισθητήρα που είναι πιο ακριβής, επεκτάσιμη και επεκτάσιμη
  • κατάσταση αναστολής λειτουργίας όταν η συσκευή είναι αδρανής ή δεν καλείται επανάκληση εργασιών.
  • ο αποτελεσματικός προγραμματισμός εργασιών παρέχει απρόσκοπτη χρήση
  • Φιλοξενείται μια ξεχωριστή ιστοσελίδα όπου ο χρήστης πρέπει να παρέχει τα διαπιστευτήριά του για να αποφύγει να αναβοσβήνει η συσκευή σας κάθε φορά που βρίσκεται σε επαφή με άλλα δίκτυα wifi
  • Το SPIFFS χρησιμοποιείται για την αποθήκευση της ιστοσελίδας μας για να γίνει ο κωδικός μας ευανάγνωστος και λιγότερο αδέξιος

Βήμα 1: Προδιαγραφή υλικού και λογισμικού

Προδιαγραφή υλικού και λογισμικού
Προδιαγραφή υλικού και λογισμικού
Προδιαγραφή υλικού και λογισμικού
Προδιαγραφή υλικού και λογισμικού

Προδιαγραφή υλικού

  • Πίνακας Adafruit esp8266 Huzzah
  • Huzzah Board Shield
  • Μονάδα αισθητήρα SHT25
  • Καλώδιο I2C

Προδιαγραφές λογισμικού

  • Arduino IDE
  • IFTTT Thing Speak
  • MQTT API

Βήμα 2: Αποθήκευση διαπιστευτηρίων χρήστη

Αποθήκευση διαπιστευτηρίων χρήστη
Αποθήκευση διαπιστευτηρίων χρήστη
Αποθήκευση διαπιστευτηρίων χρήστη
Αποθήκευση διαπιστευτηρίων χρήστη

Εδώ χρησιμοποιούμε τον αισθητήρα SHT25 I2C για να διαβάσουμε την τιμή σε πραγματικό χρόνο της θερμοκρασίας και της σχετικής υγρασίας και να δημοσιεύσουμε αυτές τις τιμές στο σύννεφο. Για να λαμβάνετε την ενημερωμένη τιμή του αισθητήρα κατά διαστήματα και να δημοσιεύετε αυτές τις ενημερώσεις ταυτόχρονα, χρησιμοποιούμε τη Βιβλιοθήκη προγραμματισμού εργασιών του Arduino. Για λειτουργίες cloud, χρησιμοποιούμε το ThingSpeak MQTT API. Αργότερα, παρέχουμε αναφορά καιρού σε πραγματικό χρόνο στον χρήστη χρησιμοποιώντας μικροεφαρμογές IFTTT. Μπορείτε να ακολουθήσετε αυτά τα βήματα για να φτιάξετε τον δικό σας μετεωρολογικό σταθμό. Έτσι, DIY.

Πριν προχωρήσετε περαιτέρω. Πρέπει να αποθηκεύσουμε τα διαπιστευτήρια χρήστη. Για το σκοπό αυτό, φιλοξενούμε έναν διακομιστή ιστού στη διεύθυνση 192.169.1.4. Έχουμε αποθηκεύσει τη φόρμα ιστού μας σε SPIFFS. Μόλις ξεκινήσει η συσκευή, φιλοξενεί έναν διακομιστή ιστού για 60 δευτερόλεπτα. Ο χρήστης πρέπει να ακολουθήσει αυτά τα βήματα.

  • Συνδεθείτε στο AP ESPuser, Αυτό αναφέρεται στη διαθέσιμη λίστα δικτύων wifi. Συνδεθείτε σε αυτό το AP και εισαγάγετε τον κωδικό πρόσβασης "*******"
  • Μόλις συνδεθεί, μεταβείτε στο πρόγραμμα περιήγησής σας πληκτρολογήστε το IP 192.168.1.4.
  • Εισαγάγετε το SSID και τον κωδικό πρόσβασης του τοπικού σας WiFi στα πεδία εισαγωγής και εισαγάγετε ΥΠΟΒΟΛΗ
  • Αυτά τα διαπιστευτήρια θα αποθηκευτούν στο EEPROM
  • Μετά από 60 δευτερόλεπτα, η συσκευή θα αποσυνδεθεί αυτόματα από το AP
  • Την επόμενη φορά που θα ενεργοποιήσετε τη συσκευή, Ο χρήστης δεν χρειάζεται να ακολουθήσει αυτήν τη διαδικασία. Η συσκευή θα λάβει αυτόματα τα διαπιστευτήρια χρήστη από το EEPROM και θα συνεχίσει να λαμβάνει τις ενδείξεις των αισθητήρων από τη διεπαφή I2C και θα τις δημοσιεύει στο cloud

// --------- AP config ------------ // IPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0);

Serial.print ("Διαμόρφωση σημείου πρόσβασης …");

WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);

Serial.print ("Ρύθμιση διαπιστευτηρίων χρήστη");

WiFi.softAP (ssidAP, passAP);

server.on ("/", handleRoot);

server.onNotFound (onHandleNotFound);

server.begin ();

APTimer = millis ();

while (millis ()-APTimer <APInterval) {

server.handleClient ();

}

// *************************** ΧΕΙΡΙΣΤΕ ΡΙΖΑ ***************** ********* // void handleRoot () {

if (server.hasArg ("ssid") && server.hasArg ("κωδικός πρόσβασης"))

{

// Εάν όλα τα πεδία φόρμας περιέχουν κλήση δεδομένων

handelSubmit ()

handleSubmit (); }

αλλιώς {

// Επανεμφάνιση της φόρμας

// διαβάστε το αρχείο που περιέχεται σε spiffs

Αρχείο αρχείου = SPIFFS.open ("/webform.html", "r");

server.streamFile (αρχείο, "text/html");

// μην ξεχάσετε να κλείσετε το αρχείο

file.close ();

}}

// Ελέγξτε την κατάσταση που έχει τα ορίσματα ssid και password

// Στη συνέχεια, γράψτε τα διαπιστευτήρια στη ROM

ROMwrite (String (server.arg ("ssid")), String (server.arg ("password")))

Βήμα 3: Ρύθμιση της φόρμας ιστού σας στο SPIFFS

SPIFFS

Serial Peripheral Interface Flash File System, ή για συντομία SPIFFS. Είναι ένα ελαφρύ σύστημα αρχείων για μικροελεγκτές με τσιπ flash SPI. Το ενσωματωμένο τσιπ flash του ESP8266 έχει άφθονο χώρο για τις ιστοσελίδες σας, ειδικά αν έχετε την έκδοση 1MB, 2MB ή 4MB. Έχουμε επίσης αποθηκεύσει την ιστοσελίδα μας στο Flash System. Υπάρχουν μερικά βήματα που πρέπει να ακολουθήσουμε για να ανεβάσουμε δεδομένα σε spiffs

  1. Κατεβάστε το εργαλείο:
  2. Στον κατάλογό σας Arduino sketchbook, δημιουργήστε τον κατάλογο εργαλείων εάν δεν υπάρχει ακόμα
  3. Αποσυσκευάστε το εργαλείο στον κατάλογο εργαλείων (η διαδρομή θα μοιάζει με /Arduino/tools/ESP8266FS/tool/esp8266fs.jar)
  4. Επανεκκινήστε το Arduino IDE
  5. Ανοίξτε ένα σκίτσο (ή δημιουργήστε ένα νέο και αποθηκεύστε το)
  6. Μεταβείτε στον κατάλογο σκίτσων (επιλέξτε Sketch> Show Sketch Folder)
  7. Δημιουργήστε έναν κατάλογο με όνομα δεδομένα και όποια αρχεία θέλετε στο σύστημα αρχείων εκεί. Έχουμε ανεβάσει τη σελίδα HTML μας με όνομα webform.html
  8. Βεβαιωθείτε ότι έχετε επιλέξει έναν πίνακα, μια θύρα και μια κλειστή σειριακή οθόνη
  9. Επιλέξτε Εργαλεία> ESP8266 Sketch Data Upload. Αυτό θα πρέπει να ξεκινήσει τη μεταφόρτωση των αρχείων στο σύστημα αρχείων flash ESP8266. Όταν τελειώσει, η γραμμή κατάστασης IDE θα εμφανίσει το μήνυμα SPIFFS Image Uploaded.

Αρχείο αρχείου = SPIFFS.open ("/webform.html", "r");

server.streamFile (αρχείο, "text/html");

// μην ξεχάσετε να κλείσετε το αρχείο

file.close ();

Βήμα 4: Προγραμματισμός εργασιών

Σε αυτό το σεμινάριο, εκτελούμε δύο λειτουργίες:

  • Διαβάστε τα δεδομένα από το SHT25 χρησιμοποιώντας το πρωτόκολλο I2C
  • Δημοσιεύστε τα ενημερωμένα δεδομένα στο cloud χρησιμοποιώντας το ThingSpeak MQTT API

Για να το πετύχουμε αυτό χρησιμοποιούμε τη βιβλιοθήκη TaskScheduler. Έχουμε προγραμματίσει δύο διαφορετικές εργασίες που αναφέρονται σε δύο διαφορετικές λειτουργίες ελέγχου. αυτό γίνεται ως εξής

  • Η εργασία 1 είναι για την ανάγνωση της τιμής του αισθητήρα, η οποία εκτελείται για 1 δευτερόλεπτο έως ότου φτάσει το χρονικό όριο των 10 δευτερολέπτων.
  • Όταν το Task1 φτάσει στο χρόνο λήξης του Συνδεόμαστε με τοπικό μεσίτη Wifi και MQTT.
  • Τώρα η Εργασία 2 είναι ενεργοποιημένη και απενεργοποιούμε την Εργασία 1 Η Εργασία 2 προορίζεται για τη δημοσίευση των δεδομένων αισθητήρα στον μεσίτη Thing Speak MQTT, αυτή η εργασία εκτελείται για 20 δευτερόλεπτα έως ότου φτάσει το χρονικό όριο των 20 δευτερολέπτων
  • Όταν το Task2 φτάσει στο χρονικό όριο του, η Εργασία 1 ενεργοποιείται ξανά και η Task2 απενεργοποιείται. εδώ και πάλι, λαμβάνουμε την ενημερωμένη τιμή και η διαδικασία συνεχίζεται
  • όταν δεν καλείται επανάκληση ή η συσκευή είναι αδρανής, πηγαίνει στο Light Sleep εξοικονομώντας ενέργεια.

// --------- πρωτότυπο για επανάκληση εργασιών ------------ //

void taskI2CCallback ();

void taskI2CDsable ();

void taskWiFiCallback ();

void taskWiFiDisable ();

//---------Καθήκοντα------------//

Εργασία tI2C (2 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDsable);

Εργασία tWiFi (20* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

// ενεργοποίηση tI2C tI2C.ενεργοποίηση ();

Βήμα 5: Ανάγνωση τιμών θερμοκρασίας και υγρασίας από SHT25

Ανάγνωση τιμών θερμοκρασίας και υγρασίας από SHT25
Ανάγνωση τιμών θερμοκρασίας και υγρασίας από SHT25

Το I2C είναι μια διεπαφή δύο συρμάτων που χρησιμοποιεί μόνο δύο καλώδια για επικοινωνία με την κύρια συσκευή. Το ένα είναι SCL (Serial Clock) και το άλλο είναι SDA (Serial Data). Κάθε βοηθητική συσκευή έχει μια μοναδική διεύθυνση. Το SHT 25 έχει επίσης μια διεύθυνση 8 bit και μπορεί να έχει πρόσβαση σε αυτήν από μια διεύθυνση 0x44. έχει 8 bit της διεύθυνσης όπου 7 bit είναι πραγματική διεύθυνση και ενώ το πιο δεξί bit LSB 0 χρησιμοποιείται για σήμα ανάγνωσης ή εγγραφής στη συσκευή. Εάν το bit 0 έχει οριστεί σε 1, τότε η κύρια συσκευή θα διαβάσει από τη δευτερεύουσα συσκευή I2C. Το I2C είναι πολύ πιο αξιόπιστο, επεκτάσιμο και γρήγορο και μάλιστα έχει πολλούς τρόπους λειτουργίας που το καθιστούν πολύ πιο ενεργειακά αποδοτικό

Χρησιμοποιούμε τη βιβλιοθήκη Wire.h για να διαβάσουμε τις τιμές θερμοκρασίας και υγρασίας. Αυτή η βιβλιοθήκη διευκολύνει την επικοινωνία i2c μεταξύ του αισθητήρα και της κύριας συσκευής. 0x44 είναι η διεύθυνση I2C για SHT25. Το SHT25 λειτουργεί με διαφορετικό τρόπο λειτουργίας. Μπορείτε να ανατρέξετε στο φύλλο δεδομένων για αυτό. Χρησιμοποιούμε 0x2C και 0x06 ως MSB και LSB αντίστοιχα για λειτουργία με μία λήψη

Βήμα 6: Δημοσίευση τιμών στο ThingSpeak χρησιμοποιώντας το ThingSpeak MQTT API

Δημοσίευση αξιών στο ThingSpeak χρησιμοποιώντας το ThingSpeak MQTT API
Δημοσίευση αξιών στο ThingSpeak χρησιμοποιώντας το ThingSpeak MQTT API

Για την ανάρτηση των τιμών θερμοκρασίας και υγρασίας στο cloud χρησιμοποιούμε το ThingSpeak MQTT API. Το ThingSpeak είναι μια πλατφόρμα IoT. Το ThingSpeak είναι μια δωρεάν διαδικτυακή υπηρεσία που σας επιτρέπει να συλλέγετε και να αποθηκεύετε δεδομένα αισθητήρων στο cloud. Το MQTT είναι ένα κοινό πρωτόκολλο που χρησιμοποιείται σε συστήματα IoT για τη σύνδεση συσκευών και αισθητήρων χαμηλού επιπέδου. Το MQTT χρησιμοποιείται για τη μετάδοση σύντομων μηνυμάτων από και προς έναν μεσίτη. Το ThingSpeak πρόσθεσε πρόσφατα έναν μεσίτη MQTT, ώστε οι συσκευές να μπορούν να στέλνουν μηνύματα στο ThingSpeak. Μπορείτε να ακολουθήσετε τη διαδικασία για τη ρύθμιση του ThingSpeak Channel από αυτήν την ανάρτηση

ThingSpeak MQTT

Το MQTT είναι μια αρχιτεκτονική δημοσίευσης/εγγραφής που έχει αναπτυχθεί κυρίως για τη σύνδεση εύρους ζώνης και συσκευών περιορισμένης ισχύος μέσω ασύρματων δικτύων. Είναι ένα απλό και ελαφρύ πρωτόκολλο που τρέχει σε υποδοχές TCP/IP ή WebSockets. Το MQTT μέσω WebSockets μπορεί να ασφαλιστεί με SSL. Η αρχιτεκτονική δημοσίευσης/εγγραφής επιτρέπει την προώθηση των μηνυμάτων στις συσκευές -πελάτες χωρίς να χρειάζεται η συσκευή να κάνει συνεχόμενη δημοσκόπηση του διακομιστή. Πελάτης είναι κάθε συσκευή που συνδέεται με τον μεσίτη και μπορεί να δημοσιεύσει ή να εγγραφεί σε θέματα για πρόσβαση στις πληροφορίες. Ένα θέμα περιέχει τις πληροφορίες δρομολόγησης για τον μεσίτη. Κάθε πελάτης που θέλει να στείλει μηνύματα τα δημοσιεύει σε ένα συγκεκριμένο θέμα και κάθε πελάτης που θέλει να λαμβάνει μηνύματα εγγράφεται σε ένα συγκεκριμένο θέμα

Δημοσιεύστε και εγγραφείτε χρησιμοποιώντας το ThingSpeak MQTT

  • Δημοσίευση σε κανάλια ροής καναλιών /δημοσίευση /
  • Δημοσίευση σε συγκεκριμένα πεδία κανάλια/δημοσίευση/πεδία/πεδίο/
  • Εγγραφείτε στα κανάλια πεδίου καναλιού/εγγραφείτε //
  • Εγγραφείτε στα κανάλια ροής ιδιωτικού καναλιού // εγγραφείτε/πεδία/πεδίο/
  • Εγγραφείτε σε όλα τα πεδία ενός καναλιού. κανάλια // εγγραφή/πεδία/feild/

void taskWiFiCallback ()

{

Serial.println ("taskWiFiCallbackStarted");

Serial.print ("χρονικό όριο για αυτήν την εργασία: / t");

Serial.println (tWiFi.getTimeout ());

εάν (! mqttCli.connected ())

{

Serial.println ("Ο πελάτης δεν είναι συνδεδεμένος");

επανασύνδεσηMQTT ();

}

String topicString = "κανάλια/"+συμβολοσειρά (channelID)+"/δημοσίευση/"+συμβολοσειρά (writeAPIKey);

int topicLength = topicString.length ()+1;

char topicBuffer [topicLength];

topicString.toCharArray (topicBuffer, topicLength+1);

Serial.println (topicBuffer);

String dataString = String ("field1 =" + String (tempC, 1) + "& field2 =" + String (tempF, 1) + "& field3 =" + String (υγρό, 1));

int dataLength = dataString.length ()+1;

byte dataBuffer [dataLength];

dataString.getBytes (dataBuffer, dataLength);

mqttCli.beginPublish (topicBuffer, dataLength, false);

Serial.println (mqttCli.write (dataBuffer, dataLength)? "Published": "δημοσιεύτηκε απέτυχε");

mqttCli.endPublish ();

//mqttCli.loop ();

}

Βήμα 7: Ειδοποίηση ηλεκτρονικού ταχυδρομείου για την αναφορά καιρού

Ειδοποίηση ηλεκτρονικού ταχυδρομείου για την αναφορά καιρού
Ειδοποίηση ηλεκτρονικού ταχυδρομείου για την αναφορά καιρού
Ειδοποίηση ηλεκτρονικού ταχυδρομείου για την αναφορά καιρού
Ειδοποίηση ηλεκτρονικού ταχυδρομείου για την αναφορά καιρού

Χρησιμοποιούμε μικροεφαρμογές IFTTT για να δίνουμε ειδοποίηση ηλεκτρονικού ταχυδρομείου σε πραγματικό χρόνο στον χρήστη. Έτσι, το εφαρμόσαμε μέσω του ThingSpeak. Υπολογίζουμε κατά μέσο όρο τις τιμές 5-fay της θερμοκρασίας και της υγρασίας. Όποτε η τιμή της τελευταίας καταχώρησης είναι μεγαλύτερη από τη μέση τιμή. Θα ενεργοποιήσει μια ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου "είναι μια ζεστή μέρα". και όταν είναι μικρότερη από τη μέση τιμή. Θα ενεργοποιήσει μια ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου "Τι όμορφη μέρα". Κάθε μέρα γύρω στις 10:00 π.μ. (IST) θα λαμβάνουμε μια ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου

channelID = ******;

iftttURL = 'https://maker.ifttt.com/**************';

humidityData = thingSpeakRead (channelID, 'Fields', 3, 'NumDays', 5); tempData = thingSpeakRead (channelID, 'Fields', 1, 'NumDays', 5);

perHumid = max (humidityData) -min (humidityData);

humidValue = 0,1*ανάHumid+min (υγρασία δεδομένων);

perTemp = max (tempData) -min (tempData);

tempValue = 0,1*ανάTemp+min (tempData);

urlTemp = strcat ('https://api.thingspeak.com/channels/', string (channelID), '/fields/1/last.txt');

urlHumid = strcat ('https://api.thingspeak.com/channels/', string (channelID), '/fields/3/last.txt'); lastTempValue = str2num (webread (urlTemp)); lastHumidValue = str2num (webread (urlHumid));

εάν (lastTempValue

if (lastTempValue> tempValue || lastHumidValue> humidValue)

plantMessage = 'Είναι μια ζεστή μέρα.'; webwrite (iftttURL, 'value1', plantMessage, 'value2', lastTempValue, 'value3', lastHumidValue); τέλος

Βήμα 8: Συνολικός κώδικας

Γενικός Κώδικας
Γενικός Κώδικας
Γενικός Κώδικας
Γενικός Κώδικας
Γενικός Κώδικας
Γενικός Κώδικας

Γενικός Κώδικας

Ο συνολικός κώδικας είναι διαθέσιμος σε αυτό το αποθετήριο GitHub

Περιορισμοί

  • Υπάρχουν ορισμένα προβλήματα με τη δημοσίευση των δεδομένων χρησιμοποιώντας μια μέθοδο δημοσίευσης για το μεγάλο όγκο δεδομένων. Για την επίλυση αυτού του ζητήματος χρησιμοποιούμε τη λειτουργία εγγραφής ()
  • Το SPIFFS πρέπει να μορφοποιηθεί πριν από τη μεταφόρτωση των νέων δεδομένων στο SPIFFS.
  • Δεν πρέπει να χρησιμοποιείτε τη λειτουργία καθυστέρησης (). καθυστέρηση () εμποδίζει τη λειτουργία παρασκηνίου. Αντ 'αυτού, δημιουργήστε καθυστερήσεις χρησιμοποιώντας το millis () μόνο εάν είναι απαραίτητο

Μονάδες

  • ESP826WebServer
  • Χρονοδιάγραμμα εργασιών
  • SHT 25
  • ThingSpeak MQTT API
  • IFTTT
  • PubSubClient

Συνιστάται: