Inhaltsverzeichnis:
- Schritt 1: Erstellen und Anmelden bei der THINGSIO-Plattform
- Schritt 2: Neues Projekt erstellen
- Schritt 3: Erstellen eines neuen Geräts
- Schritt 4: Geräteparameter definieren
- Schritt 5: Aktualisieren des Geräts
- Schritt 6: Codierung
- Schritt 7: Auswahl von Board und Com-Port
- Schritt 8: Stromkreisverbindungen
- Schritt 9: Kompilieren und hochladen
- Schritt 10: Serieller Monitor
- Schritt 11: Messwerte
- Schritt 12: Grafische Darstellung
- Schritt 13:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
HEY…..heute werden wir lernen, die Lichtintensität zu messen und die Werte mit ESP32 in die THINGSAI IOT Cloud-Plattform zu posten.
Die Voraussetzungen für dieses Projekt sind
1. ESP32-Entwicklungsboard (ich habe ESP32 DEVKIT V1 verwendet)
2. LDR-Sensor
3. Überbrückungsdrähte
4. Konto auf der THINGSAI IOT-PLATTFORM
Schritt 1: Erstellen und Anmelden bei der THINGSIO-Plattform
Melden Sie sich beim THINGS AI-Konto an. Wenn Sie neu sind, registrieren Sie sich für das Konto, indem Sie auf die Schaltfläche Registrieren klicken und alle Anmeldeinformationen ausfüllen. Ihr Konto wird erstellt und von da an können Sie auf der Cloud-Plattform arbeiten und Ihr benutzerdefiniertes Projekt erstellen
Schritt 2: Neues Projekt erstellen
Nachdem Sie sich beim Konto angemeldet haben, klicken Sie zum Erstellen eines Projekts einfach auf das neue Projekt und geben Sie dann den Projektnamen ein.
Schritt 3: Erstellen eines neuen Geräts
Nach dem Anlegen des Projekts müssen Sie als nächstes ein neues Gerät erstellen. Geben Sie den Gerätenamen und die Geräte-ID entweder manuell oder systemgeneriert ein.
Schritt 4: Geräteparameter definieren
Geben Sie den Geräteparameter ein und wählen Sie dann die Art des Parameters
Schritt 5: Aktualisieren des Geräts
Wählen Sie den Parameter aus und aktualisieren Sie dann das Gerät
Schritt 6: Codierung
Wählen Sie aus den Beispielcodes den Code von esp32 aus, kopieren Sie ihn und fügen Sie ihn dann in die Arduino-IDE ein und nehmen Sie die erforderlichen Änderungen gemäß den Anforderungen vor. Ich habe den Code unten angegeben
#einschließen #einschließen
#enthalten
int count = 0, i, m, j, k;
int t; int Ausgabepin = A0; // ds18b20
int Sensorwert;
/////////////////////////////////////// ALLE ERKLÄRUNGEN für CLOUD ////// /////////////////////////
const char* host = "api.thingsai.io"; // ODER
host = devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // ODER /api/v2/thingscloud2/_table/data_ac
const char* time_server = "baas.thethingscloud.com"; // dies ist zum Konvertieren des Zeitstempels
const int httpPort = 80;
const int httpsPort = 443;
const char* server = "api.thingsai.io"; // Server-URL
char-Zeitstempel[10];
WiFiMulti WiFiMulti;
// Verwenden Sie die WiFiClient-Klasse, um TCP-Verbindungen zu erstellen
WiFiClient-Client;
////////////////////////////////////// Funktion ZEITSTEMPELBERECHNUNG ///////// /////////////////////////////// int GiveMeTimestamp () { unsigned long timeout = millis (); // WiFiClient-Client;
while (client.verfügbar() == 0)
{
if (millis() - Zeitüberschreitung > 50000)
{
client.stop(); 0 zurückgeben;
}
}
while (client.verfügbar())
{
String line = client.readStringUntil('\r'); //indexOf() ist eine Funktion, um nach smthng zu suchen, es gibt -1 zurück, wenn es nicht gefunden wird
int pos = line.indexOf("\"Zeitstempel\""); // suche nach "\"timestamp\"" vom Anfang der erhaltenen Antwort und kopiere alle Daten danach, es wird dein Zeitstempel sein
wenn (pos >= 0)
{
intj = 0;
für(j=0;j<10;j++)
{
Zeitstempel[j] = Zeile[pos + 12 + j];
}
}
}
} ////////////////////////////////////////////////////////////////////////////////////////////////////////
Void-Setup ()
{
Serial.begin(115200);
Verzögerung(10);
// Wir beginnen mit der Verbindung mit einem WiFi-Netzwerk
WiFiMulti.addAP("wifi", "pswrd");
Serial.println();
Serial.println();
Serial.print("Warten Sie auf WLAN…");
while(WiFiMulti.run() != WL_CONNECTED)
{
Serial.print(".");
Verzögerung (500);
}
Serial.println("");
Serial.println ("WiFi verbunden");
Serial.println("IP-Adresse:"); Serial.println (WiFi.localIP());
Verzögerung (500);
}
Leere Schleife ()
{
int analogValue = analogRead (Ausgangspin);
{ ////////////////////////////////////// ANFRAGE SENDEN UND ANTWORT ERHALTEN/// ////////////////////
Sensorwert = analogRead(A0); // Analogeingang Pin 0 lesen
Sensorwert = Sensorwert/100;
Serial.print (Sensorwert, DEC); // gibt den gelesenen Wert aus
Serial.print("\n"); // gibt ein Leerzeichen zwischen den Zahlen aus
Verzögerung (1000); // warte 100ms auf den nächsten Messwert
Serial.print ("Verbindung zu"); Serial.println (Host); // oben definiert: - host = devapi2.thethingscloud.com oder 139.59.26.117
//////////////////////////////////// TIMESTAMP CODE SNIPPET ////////// ///////////////
Serial.println("innerhalb Zeitstempel abrufen\n");
if (!client.connect(time_server, { Rückkehr; //*-*-*-*-*-*-*-*-*-* }
client.println("GET /api/timestamp HTTP/1.1"); //Was macht dieser Teil, ich habe client.println("Host: baas.thethingscloud.com");
client.println("Cache-Steuerung: kein Cache");
client.println("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println();
GiveMeTimestamp(); // es ruft die Funktion auf, die die Zeitstempelantwort vom Server Serial.println erhält ("timestamp receieved");
Serial.println (Zeitstempel);
Serial.println ("innerhalb von ThingsCloudPost");
String PostValue = "{"device_id\": 61121695844, \"slave_id\": 2";
PostValue = PostValue + ", \"dts\":" +Zeitstempel;
PostValue = PostValue +", \"data\":{"INTENSITY\":" + \sensorvalue +"}"+"}";
Serial.println (PostValue);
/* eine Instanz von WiFiClientSecure erstellen */ WiFiClientSecure-Client;
Serial.println("Verbindung zum Server über Port 443 herstellen");
if (!client.connect(server, 443))
{
Serial.println ("Verbindung fehlgeschlagen!");
}
anders
{ Serial.println ("Mit Server verbunden!"); /* HTTP-Anfrage erstellen */
client.println( POST /devices/deviceData
client.println("Host: api.thingsai.io"); //client.println("Verbindung: schließen"); cl
ient.println("Inhaltstyp: Anwendung/json");
client.println("Cache-Steuerung: kein Cache");
client.println("Autorisierung: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkXs9jPKy); client.print("Inhaltslänge: ");
client.println(PostValue.length());
client.println();
client.println (PostWert); /////////////////////////////////POSTING der Daten in die Cloud ist abgeschlossen und jetzt erhalten Sie das Antwortformular cloud Server//////////////////
Serial.print ("Warten auf Antwort");
while (!client.verfügbar()){
Verzögerung (50); //
Serial.print(".");
} /* wenn Daten verfügbar sind, dann empfangen und an Terminal drucken */
while (client.verfügbar())
{
char c = client.read();
Serial.write (c);
}
/* Wenn der Server getrennt wurde, stoppen Sie den Client */
if (!client.connected())
{
Serial.println();
Serial.println("Server getrennt");
client.stop();
}
} Serial.println("///////////////////// DAS ENDE /////////////////// /");
Verzögerung (3000); } }
Schritt 7: Auswahl von Board und Com-Port
Wählen Sie aus den Tools das Board und dann den Com-Port aus
Schritt 8: Stromkreisverbindungen
Die Codierung ist abgeschlossen, dann stellen Sie die folgenden Verbindungen wie unten erwähnt her
ANSCHLÜSSE:
GND von esp32 zu GND des LDR-Sensors
3V3 0f esp32 zum Vcc des LDR
VP von esp32 zum A0 des LDR
Schritt 9: Kompilieren und hochladen
Kompilieren und laden Sie den Code in den esp32 und lesen Sie dann die Messwerte vom seriellen Monitor. Das würde ein Ergebnis wie dieses zeigen
Schritt 10: Serieller Monitor
Die Werte werden auf dem seriellen Monitor abgerufen und dann an die THINGSAI IOT Cloud-Plattform gesendet.
Schritt 11: Messwerte
Dies zeigt die von der esp32-Platine erhaltenen Werte.
Schritt 12: Grafische Darstellung
Dies ist die grafische Darstellung der erhaltenen Werte. Das ist das Ende des Tutorials. Hoffe du hast es verstanden. Danke schön