company_banner

«Погода в доме» или как устроена наша офисная метеостанция

    На самом деле, идея витала в воздухе уже несколько лет. Довольно подробно мы фантазировали, как будем использовать данные собственной метеостанции для коррекции прогноза погоды на сервисе Погода@Mail.Ru, показывать видеотрансляцию погодных условий за окном и даже строить сеть погодных станций и трансляций от наших пользователей. Что ж, возможно, когда-то это все действительно будет, а пока мы начали с малого – с трансляции данных нашей офисной метеостанции всем желающим. Как это выглядит можно посмотреть здесь: pogoda.mail.ru/office. А как устроено – прочитать далее.

    Погода@Mail.Ru



    В настоящее время сервис нацелен, прежде всего, на сотрудников компании («что там за окном?», «как одеваться?» — очень, кстати, актуально, когда едешь с юга Москвы к офису на север, где погода зачастую совсем иная), жителей окрестностей (кто, конечно, в курсе, где находится офис Mail.Ru Group — напомню, что мы располагаемся в двух минутах от м. Аэропорт) и прочих праздных наблюдателей (например, когда за окном убедительно так завывает, я с интересом бегу посмотреть силу ветра, которую показывает наша станция). Есть и еще одна категория наблюдателей – посетители нашего офиса, но об этом чуть ниже.

    Переходим к самому интересному – «how it works?»


    Прежде всего, нами был выбран аппаратный метеокомплекс Davis 6162EU Wireless Vantage Pro2 PLUS (стоимость около 50 тыс. руб) от компании Davis Instruments. Почему именно Davis? Хотелось соблюсти баланс между совсем «домашними» станциями от RST или Oregon Scientific (отличный, кстати, подарок другу/коллеге, «зависимому» от гаджетов) и совсем уж глубоко профессиональными, например, Coastal Environmental, которые используют военные и спасатели.

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

    Погода@Mail.Ru


    Что умеет измерять и показывать наша станция:
    • Атмосферное давление
    • Уличная и комнатная температура воздуха
    • Уличная и комнатная относительная влажность воздуха
    • Скорость и направление ветра
    • Температура точки росы
    • Количество и интенсивность осадков
    • Интенсивность солнечного излучения
    • Индекс ультрафиолетового излучения

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

    Погода@Mail.Ru


    Таким образом, в станции есть практически все что нужно, разве что не хватает автоматического определения характера облачности. Вот как раз для этих целей мы и задумывались в свое время над видеокомплексом, но пока решили ограничиться прагматическим взглядом за окошко.

    Погода@Mail.Ru


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

    Об особенностях технической реализации проекта


    Как рассказывает Андрей Майнагашев, системный архитектор проекта, для регулярного получения метеоданных от нашей станции пришлось выделить в нашей офисной серверной отдельный ПК, для которого было приобретено и установлено программное обеспечение WeatherLink (стоимость около 8 тыс.руб.). Связь внутреннего блока метеостанции с этим компьютером осуществляется специальным кабелем, который позволяет подключить COM-порт устройства к USB-разъему ПК. Основным условием получения актуальных данных о «погоде за окном» является постоянно работающее и соответствующим образом настроенное приложение WeatherLink.

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

    По поводу формата шаблона мы определились достаточно быстро – решили использовать простой и легко читаемый JSON. Некоторый вопрос возник со способом передачи сгенерированных файлов из внутренней сети офиса, где собственно и находится обслуживающий метеостанцию ПК, на удаленный рабочий web-сервер, где полученные данные должны сохраняться, консолидироваться и предоставляться для красивого отображения на страницах пользовательских браузеров.

    Протокол FTP был сразу же исключен по причине своей небезопасности. Рассматривался вариант отдавать эти файлы по HTTP, подняв для этой цели какой-нибудь «виндовый» веб-сервер, но это решение требовало предоставить доступ извне к внутренней сети офиса и тем самым вызывало логичные отрицательные оценки со стороны специалистов по безопасности.

    В результате мы остановились на варианте формирования файлов с погодными данными на локальном диске с последующей передачей их на удаленный web-сервер по протоколу HTTP (с использованием метода PUT). А уже процесс анализа и последующей обработки и хранения полученной информации предполагался на самом сервере. Таким образом, мы получили решение, при котором все интересующие нас данные с офисной метеостанции каждую минуту складываются в базу данных проекта Погода@Mail.Ru, а там они постоянно доступны для отображения «на вебе».

    Отдельно хотелось бы сказать пару слов про задачу перевода на русский язык текстов прогнозов, которые формирует программа WeatherLink. Пришлось заглянуть «внутрь» данной программы, чтобы получить множество вариантов построения английских фраз, из которых в результате собираются прогнозы. После этого, выделив словосочетания и определив их порядок для поиска при построении русских фраз, удалось добиться более менее вменяемого перевода.

    Говорит и показывает


    Изначально мы планировали показывать данные со станции на специальных мониторах в офисе и дать сотрудникам доступ на просмотр этих данных на вебе. Сразу возник вопрос – как правильно нарисовать и сверстать? Решили ориентироваться на большой спектр разрешений мониторов, делать картинку максимально функциональной, дружелюбной и в то же время достаточно аскетичной, чтобы не отвлекать графикой пользователя от, собственно, данных, поэтому было решено использовать векторную графику.
    Реализовал задумку Артем Сапегин (sapegin), веб-технолог. Для работы с векторной графикой (SVG) из JavaScript используется библиотека Raphaël. Она предоставляет собой удобный API для всех основных возможностей SVG. Кроме этого, она работает в IE 6-8, эмулируя SVG с помощью VML.

    Скрипт «информера» состоит из трёх частей: набора виджетов, раскладки и главного скрипта, который всё это объединяет.

    Виджеты — минимальные элементы интерфейса. Как простые, вроде текста или стрелки (любой векторный объект, угол поворота которого зависит от данных), так и сложные, например, гистограмма (которая включает в себя и текст, и стрелки). Каждый виджет умеет обновлять данные и оформление. И то, и другое происходит с анимацией. Если какое-то время наблюдать за страницей, можно увидеть, как перемещается стрелка часов. А если запастись термосом кофе и бутербродами, то можно даже дождаться смены дня и ночи.

    Раскладка — это здоровенное описание всех типов виджетов, их связи с входящими данными, их оформления, используемых тем (день и ночь) и т. д.

    Не обошлось, конечно, без трудностей. Например, Raphaël не позволяет полноценно управлять прозрачностью градиентов, поэтому градиент на полупрозрачной фоновой «собаке» добавляется ручным изменением свойств созданного рафаелем SVG-узла.

    Другая трудность — верхняя плашка на всю ширину экрана. После нескольких экспериментов нашёлся очень простой способ её нарисовать: плашка смещена влево и имеет ширину заведомо больше, чем может понадобиться. То есть просто «свешивается» за границы SVG-объекта с обеих сторон. Однако IE, даже 9-й, который поддерживает настоящий SVG, не позволяет нарисовать что-то за пределами SVG/VML-объекта. Поэтому специально для IE плашка сделана фоновой картинкой для тега body.

    Что получилось?



    Погода@Mail.Ru


    Посетители нашего центрального офиса в БЦ «Авион» могут лицезреть на ресепшн специальный монитор, который рассказывает им о погоде, а вы, дорогие читатели, прямо сейчас можете посмотреть результат вот здесь: http://pogoda.mail.ru/office/

    И о погоде


    Буквально на днях была запущена новая версия Погоды@Mail.Ru, где помимо традиционных прогнозных данных по нескольким тысячам городов добавился еще один – срез данных с нашей метеостанции. И пусть это пока только Москва, но у Mail.Ru Group много представительств, в разных уголках нашей страны и даже за рубежом. Мечтаем, что станции появятся повсеместно в наших офисах и мы создадим полноценную сеть погодных станций, которые помогут нашим пользователям чуть более правильно подготовиться к традиционным погодным сюрпризам, которые пока никому не удается доподлинно предугадать.

    И…пусть всегда будет лето!

    Рожков Анатолий,
    Директор медиа-проектов Mail.Ru
    Mail.Ru Group 789,14
    Строим Интернет
    Поделиться публикацией
    Комментарии 21
    • +5
      Все хорошо, если бы не цена комплекса.
      Надо на коленках собрать подобный, оттестить, сломать, учесть недоработки и сдедать хороший, но свой :)
      • +14
        Синяя изолента гарантирует бесперебойную работу устройства!
        • +7
          А как же. Синяя изолента — поставщик надежной работы чего-угодно с 1950 года!
          • 0
            Действительно, можно было бы и поаккуратнее смонтировать.
            • 0
              Изолента всего лишь держит лишний кусок провода :)
              • 0
                Это понятно. Но есть цивилизованные способы крепления проводки. Если уж делать и выкладывать в качестве пиара компании — надо делать какследует. Можно было вообще всю станцию скотчем к трубе примотать, скотч всего лишь бы держал метеостанцию.
                • 0
                  Я с вами согласен. Не усмотрели за подрядчиком, который ее устанавливал. Переделаем, когда потеплеет :)
          • +1
            Очень порадовал дизайн. В кои-то веки на этом можно смотреть без приступов тошноты.
            • 0
              Спасибо, автору дизайна будет приятно :)
            • 0
              На андроид — пустая страница ;)
              • 0
                Это минус, да. SVG не на всех версиях ОС работает, точнее ответит наш веб-технолог, призываю его в комменты :)
              • 0
                Дизайн отличный! Его бы на главную страницу pogoda.mail.ru
                • 0
                  Это минус, да. SVG не на всех версиях ОС работает, точнее ответит наш веб-технолог, призываю его в комменты :)
                  • 0
                    Промахнулся комментом, спасибо за высокую оценку!
                  • 0
                    Господа, имею на производстве точно такую же станцию, написал в свое время небольшую программу для на C# для отображения подобной информации: image
                    Может быть вы способны отдать в общий доступ свою реализацию? Было бы шикарно.
                    • 0
                      Кстати, эта станция не работает за полярным кругом, в первый день полярной ночи (в день когда солнце не всходит) или полярного дня (когда солнце не садится), она не может вычислить длину дня и зависает. Приходится указывать другую широту.
                      • 0
                        Можете такую станцию установить себе: www.prevedmedved.ru/uploads/posts/2011-11/1322297215_demotivatory_13.jpg
                      • 0
                        Вот бы еще для температуры такой же график, как для ветра и давления!

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое