Olá galera, sou novo aqui e bastante leigo no assunto, estou desenvolvendo um TCC sobre automação residencial e estou com um problema quanto ao login, a ideia é que o usuário tenha que se logar primeiro para controlar a casa, mas o login não tem sistema de segurança, então só de pegar o ip do arduino o usuário passa despercebido pelo login. Eu copiei um código de um vídeo da internet que evita esse problema, porém não consigo dar o include desse arquivo na IDE do arduino. Desde já agradeço por qualquer ajuda.

Exibições: 537

Anexos

Responder esta

Respostas a este tópico

Boa noite, Te indico a você criar sua propria segurança em vez de copiar coisas da internet. O exemplo fácil seria o seguinte.

O usuário x acessou a página de login, ao carregar a página, o sistema verifica se ele já feliz o login anteriormente, se sim, direciona para página home do sistema, cao ao contrario, fica na página de login. Depois que ele fazer o login, o sistema cria uma session com a o email do usuário, e direciona para página home, caso ele volte para página de login estando logando, a verificação que falei no início vai direceionar ele diretamente para página home.

Lembrando que isso é um exemplo simples, existe várias outras coisas para ter mais segurança.

Sim, entendi a ideia, mas o problema é se ele colocar o endereço da página e conseguir acessar sem se logar. Isso q eu n sei resolver, captei a ideia mas n sei aplicar na IDE do Arduino

pode compartilhar seu código ?

#include <Ethernet.h>
#include <SPI.h>
#include <Servo.h>
#include <HCSR04.h>

#define p_trigger 8
#define p_echo 9

const int BLUE =5;
const int GREEN =6;
const int RED =7;
//int dist_cm,dist_m; //disctância;
int angS1;
int freq = 0;
int pin;
int ultimoComando;
int ultimoComando_Dist;


//Set to your MAC address!
//It should be on your sticker. If you can't find it,
//make one up, or use this one.
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4A, 0xE0 };

//Start the server on port 80
EthernetServer server = EthernetServer(80); //port 80
//Declarando o Servo
Servo s1; //Nome do Servo
//Configurando o Sensor de Distância
UltraSonicDistanceSensor distanceSensor(p_trigger, p_echo);
boolean receiving = false; //To keep track of whether we are getting data.

void setup()
{
Serial.begin(9600);

pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);

//Config do Micro Servo
s1.attach(2);
angS1 = 0;
s1.write(angS1);
//Connect with DHCP
if (!Ethernet.begin(mac))
{
Serial.println("Could not Configure Ethernet with DHCP.");
return;
}
else
{
Serial.println("Ethernet Configured!");
}

//Start the server
server.begin();
Serial.print("Server Started.\nLocal IP: ");
Serial.println(Ethernet.localIP());

}

void loop()
{
EthernetClient client = server.available();

if (client)
{

//An HTTP request ends with a blank line
boolean currentLineIsBlank = true;
boolean sentHeader = false;

while (client.connected())
{
if (client.available())
{
char c = client.read(); //Read from the incoming buffer

if(receiving && c == ' ') receiving = false; //done receiving
if(c == '?') receiving = true; //found arguments

//This looks at the GET requests
if(receiving)
{
//An LED command is specified with an L
if (c == 'L')
{
Serial.print("Led: ");
pin = client.parseInt();
Serial.println(pin);
digitalWrite(pin, !digitalRead(pin));
break;
}
//A speaker command is specified with an S
else if (c == 'S')
{
angS1 = client.parseInt();
if(ultimoComando == 0){
angS1 = 180;
}else{
angS1 = 0;

}
s1.write(angS1);
delay(5);
ultimoComando = angS1;
delay(5);
break;
}
//Sensor de Distância
/* if (c == 'M')
{
dist_cm=distanceSensor.measureDistanceCm();
dist_m=dist_cm/100;
if(p_trigger == HIGH and p_echo == HIGH){
p_trigger = LOW;
p_echo = LOW;
}else{
p_trigger = HIGH;
p_echo = HIGH;
Serial.print("Distancia em cm: ");
Serial.print(dist_cm);
Serial.print("cm: ");
Serial.print("----------------------");
Serial.print("Distancia em m: ");
Serial.println(dist_m);
Serial.println("m: ");
delay(1000);
}

break;
}*/
}
if(!sentHeader)
{
//Send a standard HTTP response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html\n");
//Led vermelho
client.println("<form action='' method='get'>");
client.println("<input type='hidden' name='L' value='7' />");
client.println("<input type='submit' value='Acender Vermelho' />");
client.println("</form>");

//Led Verde
client.println("<form action='' method='get'>");
client.println("<input type='hidden' name='L' value='6' />");
client.println("<input type='submit' value='Acender Verde' />");
client.println("</form>");

//Led Azul
client.println("<form action='' method='get'>");
client.println("<input type='hidden' name='L' value='5' />");
client.println("<input type='submit' value='Acender Azul' />");
client.println("</form>");

//Servo
client.println("<form action='' method='get'>");
client.print("<input type='hidden' name='S' value='0'/>");
client.println("<input type='submit' value='Micro Servo' />");
client.println("</form>");

//Sensor de Distância
if (c == 'L')
{
Serial.print("Toggling Pin ");
pin = client.parseInt();
Serial.println(pin);
digitalWrite(pin, !digitalRead(pin));
break;
}
//Add additional forms forms for controlling more things here.

sentHeader = true;
}

if (c == '\n' && currentLineIsBlank) break;

if (c == '\n')
{
currentLineIsBlank = true;
}
else if (c != '\r')
{
currentLineIsBlank = false;
}
}
}
delay(5); //Give the web browser time to receive the data
client.stop(); //Close the connection:
}
}

Aqui estão os outros.

Anexos

anexos.

anexos.

Meu amigo, fiz atualizações nos arquivos, dentro do arquivo login.php consta as mudanças e atualizações comentadas para você entender o funcionamento da segurança de login.

OBS: está dando erro ao anexar os arquivos no comentário, estou mandando o link caso não consiga baixar aquir nos comentários.

https://drive.google.com/file/d/1BVezPqG3sepH5bswkhriZzLwBVOw_OUv/v...

Anexos
Vou dar uma olhada, muito obrigado pela atenção, de verdade!!

Qualquer coisa, estou a disposição. 

Se me permiti uma opnião, te sugiro a mudar a forma de trabalhar, em vez de você exibir a página do arduino com informções, você fazer um requisição par o arduino e mostrar no seu site as informações, assim você diminui o trabalho do arduino e consegue montar o layout bonito no seu site.

Obrigado e desculpa por demorar para responder, eu estava desenvolvendo mais o código, o sistema de login está funcionando perfeitamente, mas eu ainda não consigo comunicar o php com o arduino. Eu vou enviar os comandos da página php para o arduino através da internet, mas não faço ideia de como fazer o arduino ler os comandos do php sem estar conectado na serial.

se importa de compatilhar seu código para analisar e te ajudar ? caso não queria compartilhar publicamente aqui, me avisa que te mando meu email.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço