D@SH.KA

После почти двух лет кропотливой работы, пожалуй, пришло время представить очередной мой хобби-проект под названием D@SH.KA. D@SH — это от английского dashboard (приборная панель), а KA — это инициалы.

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

Как видно, первоначальная идея показывать автобусы несколько расширилась. Итак, чему научилась Дашка за это время.

Экран состоит из нескольких блоков, которые со временем собирались как конструктор. В верхнем блоке в центре крупно отображается текущее время. Слева от времени метеорологическая и астрономическая информация: температура, прогноз на день (максимальная и минимальная температура), влажность и давление, индекс качества воздуха, УФ-индекс. Раз в 15 минут скрипт запрашивает погоду на погодном сервере и сохраняет ее в файл, а Дашка также раз в 15 минут обращается за данными к этому файлу. Это сделано, во-первых, для уменьшения нагрузки на сервер погоды (особенно в периоды отладки), а во-вторых, если во время очередного обращения получить данные с сервера погоды не удастся, то промежуточный файл перезаписан не будет, и Дашка будет просто показывать чуть устаревшую информацию вместо нулей.

Справа от времени — курсы валют относительно евро. Принцип получения информации схож с погодой, только актуализируется все не раз в 15 минут, а примерно раз в 4 часа. И еще правее — мониторинг серверов. Зеленый кружок обозначает, что сервер онлайн, а цифра — его аптайм за последний месяц. Если связь с сервером пропадает, кружок становится красным.

Radar OK: 22 — это про радар, с которым, как мы видим все в порядке. Но об этом как-нибудь в другой раз.

Чуть ниже список радиостанций. Включаются нажатием на название. Можно включать не только мышкой, но и нажав соответствующую цифру на клавиатуре от 1 до 5 или 0, чтобы выключить.

Ну а дальше — то, ради чего все собственно и затевалось. Дело в том, что, как оказалось, в интернете есть сайт, который по API отдает текущую информацию о городском транспорте. Для наглядности я показываю две остановки (взяты с потолка). На Rahndorfer Str. ходят трамваи и автобусы. Трамваи обозначаются красным квадратом с вписанным в него номером маршрута, автобусы — фиолетовым кругом. Из огромного массива мы используем только ту информацию, которая нас интересует: ожидаемое время прибытия, задержка или опережение графика, конечная остановка. Есть еще загадочные буквы P и N. Вообще-то раньше буква N с большой вероятностью обозначала отмену. Потом у них там что-то поменялось и сейчас N может быть напротив и неотмененного рейса. Поэтому о возможной отмене можно судить косвенно. Для этого нужно периодически поглядывать на задержку или опережение графика. Если у автобуса или трамвая светится + или — сколько-то минут, то все в порядке — машина на линии. Пустое поле в течение долгого времени, да еще и буква N могут быть признаками отмены. Когда до прибытия транспорта остается минута, он начинает мигать.

S Mahlsdorf — крупный транспортный узел, в котором сходятся 4 автобусных маршрута (плюс 2 ночных), 1 трамвайный, линия городской электрички и региональный поезд и Берлина в Польшу. Для этой остановки покажем только с-бан (городскую электричку) S5 и региональный поезд RB26. Здесь есть небольшие отличия. Во-первых, указана платформа. Во-вторых, отмена всегда указывается явно. С помощью применяемых к тексту стилей можно сделать так, чтобы это было наглядно. В моем варианте отмененный поезд перечеркивается.

Еще ниже — данные с домашних сенсоров температуры и влажности и сенсоров утечки воды.

Чтобы все это работало, нужен круглосуточно включенный компьютер. У меня с этой ролью справляется одноплатник Raspberry Pi (Малинка). На нем установлен веб-сервер, доступ к которому есть только из домашней сети. А роль монитора исполняет подключенный к Малинке телевизор. Подробнее про Малинку и что еще к ней подключено, наверное, как-нибудь в другой раз.