//
int millLast = 0; // Last time (in millis()) the doorbell was pressed
int b1 = D3; // Button pin
int b2 = D4;
int b3 = D5;
int b4 = D6;
int millDelay = 5000; // How much time to wait until we allow another doorbell "ring" again
char srvIP[] = "1.2.3.4"; // Server IP address
char srvHost[] = "myserver.com"; // HTTP 1.1 hostname
int srvPort = 80; // Server port number
char srvPath1[] = "b1.php"; // URL path
char srvPath2[] = "b2.php"; // URL path
char srvPath3[] = "b3.php"; // URL path
char srvPath4[] = "b4.php"; // URL path
int i=0;
int j=0;
int ledpower = 2;
int ledready = 7;
int beep1 = 0;
int ledState = LOW; // ledState used to set the LED
long previousMillis = 0; // will store last time LED was updated
// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long interval = 100; // interval at which to blink (milliseconds)
TCPClient client;
void setup() {
pinMode(b1, INPUT_PULLDOWN);
pinMode(b2, INPUT_PULLDOWN);
pinMode(b3, INPUT_PULLDOWN);
pinMode(b4, INPUT_PULLDOWN);
pinMode(ledpower, OUTPUT);
pinMode(ledready, OUTPUT);
pinMode(beep1, OUTPUT);
RGB.control(true);
}
void loop() {
digitalWrite(ledpower, HIGH);
if(digitalRead(b1)==HIGH)
bouton1();
if(digitalRead(b2)==HIGH)
bouton2();
if(digitalRead(b3)==HIGH)
bouton3();
if(digitalRead(b4)==HIGH)
bouton4();
else
RGB.color(255, 0, 0);
if (Spark.connected()) {
digitalWrite(ledready, HIGH);
delay(75);
digitalWrite(ledready, LOW);
delay(75);
}
else
{
digitalWrite(ledready, LOW);
}
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
// set the LED with the ledState of the variable:
if (i<88){
digitalWrite(beep1, ledState);
i=i+1;
}
}
}
void bouton1() {
if(millLast==0 || (millLast+millDelay)<millis()) {
millLast = millis();
i=88;
digitalWrite(beep1, HIGH);
delay(200);
digitalWrite(beep1, LOW);
RGB.color(0, 255, 0);
httpGetRequest(srvIP, srvHost, srvPort, srvPath1);
RGB.color(0, 0, 255);
delay(5000);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
delay(75);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
delay(75);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
}
}
void bouton2() {
if(millLast==0 || (millLast+millDelay)<millis()) {
millLast = millis();
i=88;
digitalWrite(beep1, HIGH);
delay(200);
digitalWrite(beep1, LOW);
RGB.color(0, 255, 0);
httpGetRequest(srvIP, srvHost, srvPort, srvPath2);
RGB.color(0, 0, 255);
delay(5000);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
delay(75);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
delay(75);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
}
}
void bouton3() {
if(millLast==0 || (millLast+millDelay)<millis()) {
millLast = millis();
i=88;
digitalWrite(beep1, HIGH);
delay(200);
digitalWrite(beep1, LOW);
RGB.color(0, 255, 0);
httpGetRequest(srvIP, srvHost, srvPort, srvPath3);
RGB.color(0, 0, 255);
delay(5000);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
delay(75);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
delay(75);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
}
}
void bouton4() {
if(millLast==0 || (millLast+millDelay)<millis()) {
millLast = millis();
i=88;
digitalWrite(beep1, HIGH);
delay(200);
digitalWrite(beep1, LOW);
RGB.color(0, 255, 0);
httpGetRequest(srvIP, srvHost, srvPort, srvPath4);
RGB.color(0, 0, 255);
delay(5000);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
delay(75);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
delay(75);
digitalWrite(beep1, HIGH);
delay(75);
digitalWrite(beep1, LOW);
}
}
void httpGetRequest(char* ip, char* hostname, int port, char* url) {
char line[255];
client.connect(ip, port);
strcpy(line, "GET ");
strcat(line, url);
strcat(line, " HTTP/1.1");
client.println(line);
delay(100);
strcpy(line, "Host: ");
strcat(line, hostname);
client.println(line);
delay(100);
strcpy(line, "Content-Length: 0");
client.println(line);
delay(100);
client.println();
delay(100);
client.flush();
delay(100);
client.stop();
delay(250);
}