#include #include #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" #include // Ultrasonic Sensor #include "DHT.h" #define WLAN_SSID "kadir_wifi" #define WLAN_PASS "123456" // Adafruit IO #define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 8883 #define AIO_USERNAME "kadir@gmail.com" #define AIO_KEY "KEY" #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); WiFiClientSecure client; static const char *fingerprint PROGMEM = "59 3C 48 0A B1 8B 39 4E 0D 58 50 47 9A 13 55 60 CC A0 1D AF"; Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY); Adafruit_MQTT_Publish humidityPublish = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/humidity"); Adafruit_MQTT_Publish tempPublish = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/temp"); Adafruit_MQTT_Publish distancePublish = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/distance"); byte triggerPin = 21; byte echoCount = 2; byte* echoPins = new byte[echoCount] { 12, 13 }; void MQTT_connect() { int8_t ret; if (mqtt.connected()) { return; } Serial.print("Connecting to MQTT... "); uint8_t retries = 3; while ((ret = mqtt.connect()) != 0) { Serial.println(mqtt.connectErrorString(ret)); Serial.println("Retrying MQTT connection in 5 seconds..."); mqtt.disconnect(); delay(5000); retries--; if (retries == 0) { while (1) ; } } Serial.println("MQTT Connected!"); } void setup() { Serial.begin(115200); delay(10); // HCSR04.begin(triggerPin, echoPins, echoCount); // dht.begin(); // while (!SI1145.Begin()) while (!dht.begin() && !HCSR04.begin(triggerPin, echoPins, echoCount)) { Serial.println("Sensors are not ready!"); delay(1000); } Serial.println("Sensors are ready!"); Serial.print("Connecting to "); Serial.println(WLAN_SSID); WiFi.begin(WLAN_SSID, WLAN_PASS); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); client.setFingerprint(fingerprint); } void loop() { MQTT_connect(); float humidity = dht.readHumidity(); float temp = dht.readTemperature(); //Celcius is Default double* distances = HCSR04.measureDistanceCm(); // HCSR04 Logs - Distance for (int i = 0; i < echoCount; i++) { if (i > 0) Serial.print(" | "); Serial.print(i + 1); Serial.print(": "); Serial.print(distances[i]); Serial.print(" cm"); } // DHT11 Logs - Temp & Humidity Serial.print(F("Humidity: ")); Serial.print(humidity); Serial.print(F("% Temperature: ")); Serial.print(temp); Serial.print(F("°C ")); if (!humidityPublish.publish(humidity)) { Serial.println(F("humidity Failed")); } else { Serial.println(F("OK!")); } if (!tempPublish.publish(temp)) { Serial.println(F("temp Failed")); } else { Serial.println(F("OK!")); } if (!distancePublish.publish(distances[0])) { Serial.println(F("distance Failed")); } else { Serial.println(F("OK!")); } delay(2000); /* if(! mqtt.ping()) { mqtt.disconnect(); } */ }