#include <SPI.h>
#include <Ethernet2.h>
#include <RCSwitch.h>
#include "DHT.h"
#include <stdio.h>
#define DHTTYPE DHT22
#define DHTPIN 5
RCSwitch mySwitch = RCSwitch();
DHT dht(DHTPIN, DHTTYPE);
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 106);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80);
//Sensori
char dato[255] = "";
byte conta = 0;
char d;
const int value = mySwitch.getReceivedValue();
String readString; //stringhe
boolean ledon1 = false;
boolean ledon2 = false;
boolean ledon3 = false;
boolean ledon4 = false;
boolean ledon5 = false;
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
dht.begin();
Ethernet.begin(mac, ip);
mySwitch.enableTransmit(31);
mySwitch.enableReceive(0);
}
void loop() {
if (Serial1.available()) {
while (Serial1.available())
{
d = Serial1.read();
Serial.write(d);
if ( d != '\n' ) {
if ( d != '\r' ) {
dato[conta] = d;
conta++;
} else {
for (int i = 0; i < 100; i++)
dato[i] = 0;
}
}
}
}
/*inizio client*/
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
readString.concat(c);
if (c == '\n' && currentLineIsBlank) {
if (readString.indexOf("L=2") > 0) { //rele ON
mySwitch.send("000100000000010101010001");
ledon1 = true;
//accende il led con comando a 433 Mhz
}
if (readString.indexOf("L=3") > 0) { //rele1 OFF
mySwitch.send("000100000000010101010100");
ledon1 = false;
//spenge il led
}
if (readString.indexOf("L=4") > 0) { //rele2 ON
mySwitch.send("000100000001000101010001");
ledon2 = true;
}
if (readString.indexOf("L=5") > 0) { //rele2 OFF
mySwitch.send("000100000001000101010100");
ledon2 = false;
}
if (readString.indexOf("L=6") > 0) { //rele3 ON
mySwitch.send("000100000001010001010001");
ledon3 = true;
}
if (readString.indexOf("L=7") > 0) { //rele3 OFF
mySwitch.send("000100000001010001010100");
ledon3 = false;
}
if (readString.indexOf("L=8") > 0) { //rele4 ON
mySwitch.send("000100000001010100010001");
ledon4 = true;
}
if (readString.indexOf("L=9") > 0) { //rele4 OFF
mySwitch.send("000100000001010100010100");
ledon4 = false;
}
if (readString.indexOf("L=10") > 0) { //rele5 ON
mySwitch.send("010000000000010101010001");
ledon5 = true;
}
if (readString.indexOf("L=11") > 0) { //rele5 OFF
mySwitch.send("010000000000010101010100");
ledon5 = false;
}
if (readString.indexOf("L=13") > 0) { //rele tutti OFF
mySwitch.send("000100000000010101010100");
mySwitch.send("000100000001000101010100");
mySwitch.send("000100000001010001010100");
mySwitch.send("000100000001010100010100");
mySwitch.send("010000000000010101010100");
ledon1 = false;
ledon2 = false;
ledon3 = false;
ledon4 = false;
ledon5 = false;
}
// COSTRUZIONE PAGINA HTML
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<html>");
client.print("<head>");
client.print(" <title>Gergio Server Domotica</title> ");
client.println(" <meta name='viewport' content='width=device-width, user-scrollbar=no'>");
client.print("</head>");
client.println(" <body>");
client.println("<p>Temperatura Ambientale ");
client.print(dht.readTemperature()); //Sensori Arduino Master da visualizzare via Html
client.println(" C</p>");
client.println("<p>Umidita Ambientale ");
client.print(dht.readHumidity());
client.println(" %</p>");
client.println("<p>Sensori Slave remoto "); //Sensori Arduino Slave remoto da visualizzare via Html
client.write(dato);
client.println(" %</p>");
//Inizio pagina Menù luci
client.println("<h3>Luce Biblioteca</h3>");
client.println("<a href='/?L=2'>Accendi</a> | <a href='/?L=3'>Spegni</a></h2>"); //primo rele
if (ledon1) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<h3>Luce mensole</h3>");
client.println("<a href='/?L=4'>Accendi</a> | <a href='/?L=5'>Spegni</a>");//secondo rele
if (ledon2) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<h3>Luce colonna</h2>");
client.println("<a href='/?L=6'>Accendi</a> | <a href='/?L=7'>Spegni</a>"); //terzo rele
if (ledon3) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<h3>Led Scrivania</h3>");
client.println("<a href='/?L=8'>Accendi</a> | <a href='/?L=9'>Spegni</a></h2>"); //quarto rele
if (ledon4)
{
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<h3>Audio diffusori</h3>");
client.println("<a href='/?L=10'>Accendi</a> | <a href='/?L=11'>Spegni</a></h2>");//quinto rele
if (ledon5)
{
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:red; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<h3>All Off<h3><a href='/?L=13'>Spegni Tutto</a> ");
client.println(" </body>");
client.println("</html>");
readString = "";
client.print("<meta http-equiv=\"refresh\" content=\"3\">");
client.stop();
}
}
}
}
}
Sono riuscito finalmente a visualizzare tutto il contenuto del buffer su pagina Html, rimane il problema dello svuotamento del buffer in quanto non si svuota.
Vorrei visualizzare su pagina Html solo 67.80 *H 23.60 *C, il problema è che mi visualizza una serie lunghissima di byte dati dalle precedenti letture quindi 67.80 *H 23.60 *C ripetuti n volte.
Dovrei usare un ciclo for e se si dove lo dovrei inserire?qualcuno mi può fare un esempio?