Boa tarde amigos,

Consegui enviar dados do arduino para o PHP:

client.print("GET http://ipservidor/arduino.php?campo=");
client.print(variavel);
client.println(" HTTP/1.1");
client.println("Host: ipservidor");
client.println();

Tambem Consegui receber do PHP via socket:

String ePalavra;
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char msg = client.read();
ePalavra = ePalavra + msg;
Serial.write(msg);
}}
client.stop();

E dessa forma até satisfaz e resolve o meu problema, mas tenho ter no meu sistema o ip de cada arduino, existe uma forma de quando eu enviar a informação ao servidor PHP, pegar o retorno aproveitando a conexão ou apenas utilizando o ip do servidor, reforçando, a idéia é que o servidor não precise saber o ip do arduino.

Obrigado!

Exibições: 1231

Responder esta

Respostas a este tópico

Não entendi bem a ideia, mas seria pegar o IP de quem acessar esse arduino.php?

Se for isso, já tentou o básico?

$http_client_ip = $_SERVER['HTTP_CLIENT_IP'];
$http_x_forwarded_for = $_SERVER['HTTP_X_FORWARDED_FOR'];
$remote_addr = $_SERVER['REMOTE_ADDR'];
if(!empty($http_client_ip)){
$ip = $http_client_ip;
} else if(!empty($http_x_forwarded_for)){
$ip = $http_x_forwarded_for;
} else {
$ip = $remote_addr;
}

$ip_arduino = $ip;

Oi Amanda, 

obrigado pela dica, mas no caso a minha idéia é não precisar saber o IP do Arduino, apenas o Arduino saber o IP do arquivo, então quando ele se conectar ao servidor, enviar os dados e aproveitar a conexão para trazer as informaçoes dele.

Não sei como fazer essa mágica. Até onde eu sei, teria que pegar o IP do cliente e conectar a ele para enviar o que deseja.

Exatamente Amanda, na minha visão também é uma mágica, mas abri esse tópico a partir de uma explicação sobre socket, que ele permitiria que o meu cliente (arduino) ao se conectar para enviar informações, poderia aproveitar essa conexão para receber as informações, descartando as que não forem dele.

Vamos ver se alguém conhece alguma solução, eu não conheço. Mas uma coisa é certa, ela pode até não existir hoje, mas logo logo aparece algo por aí. Vou seguir acompanhando.

Obrigado Amanda pela atenção.

Só pra entender a lógica dessa discussão, caso exista essa solução, eu poderia colocar esse coletor em qualquer rede sem me preocupar com a forma que eu vou me conectar a ele, ip's fixos ou reais, etc. Ele conhecendo o IP do servidor já seria suficiente para ele enviar as informações e receber as informações referentes a ele, descartando as demais, ou seja, vários coletores se comunicariam a um determinado servidor e receberia todas as informações, retendo apenas a que interessa a cada um deles.

boa noite Carlos, o que vc quer dizer quando cita o termo coletor?

Poderia dar um exemplo prático da sua idéia? Não consegui entender o que pretende

Boa noite imHugo.

São sensores de estacionamento, identifica o estacionamento de um veiculo e envia a informação da ocupação da vaga. No caso já consigo fazer a comunicação tanto o arduino enviando as informações das vagas que ele gerencia para o servidor, como o servidor enviando para o arduino as atualizações necessárias.
Só que eu gostaria de aprimorar o método, pois hoje necessito saber o ip do coletor (arduino), então tenho que montar uma infraestrutura de rede, se essa lógica do arduíno ao se conectar ao servidor enviar as informações e, aproveitando essa conexão estabelecida, receber dados, eu teria mais mobilidade no projeto, poderia em qualquer rede (um provedor local por exemblo), utilizar um ponto e fazer o envio/recebimento das informações.
Espero ter conseguido explicar melhor. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço