RESOLVIDO - Duvida - Software RTC sincronizado com NTP - ESP8266 via IDE Arduino

Bom dia pessoal,

Já estou batalhando com meu wemos mini, estou gostando da plaquinha, consegui montar um webserver, acendi um led hehe, no entanto a maioria dos meu projetos necessitam de um RTC, e a função que mais me interessou nesses esp's é o RTC interno e a capacidade de realizar conexão NTP.

No entanto os exemplos de NTP que consegui encontrar na NET sempre dão erro, eu encontrei um que é recente no GItHub é esse Lib aqui a ultima atualização é do ddia 20/08

https://github.com/gmag11/NtpClient

Mas infelizmente a minha IDE 1.6.6 não reconheceu, dando o seguinte erro abaixo, mas instalei certinho como todas as outras libs

arduino-1.6.6-windows\arduino-1.6.6\libraries\NtpClient

exit status 1
Erro compilando.

Nesse exemplo do Ivan Grokhotkov  esta com uma falha no código ele mesmo removeu do GitHub dele devido a falha

https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiF... Código

exit status 1
'sendNTPpacket' was not declared in this scope

Exibições: 2555

Responder esta

Respostas a este tópico

Com esse código, você esta conseguindo identificar a data e hora ? 

Quais são os resultados dos Serial.prints ?

Então, o valor obtido da rede NTP e convertido em unix é o epoch ele é convertido nos valores int h,m, s (hora, minuto e segundo), até aqui funciona corretamente.

No caso tentei aproveitar um código que você me ajudou a fazer a uns dois anos atras, onde eu recupero o valor nos int seg = h, min = m, hor = s; para contagem do millis, mas não roda bem, o unix time imprime corretamente, a conversão usando o millis interno fica travada em 00:00:14 horas ou fica doido ou parece que funciona, mas sem sincronizar com o NTP.

Na serial fica assim:

Unix time = 1472563715
hora local:00:00:14
sending NTP packet...

OK , Tiago. Então você consegue identificar hora, minuto e segundo do NTP Server. 

Meio caminho andado. 

Mas me esclareça uma dúvida - você quer usar o RTC interno do ESP8266, mesmo sabendo que ele é impreciso ? A sua aplicação pode variar de 1 a 2 segundos por dia ? 

Se for isso, terei que estudar o programa do Github do link que enviou...

Na verdade o que estou tentando fazer é corrigir uma fraqueza do código NTP server, para ser mais útil, ele consegue obter a hora do server de 10 em 10 segundos, até ai ok, Mas nem sempre consegue se conectar com o servidor, com os testes que fiz é uma a cada dez tentativas, o que é muito pouco para garantir que a aplicação funcionasse no momento que deveria.

Minha ideia é que nesse meio tempo o programa continue contanto o tempo quando a conexão cair (algo muito comum na minha região rsrs). Assim a automação não seria prejudicada pela falta de internet, ou por falha de conexão.

Consegui encontrar o que eu queria, um RTC via software para ESP8266 usando NTP, encontrei neste forum

http://www.esp8266.com/viewtopic.php?f=32&t=2881&start=4

Usando a biblioteca time, na verdade uma pequena adaptação para ethernet shield, testei sem net e funcionou corretamente

só não descobri ainda como corrigir o fuso nesse code

Segue em anexo o arquivo com o código e a Lib

ficou assim na serial

..................................
WiFi connected
IP address: 
192.168.2.3
Starting UDP
Local port: 2390
sending NTP packet...
packet received, length=48
Now 01:02:10 Thursday 1 September 2016
Now 01:02:20 Thursday 1 September 2016
Now 01:02:30 Thursday 1 September 2016
Now 01:02:40 Thursday 1 September 2016
Now 01:02:50 Thursday 1 September 2016

Anexos

finalizando a duvida consegui arrumar o fuso com uma simples gambiarra, estava dando uma hora a mais na conversão

Em anexo o arquivo INO e a Lib que utilizei

Anexos

Ótimo ! então tudo resolvido ? 

Parabéns. 

Opa obrigado Murta, esse código esta funcionando agora é só aprimorar para novos projetos.

Legal Tiago por coincidência eu estava tentando usar time com o esp e estava tendo dificuldades, este post me ajudou muito. Obrigado.

Adilson, fico feliz em ter contribuído, se descobrir alguma coisa legal posta ai!

Certo, assim que concluir o que estou fazendo vou postar, talvez ajude alguém também.Abraço.

Olá amigo, tento compilar seu código e dá o seguinte erro:

"invalid conversion from 'const char*' to 'char*' [-fpermissive]"

sabe o que pode ser?

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço