Страница 1 из 2

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

Добавлено: 24 фев 2020, 18:41
podarok66
На улице теплынь и слякоть, домашние расползлись по своим делам, самому явно лень заниматься чем-то большим и долгим. Посмотрел на окно терминала с 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 можно выкинуть тем, кто работает исключительно микротиковским терминалом. Этот обрезок минипикчи показывать не способен. Всем добра, с прошедшими праздниками.

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

Добавлено: 24 фев 2020, 22:27
Sertik
С праздником, уважаемый наш 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:

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

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

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

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

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

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

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

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

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

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

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

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


Изображение

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

Добавлено: 22 мар 2020, 21:54
podarok66
В общем катал на доступном роутере всё это время. Поймал баг, иногда почему-то после отработки скрипта переменная была пустой. Немного всё перекроил. Теперь у меня скрипт 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 назад.
Скрин - из мобильного приложения
Изображение

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

Добавлено: 10 май 2020, 23:42
drpioneer
Привествую всех.

Нашел применение этой идеи для вывода текущей погоды в заданном населенном пункте.
Например, при регистрации в журнале скорости 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);


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

Добавлено: 14 май 2020, 23:49
zakir
Можно ли сделать что бы ответ от скрипта приходил на электронку? Тогда ему не было бы цены)

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

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