[музыка] всем привет и для начала хотелось бы обратиться к своим подписчикам сообщить о том что на канале появился раздел сообщество в котором я публикую различных голосования и вы можете принять в них участие по результатам из и голосования я сужу о том на что снимать как снимать что вам интересно что не интересно поэтому волкам заходите голосуйте оставляйте комментарии под этими голосованиями опять же на основании этих комментариев я буду строить новые голосование и уже по их результатам будем определяться с<\p>

наиболее интересными тематиками для новых видео это первое и второе я прошу пожалуйста будьте поактивнее если вы выносите что-то полезное из моих видео то не поленитесь и поставьте лайк потому что опять же по количеству лайков я сужу о том нашел вида save не зашел или это вообще бред полнейший не стоит развивать эту тему пожалуйста будьте поактивнее и третье сегодняшнее видео выходит без какого-либо значительного монтажа потому что монтаж берет много времени поэтому если в комментариях вы будете писать что это нудятина ну ладно хорошо буду<\p>

монтировать на тогда видео будут выходить реже так сегодня мы будем заниматься форматом джейсон посмотрим что это такое получим информацию о реальном времени синхронизируем время микроконтроллера с реальным временем и получим информацию о текущей погоде для выбранной вами определенно локации впоследствии я надеюсь эту информацию вы сможете использовать для вывода на дисплей там в браузер и куда вам только вздумается а получать эту информацию мы будем всю из индексом поэтому давайте откроем главную страницу поисковой системы и<\p>

убедимся в том что в левом верхнем углу у нас написано название населенного пункта который нас интересует если это не так то тыкаем сюда забиваем название назад нажимаем на кнопку сохранить и после этого вновь открываем главную страницу поисковой системы забиваем что-нибудь в поиске нас интересует ссылочка открывшиеся адрес открывшейся странице а в этом адресе нас интересует значение параметра л а а это и есть айдишник населенного пункта который мы выбрали его мы копируем чуть попозже мы оставим скетч а пока давайте посмотрим на то что<\p>

из себя представляет формат джейсон для примера возьмем собственно ответ сервера который мы будем считывать собственно адрес этой страницы и содержит как раз таки айдишник который мы скопировали ups какой jason jason это структурированный формат данных содержащий пары ключ-значение которые отделяются друг от друга двоеточием и перечисляются через запятую при этом названии ключа заключается в кавычки значение если это цифровое значение либо логическая можно указывается без кавычек если это строковое значение то опять же<\p>

заключается в кавычки и опять же значение может быть представлена в виде набора ключей и значений то есть такой своеобразный массив и получается что данный формате джейсон могут имеется несколько уровней вложенности которые определяются количеством фигурных скобок например вот для ключа time это первый уровень вложенности потому что перед ним одна фигурная скобка для ключа аиде это третий уровень влажности потому что перед ним три фигурные скобки незакрытых вот раз два три сюда мы будем считывать необходимые нам<\p>

данные так например ключ это им содержит информацию о реальном времени в миллисекундах ключ офсет содержит информацию о смещении времени времени относительно часового пояса данной конкретной локации также здесь представлен информации о времени восхода времени заката и информация о текущей температуре за окном а также нас будет интересовать название иконки чё за иконкам вот эта вот иконка который выводится в разделе погоду на яндексе на самом деле название этой иконке зашифровано очень много данных а конкретнее там<\p>

зашифрована информация о том пасмурно или ясно ли идет ли дождь идет ли снег и метели в общем и очень очень много и последнее вот последний символ определяет даже светлое или темное время суток сейчас собственно вот это вот названием будем считывать и будем зашифровывать его в нашем скетче который необходимо скачать по ссылке в описании под этим видео и открыть в программе arduino а иди и и начнем с ним потихоньку разбираться этих строчках импортируются подключаются к скетчу две библиотеки и стандартного пакета и 182 66<\p>

библиотека и 182 66 вай фай необходимо для подключения нашего модуля к вайфай сети и соответственно получении доступа в интернет и библиотека вай фай клиент необходимо для того чтобы связываться с удаленными постами и и считывать от них ответ далее подключаем две библиотеки которые не входят в стандартный пакет и и их необходимо скачать по ссылкам в описании под этих видео под этим видео я надеюсь что вы знаете как подключить их импортировать библиотеки в программу arduino или и но если нет то в верхнем меню открываем скетч подключить<\p>

библиотеку добавить zip-библиотеку выбираем скачанный архив нажимаем на кнопку открыть после этого библиотеки импортируется здесь мы их подключаем библиотека tyмблep нужно для того чтобы форматировать время представлять его в разных форматах также эта библиотека умеет синхронизировать время микроконтроллера с реальным считанным будущем нами временем а также библиотека arduino джейсон которые собственно умеет парсить джейсон ответы от сервер то есть в разбирать их и доставать необходимый нам данные далее вот в этих строчках нам необходимо<\p>

указать название нашей точки доступа в константу с едим в константу password необходимо указать ключ для подключения к вайфай сети следом идет переменной региона один как раз таки в ее значения нам и необходимо вставить айдишник который мы скопировали в яндексе который определяет конкретную геолокацию далее у нас определены три строковой переменной в переменную sunrise той мы будем считывать время восхода следующее время заката и температуру за окном и следом у нас определяется массив символов в который мы будем считывать<\p>

название иконки для дешифровки данных почему именно массив символов ну потому что из такого формата его удобнее расшифровывается далее создаем объект для работы с удаленными has to me объект библиотеки вай фай клиент и у нас начинается blocks этап в котором мы инициализируем вывод данных на монитор серийного порта со скоростью 9600 бод после этого ставим двойной перевод строки который нужен только для удобства восприятия данных далее инициализируем подключение к вайфай сети и ожидаем пока наш модуль не подключится<\p>

к ней то есть вот здесь вот в цикле проверяется если модуль не подключен то делаем небольшую задержку после этого вызывается функция time in twitter которая собственно и делает самое интересное нашем сегодняшнем скетч то есть [музыка] считывает сервера джейсон парсит его определяет какое сейчас время синхронизировать время микроконтроллера с этим временем считывают информацию о текущей погоде и это функция логическая то есть она возвращает либо истинные значения либо ложно и поэтому в цикле мы ожидаем пока эта функция не вернет нам<\p>

истинное значение то есть предполагается что по главной вернет истинные значения нам выполнена и после этого мы считаем что все данные получены и вот выводимых на монитор серийного порта время микроконтроль может периодически убегать чуть-чуть вперед и либо чуть-чуть отставать поэтому ваших проектах целесообразно эту функцию слегка наверно модернизированном виде под ваши задачи вызывать с какой-то периодичностью может быть раз в час сразу два часа 1 3 часа таким образом на микроконтроллере будет всегда актуальную информацию о текущей<\p>

погоде за окном и о текущем времени то есть время будет совпадать с реальным временем поэтому для сборки там не знаю каких-то часов не требуется модуль часов реального времени то есть достаточно считывать информацию все индексы выводите you куда вам вздумается цифры лук ничего нет в блоке лук следует как ростки функция time and weather которая проверяет возможно ли соединится с узлом индекс точка com по 443 порту почему 443 порт указан потому что узел я индекс точка ком работает на https если бы там была ищите питу был бы указан 80<\p>

порт там так как там https указан 443 если все удачно то отсылаем серверу заголовки в которых собственно зашифровано айдишник необходимого нам населенного пункта и делаем небольшую задержку для того чтобы получить ответ от сервера здесь определено переменная массив символов который содержит в себе двойной перевод строки зачем это нужно дело в том что ответ сервера состоит из двух частей первая часть это системной заголовки вторая часть это собственно сама ответ который нас интересует системные заголовки отделяются от интересующей нас<\p>

информации двойным переводом строки поэтому здесь что проверяется если ответ от сервера содержат двойной перевод строки значит всё хорошо если не содержит значит мы не получили ответ или ну что-то пошло не так и все плохо далее здесь мы определяем размер буфера в который мы будем считывать ответ от сервера то есть как раз таки и джейсон содержимое вот этот буфер можно рассчитать для каждого конкретного случая вот по этой ссылочке которая здесь указано но вот в случае считывания информации о погоде и времени с яндекса вот этот вот это<\p>

значение она в принципе как бы универсально являла с небольшим запасом сюда поместится все что может вернуться дальше инициализируем работу с буфером и считываем и парсим все содержимое которые нам возвращает хост идрис информации после этого раза соединение с хвостом и начинаем обрабатывать данные вот здесь берется значение ключа time в строковом формате и обрезается здесь с помощью функции sap string мы отрезаем от него три последние символы потому что это значение возвращается в миллисекундах а нам нужны секунды<\p>

для того чтобы перевести его из формата unix timestamp unix timestamp по моему считается с 1 января 2000 с 1 января 1970 года это стандарт вот мы берем аккум отрезаем от нее три последних символы таким образом получаем время в секундах далее считываем значение круча офсет который содержит значение времени значение времени определяющие смещение в часовом поясе геолокации которая нам нужна учитываем данные о времени восходу солнца во времени заката о температуре за окном и вот сюда мы собственно считываем название иконки<\p>

тут такая на самом деле хитрая комбинация использована функция которая общение задокументированного arduino идеи но это хищная функция она как бы работает вот собственно строковое значение считанные с ответом жри сан ответа переводится в массив символ с помощью вот этой функции и очищаем бусин потому что все что необходимо мы уже оттуда получили далее здесь мы переводим строковое значение вот это которые мы считали о текущем времени из строкового формата формат в тип данных unsigned long в arduino такой что штатные функции для этих целей нет<\p>

поэтому пришлось придумывать свою функцию то но чуть ниже описано то есть грубо говоря и строки переводим в число длинная же самое делаем с переменной офсет и делим на 1000 для того чтобы перевести из миллисекунд в секунды и вот с помощью функции set time которая [музыка] работает в библиотеке tyмблep мы как раз таки синхронизируем время микроконтроллера с реальным временем то есть мы складываем реальное время и смещение относительно часового пояса соответственно получаем текущее время для им выбранной нами локации<\p>

с этой функции пожалуй на этом все далее идет функциям функцию который переводит строку в типа unsigned long ты делается ну на самом деле строка разбивается по символам и функции проверяет если символ содержит числовое значение то собственно переводит его число и складывать все опять же в одно значение вот фунт это может пригодиться нам будущем дальше дальше идет функция digital clock дисплей которая выводит дату и время на монитор серийного порта больше но ни для чего не нужно здесь используется функция обращение к функции<\p>

лягнул которая просто форматирует ответ опять же для удобства восприятия то есть например сейчас сегодня первое число то с помощью этой функции мы его преобразуем в ноль первое ну и так далее месяц там 2 в 0 2 там 1:09 в 09 и так далее опять же ну достаточно простая функция вот и следом идет функция выбор дисплей которая собственно как раз таки разбирает название иконки коды phison там все друг от друга все значения отделяются дефисом с помощью опять же session ее функции в собственном и таким образом сплитим название иконки<\p>

разбивая его и условие здесь проверяется то есть какой каждому шифру каждому значению соответствует какой то определенные какая-то определенная погода скажем так характеристика погода вот собственно пожалуй все жить в комментариях понравилось не понравилось будем продолжать или не будем на этом на сегодня все пока [музыка]