Domotica Pro
Domotica Pro
Presentazione
Domotica Pro nasce per permettere a chiunque di creare dei web server e gestirli nella maniera più semplice.
In particolare questa applicazione è stata pensata e realizzata per potersi interfacciare con dei microcontrollori programmabili come Arduino e NodeMCU, e permettere a chiunque di creare la propria domotica, su misura delle singole persone e completamente open-source.
L'ambiente di lavoro si presenta minimale e pulito, così da renderlo facile da utilizzare anche per gli utenti meno esperti. La configurazione delle stanze e degli oggetti da comandare è altrettanto semplice, e in caso di errore si potrà modificare o cancellare l'oggetto creato.
Di seguito troverai i codici prefatti per programmare la tua scheda ed una breve introduzione al funzionamento dell'applicazione; per qualsiasi domanda o dubbio sarò a tua disposizione: domoticapro.app@gmail.com
Privacy policy
L'applicazione non agisce in alcun modo sul dispositivo dell'utente finale, salva tutti i dati in un database esterno dove i dati vengono crittografati per una maggior sicurezza.
L'applicazione quindi diventa disponibile per tutte le tipologie di pubblico senza limitazioni d'età.
Si nega la presenza di qualsiasi materiale vietato ed in caso di eventuali problemi saranno contattati gli utenti per la risoluzione di questi ultimi.
Codici
Ti progongo di seguito due varianti di codice
Questa è la prima variante, utilizza solamente una scheda programmabile per comandare dei relè, l'unico limite che ha è il numero di relè che puoi comandare: infatti hai a disposizioni tanti relè quante uscite possiede la scheda.
Fai attenzione: il sistema di feedback dello stato non è implementato
Questa è la seconda variante, utilizza due schede connesse tra di loro tramite comunicazione seriale, ciò ti permette di avere un numero di uscite elevato e la comodità di avere solo due cavi da collegare (TX ed RX).
Fai attenzione: il sistema di feedback dello stato è già implementato
#include <ESP8266WiFi.h>
#include <ESP8266Ping.h>
const char* ssid = "NOME RETE"; // SSID i.e. Service Set Identifier is the name of your WIFI
const char* password = "PSW"; // Your Wifi password, in case you have open network comment the whole statement.
IPAddress ip(XXX,XXX,XXX,XXX); // static IP adress of device
IPAddress gateway(XXX,XXX,XXX,XXX); // Gatway
IPAddress subnet(XXX,XXX,XXX,XXX); // Network mask es. 255,255,255,0
int RELE1 = D0;
int RELE2 = D1;
int RELE3 = D2;
int RELE4 = D3;
int RELE5 = D4;
int stato1 = HIGH;
int stato2 = HIGH;
int stato3 = HIGH;
int stato4 = HIGH;
int stato5 = HIGH;
unsigned long prevmillis;
WiFiServer server(80); // Creates a server that listens for incoming connections on the specified port, here in this case port is 80.
void setup() {
Serial.begin(115200);
delay(10);
pinMode(RELE1, OUTPUT);
pinMode(RELE2, OUTPUT);
pinMode(RELE3, OUTPUT);
pinMode(RELE4, OUTPUT);
pinMode(RELE5, OUTPUT);
digitalWrite(RELE1, stato1);
digitalWrite(RELE2, stato2);
digitalWrite(RELE3, stato3);
digitalWrite(RELE4, stato4);
digitalWrite(RELE5, stato5);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connessione a ");
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.config(ip,gateway,subnet);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connesso");
// Start the server
server.begin();
Serial.println("Server partito");
// Print the IP address
Serial.print("usa questo URL per le richieste: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
//---------------------------------
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
int contatore=0;
Serial.println("nuovo cliente");
while(!client.available()){
delay(10);
contatore++;
if(contatore>=10000)return;
}
// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Match the request
//setup rele
if (request.indexOf("/Rele1") != -1) {
stato1 = !stato1;
digitalWrite(RELE1, stato1);
}
//----------------
if (request.indexOf("/Rele2") != -1) {
stato2 = !stato2;
digitalWrite(RELE2, stato2);
}
//-----------------
if (request.indexOf("/Rele3") != -1) {
stato3 = !stato3;
digitalWrite(RELE3, stato3);
}
//----------------
if (request.indexOf("/Rele4") != -1) {
stato4 = !stato4;
digitalWrite(RELE4, stato4);
}
//---------------
if (request.indexOf("/Rele5") != -1) {
stato5 = !stato5;
digitalWrite(RELE5, stato5);
}
//-------------
// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("COMANDO RELE'");
client.println("<br><br>");
client.println("<a href=\"/Rele1\"\"><button>1</button></a><br /><br />");
client.println("<a href=\"/Rele2\"\"><button>2</button></a><br /><br />");
client.println("<a href=\"/Rele3\"\"><button>3</button></a><br /><br />");
client.println("<a href=\"/Rele4\"\"><button>4</button></a><br /><br />");
client.println("<a href=\"/Rele5\"\"><button>5</button></a><br /><br />");
client.println("</html>");
delay(1);
//client.stop();
Serial.println("Client disonnected");
Serial.println("");
}
#include <ESP8266WiFi.h>
char c;
String conferma;
int conf;
String stato01 = "OFF";
String stato02 = "OFF";
String stato03 = "OFF";
String stato04 = "OFF";
String stato05 = "OFF";
String stato06 = "OFF";
String stato07 = "OFF";
String stato08 = "OFF";
String stato09 = "OFF";
String stato10 = "OFF";
const char* ssid = "nome rete"; // SSID
const char* password = "psw"; //PSW wifi
IPAddress ip(xxx,xxx,xxx,xxx); // static IP address of device
IPAddress gateway(xxx,xxx,xxx,xxx); // Gatway
IPAddress subnet(xxx,xxx,xxx,xxx); // Network mask
WiFiServer server(80); // crea server
void setup() {
Serial.begin(9600);
delay(10);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.config(ip,gateway,subnet);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP()); //stampa ip preso dalla scheda
Serial.println("/");
}
void loop() {
WiFiClient client = server.available();
//RISPOSTE DALLA SCHEDA
conferma = "";
if(Serial.available()){
do{
if(Serial.available()){
c = Serial.read();
if (c != 0x0d){
conferma += c;
}
}
}while(c != 0x0d);
Serial.print("la variabile conferma è:");
Serial.println(conferma);
verificaConferma();
conferma = "";
}
else{
if (!client) {
return;
}
// aspetta finche il client non manda dati
//Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line of the request
String request = client.readStringUntil('\r');
//Serial.println(request);
client.flush();
if (request.indexOf("/A01") != -1){
chiamata('0','1');
}
if (request.indexOf("/A02") != -1) {
chiamata('0','2');
}
if (request.indexOf("/A03") != -1) {
chiamata('0','3');
}
if (request.indexOf("/A04") != -1) {
chiamata('0','4');
}
if (request.indexOf("/A05") != -1) {
chiamata('0','5');
}
if (request.indexOf("/A06") != -1) {
chiamata('0','6');
}
if (request.indexOf("/A07") != -1) {
chiamata('0','7');
}
if (request.indexOf("/A08") != -1) {
chiamata('0','8');
}
if (request.indexOf("/A09") != -1) {
chiamata('0','9');
}
if (request.indexOf("/A10") != -1) {
chiamata('1','0');
}
}
//sito web
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<br>LED01" + stato01);
client.println("<br>LED02" + stato02);
client.println("<br>LED03" + stato03);
client.println("<br>LED04" + stato04);
client.println("<br>LED05" + stato05);
client.println("<br>LED06" + stato06);
client.println("<br>LED07" + stato07);
client.println("<br>LED08" + stato08);
client.println("<br>LED09" + stato09);
client.println("<br>LED10" + stato10);
client.println("<br><br>");
client.println("</html>");
}
void chiamata(char n1,char n2){
Serial.write('a');
Serial.write('c');
Serial.write('c');
Serial.write(',');
Serial.write(n1);
Serial.write(n2);
Serial.write('@');
}
void verificaConferma(){
if (conferma == "on,01" ) stato01 = "ON"; else if(conferma == "of,01") stato01 = "OFF";
if (conferma == "on,02" ) stato02 = "ON"; else if(conferma == "of,02") stato02 = "OFF";
if (conferma == "on,03" ) stato03 = "ON"; else if(conferma == "of,03") stato03 = "OFF";
if (conferma == "on,04" ) stato04 = "ON"; else if(conferma == "of,04") stato04 = "OFF";
if (conferma == "on,05" ) stato05 = "ON"; else if(conferma == "of,05") stato05 = "OFF";
if (conferma == "on,06" ) stato06 = "ON"; else if(conferma == "of,06") stato06 = "OFF";
if (conferma == "on,07" ) stato07 = "ON"; else if(conferma == "of,07") stato07 = "OFF";
if (conferma == "on,08" ) stato08 = "ON"; else if(conferma == "of,08") stato08 = "OFF";
if (conferma == "on,09" ) stato09 = "ON"; else if(conferma == "of,09") stato09 = "OFF";
if (conferma == "on,10" ) stato10 = "ON"; else if(conferma == "of,10") stato10 = "OFF";
}