#include #include #include #include #define pinDHT 15 DHTesp dhtSensor; // Definicja pinu do potencjometru #define potPin 34 // Pin analogowy, do którego podłączony jest potencjometr #define WIFI_AP "fablabinner" #define WIFI_PASS "alamakota1234" #define TB_SERVER "153.92.223.196" #define TOKEN "ClhGH5sLbdlk1ydAA6o5" //#define TB_SERVER "demo.thingsboard.io" //#define TOKEN "9hJfYJa7Cew4Z1lFiL66" constexpr uint16_t MAX_MESSAGE_SIZE = 128U; WiFiClient espClient; Arduino_MQTT_Client mqttClient(espClient); ThingsBoard tb(mqttClient, MAX_MESSAGE_SIZE ); unsigned long lastSendTime = 0; const unsigned long sendInterval = 3000; void SendDataToTb(float temp, int hum, int potValue){ // Tworzenie obiektu JsonDocument StaticJsonDocument<200> jsonData; jsonData["temperature"] = temp; jsonData["humidity"] = hum; jsonData["potentiometer"] = potValue; // Dodanie wartości potencjometru // Serializacja do bufora char buffer[512]; size_t n = serializeJson(jsonData, buffer); // Wysłanie danych do ThingsBoard tb.sendTelemetryJson(jsonData, n); Serial.println("Dane wysłane"); } void ConnectToWifi() { Serial.println("Łącze z wifi...."); int attempts = 0; while (WiFi.status() != WL_CONNECTED && attempts < 20) { WiFi.begin(WIFI_AP, WIFI_PASS, 6); delay(500); Serial.print("."); attempts++; } if (WiFi.status() != WL_CONNECTED) { Serial.println("\nBrak połączenia"); } else { Serial.println("\nWifi podłączone"); } } void connectToTb() { if (!tb.connected()) { Serial.println("Łącze z serwerem ThingsBoard"); if (!tb.connect(TB_SERVER, TOKEN)) { Serial.println("Nie połączyłeś się z serwerem TB"); } else { Serial.println("Połączyłeś się do TB"); } } } void setup() { Serial.begin(115200); Serial.println("Hello, ESP32!"); dhtSensor.setup(pinDHT, DHTesp::DHT11); ConnectToWifi(); connectToTb(); pinMode(potPin, INPUT); // Ustawienie pinu potencjometru jako wejście } void loop() { if (WiFi.status() != WL_CONNECTED) { ConnectToWifi(); } if (!tb.connected()) { connectToTb(); } unsigned long currentTime = millis(); if (currentTime - lastSendTime >= sendInterval) { lastSendTime = currentTime; // Odczyt danych z czujnika DHT TempAndHumidity data = dhtSensor.getTempAndHumidity(); float temp = data.temperature; int hum = data.humidity; // Odczyt wartości z potencjometru (przemiana na zakres 0-100) int potValue = analogRead(potPin); // Odczyt wartości analogowej z potencjometru potValue = map(potValue, 0, 4095, 0, 100); // Przeskalowanie na zakres 0-100 // Sprawdzenie poprawności danych if (!isnan(temp) && !isnan(hum) && hum >= 0 && hum <= 100) { Serial.println("Temperature: " + String(temp)); Serial.println("Humidity: " + String(hum)); Serial.println("Potentiometer Value: " + String(potValue)); // Wydruk wartości potencjometru SendDataToTb(temp, hum, potValue); } else { Serial.println("Błędne dane z czujnika DHT"); } } }