Galera, ja li mto por aqui sobre o ethernet shield e consegui configurar o servidor nat do meu router pra fazer acesso externo para o arduino e tudo mais.
até ai tudo bem, mas como o ip externo é dinamico ele fica mudando e meu router nao tem boas opçoes para ddns.
Então resolvi fazer o seguinte:
Usar uma aplicação rodando em algum servidor externo de preferencia em flash.
o arduino iria somente se conectar e redirecionar o browser para esta aplicação.

e esta por sua vez iria passar os comandos de acionamento para o arduino via php get com link para o ip externo.

o problema é: como eu faço para meu arduino descobrir seu ip externo sozinho e ficar mandando para meu site se atualizar?

Gostaria saber se tem algum modo de pegar o ip externo do arduino constantemente e envia-lo para a aplicação no servidor externo será que rola?

Exibições: 7547

Responder esta

Respostas a este tópico

Vc tem que usar um servico DDNS (dynamic Domain Name System). Atualmente tem o no-ip, dyndns, e a Winco DNS (empresa Brasileira) , entre varias outras...

O método mais comum é instalar um aplicativa em uma maquina (CPU) que atualiza o IP da sua WAN no servidor.

Outra opção é verificar se o se Router tem a função DNS. Verificar quais serviços são disponíveis e configurar o que vc achar melhor.

O problema maior é que todas empresas de DNS passaram a cobrar pelo serviço. Não há mais serviço gratuito. Com exceção da Winco DNS, que ainda disponibiliza um serviço free limitado.

 meu router nao tem boas opçoes para ddns. Então não posso usar um serviço de dns dinamico. é como se eu precisasse criar um servidor ddns na qual o arduino manda o ip externo para o site tendeu?

entao o lance é ver se o servico - No-IP, DynDNS, Etc - fornecen alguma documanteção para integração. Um webService por exemplo.

No caso imagino seu Arduino de tempo em tempo, se conectando no servidor (no-IP, DynDNS), e atualizando o IP.

Nao conheco nada relacionado a isto, mas imagino que tenha sim algum servico disponivel. Voce vai ter q ler sobre cada servico e ver se disponibilizam algum meio de integração.

So preciso de uma função em php, html ou c (do arduino) que colete meu ip externo, nao posso usar serviço de dns dinamico... 
o arduino tem q passar o ip dele para meu site poder atualizar o php get, quero fazer de uma forma que nao use nenhum serviço extra.

é so saber um modo de verificar meu ip wan usando arduino

Existem várias maneiras de resolver seu problema.

Existe até a possibilidade de o arduino atualizar um DDNS sem precisar do seu roteador, fazendo apenas uma requisição GET, como descrito nas APIs do Dyndns e No-IP, mas já que você já tem um servidor PHP externo você pode usar outra manobra.

No PHP se tem alguns arrays de variáveis globais, algumas delas são $_POST, $_GET, $_SESSION e $_SERVER. Mais especificamente no array $_SERVER, a variável $_SERVER[REMOTE_ADDR] vai retornar o endereço do cliente que se conectou nessa página, isto é, o arduino não vai precisar saber o IP externo dele, vai bastar apenas ele conectar nesta página que o endereço externo dele vai ser capturado e vai estar armazenado nessa varíavel. Dê um echo nessa variável em uma página PHP e acesse com seu browser, note que seu IP irá aparecer.

Fiz um código com o no-ip para atualizar o no ip automaticamente via arduino, assim você não precisa de instalar NENHUM programa do no-ip muito menos deixar seu computador ligador o tempo todo. o arduino sozinho vai atualizar ip do no-ip e vc usa o domínio configurado na aplicação para ter acesso ao seu PC.

Infelizmente estou no celular. me cobre o código mais tarde, antes das 12:00PM estou em casa e mando pra ti isso. facil e rápido e acaba com problema de ip dinâmico . 

Isso mesmo galera, era mais disso que estou falando...
quando der me mande esse codigo pois estou curioso.
E quanto ao amigo arthur, essa variável de php retorna o ip do cliente, será que tem alguma que me retorne o ip do server?

muito obrigado galera era disso msm q tava falando

Você falou que tem um servidor PHP externo, se o arduino der um GET nessa página do servidor externo, o servidor pega o IP dele e nessa situação, o arduino que é o cliente. Se você fizer o que eu disse lá, dar um echo naquela variável, note que ela vai mostrar sempre o IP de quem conecta, então se o arduino conectar nessa página externa, o servidor vai obter o IP dele, que no caso seria o IP externo que você quer.

Foi uma documentação como essa que eu mencionei antes: http://www.dyndns.com/developers/nicupdate-api.pdf

Aqui em casa eu tenho um servidor Linux mas eu não uso nenhum client de DDNS, eu dou um GET em uma URL do Dyndns e isso é suficiente para atualizar meu IP. Foi isso que eu citei como primeira opção na minha outra resposta e também foi o que o Renato Tavares fez.

Aqui tem outra URL do Dyndns explicando até de maneira mais fácil: http://dyn.com/support/developers/api/perform-update/

Ele usa essa URL: http://username:password@members.dyndns.org/nic/update?hostname=yourhostname&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG

Se você substituir ali o username, password e yourhostname e mandar o arduino dar um GET nessa URL, seu IP vai ser atualizado automaticamente e isso nada mais é o que o client do PC faz. Note que eu não especifiquei o parâmetro myip que tem na URL, porque assim o Dyndns vai obter seu IP automaticamente. Simples, não é?

Esta em uma função separada + da para você entender a parada

https://gist.github.com/renatotavares/5385339

nooo, cara que função bacana, resolveu legal o meu problema... 
só tive que dar uma adaptada pq não compilou falando q faltava declarar a variável client
então adicionei a linha 
EthernetClient client;  no início da função e tudo correu perfeitamente.

muito obrigado

Passa o código do Renato Tavares ou o seu mesmo? pq o link q ele deixou ai n ta mais funcionando.

Prezado Luiz, tudo joia?
Estou tentando resolver o mesmo problema, tenho uma automação residencial que acesso pelo IP externo, mas que muda periodicamente.
Quero fazer um código no Arduino que tenta acessar uma pagina PHP que me envia este e IP e já entrada na pagina da aplicação.
Pode me ajudar?
Desde já agradeço!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço