Project Parking
Project Parking
h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#define WLAN_SSID "LAPTOP-7GNIS4J0 6662"
#define WLAN_PASS "12345678"
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "shaunontop"
#define AIO_KEY "aio_LYHr791UUDNLZZuWdMww4xycqQGF"
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME,
AIO_KEY);
/****************************** Feeds
***************************************/Adafruit_MQTT_Publish slot1 =
Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/port2");
/****************************** IR Sensor Configuration
**********************************/
const int sensorPin1 = D1; // Digital input pin for sensor 1
const int sensorPin2 = D2; // Digital input pin for sensor 2
const int sensorPin3 = D5; // Digital input pin for sensor 3
const int sensorPin4 = D7; // Digital input pin for sensor 4
/****************************** IR Sensor Configuration
**********************************/
void MQTT_connect();
void setup() {
Serial.begin(115200);
delay(10);
Serial.println(F("Adafruit MQTT demo"));
Serial.println();
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());
pinMode(sensorPin1, INPUT);
pinMode(sensorPin2, INPUT);
pinMode(sensorPin3, INPUT);
pinMode(sensorPin4, INPUT);
}
void loop() {
MQTT_connect();
bool carDetected1 = digitalRead(sensorPin1);
bool carDetected2 = digitalRead(sensorPin2);
bool carDetected3 = digitalRead(sensorPin3);
bool carDetected4 = digitalRead(sensorPin4);
if (carDetected1) {
if (!slot1.publish(1)) {
delay(3000);
Serial.println(F("Failed to publish slot 1 status"));
delay(3000);
}
} if (carDetected2) {
if (!slot1.publish(2)) {
delay(3000);
Serial.println(F("Failed to publish slot 2 status"));
}
} if (carDetected3) {
if (!slot1.publish(3)) {
delay(3000);
Serial.println(F("Failed to publish slot 3 status"));
}
} if (carDetected4) {
if (!slot1.publish(4)) {
delay(3000);
Serial.println(F("Failed to publish slot 4 status"));
}
}
else {
slot1.publish(0);
delay(3000);
}
delay(3000);
// ping the server to keep the MQTT connection alive
if (!mqtt.ping()) {
mqtt.disconnect();
}
}
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);
}}}