vvip-68 / GyverMatrixWiFi

Адресная матрица на NodeMCU с управлением по WiFi
150 stars 49 forks source link

Ntp сервер, что я делаю не так #25

Closed igorpats closed 4 years ago

igorpats commented 4 years ago

Никак не могу настроить синхронизацию с ntp сервером. Проблема в следующем: 22:36:02.254 -> NTP-сервер www.belgim.by -> 178.124.164.107 22:36:02.254 -> Отправка NTP пакета на сервер www.belgim.by 22:36:07.075 -> UDP пакeт размером 6 от 192.168.1.218, порт 2390 22:36:07.075 -> Содержимое: $18 0; 22:36:07.244 -> Таймаут NTP запроса! И так постоянно какой-бы адрес не указывал. Не могу понять почему оно пакеты не принимает от сервера. Порт использовал 123 как в исходнике. Пробовал и другие.

vvip-68 commented 4 years ago

Скорее всего у вас на роутере или у провайдера закрыт 123 порт и пакеты запроса к серверу не уходят. Что, например, говорит Windows при попытке синхронизировать его время с сервером ntp? Можно поискать для теста стороннюю программу на комп - синхронизатор времени NTP. Работает ли он? Что сообщает? Другие порты использовать бесполезно. 123 порт - стандартный порт сервиса синхронизации времени. Если сервера времени специально админы на другой порт не переносят. А такого практически не бывает, ибо стандарт. Проверьте работу синхронизации времени на компе. Если в вашей сети она не работает (заблокирована) - смотрите нет ли запрета в настройках роутера и/или пишите письмо админу, пусть разбирается.

igorpats commented 4 years ago

Windows 7 на вкладке синхронизация времени по интернету делает это без вопросов с любым рабочим сервером. Вот к примеру использовал стороннюю ntpquerty и в бил туда ip из вашего списка. image Пытался смотреть переменные через монитор порта, никогда не получаю ничего в ответ на запрос.

vvip-68 commented 4 years ago

Ну, тогда у меня нет ответа. Вы единственный из сотен собравших у кого это не работает. Если найдете, что причина все же в скетче - сообщите, исправим. По логике кода я проблем не вижу. Повторить ошибку не могу. Исправить, следовательно, тоже. С моей точки зрения там нечему не работать.

igorpats commented 4 years ago

Вот странно, прошу людей скинуть лог с монитора порта, где видно что работает, так никто и не может. Я бы и сам не полез если бы затыков не было после определенной серии неудачных подключений (wifi переподключает). Попробую прошивку с лампы с готовой библиотекой ntp запустить и посмотреть что происходит.

vvip-68 commented 4 years ago

Ну, вот что выводит сразу при включении: 18:21:43.358 -> .... 18:21:45.669 -> WiFi подключен. IP адрес: 192.168.0.96 18:21:45.703 -> 18:21:45.703 -> UDP-сервер на порту 2390 18:21:45.703 -> Инициализация MP3 плеера... 18:21:46.151 -> Звуков будильника найдено: 2 18:21:46.151 -> Звуков рассвета найдено: 6 18:21:46.151 -> Включен эффект 'Радужные переливы' 18:21:46.151 -> NTP-сервер ru.pool.ntp.org -> 192.36.143.130 18:21:46.151 -> Отправка NTP пакета на сервер ru.pool.ntp.org 18:21:46.252 -> UDP пакeт размером 48 от 192.36.143.130, порт 123 18:21:46.252 -> Разбор пакета NTP 18:21:46.252 -> Секунд с 1970: 1577211705

Так если мешает перезагрузка сети при 10 неудачных попытках синхронизации - просто убери эту строчку из скетча.

Ты часом скетч не редактировал? Может удалил кусок, где данные от сервера принимаются и парсятся?

igorpats commented 4 years ago

нет, не редактировал. Специально из архива вытаскивал и менял перед опытами. А никаких изменений не вносилось с предыдущих версий. Я просто не помню раньше затыков при включенной синхронизации с ntp. Можно просто в режиме точки доступа использовать для управления. Попробую сегодня покрутить настройки роутера по поводу 123 порта.

vvip-68 commented 4 years ago

Постоянно что-то вносится в версии. На то и смена. Но касательно именно работы с NTP не менялось ничего. Как в версии 1.12 было - так все и осталось. Если тебе не нужна синхронизация (или она вот так вот не работает) - просто выключи ее из приложения - там галочка есть "Использовать синхронизацию с NTP" в настройках часов.

igorpats commented 4 years ago

Спасибо, так и делал. Для примера поставил последнюю прошивку с лампы, там библиотека ntp есть. Добавил вывод времени в 2019-12-24_20-19-20 порт, показывает корректно, значит оно работает.

igorpats commented 4 years ago

Поставил голую прошивку только поменял ssid и пароль сети и залил. Ничего не трогал вообще 2019-12-24_20-39-15 Тоже самое. Версия ядра 2.6.1

igorpats commented 4 years ago

Что-то мне кажется что это с портами связанно. У моего провайдера динамический ip, спрятанный за natoм. Вариантов получить белый ip почти нет. Буду побывать долбить их.

vvip-68 commented 4 years ago

Вряд ли с портами. 123 порт - стандарт для NTP; У меня тоже не белый IP - но работает же почему-то. Или нет? Затык может быть в строчке (которая на прежних ядрах точно работала!) WiFi.hostByName(ntpServerName, timeServerIP); Потому что IP по которому идет запрос - 192.36.143.130 - аварийный, когда не удается преобразовать имя хоста в IP. Но у меня этот IP откликается, а у вас видимо нет. Когда оно работало - получался каждый раз разный IP сервера из их пула. Попробуйте хотя бы на компе несколько раз подряд выполнить ping ru.pool.ntp.org Каждый раз практически разные IP выдаются. И точно не этот "аварийный". А тут всегда аварийный используется... Надо посмотреть внимательнее этот момент... Пропишите вместо этого аварийного другой, который у вас точно откликается, с которым вам удалось время синхронизировать.

igorpats commented 4 years ago

2019-12-25_12-33-41 Пингуется всегда с одним адресом Вот если вбить просто pool.ntp.org 2019-12-25_12-36-58 Уже другой адрес что естественно. Ниже фото что win синхронизирует время с обоими серверами 2019-12-25_12-36-58 2019-12-25_12-37-14 Просто по 123 порту ничего не идет, и в DMZ добавлял свой ip. Глухо 2019-12-25_12-38-04

igorpats commented 4 years ago

Делаю тоже самое через 123 порт: 2019-12-25_12-46-53

igorpats commented 4 years ago

Порт закрыт, любой адрес через 123 не откликается

vvip-68 commented 4 years ago

Я бы не стал верить винде, что она синхронизировалась. Те еще пройдохи. Как она синхронизируется? Не через 123 порт? У нее свое что-то? Ну если 123 порт закрыт (где? На роутере? у провайдера?) так синхронизация и не будет работать... Провайдеру письмо написать - что ответит?

igorpats commented 4 years ago

у нас он монополист, ничего отвечать не будет. не хочешь не пользуйся. Буду побывать что-то с провайдером сделать. Порт из вне закрыт как я понимаю

vvip-68 commented 4 years ago

А как утилита, что вы выше приводили синхронизируется? Ей то можно верить. И она, вроде как, тоже по 123 порту работает.

igorpats commented 4 years ago

Какая утилита? port cheker просто порты проверяет

vvip-68 commented 4 years ago

NtpQuery. Где-то в самом верху ветки

AlexxVel commented 4 years ago

Позавчера тоже имел проблемы с получением времени по NTP. Версия платформы esp8266 2.6.3 Изначально сменил #define DEFAULT_NTP_SERVER "pool.ntp.org" // было "ru.pool.ntp.org"

WiFi.hostByName(ntpServerName, timeServerIP); - функция не отрабатывает и идет на "аварийный" IP. Я его сменил на тот, который у меня DNS-сился из коммандной строки (вроде начинался на 5.32.x.x - сейчас нет возможности посмотреть, т.к. не дома ) прямо в прошивке

if defined(ESP8266)

if (!timeServerIP.isSet()) timeServerIP.fromString(F("5.32.x.y")); // тут было 192.36.143.130

endif

После этого все заработало...

igorpats commented 4 years ago

ntpquerty неизвестно как работает, но если сервер рабочий, оно данные получает

igorpats commented 4 years ago

Alex, вы сменили на тот адрес по которому отозвался pool.ntp.org?

AlexxVel commented 4 years ago

да

AlexxVel commented 4 years ago

в командной строке набрал ping pool.ntp.org IP оттуда вписал в clock.ino в 84-ю строку. Перекомпилил и загрузил в wemos d1. И все заработало.

igorpats commented 4 years ago

я побывал играться с локальными серверами по вашей методике. 2019-12-25_14-28-36 не получалось, попробую еще, спасибо

igorpats commented 4 years ago

wip, а ты с библиотекой ntp не разбирался? странно что через оную работает

igorpats commented 4 years ago

Alex, у вас тоже только на 2.6.3 wemos адекватно цветопередачу дает?

AlexxVel commented 4 years ago

Как вариант - попробуйте еще откатить платформу до версии 2.5.2 (это в Менеджере плат). Возможно WiFi.hostByName(ntpServerName, timeServerIP) будет отрабатывать корректно...

AlexxVel commented 4 years ago

Насчет " только на 2.6.3 wemos адекватно цветопередачу дает". Честно говоря - на данный момент у меня матрица на лоджии (19x10) работает на Arduino pro mini + RTC DS3231 (код от Сергея Козлова с оптимизацией памяти). Позавчера пробовал перейти на Wemos D1 mini, но пока отказался от него, т.к. бегущий текст скачет как фиг-знает кто... Ферритов всяких повесил штук 6 и на линии питания и на сигнальную линию. Электролит дополнительный 1000x16В (на меньшее напряжение не нашлось) на питание Wemos напаял, Диод на плюсовую линию к Wemos тоже поставил. С компьютерного блока питания у меня идет 5.01V (замерял достаточно точным UT61). Еще уменьшить напряжение питания у меня нет возможности, разве что какой-то мощный диод еще поставить на питание матрицы... Но эксперименты продолжаю... (у меня достаточно длинная сигнальная линия - 4,5 метра от контроллера до первого RGB-диода)

igorpats commented 4 years ago

Alex, матрица 13х19, на wemose перестают вылазить проблемы в отображении исключительно при: оригинальной fastled 3.3.2(не от гайвера) esp8266 2.6.3 и таких настройках: 2019-12-25_15-25-17 Питание ровно 5, кондер по питанию 500, все nodemcu и на других конфигурациях работает При других конфигурациях были такие-же проблемы как и у тебя (текст крашиться, снежинки цвет меняют, в кубике при движении артефакты вылазили)

AlexxVel commented 4 years ago

FastLED 3.3.2 оригинальная; esp8266 2.6.3; настройки абсолютно такие-же (тоже выбрано именно NodeMCU 1.0), кроме Flash Size (FS я выбираю 1Mb, но это влиять не должно). Единственно у меня сам контроллер не NodeMCU, а Wemos D1 mini. Забыл добавить - управляющий сигнал у меня снимается с линии D3 через резистор 220 Ом.

igorpats commented 4 years ago

резистор стоит схожего номинала, я побывал на разных платах запускать, для wemosa только на такой конфигурации работает. Настройки это для wemosa скинуты, при использовании wemosa плату выбираем как на фото. Посмотри чтобы других библиотек fastled не было нигде, в папке программы и документах.

AlexxVel commented 4 years ago

У меня портабельный вариант Arduino - все в одной папке. Все библиотеки в D:\arduino-1.8.5\portable\sketchbook\libraries\ Если-бы где были другие библиотеки FastLed - ругалось-бы на дублирование библиотек. Кроме того при компиляции там варнингом выводится версия библиотеки (с путями): pragma message "FastLED version 3.003.002". Попробую еще диод по питанию wemos убрать. Еще жду с Ali другой БП (5V 5А) с подстройкой напряжения - правда не знаю когда придет. Также есть мысля пока запитать wemos от отдельного маломощного БП (может быть даже трансформаторного, а не импульсного) с объединением земель...

igorpats commented 4 years ago

У меня такой БП на 10 A. У меня напруга никак не влияет, а вот то что описал очень. и еще тру ее flash download tools

igorpats commented 4 years ago

Вот чего я добился, синхронизации с локальной машиной в сети 2019-12-25_18-47-51

AlexxVel commented 4 years ago

Посмотрел дома - я прописал аварийным IP 5.135.3.88 Лог у меня такой: ... WiFi подключен. IP адрес: 192.168.0.106

UDP-сервер на порту 2390 Включен эффект 'Водоворот' NTP-сервер pool.ntp.org -> 5.135.3.88 Отправка NTP пакета на сервер pool.ntp.org Таймаут NTP запроса! NTP-сервер pool.ntp.org -> 5.135.3.88 Отправка NTP пакета на сервер pool.ntp.org UDP пакeт размером 48 от 5.135.3.88, порт 123 Разбор пакета NTP Секунд с 1970: 1577301904 19:25 25 декабря 2019 года <- это уже я сам добавил в отладку (разбирался с проблемой TimeZone )...

PS: кстати у меня дома платформа оказалась 2.6.2. Сейчас обновлю до 2.6.3, выпаяю диод и посмотрю насчет фантомным мерцаний...

igorpats commented 4 years ago

буду прикручивать ntp на малину или на роутер. На сколько точны данные часики? за какое время и на сколько убегает время?

igorpats commented 4 years ago

только на 2.6.3 wemos без артефактов заработал

AlexxVel commented 4 years ago

Решил проблему неработы WiFi.hostByName(ntpServerName, timeServerIP); Проблема в том, что для контроллера не определен DNS сервер, поэтому hostbyname возращает 0.0.0.0 Чтобы работало - правим GyverMatrixOS_v1.15.ino в функции startWiFi: if (IP_STA[0] + IP_STA[1] + IP_STA[2] + IP_STA[3] > 0) { WiFi.config(IPAddress(IP_STA[0], IP_STA[1], IP_STA[2], IP_STA[3]), // 192.168.0.106 IPAddress(IP_STA[0], IP_STA[1], IP_STA[2], 1), // Gateway 192.168.0.1 IPAddress(255, 255, 255, 0), IPAddress(IP_STA[0], IP_STA[1], IP_STA[2], 1), // DNS1 192.168.0.1 IPAddress(8, 8, 8, 8)); // DNS2 8.8.8.8
WiFi.begin(ssid, pass);

AlexxVel commented 4 years ago

vvip-68, поправь, пожалуйста (см. предыдущее мое сообщение)

igorpats commented 4 years ago

ох я ж и валенок, спасибо что натолкнул своими коментами. IPAddress(IP_STA[0], IP_STA[1], IP_STA[2], 1), // Gateway 192.168.0.1 у меня же два роутера, а это адрес как раз второго который и поднимает это соединение и он у меня не такой

vvip-68 commented 4 years ago

Хорошо, добавил. Но если dns не задается - 0.0.0.0 он же по умолчанию IP шлюза (192.168.0.1) использует как DNS... И у всех вроде так и работает...

AlexxVel commented 4 years ago

Если DNS явно через WiFi.config не задано, то WiFi.dnsIP(0) получается (ip unk) (или как-то так - вчера видел у себя в отладке) При этом при любом имени сервера WiFi.hostByName(любое_имя, timeServerIP) timeServerIP будет равно 0.0.0.0 и пойдет на "аварийный" (заданный явно) IP 192.36.143.130 (поэтому "у всех вроде и работает"). А вот если задать явно DNS через WiFi.config, то hostByName отрабатывает корректно. По крайней мере на платформах 2.6.2 и 2.6.3 именно так (добавлял отладочные сообщения и смотрел). PS: Вот нашел и подтверждение, что до версии 2.4.1 включительно все работало без заданного явно DNS, а начиная с версии 2.4.2 перестало https://github.com/esp8266/Arduino/issues/5328

igorpats commented 4 years ago

Alex, победил свой wemos?

AlexxVel commented 4 years ago

Пока нет, артефактов стало гораздо меньше (бегущая строка уже не пляшет), но не исчезли совсем - наблюдаются вспышки. Буду еще с питанием мудрить и, может быть, куплю еще экранированный провод (типа микрофонного) и поставлю вместо управляющего (экран одной точной на землю посажу)

igorpats commented 4 years ago

Проще nodemcu купить

ant1xr1st87 commented 4 years ago

Никак не могу настроить синхронизацию с ntp сервером. Проблема в следующем: 22:36:02.254 -> NTP-сервер www.belgim.by -> 178.124.164.107 22:36:02.254 -> Отправка NTP пакета на сервер www.belgim.by 22:36:07.075 -> UDP пакeт размером 6 от 192.168.1.218, порт 2390 22:36:07.075 -> Содержимое: $18 0; 22:36:07.244 -> Таймаут NTP запроса! И так постоянно какой-бы адрес не указывал. Не могу понять почему оно пакеты не принимает от сервера. Порт использовал 123 как в исходнике. Пробовал и другие.

У меня тоже проблема была такая. Начал копать с файервола. У меня стоит микротик 951й, я в нем попересоздавал кучу всяких правил, гугл говорит, что проблемы у многих с NTP в микротике, с чем связано не понятно(но мои подозрения, что провайдер блокирует некоторые IP адреса NTP серверов). Заколебался если честно. Через синхронизацию времени винды забиваю сервер ru.pool.ntp.org и вижу что синхронизация успешно. Лезу в микротик и смотрю на какой ИПшник был коннект на 123й порт. Сделал в микротике NTP-клиент+сервер, в клиенте указал полученный IP, ну а в прошивке и винде поставил NTP локальный адрес микротика. Все работает!

ant1xr1st87 commented 4 years ago

(у меня достаточно длинная сигнальная линия - 4,5 метра от контроллера до первого RGB-диода)

Мне кажется проблема артефактов в этом. Где-то тут читал, у АлексГайвера вроде, что проблемы из-за длины могут быть. Может быть попробовать сопротивление поменьше поставить на управляющую ногу?

AlexxVel commented 4 years ago

Мне кажется проблема артефактов в этом

.Меньше длину (4.5м)не сделать, т.к. БП и контроллер - на подоконнике в комнате (в тепле), а гирлянда - на окне лоджии (как раз ближайшим концом к окну), а контроллер выносить "на мороз" (у нас до -35градусов бывает, лоджия не утепленная) считаю неразумным. Кроме того - артефактов при использовании Arduino Pro Mini вообще нет - только на Wemos D1 mini. Буду пробовать уменьшать питание на ленту... С сопротивлением тоже поэкспериментирую...

igorpats commented 4 years ago

4.5 метра это всего лишь длинна одной ленты. Отсоедините 50 диодов и посмотри на результат. А что с контроллером произойдет в -35? БП ещё возможно и опасно выносить, он греется немного. Так хоть на время укоротить кабель и посмотреть. У меня схожие условия с вами, гирлянда висит на лоджии холодной. Длинна управляющего метра 3 минимум. 3 соединения по пути на дюпонах. Wemos адекватно заработал только в том случае что описал. Nodemcu почему-то гораздо лояльнее относилась к всему выше сказанному.