#include <pins_arduino.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Flash.h>
#include <SD.h>
#include <TinyWebServer.h>
int statoventola = LOW; // stato ventola raffrescamento Arduino
unsigned long citofono = 1000; //tempo in cui deve stare premuto il citofono in millisecondi
unsigned long zero;
unsigned long zeroventola = 0; // will store last time LED was updated
const long tempoventola = 10000; // interval at which to blink (milliseconds)
const int Bi1 = 2;
const int Bi2 = 3;
const int Bi3 = 5;
const int Bi4 = 6;
const int ventola = 8; // the number of the LED pin
byte val1;
byte val2;
byte val3;
byte val4;
byte valold1;
byte valold2;
byte valold3;
byte valold4;
// The LED attached to PIN X on an Arduino board.
const int Li1 = A0;
const int Li2 = A1;
const int Li3 = A2;
const int Li4 = A3;
const int Li5 = A4;
const int Li6 = A5;
// pin 4 is the SPI select pin for the SDcard
const int SD_CS = 4;
// pin 10 is the SPI select pin for the Ethernet
const int ETHER_CS = 10;
// Don't forget to modify the IP to an available one on your home network
byte ip[] = { 192, 168, 0, 2 };
/*********************************************/
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// The initial state of the LED
byte statoLed1;
byte statoLed2;
byte statoLed3;
byte statoLed4;
byte statoLed5;
byte statoLed6;
void setLedEnabled(boolean state) {
statoLed1 = state;
digitalWrite(Li1, state);
}
void setLed2Enabled(boolean state2) {
statoLed2 = state2;
digitalWrite(Li2, state2);
}
void setLed3Enabled(boolean state3) {
statoLed3 = state3;
digitalWrite(Li3, state3);
}
void setLed4Enabled(boolean state4) {
statoLed4 = state4;
digitalWrite(Li4, state4);
}
void setLed5Enabled(boolean state5) {
statoLed5 = state5;
digitalWrite(Li5, state5);
}
void setLed6Enabled(boolean state6) {
statoLed6 = state6;
digitalWrite(Li6, state6);
}
inline boolean getLedState() { return statoLed1; }
inline boolean getLedState2() { return statoLed2; }
inline boolean getLedState3() { return statoLed3; }
inline boolean getLedState4() { return statoLed4; }
inline boolean getLedState5() { return statoLed5; }
inline boolean getLedState6() { return statoLed6; }
boolean file_handler(TinyWebServer& web_server);
boolean blink_led_handler(TinyWebServer& web_server);
boolean blink_led2_handler(TinyWebServer& web_server);
boolean blink_led3_handler(TinyWebServer& web_server);
boolean blink_led4_handler(TinyWebServer& web_server);
boolean blink_led5_handler(TinyWebServer& web_server);
boolean blink_led6_handler(TinyWebServer& web_server);
boolean led_status_handler(TinyWebServer& web_server);
boolean led2_status_handler(TinyWebServer& web_server);
boolean led3_status_handler(TinyWebServer& web_server);
boolean led4_status_handler(TinyWebServer& web_server);
boolean led5_status_handler(TinyWebServer& web_server);
boolean led6_status_handler(TinyWebServer& web_server);
boolean index_handler(TinyWebServer& web_server);
TinyWebServer::PathHandler handlers[] = {
// Work around Arduino's IDE preprocessor bug in handling /* inside
// strings.
//
// `put_handler' is defined in TinyWebServer
{"/", TinyWebServer::GET, &index_handler },
{"/upload/" "*", TinyWebServer::PUT, &TinyWebPutHandler::put_handler },
{"/blinkled6", TinyWebServer::POST, &blink_led6_handler },
{"/blinkled5", TinyWebServer::POST, &blink_led5_handler },
{"/blinkled4", TinyWebServer::POST, &blink_led4_handler },
{"/blinkled3", TinyWebServer::POST, &blink_led3_handler },
{"/blinkled2", TinyWebServer::POST, &blink_led2_handler },
{"/blinkled", TinyWebServer::POST, &blink_led_handler },
{"/ledstatus6" "*", TinyWebServer::GET, &led6_status_handler },
{"/ledstatus5" "*", TinyWebServer::GET, &led5_status_handler },
{"/ledstatus4" "*", TinyWebServer::GET, &led4_status_handler },
{"/ledstatus3" "*", TinyWebServer::GET, &led3_status_handler },
{"/ledstatus2" "*", TinyWebServer::GET, &led2_status_handler },
{"/ledstatus" "*", TinyWebServer::GET, &led_status_handler },
{"/" "*", TinyWebServer::GET, &file_handler },
{NULL},
};
const char* headers[] = {
"Content-Length",
NULL
};
TinyWebServer web = TinyWebServer(handlers, headers);
boolean has_filesystem = true;
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;
void send_file_name(TinyWebServer& web_server, const char* filename) {
if (!filename) {
web_server.send_error_code(404);
web_server << F("Could not parse URL");
} else {
TinyWebServer::MimeType mime_type
= TinyWebServer::get_mime_type_from_filename(filename);
web_server.send_error_code(200);
web_server.send_content_type(mime_type);
web_server.end_headers();
if (file.open(&root, filename, O_READ)) {
Serial << F("Read file "); Serial.println(filename);
web_server.send_file(file);
file.close();
} else {
web_server << ("Could not find file: ") << filename << "\n";
}
}
}
boolean file_handler(TinyWebServer& web_server) {
char* filename = TinyWebServer::get_file_from_path(web_server.get_path());
send_file_name(web_server, filename);
free(filename);
return true;
}
boolean blink_led_handler(TinyWebServer& web_server) {
web_server.send_error_code(200);
web_server.send_content_type("text/plain");
web_server.end_headers();
// Reverse the state of the LED.
setLedEnabled(!getLedState());
Client& client = web_server.get_client();
if (client.available()) {
char ch = (char)client.read();
if (ch == '0') {
setLedEnabled(false);
} else if (ch == '1') {
setLedEnabled(true);
}
}
return true;
}
boolean blink_led2_handler(TinyWebServer& web_server) {
web_server.send_error_code(200);
web_server.send_content_type("text/plain");
web_server.end_headers();
// Reverse the state of the LED.
setLed2Enabled(!getLedState2());
Client& client = web_server.get_client();
if (client.available()) {
char ch = (char)client.read();
if (ch == '0') {
setLed2Enabled(false);
} else if (ch == '1') {
setLed2Enabled(true);
}
}
return true;
}
boolean blink_led3_handler(TinyWebServer& web_server) {
web_server.send_error_code(200);
web_server.send_content_type("text/plain");
web_server.end_headers();
// Reverse the state of the LED.
setLed3Enabled(!getLedState3());
Client& client = web_server.get_client();
if (client.available()) {
char ch = (char)client.read();
if (ch == '0') {
setLed3Enabled(false);
} else if (ch == '1') {
setLed3Enabled(true);
}
}
return true;
}
boolean blink_led4_handler(TinyWebServer& web_server) {
web_server.send_error_code(200);
web_server.send_content_type("text/plain");
web_server.end_headers();
// Reverse the state of the LED.
setLed4Enabled(!getLedState4());
Client& client = web_server.get_client();
if (client.available()) {
char ch = (char)client.read();
if (ch == '0') {
setLed4Enabled(false);
} else if (ch == '1') {
setLed4Enabled(true);
}
}
return true;
}
boolean blink_led5_handler(TinyWebServer& web_server) {
web_server.send_error_code(200);
web_server.send_content_type("text/plain");
web_server.end_headers();
// Reverse the state of the LED.
setLed5Enabled(!getLedState5());
Client& client = web_server.get_client();
if (client.available()) {
char ch = (char)client.read();
if (ch == '0') {
setLed5Enabled(false);
} else if (ch == '1') {
setLed5Enabled(true);
}
}
return true;
}
boolean blink_led6_handler(TinyWebServer& web_server) {
web_server.send_error_code(200);
web_server.send_content_type("text/plain");
web_server.end_headers();
// Reverse the state of the LED.
setLed6Enabled(!getLedState6());
Client& client = web_server.get_client();
if (client.available()) {
char ch = (char)client.read();
if (ch == '0') {
setLed6Enabled(false);
} else if (ch == '1') {
setLed6Enabled(true);
zero = millis();
}
}
return true;
}