#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
const int value = mySwitch.getReceivedValue();
int sensorGas = A0;
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()) {
Serial.write(Serial1.read());
}
/*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(Serial1.read());
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();
}
}
}
}
}
Con serial write scrivo ciò che mi arriva da serial1 ossia i pin 18 e 19 del mega dove è ataccato un xbee che riceve segnale da una centralina remota e qui tutto ok perchè dal monitor seriale vedo correttamente temperature e umidità solo che usando client.write visualizzo un valore per volta quindi un byte alla volta però ora rieco a vederlo anche da pagina web ma i dati mi arrivano un byte alla volta.