[ RESOLVIDO ] Problema para acessar horário da internet com o ESP8266

Boa tarde pessoal.

Estou fazendo um projeto que deverá acessar o horário da internet com o ESP8266.

O sketch funciona muito bem, desde que use o IP obtido pelo DHCP.

Se eu definir o IP, não acessa o horário e fica imprimindo só o calculo.

Como o meu conhecimento de programação é self study, conheço muito pouco 

programação para internet.

Abaixo 2 printouts.

Um com acesso por DHCP e outro qdo defino o IP,  e anexo o sketch.

O sketch anexo está com a linha 22 comentada, significando uso de IP pelo DHCP.

Removendo o //, passa a usar o IP definido pelo usuário.

Solicito ajuda.

RV

Usando IP do DHCP

Now listening at IP 192.168.0.28, UDP port 65280
13:55:46
13:55:46
13:55:46
13:55:46

Usando IP fornecido por mim.

Now listening at IP 192.168.0.70, UDP port 65280
03:28:17
03:28:17
03:28:17
03:28:18

Exibições: 914

Anexos

Responder esta

Respostas a este tópico

Olá Rui Viana, tudo bem?

1º - Você já tentou colocar esse IP 192.168.0.28 como estático só para saber se o resultado vai mudar?

2º - Você já tentou imprimir as configurações de Rede em DHCP para saber se não tem alguma diferença em relação ao seu estático?

Bom dia Eduardo Silva,

obrigado pela atenção.

1º -  Sim, tentei com i IP estático , e tentei novamente,

2º -Agora com IP estático 192.168.0.28  e DHCP,  listando as configurações da rede.

      Se tiver outras maneiras de listar mais informações sobre a rede, por favor me ensine.

RV

IP estático

.Now listening at IP 192.168.0.28, UDP port 65280

Connection status: 3
Mode: STA
PHY mode: N
Channel: 11
AP id: 0
Status: 5
Auto connect: 1

BSSID set: 0

03:28:17
03:28:18
03:28:19
03:28:20


IP DHCP

.Now listening at IP 192.168.0.28, UDP port 65280

Connection status: 3
Mode: STA
PHY mode: N
Channel: 11
AP id: 0
Status: 5
Auto connect: 1

BSSID set: 0

07:59:19
07:59:20
07:59:21
07:59:22

Oi Eduardo Silva,

depois de postar fiz outro teste listando o IP ante e depois da linha:

 " WiFi.hostByName(ntpServerName, ip);  " 

e ai apareceu assim:

IP estático

ip : 192.168.0.28    antes

ip : 0.0.0.0              depois

Now listening at IP 192.168.0.28, UDP port 65280

Connection status: 3
Mode: STA
PHY mode: N
Channel: 11
AP id: 0
Status: 5
Auto connect: 1

BSSID set: 0

03:28:40
03:28:41
03:28:42


IP DHCP

ip : 192.168.0.28   antes

ip : 129.6.15.30     depois

Now listening at IP 192.168.0.28, UDP port 65280

Connection status: 3
Mode: STA
PHY mode: N
Channel: 11
AP id: 0
Status: 5
Auto connect: 1

BSSID set: 0

08:46:37
08:46:38
08:46:39
08:46:40

Boa tarde  José Gustavo Abreu Murta ,

não se trata de simplesmente uma conexão na rede wifi com endereço dinâmico ou estático.

O problema acontece ao acessar um servidor NTP, usando o protocolo UDP.

Se uso um IP dinâmico para o o meu Webserver no ESP8266, não tenho problema para acessar

o servidor NTP.

Mas se uso um IP estático, não consigo acessar o servidor NTP.

Mesmo que este IP estático seja igual ao IP dinâmico que foi usado com o ESP8266 configurado para IP dinâmico.

RV

Boa tarde amigo Rui, 

Agora entendi o problema. Mas a dúvida continua.

O ESP8266 esta conectando na sua rede WIFI com IP estático ?

Um bom teste para saber se a rede esta OK, é fazendo um ping para o Google. 

ping 8.8.8.8

https://github.com/bluemurder/esp8266-ping

https://github.com/dancol90/ESP8266Ping

Sugestão - faça um teste sem ativar o webserver.

ESP8266WebServer server(80); // Instancia server

Abraços 

Gustavo 

Sim  José Gustavo Abreu Murta ,

ele conecta usando ou IP estático ou IP dinâmico, e posso confirmar isto pois

usei um sketch maior do que este que postei, que incluía uma pagina HTML, a qual

eu podia ver usando o meu PC na mesma  rede.

Também havia feito um teste sem usar o webserver, e o problema continuou.

RV

Ok, então o próximo passo que eu faria seria o ping para 8.8.8.8.

Será que existe um firewall para o IP estático na rede do seu provedor ?

Pessoal, boa tarde,
obrigado pela ajuda de todos.


Consegui resolver o problema.


Não sei se a maneira foi a mais  "técnica", mas está funcionando.
Funciona  assim:


Inicio a rede WiFi com o protocolo TCP/IP com um IP DHCP.
Em seguida inicio o protocolo UDP e acesso o servidor NTP e 
busco o horário da internet usando o protocolo UDP com o IP fornecido pelo DHCP.

Após,  redefino o IP, o GW e a SN, e reinicio o WiFi com os novos valores estáticos, e incio o meu servidor.


E acreditem ou não, funcionou. como eu preciso.


Acesso o servidor com o IP estático.


Anexo sketch de teste, sem a parte HTML, para ficar simples.


RV

............
200.160.6.184
IP DHCP 192.168.0.28, UDP port 65280
.
IP dinamico 192.168.0.70
16:35:15
16:35:16
16:35:17

Anexos

Estudando a teoria:

O protocolo UDP

UDP é um protocolo voltado para a não conexão. Simplificando, quando uma máquina A envia pacotes para uma máquina B, o fluxo é unidirecional. Na verdade, a transmissão de dados é feita sem prevenir o destinatário (a máquina B) que, por sua vez, recebe os dados sem avisar ao transmissor (máquina A). Isso se deve ao fato de o encapsulamento dos dados enviados pelo protocolo UDP não permitir transmitir informações sobre o emissor. Portanto, o destinatário não conhece o emissor dos dados, apenas seu IP.

https://br.ccm.net/faq/16837-diferenca-entre-os-protocolos-tcp-e-udp

Bom dia pessoal,

novamente me deparei com esta dificuldade, mas desta vez não podia fazer a gambiarra que funcionou

para o projeto anterior .

Daí voltei novamente a pesquisar na internet alguma solução.

Encontrei este tópico de nov2018, https://github.com/arduino-libraries/NTPClient/issues/58

Testei a solução que o freek sugeriu e deu certo.

Testei assim:  


    IPAddress endereco (192, 168, 0, 55);
    IPAddress roteador (192, 168, 0, 1);

    IPAddress subnet (255, 255, 255, 0);
    IPAddress DNS1 (8, 8, 8, 8);
    IPAddress DNS2 (8, 8, 8, 8);

    WiFi.config(endereco, roteador , subnet, DNS1, DNS2);

RV

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço