Ir ao conteúdo

Posts recomendados

Postado

@lucianolcoa mas RF não seria apenas para portões eletrônicos? Nunca vi um exemplo de RF ligando TV ou AR.

 

Sobre seu código acima, peguei o que você postou um dia desses, e fiz um exemplo que como você colocaria no client.print

 

#include <ESP8266WiFi.h>
 
const char* ssid = "Net Virtua 41A";
const char* password = "aablcoa12";
 
int ledPin = D1; // GPIO13
int teste=D2;
int button=D0;
int button1=D4;
boolean status =LOW;
boolean statis= LOW;

String vetor1;
String vetor2;

WiFiServer server(80);
 
void setup() {
  
  Serial.begin(115200);
  delay(10);

  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  pinMode(teste,OUTPUT);
  digitalWrite(teste,LOW);
 pinMode(button,INPUT);
 pinMode(button1,INPUT);
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  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());
  Serial.println("/");
 
}
 
void loop() {
   if(digitalRead(button)==LOW){
            delay(300);
            status=!status;
          }
          if(status==HIGH){
            digitalWrite(ledPin,HIGH);
            vetor1="apagado";
          }
          if(status==LOW){
            digitalWrite(ledPin,LOW);
            vetor1="aceso";
          }
           if(digitalRead(button1)==LOW){
            delay(300);
            statis=!statis;
          }
          if(statis==HIGH){
            digitalWrite(teste,HIGH);
            vetor2="apagado";
          }
          if(statis==LOW){
            digitalWrite(teste,LOW);
            vetor2="aceso";
          }
   
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Wait until the client sends some data
  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();
 
  // Match the request
 
  if (request.indexOf("/quarto=ON") != -1)  {
    
    status=HIGH;
  }
  if (request.indexOf("/quarto=OFF") != -1)  {
    
  status=LOW;
  }
  if (request.indexOf("/corredor=ON") != -1)  {
    
           statis=HIGH;
  }
  if (request.indexOf("/corredor=OFF") != -1)  {
   statis=LOW;
  }
  
 
// Set ledPin according to the request
//digitalWrite(ledPin, value);
 
  // 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.println("<center>");
  client.print("Eletronica e utilidades:Automacao residencial");
 
  
  client.println("<br><br>");
  client.println("<a href=\"/quarto=ON\"\"><button>Ligar quarto  </button></a>");
  client.println("<a href=\"/quarto=OFF\"\"><button>Desligar quarto </button></a><br />");
  client.println("<a href=\"/corredor=ON\"\"><button>Ligar corredor </button></a>");
  client.println("<a href=\"/corredor=OFF\"\"><button>Desligar corredor </button></a><br />");    
 client.println(vetor1);
 client.println("<br><br>");
 client.println(vetor2);
 client.println("<br><br>");
 
  
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
 
}

 

Peguei como exemplo, o <STYLE>, e ficou assim:

  client.println("<style>body{background-color:#2F4F4F;color:#9AC0CD;font-family:Verdana,'Arial Black';font-size:14px;}";
  client.println(".btn{transition:background-color 2s;background-color:#4F94CD;color:#FFFFF0;font-weigth:700px;font-size:15px;");
  client.println("text-transformer:upper case;padding:4px;cursor:pointer;}.btn:hover{background-color:#00008B;color:#D1EEEE;");
  client.println("text-transformer:upper case;padding:6px;cursor:pointer;}</style>");

No exemplo acima, eu simplifiquei e coloquei na mesma linha o código CSS (<style>).

Você pode fazer linha por linha também.

 

** Atento que, quando há ASPAS DUPLAS no código HTML, eu inverto e coloca ASPAS SIMPLES, em vez de colocar a \.

 

 

Postado

Eu acredito que teria que ser um button ai em vez do <a>, mas não tenho certeza. OU, porque você definiu um HREF no <a>, e ele buga porque ele tem outra função atribuida no onclick.

<button type='button' onclick='funcao2()' class='btn'>Botão A</button>

 

Postado

@Papibakigrafo Sobre o seu problema envolvendo tv o metodo mais simples de se resolver isso é utilizando a famosa GAMBIARRA, voce deixa o dispositivo com sinal infravermelho proximo o suficiente do aparelho para ligar e colocar ele com um arduino e comunicando via serial com outro arduino via comando de radio frequencia. Se o receptor receber o comando do emissor, ele manda o pulso para fazer funcionar seja televisão ou ar condicionado.

adicionado 1 minuto depois

@Papibakigrafo Queria deixar o a href por causa do metodo get, sem o metodo get eu sou um reles mortal :(

 

Spoiler

eu não consigo usar o inventor.

 

  • Curtir 1
  • Membro VIP
Postado

Por que não usar wifi mesmo? Caso tenha ethernet interligando os dois ambientes, também seria uma opção. Acredito que esses dois caminhos, ou usar módulos transceptores RF 2.4 GHz, possibilitaria comunicação mais elaborada.

adicionado 5 minutos depois
23 minutos atrás, Papibakigrafo disse:

@lucianolcoa mas RF não seria apenas para portões eletrônicos? Nunca vi um exemplo de RF ligando TV ou AR.

 

Ele fala de você fazer uma central emissora de infravermelho. Essa central apontaria o sensor emissor para o aparelho que você quer comandar. Ela se comunicaria de outra forma com seu controlador mais remoto.

  • Curtir 1
Postado

@alexandre.mbm então, eu não consigo entender como pela ethernet, conseguiria ligar ou desligar um aparelho eletrônico que receba sinais IR, sem ser pelo LED IR!!

 

@lucianolcoa nunca cheguei a usar muito o app inventor, mas não tem como definir um ID pra cada botão?

 

Vamos supor:

<button type='button' class='btn' onclick='funcao1()' id='btn_1_on'>Ligar</button>

<button type='button' class='btn' onclick='funcao2()' id='btn_1_off'>Desligar</button>

Assim você diferencia facilmente.

Postado

@Papibakigrafo ligar ou desligar e possivel sim, so definir um variavel booleana e alterar o valor dela de acordo com a string. O problema seria "passear" pelos canais.... hehe. Mas por radio frequencia voce não taria limitado a strings, daria para passar valores mesmo e o monitor serial é bem inteligente quanto a isso. um char equivaleria a um código hexadecimal específico.

 

Sobre o inventor, admito que não sou o Miss inventor, sei fazer bem pouca coisa nele pra dizer a verdade. Mas o method get é fácil e ja faz um estrago avassalador.

adicionado 2 minutos depois

@alexandre.mbm Um jeito que imaginei de fazer seria criar um todos os botões que ele precisa no web server, e ahe ele clica num botao virtual especifico e o nodemcu ou arduino ethernet mandaria o código hexadecimal de acordo com o botão específico clicado.

  • Curtir 1
Postado

Vinicius se voce estiver por ahe preciso de seu help:

 

esse é meu codigo em html

<html>
<title>Testando javascript</title>
<body>
<form action="teste.html" method="get">
<meta charset="UTF-8" language="pt-br">
<center>
<style type="text/css" media="all">
body{
background-color:#2F4F4F;
color:#9AC0CD;
font-family:Verdana,"Arial Black";
font-size:14px;}
.btn{
transition:background-color 2s;
background-color:#4F94CD;
color:#FFFFF0;
font-weigth:700px;
font-size:15px;
text-transformer:upper case;
padding:4px;
cursor:pointer;
}
.btn:hover{
background-color:#00008B;
color:#D1EEEE;
text-transformer:upper case;
padding:6px;
cursor:pointer;}

</style>
<H2>Eletrônica e utilidades</H2>
<H2>automacão residencial</H2>
<div style="background-color:#838B83;color:#5D478B;font-size:16px;">
<script type="text/javascript">
var a=false;
var b=false;
function funcao1(){
	a=!a
	if(a== true){
	document.getElementById("teste1").innerHTML= "quarto aceso"
}
	if(a==false){
		document.getElementById("teste1").innerHTML= "quarto apagado"
		}
	}
function funcao2(){
	b=!b
	if(b== true){
	document.getElementById("teste2").innerHTML= "sala acesa "
}
	if(b==false){
		document.getElementById("teste2").innerHTML= "sala apagada"
		}
	}

</script>
<p id="teste1">quarto aceso<p>
<br>

<p id="teste2"> sala apagada<p>
</div>

<div style="background-color:#B5B5B5;color:#CDCDB4;">
<br>
<button name= "" type="submit" value="e" class="btn" onclick="funcao1()" >me clica</button>
<br>
<br>
<button name="" value="o" type="submit" class="btn" onclick="funcao2()">me clica</button>
<br>
<br>

</center>
</div>
</body></html>

Queria que quando o button fosse clicado ,alem de transmitir o valor via get ele também atualizasse a função javascript se assim fosse possível... Eu só estou conseguindo fazer ou uma coisa ou outra

Postado
2 horas atrás, lucianolcoa disse:

<a href="/sala\" class="btn" onclick="funcao2()">me clica</a>

 

As aspas duplas estão incorretas, o certo seria: 

<a href=\"sala\" class=\"btn\" onclick=\"funcao2()\">me clica</a>

 

Postado

@lucianolcoa Button não pode ser SUBMIT. Tem que ser type='button'

<button name= "" type="button" value="e" class="btn" onclick="funcao1()" >me clica</button>
<br>
<br>
<button name="" value="o" type="button" class="btn" onclick="funcao2()">me clica</button>

 

Postado
2 horas atrás, Papibakigrafo disse:

então, eu não consigo entender como pela ethernet, conseguiria ligar ou desligar um aparelho eletrônico que receba sinais IR, sem ser pelo LED IR!!

 

Eu ligo minha tv sem um controle remoto, eu controlo a tomada dela, tem umas que aceitam isso, se ela estiver ligada e for interrompida a energia, quando for restabelecida, ela volta ligada. Faz um teste pra ver se funciona no seu caso.

 

Pra ligar um ar-condicionado pela ethernet, por exemplo, o mais correto é você abrir o aparelho e embutir um ESP la dentro, se quiser for somente ligar seria mais básico, mas se quiser ligar e controlar a temperatura por exemplo, aí uma solução seria colocar um ESP internamente e "injetar" a frequência diretamente no pino do receptor IR, assim o aparelho receberia os mesmos comandos, como se fosse pelo IR.

 

adicionado 10 minutos depois
7 minutos atrás, lucianolcoa disse:

To testando o html no eclipse e ele não funciona. Quando clico no  botao ele simplesmente dá pagina invalida... help

 

Você não fez o link do jQuery, daí o navegador não reconhece seu código referente ao JS. Coloca assim:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script type="text/javascript">
var a=false;
var b=false;
function funcao1(){
	a=!a
	if(a== true){
	document.getElementById("teste1").innerHTML= "quarto aceso"
}
	if(a==false){
		document.getElementById("teste1").innerHTML= "quarto apagado"
		}
	}
function funcao2(){
	b=!b
	if(b== true){
	document.getElementById("teste2").innerHTML= "sala acesa "
}
	if(b==false){
		document.getElementById("teste2").innerHTML= "sala apagada"
		}
	}

</script>

 

  • Curtir 2
Postado

vinicius, testei aqui e ainda não funcionou. Se eu coloco "button" ele atualiza o paragrafo mediante javascript, se eu coloco "submit"=ele atualiza o post via get, mas não consigo fazer os dois =/

Postado

@lucianolcoa  Olhando seu código aqui, você precisa colocar os ponto-e-vírgulas após as instruções também, por exemplo:

function funcao2(){
	b=!b;
	if(b== true){
	document.getElementById("teste2").innerHTML= "sala acesa ";
}
	if(b==false){
		document.getElementById("teste2").innerHTML= "sala apagada";
		}
	}

O navegador não nos informa em que linha está um determinado erro, e o pior, daquela linha pra frente não roda mais nada, pra identificar em que linha está o erro, eu costumo colocar um alert:

 

function funcao2(){
	
	alert("OK!");


	b=!b
	if(b== true){
	document.getElementById("teste2").innerHTML= "sala acesa "
}
	if(b==false){
		document.getElementById("teste2").innerHTML= "sala apagada"
		}
	}

 

Desta forma eu sei se a função está sendo realmente executado ou então até que linha ela foi executada.

 

  • Membro VIP
Postado

@ViniciusKruz , acho que você está complicando. Tanto ar-condicionado como TV, se eles tem controle remoto IR, basta clonar os códigos e implementar outro controle por Arduino. No caso de ar-condicionado, essa clonagem é um pouco mais complicada, mas existem projetos iniciais prontos (para alguns fabricantes).

  • Curtir 2
Postado
3 minutos atrás, lucianolcoa disse:

vinicius, testei aqui e ainda não funcionou. Se eu coloco "button" ele atualiza o paragrafo mediante javascript, se eu coloco "submit"=ele atualiza o post via get, mas não consigo fazer os dois =/

 

Peraí, só pra eu entender, sou meio burro e as vezes tem que desenhar kkkk

 

O que realmente seu código tem que fazer?

Postado
4 minutos atrás, alexandre.mbm disse:

acho que você está complicando. Tanto ar-condicionado como TV

 

É mais complicado mesmo, com toda certeza, mas eliminaria um ESP pendurado em algum canto apontando um IR para o aparelho a ser controlado, e pior, teria que ficar pendurado em algum lugar próximo ao aparelho porque como sabemos IR não atravessa paredes nem faz curvas, até pode refletir em alguma coisa e mudar de trajetória, mas não curvas. Pela lógica, se o ESP estiver transmitindo de uma distância próxima ao aparelho, porque não usar o próprio controle remoto? rsrsrs

adicionado 3 minutos depois
4 minutos atrás, lucianolcoa disse:

Mas tipo eu queria fazer os 2.

 

Vamos continuar desenhando....kkk

 

Você quer que ao clicar no botão da página, o ESP acione uma saída e te retorne um "OK" e esse "OK" seja atualizado o texto em algum elemento?

 

Postado
1 minuto atrás, viniciuskruz disse:

 

é mais complicado mesmo, com toda certeza, mas eliminaria um esp pendurado em algum canto apontando um ir para o aparelho a ser controlado, e pior, teria que ficar pendurado em algum lugar próximo ao aparelho porque como sabemos ir não atravessa paredes nem faz curvas, até pode refletir em alguma coisa e mudar de trajetória, mas não curvas. pela lógica, se o esp estiver transmitindo de uma distância próxima ao aparelho, porque não usar o próprio controle remoto? rsrsrs

adicionado 3 minutos depois

 

vamos continuar desenhando....kkk

 

você quer que ao clicar no botão da página, o esp acione uma saída e te retorne um "ok" e esse "ok" seja atualizado o texto em algum elemento?

 

sim, positivo, via get e atualização da pagina.

adicionado 1 minuto depois

@viniciuskruz exatamente isto, e o comando tem que ser via get.

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...