esp8266 и NTP

inspiritus
Offline
Зарегистрирован: 17.12.2012

Здравствуйте уважаемые коллеги

Пытаюсь получать время на esp, выходит странная загогулина.

Если IP получать с DHCP, то проблем нет. Как только пытаюсь назначить свой (IP, gateway,subnet) время не начинает отвечать.

Иногда правда после 16 неудачных запросов если перезагрузить, то может и получить.

продолжение следует

 

inspiritus
Offline
Зарегистрирован: 17.12.2012

То есть в таком варианте кода все работает.

Если раскомментировать 34 строку, то работать не начинает.

WiFi.config помещал и перед WiFi.begin  и после, однофигственно.

И такая дребедень со всеми библиотеками, какие нашел по получению времени на esp.

Конечно можно и с DHCP , подключив SSDP (работает) находить, но хочется свой IP назначать, который зависит от номера оборудования, куда собираюсь эти модули вклячивать.

уже весь моск сломал, подскажите чем можите :)


/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp8266-nodemcu-date-time-ntp-client-server-arduino/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

#include <ESP8266WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>

// Replace with your network credentials
const char* ssid = "myssid";
const char* password = "mypassword";
IPAddress ip(192, 168, 1, 200);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);

// Define NTP Client to get time
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org");

void setup() {
  // Initialize Serial Monitor
  Serial.begin(115200);
  
  // Connect to Wi-Fi
  Serial.print("Connecting to ");
  Serial.println(ssid);
//    WiFi.config(ip, gateway, subnet);
    WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.print("\nConnected to ");
  Serial.print(ssid);

  Serial.print("\nIP address: ");
  ip = WiFi.localIP();
  Serial.println(ip);

// Initialize a NTPClient to get time
  timeClient.begin();
  timeClient.setTimeOffset(10800);  
}

void loop() {
  timeClient.update();

  time_t epochTime = timeClient.getEpochTime();
  Serial.print("                                                     Epoch Time: "); Serial.println(epochTime);
}

 

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

*грустный вздох*

IPAddress dns(8, 8, 8, 8);

WiFi.config(ip, gateway, subnet, dns);

 

inspiritus
Offline
Зарегистрирован: 17.12.2012

Хмм , щас попробую, хотя до заморочек с ntp dns не объявлял и все работало …

вроде помогло, однако завтра потестирую с пристратием.

Спасибо.

sadman41
Offline
Зарегистрирован: 19.10.2016

Может не надо эти модули никуда уж вклячивать... А то рванет что-нибудь.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Они чисто шпионящие за использованием оборудования. Я ведь показывал, как они применяются.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Кстате для управления тоже достаточно стабильны. Я их тестировал на аптайм неделями без сбоев. А если их ресетить в рамках рабочего протокола, то вообще все прекрасно.

в стародавние времена писал для 8080. 
программа ресетилась каждные 32 мс внешней тактовой сеткой.
после просыпания блок поднимал из цмд данные прошлой жизни, проверял их и формировал управляющие воздействия, потом читал, проверял и записывал в цмд данные с датчиков и уходил в ресет.

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

sadman41 пишет:
Может не надо эти модули никуда уж вклячивать... А то рванет что-нибудь.

Я опять пропустил всё самое интересное? ))

inspiritus

PS А днс сервер выдавался есп-шке dhcp сервером.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Фих его знаит, а как его проверить?

я его и не ставил, забыл, что сервер времени по имени ищется. Всеё остальное у меня по ip.

Что странно - время периодически все же подхватывалось, но всегда не ранее 16й попытки.

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

inspiritus пишет:
но всегда не ранее 16й попытки

Слабо верится, но иногда даже и сервер на 1,000,000,001 попытку соглашается, что пароль - Мао Цзе Дун. :)

inspiritus пишет:
Фих его знаит, а как его проверить?

С dhcp работает. С днсом гугла работает. Впишите туда 1.1.1.1 - наверное тоже сработает. Впишите 12.13.14.15 - время не получится. Значит, это оно.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Та этта понятно, как проверить какой dns оно у роутера по DHCP получало?

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

inspiritus пишет:
Та этта понятно, как проверить какой dns оно у роутера по DHCP получало?

192.168.1.1 полагаю

rkit
Offline
Зарегистрирован: 23.11.2016

Если ты хочешь фиксированные ip, настраивай их в dhcp сервере. Он для этого и нужен.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

бодяга с DNS не вчера началась, приходилось перешивать старые DIR-300 к примеру. так как не резольвились адреса

SAB
Offline
Зарегистрирован: 27.12.2016

Последнее время перестал заморачиваться с NTP серверами. Вечно загруженные, не отвечают. Работаю через json. Например вот через этот сервис http://worldtimeapi.org/api/ip 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

SAB пишет:

Последнее время перестал заморачиваться с NTP серверами. Вечно загруженные, не отвечают. Работаю через json. Например вот через этот сервис http://worldtimeapi.org/api/ip 

NTP свой надо поднимать, если есть на чём, там делов то ...

inspiritus
Offline
Зарегистрирован: 17.12.2012

Конечно же дело было в необозначенном dns.

Олнако непонятно, почему при запросе времени в цикле 20 раз и неполучении, потом перезапуске ESP.reset иногда время начинало приходить. Видимо имя ntp сервера как то все же резолвилось в роутере. Иначе совсем чудеса.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

inspiritus пишет:

Конечно же дело было в необозначенном dns.

Олнако непонятно, почему при запросе времени в цикле 20 раз и неполучении, потом перезапуске ESP.reset иногда время начинало приходить. Видимо имя ntp сервера как то все же резолвилось в роутере. Иначе совсем чудеса.

по умолчанию днс получает от роутера, адрес тот же, что и шлюз, что за роутер?

PS 100500 сетка проблемная, правильно эти проблемы решить

inspiritus
Offline
Зарегистрирован: 17.12.2012

Роутер - мыльница алкатель с симкой и туристическим тарифом внутри.

многого от ея ждать не приходится

посмотреть что ей выделяет провайдер тоже нельзя