Погода в терминале: ну совсем не нужное, но иногда хочется чего-то этакого...

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

На улице теплынь и слякоть, домашние расползлись по своим делам, самому явно лень заниматься чем-то большим и долгим. Посмотрел на окно терминала с Debian, открыл рядом вкладку с Mikrotik и понял, что можно поковырять! Окно с Debian выглядит примерно так:
Изображение
На убогом терминале RouterOS такое с картинками реализовать сложновато, а вот просто давать прогноз на текущий день - это было бы интересно. Берём нашу утилитку fetch и тащим с сайта данные. Получается маленький такой скриптик:

Код: Выделить всё

:global weather;
:local ha [tool fetch url="http://wttr.in/Moscow\?format=%l:+%c+%t+%h" as-value output=user];
:set weather [:pick $ha 0];
Засовываем скрипт в шедулер с выполнением раз в сутки в час ночи (можно в другое время, как удобно) Потом в терминале выполняем команду:

Код: Выделить всё

/system note set note="$weather"
И при следующем открытии терминала видим:
Изображение
Или такое:
Изображение
Достаточно полный и понятный ман можно найти по адресу https://github.com/chubin/wttr.in

Я понимаю, что это пустяк, большинству админов ненужный. Но частое общение с командной строкой иногда приводит к вот таким вывертам и пусть будет то, что получилось. И да, ключ %c можно выкинуть тем, кто работает исключительно микротиковским терминалом. Этот обрезок минипикчи показывать не способен. Всем добра, с прошедшими праздниками.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

С праздником, уважаемый наш Podarok66 !

Мне кажется, что "поковыряли" Вы очень здорово !

Если пойти чуть дальше, то (пока теоретически) если на Микротике стоит скажем miniPCe modem с gps, который позволяет получить скриптом свои координаты и если есть какой-то ресурс, который может по этим координатам определить город или если тот ресурс, что Вы наковыряли (или подобный, наверняка таких не один), позволяет c помощью fetch подсунуть ему не город в строке, а координаты местоположения Микротика - то можно получить погоду в этом месте (температуру, влажность и т.д...) ! Так ?

То есть можно теперь из роутера сделать "метеостанцию" .... Не реальную, конечно, скажем так (не сам определяет датчиками), но "прогнозную" в зависимости от местоположения ? Наверное можно ведь ?

А как применить - это уже кому-как надо.

Можно астрономическое реле из Микротика сделать - по времени восхода и заката ... :-)

Вообще главное, что есть fetch. А ресурсов всяких будет все больше и больше ... И если fetch будет нормально развиваться и поддерживаться компанией, то Микрот много чего сможет готовенького взять из Инета ...

Чуть доделал, предлагаю в Планировщик вот так вставить:

Код: Выделить всё

:do { :global weather [:pick [/tool fetch url="http://wttr.in/Moscow\?format=%l:+%c+%t+%h" as-value output=user] 0];
        :delay 5s;
        } on-error={
          :global weather "<- The weather is smiling at us ->"
      }
:global weather;
/system note set note="$weather";
 
Кстати, проверил, погода на этом ресурсе меняется реально, так что раз в сутки опрашивать маловато - лучше чаще, скажем раз в три часа.

:a_g_a:


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Доброго времени суток, Sertik. Да, там можно и координаты подставлять, и буквенный индекс аэропорта. Автор достаточно поработал над пакетом. У меня нет возможности проверить работу gps, я думаю, если кому-то надо будет, добьют до результата.
С дополнением скрипта согласен, мне нравится. Спасибо.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

OK. У меня нет модема c GPS-антенной (такого, который поддерживается пакетом "GPS" Router Os.
Кстати, поясните, пожалуйста, почему у Вас картинки терминала различаются ? (Я "черного" терминала никогда не видел :ny_tik: Что за терминал такой ? У Вас железка одна и та же, версия РОС тоже. Это настраивается как-то ? Почему там "солнышко в тучке" есть - что-то типа спец смайлика ?, а "белофонный" терминал такого не показывает ?

Или "черный" - это внешний вид терминала, если Рос установлена на ПК ?

Не смейтесь только - правда не видел никогда ...


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Ой, простите. Это моя привычка работать в стороннем терминале. Это программа Xshell 6 (бесплатный вариант для дома) . Мне в ней удобнее, так как моё зрение просто вдребезги разбито на основной работе (профессиональные болезни не обошли меня стороной). И в основном я в ней вожусь и с Тиками и на vds. Да даже на телефоне у меня в ssh-клиенте JuiseSSH отображает пиктограммку.
Изображение
Я не слишком охотно лезу в терминал Winbox, подслеповат, слишком много белого и слишком мелкие буквы :-) . А ещё он порезан до безобразия. Ну сами видите.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

podarok66 писал(а): 26 фев 2020, 20:44 Я не слишком охотно лезу в терминал Winbox, подслеповат, слишком много белого и слишком мелкие буквы :-) . А ещё он порезан до безобразия. Ну сами видите.
(мини-ОФФТОП)

Я думаю уже многие знают, но лучше лишний раз повториться.
В Винбоксе с версии 3.21 можно делать 3х или 4х кратное увеличение шрифтов.
На больших мониторах или на маленьких ультрабуках - самое то
(в любом случаи это лучше, чем без этой фичи).

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


Изображение



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

В общем катал на доступном роутере всё это время. Поймал баг, иногда почему-то после отработки скрипта переменная была пустой. Немного всё перекроил. Теперь у меня скрипт Weather имеет тело

Код: Выделить всё

:do { :global weather [:pick [/tool fetch url="http://wttr.in/Moscow\?format=%l:+%c+%t+%h" as-value output=user] 0];
        :delay 15s;
        system scheduler set Weather2 disabled=yes
        } on-error={
          :global weather "<- The weather is smiling at us ->";
          /system scheduler set Weather2 disabled=no 
      }
:global weather;
/system note set note="$weather" show-at-login=yes;
И два шедулера Weather и Weather2 с одинаковым телом

Код: Выделить всё

/system script run Weather
Но есть существенная разница. Weather имеет период запуска 24 часа и находится в состоянии enable. Weather2 имеет период запуска 30 минут и он disable.
Всё стало ровно.
Из недостатков - в Winbox часть символов кракозяблики. Даже в мобильном приложении всё корректно определяется. Немного обидно, что основная утилита управления RouterOs настолько несовершенна, совсем как терминал Линукса лет 20 назад.
Скрин - из мобильного приложения
Изображение


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
drpioneer
Сообщения: 142
Зарегистрирован: 30 май 2013, 10:20

Привествую всех.

Нашел применение этой идеи для вывода текущей погоды в заданном населенном пункте.
Например, при регистрации в журнале скорости VPN-соединения, дополнительно регистрируем погоду в заданном населенном пункте, скорость до которого измеряем. Таким образом, можно сопоставлять текущую погоду и скорость канала, построенного на основе мобильного интернета.
Скрипт можно вызывать по необходимости, а можно и по расписанию.

Код: Выделить всё


# Script forecast weather
# https://forummikrotik.ru/viewtopic.php?t=11322
# tested on ROS 6.46.5
# updated 2020/05/10

:local weatherLocality [:toarray Moscow,Bryansk,Pupkino];
:local message "";
:local subject "";
:local currentDate ([/system clock get date]." ".[/system clock get time]);
:set subject (">>>        Weather report on ".$currentDate);
:foreach weather in=$weatherLocality do={
    :do {
        :local temperature "";
        :set temperature ("http://wttr.in/".$weather."\?format=%l:+%t+%h+%p+%w");
        :set temperature ([:pick [tool fetch url=$temperature as-value output=user] 0]);
        :set message ($message.(">>> ".[:pick [$temperature] 0 ([ :len [$temperature] ] - 1)]."\r\n"));
    } on-error={ :log warning (">>> Error script. Weather in ".$weather." not found"); }
}
:log warning ($subject);
:log warning ($message);

Последний раз редактировалось drpioneer 17 май 2020, 14:13, всего редактировалось 2 раза.


zakir
Сообщения: 5
Зарегистрирован: 14 ноя 2019, 12:57

Можно ли сделать что бы ответ от скрипта приходил на электронку? Тогда ему не было бы цены)


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

zakir писал(а): 14 май 2020, 23:49 Можно ли сделать что бы ответ от скрипта приходил на электронку? Тогда ему не было бы цены)
Сделать это просто. А вот смысла не вижу. Если у вас есть возможность читать почту, у вас есть выход в интернет. А следовательно, погода в полушаге, в сети. Какой смысл в костыле? В целом же данное упражнение выполнялось для развлечения и практического смысла в нём нет (или почти нет). Для разумной и действительно полезной реализации нужна нормальная, жизнеспособная, полезная схема, план. Пока я даже необходимость описанной игрушки не вижу.
Попробуйте придумать мотивацию (разумную, с пользой) для дальнейшей модернизации. Может и возьмётся кто написать. А погода в письме от роутера - простите, но это хотелка ради хотелки, не более.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить