weather.kikimor.ru — как это работает?

Сегодня я хочу рассказать вам о технической реализации своего сервиса http://weather.kikimor.ru/. Главным отличием моего сервиса от других погодных ресурсов состоит в том, что данные о температуре я получаю с температурного датчика, установленного за моим окном, в то время, как остальные ресурсы получают его с метеостанции, расположенной в аэропорту Челябинска. А это в 20 км от города, и естественно, там температура совершенно отличается от температуры в городе.

Для общего понимания

Для получения температуры я использую цифровой датчик DS18B20 (Dallas), подключенный к COM порту домашнего сервера под управлением ОС Gentoo Linux. 

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

Чуть более углубленно

Все, что написано ниже будет интересно тем, кто хочет реализовать нечто подобное у себя, или тем, кому просто интересно о подключении 1-wire устройств к компьютеру. Как говорилось ранее, датчик подключается к COM порту, но не на всех новых материнских платах COM порт присутствует. Поэтому мне пришлось купить переходник USB to COM. Найти хороший переходник удалось не сразу. Переходники, которые продавались в компьютерных магазинах, не подошли, так как они не в полной мере эмулируют COM порт. Хороший переходник я нашел в магазине «Микроэлектроника» (он же «Промэлектроника»), который находится напротив бывшего автомобильного училища. Кстати говоря, температурный датчик я купил там же. Переходник исполнен в виде аккуратной печатной платой с маркировкой МастерКит ВМ8050.

Для начала подключаем датчик по данной схеме:

При использовании переходника стабилитроны, указанные на схеме, использовать не нужно, так как рабочее напряжение датчика полностью совпадает с напряжением, выдаваемым USB — 5V. То есть стабилитроны НЕОБХОДИМЫ, если датчик будет подключаться к реальному COM порту, который выдает 12V. После того, как схема будет собрана, необходимо включить поддержку 1-wire устройств в ядро ОС Gentoo (в случае использования операционных систем Windows или Debian ничего дополнительно делать не нужно).

[*] Device Drivers
   [*] Dallas's 1-wire support

Так же для использования купленного мной переходника USB -> COM потребовалось включить в ядро:

[*] USB support 
   [*] USB Serial Converter support
      [M] USB CP210x family of UART Bridge Controllers

Для снятия показаний я использовал программу digitemp. О том, как ее использовать, подробно сказано в digitemp -help.

  1. Евгений

    Как бы ещё такой же график с историей прикрутить к влажности и давлению. Ведб наверняка и то и другое тоже чесное. И, кстате, поделитесь — что используете для замера ?

    • Прикручу обязательно, когда руки дойдут. Для замера давления — BMP085, для влажности — DHT22. Оба работают по IIC (i2c).

  2. У меня такое ощущение что у программы измерения температуры есть ограничение около 25 градусов, а может датчик глючит. Выше этого значения не измеряет. Как бы это поправить? А то я уже без этого сайта как без рук. Теперь и градусник за окном не нужен. 😛

  3. Здравствуйте, спасибо за исправления, датчика сейчас все нормально. Есть еще одна просьба. Можете обнулить общую статистику по Max и Min температуре или убрать это значение +85 С. А то очень уж смущает, да и реально наврятли этот рекорд можно будет побить. 😛

    • Убрал данное показание. Скоро статистика пересчитается и будет отображаться корректная. Спасибо за внимательность!

  4. Добрый день.
    Около месяца назад обнаружил некорректные показания датчика температуры. Примерно с 13:00 до 18:00 сильно завышенная температура, как-будто в это время датчик находится на солнце.
    Не могли бы вы проверить работу датчика и при необходимости убрать его в тень.
    А то уже 3 года живу без градусника дома, пользуюсь вашей программой.

Ответить на Евгений ¬
Отменить ответ


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>