-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSensora24th.ino
110 lines (107 loc) · 2.52 KB
/
Sensora24th.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#define ldr_pin A0 //Analog pin to connect ldr
#define rel_pin D3 //Any digital pin where the relay or LED is to be connected for actuating
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "ADAFRUIT_IO_USERNAME"
#define AIO_KEY "ADAFRUIT_IO_KEY_HERE"
WiFiClient client;
int ctr=-1;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
boolean MQTT_connect();
boolean MQTT_connect()
{
int8_t ret;
if (mqtt.connected())
{ return true;
}
uint8_t retries = 3;
while ((ret = mqtt.connect()) != 0)
{
mqtt.disconnect();
delay(2000);
retries--;
if (retries == 0)
{
return false;
}
}
return true;
}
Adafruit_MQTT_Publish light_Intensity = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/NAME_OF_FEED_CREATED");
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/NAME_OF_FEED_CREATED");
void setup()
{
Serial.begin(115200);
pinMode(ldr_pin,INPUT);
pinMode(rel_pin,OUTPUT);
WiFi.disconnect();
delay(3000);
Serial.println("START");
WiFi.begin("YOUR_SSID_HERE","YOUR_WIFI_PASSWORD_HERE");
while ((!(WiFi.status() == WL_CONNECTED)))
{
delay(300);
Serial.print("..");
}
Serial.println("Connected");
Serial.println("Your IP is");
Serial.println((WiFi.localIP()));
}
void send_val()
{
if (MQTT_connect())
{
int intensity=analogRead(ldr_pin);
Serial.print("Intensity : ");Serial.println(intensity);
int value=0;
if(intensity>500)
{
value=1;
}
else
{
value=0;
}
if (ctr!=value)
{
if(light_Intensity.publish(value))
Serial.println("data sent");
ctr=value;
}
else
{
Serial.println("data not sent");
}
}
else
{
Serial.println("mqtt not connected");
}
}
void recv_val()
{
if(MQTT_connect())
{
mqtt.subscribe(&light);
Adafruit_MQTT_Subscribe *subscription;
while (subscription = mqtt.readSubscription(2500))
{
if(subscription==&light)
{
Serial.println((char*)light.lastread);
int value = atoi((char *)light.lastread);
digitalWrite(rel_pin, value);
}
}
}
}
void loop()
{
send_val();
recv_val();
delay(2500);
}