-
Notifications
You must be signed in to change notification settings - Fork 0
/
House_central_github000.ino
178 lines (127 loc) · 4.11 KB
/
House_central_github000.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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#include <Homotica.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <SimpleTimer.h>
#include <SPI.h>
#include <OneWire.h>
#include <Adafruit_BMP085_U.h>
#include <Wire.h>
#define I2C_SCL D0
#define SCL_PORT PORTC
#define I2C_SDA D7
#define SDA_PORT PORTC
//FRONT DOOR=2 GATE=D1 GLASS DOOR = D5
#define WDOOR D2
#define GDOOR D5
#define GATE D1
const int buttonPin = D6; // The number of the Pushbutton pin
//BUTTON declarations
SimpleTimer timer;
int buttonState = 0; // Variable for reading the pushbutton status
long previousMillis = 0; // will store last time LED was updated
long interval = 5000; // interval at which to blink (milliseconds)
long currentValue;
float Dtemp;
int buttonstatedoor = 0;
//MODIFY THESE PARAMETERS
const char* ssid = "JOENET"; //your wifi ssid
const char* password = ""; //your wifi password
IPAddress ip(10,0,0,190); //your arduino IP
IPAddress gateway(10,0,0,1); //your network gateway
IPAddress subnet(255, 255, 255, 0); //your network subnet mask
unsigned int mUdpPort = 5858;
static String code = "qawsedrf";
Homotica homotica;
unsigned long lastMillis = 0;
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10180);
bool bmpSensorDetected = true;
void setup() {
Serial.begin(9600);
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
//D4= DOOR D5=GATE
pinMode(buttonPin, INPUT);
pinMode(WDOOR, OUTPUT);
pinMode(GATE, OUTPUT);
pinMode(WDOOR, OUTPUT);
// digitalWrite(WDOOR, HIGH);
homotica.addUsedPinOutput(WDOOR);
homotica.addUsedPinOutput(GATE);
homotica.addUsedPinOutput(GDOOR);
homotica.attachInputFunction(MCustomInputFunction, 'M');
homotica.attachInputFunction(NCustomInputFunction, 'N');
//homotica.setActiveLow(); //<-- only if you need it
homotica.set(mUdpPort, code);
//homotica.turnOn(WDOOR);
//homotica.turnOn(GDOOR);
homotica.turnOn(GATE);
//BMP180
if (!bmp.begin())
{
Serial.println("No BMP sensor detected");
bmpSensorDetected = false;
}
timer.setInterval(1200L, emergencybtn);
timer.setInterval(2000L, gateoff);
}
void loop() {
homotica.refresh();
timer.run();
}
int16_t MCustomInputFunction()
{
//Send the value to homotica for temperature display (INDOORS SENSOR)
float temperature;
bmp.getTemperature( & temperature);
// Send the value to homotica in degrees centigrade.
int16_t returnValue = ((temperature) - 1);
return returnValue;
}
int16_t NCustomInputFunction()
{
//read sensors or do stuff
sensors_event_t event;
bmp.getEvent( & event);
// Send the value to homotica in hectopascals.
int16_t returnValue = (event.pressure);
return returnValue;
}
void emergencybtn()
{
//REDBUTTON EMERGENCY
previousMillis = millis();
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
//The button is pushedz
while (buttonState == HIGH)
{
Serial.println(buttonState);
currentValue = millis() - previousMillis;
if (currentValue > interval) //If the button has been pressed for over 7 secs, open it
{
// save the last time relays has been turned on
previousMillis = millis();
digitalWrite(WDOOR, HIGH); //opendoor
delay(4000); //give time to get in
digitalWrite(WDOOR, LOW); //close it
}
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
yield();
}
}
void gateoff()
{
// read the state of the pushbutton value:
buttonstatedoor = digitalRead(GATE);
//The button is pushed
if (buttonstatedoor == LOW)
{
Serial.println("Close DA GATE");
delay (500);
digitalWrite(GATE, HIGH);
}
}