MQTT
MQTT
h>
#include <Servo.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
const char *ssid = "Phong 402";
const char *pass = "12345678";
#define MQTT_SERV "io.adafruit.com"
#define MQTT_PORT 1883
#define MQTT_NAME "hai23102003"
#define MQTT_PASS "aio_HbtW70nSsqKsPNBM8PmvvALSO0hl"
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 19800, 60000);
Servo myservo;
Servo myservos;
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT, MQTT_NAME, MQTT_PASS);
void setup() {
delay(1000);
Serial.begin(9600);
mqtt.subscribe(&EntryGate);
mqtt.subscribe(&ExitGate);
timeClient.begin();
myservo.attach(D4);
myservos.attach(D5);
pinMode(carExited, INPUT);
pinMode(carEnter, INPUT);
pinMode(slot1, INPUT);
pinMode(slot2, INPUT);
pinMode(slot3, INPUT);
WiFi.begin(ssid, pass);
Serial.print("Connecting to ");
Serial.print(ssid);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP Address is : ");
Serial.println(WiFi.localIP());
}
void loop() {
MQTT_connect();
timeClient.update();
hh = timeClient.getHours();
mm = timeClient.getMinutes();
ss = timeClient.getSeconds();
h = String(hh);
m = String(mm);
h + " :" + m;
entrysensor = !digitalRead(carEnter);
exitsensor = !digitalRead(carExited);
s1 = digitalRead(slot1);
s2 = digitalRead(slot2);
s3 = digitalRead(slot3);
if (entrysensor == 1) {
count = count + 1;
myservos.write(OPEN_ANGLE);
delay(3000);
myservos.write(CLOSE_ANGLE);
}
if (exitsensor == 1) {
count = count - 1;
myservo.write(OPEN_ANGLE);
delay(3000);
myservo.write(CLOSE_ANGLE);
}
if (!CarsParked.publish(count)) {}
s1_occupied = true;
if (!EntrySlot1.publish((char *)EntryTimeSlot1.c_str())) {}
}
if (s1 == 0 && s1_occupied == true) {
Serial.println("Available1 ");
ExitTimeSlot1 = h + " :" + m;
s1_occupied = false;
if (!ExitSlot1.publish((char *)ExitTimeSlot1.c_str())) {}
}
if (s2 == 1 && s2_occupied == false) {
Serial.println("Occupied2 ");
EntryTimeSlot2 = h + " :" + m;
s2_occupied = true;
if (!EntrySlot2.publish((char *)EntryTimeSlot2.c_str())) {}
}
if (s2 == 0 && s2_occupied == true) {
Serial.println("Available2 ");
ExitTimeSlot2 = h + " :" + m;
s2_occupied = false;
if (!ExitSlot2.publish((char *)ExitTimeSlot2.c_str())) {}
}
if (s3 == 1 && s3_occupied == false) {
Serial.println("Occupied3 ");
EntryTimeSlot3 = h + " :" + m;
s3_occupied = true;
if (!EntrySlot3.publish((char *)EntryTimeSlot3.c_str())) {}
}
if (s3 == 0 && s3_occupied == true) {
Serial.println("Available3 ");
ExitTimeSlot3 = h + " :" + m;
s3_occupied = false;
if (!ExitSlot3.publish((char *)ExitTimeSlot3.c_str())) {}
}
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(5000))) {
if (subscription == &EntryGate) {
Serial.println((char *)EntryGate.lastread);
if (mqtt.connected()) {
return;
}
uint8_t retries = 3;
while ((ret = mqtt.connect()) != 0) {
mqtt.disconnect();
delay(5000);
retries--;
if (retries == 0) {
while (1)
;
}
}
}