Hola, estoy haciendo un proyecto de domótica en el que se controlen distintos elementos desde una pagina web.
El arduino funciona como Cliente y tengo una pagina web en mi servidor local.
Pues bien he conseguido que el arduino envie datos de temperatura etc a la web pero no consigo que el Arduino reciba ordenes desde la pagina.
Por ejemplo, un botón para encender o apagar la luz desde la página, ¿como envio esos datos a Arduino?
Según lo que he entendido el Arduino tiene que ser el que abra la conexión con el servidor y solicite esos datos mediante un get por ejemplo pero lo que no se ess como programar esos botones para que envíen un valor de ON o OFF.
pues yo lo hago de otra manera, para las cosas no criticas que da lo mismo que tarde unos segundos en abrirse o cerrarse te pongo un ejemplo practico de lo que estoy trabajando es en un ESP8266 sin arduino pero para el caso viene ser lo mismo
En mi caso el ESP hace una GET al servidor, con una clave, y el tag que quiere consultar, el servidor en php hace la consulta a la base de datos mysqli y luego muestra el valor en tu caso seria uno o cero
el ESP lee en búsqueda de tus palabras claves uno o cero y actúa en consecuencia
es un servidor online si quieres te puedo dar espacio para tus tags y una contraseña para su uso, ademas te pasaría las instrucciones y ejemplos de uso
cuando lo haya probado alguna gente lo publicare para todos a modo de thinkspeaks o similar, pero mas sencillo aun de usar si no quieres gráficas ni nada de eso
cristiams:
Buenas, estoy en la misma situacion Go_zalo me interesa saber como lo estas haciendo, me podrias enviar tambien tus instrucciones y ejemplos de uso.
Eres capaz ya de enviar una posición POST desde tu micro sea una esp o un arduino? Si es así eres un buen candidato a beta tester
En ese caso te facilitaría todo lo que necesitas saber para hacerlo funcionar
Soy capaz de enviar datos de mi arduino a una base de datos mysql por medio de php. Quiero realizar tambien control de leds, encendido de reles, ajustes de temperatura es decir controlar arduino desde una pagina web externa.
alguien me puede ayudar? el ejemplo de servidor web solo me lanza en el monitor serial server is 0.0.0.0 y al ingresar la ip en el navegador no carga y aparece timed out. anexo codigo
#include <SPI.h> #include <Ethernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02};
IPAddress ip(192, 168, 1, 69);
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // the connection will be closed after completion of the response
client.println("Refresh: 5"); // refresh the page automatically every 5 sec
client.println();
client.println("");
client.println("");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("
");
}
client.println("");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disconnected");
}
}
Ps el codigo parece bien, accede a tu router y verifica q se le dio la direccion ip que le asignaste, no parece problema de codigo
gracias por responder cristiams, yo lo conecto a mi modem no cuento con un router, ocupo un modem Thomson TG585 V8, pero he accedido a el y en la seccion donde se ven los equipos conectados por cable no aparece la arduino, al probarlo con la lap esta si aparece en dispositivos conectados por ethernet. otro punto que observe esque aparece una ip automatica cuando esta conectada la arduino pero esa ip no pertenece al rango de mi modem. el mismo ejemplo lo probe en la empresa donde hago mis practicas pero resulto lo mismo, no se si se deba que ahi ocupan la red por medio de proxy y me han dicho que debo configurarle el proxy para que tenga acceso a internet.
Ps el codigo parece bien, accede a tu router y verifica q se le dio la direccion ip que le asignaste, no parece problema de codigo
ya funciona cristiams, el error era en mi tarjeta que le habia conectado un push en el pin 13 y luego lei que ahi no se conecta nada, adquiri una nueva y ya jala el ejemplo de web server, ahora probare el de webclient para enviar un email al pulsar un push