← Back to list

Собираем домашнюю метеостанцию с Telegram ботом на Raspberry Pi

У многих из нас на полках пылится купленный однажды про запас Raspberry Pi.

Vadim Axelrod · 2019-02-11 06:57 · 1 claps · 3.9 min read
#telegram #raspberry-pi #java #diy #amperka
Open on Medium ↗
Wiki topics: 📟 · Gadgets & IoT 🛠️ · Crafts & DIY

Собираем домашнюю метеостанцию с Telegram ботом на Raspberry Pi

У многих из нас на полках пылится купленный однажды про запас Raspberry Pi.

Использовать в качестве десктопа или сервера слабый компьютер с очень медленным I/O — удовольствие не из приятных, хотя я и держал его некоторое время как CI сервер, тонкий клиент для RDP и даже запускал на нем полноценную IntelliJ IDEA (спойлер — она работает как часы, но максимально неторопливо).

А вот в качестве базы для мелких датчиков — прекрасно. Пусть Arduino правит бал в числе последователей, доступных плат и модулей. Зато у Rasberry Pi полноценный Linux и много больше мощности, а значит в выборе софта ограничений никаких. Большинство железа прекрасно себя чувствует на обеих платформах.

Датчики для множества простых и занимательных вещей, вроде освещенности, уровня воды, температуры, движения и даже алкоголя продаются в среднем по 150–600 рублей за штуку.

Для себя я собрал домашнюю метеостанцию с интерфейсом в Telegram, получив от этого неожиданно много фана.

Итак, сдуем пыль с малины.

Бот в помощь

Ходить по SSH на домашнюю Linux машину неудобно, небезопасно и требует много лишних телодвижений с сетью.

Бот же — идеальный вариант как для выставления интерфейса, так и для предоставления доступа к железу из закрытого сегмента сети:

Все просто. Одна большая кнопка «Сделать хорошо».

Заходите в гости! У меня дома прямо сейчас: http://telegram.me/i_am_at_home_bot.

Закупаемся

В моем случае используется высокоточный метеодатчик на сенсоре SHT3x-DIS, работающий на шине I²C в сборке от компании Амперка, собранный с удобной разводкой:

Гугление дает варианты покупки этого датчика и в виде голой платы — попрактикуйтесь в пайке ножек, если есть желание.

В варианте Амперки датчик приходит сразу с необходимой проводкой. Ничего, кроме самого датчика, в минимальном варианте покупать не нужно. Но если хочется собрать все аккуратнее, чем ворох проводов и голая плата — докупите Troyka #Структор.

Исходим из того, что Raspberry Pi у нас уже в наличии и на нем установлена Raspbian (полагаю, что и с другими дистрибутивами проблем быть не должно).

Если же Pi нет, но вдруг очень захотелось, можно докинуть в корзину прямо в Амперке:

На Яндекс.Маркете можно собрать необходимое чуть дешевле вместе с более симпатичным оригинальным корпусом и блоком питания, а также взять быструю microSD карту (советую не ниже UHS Speed Class 1).

Важно не сэкономить на блоке питания. Хотя Raspberry Pi может работать и от power bank, и от любой зарядки — при вполне обычных нагрузках ядро начнет регулярно ругаться на undervoltage.

Подключаем датчик

Из обязательной распиновки (и в сборке от Амперки) датчик имеет:

  • питание (04 DC Power 5v),
  • землю (06 Ground),
  • пин ввода/вывода данных (03 SDA),
  • пин тактирования шины (05 SCL).

В стандартной разводке Raspberry Pi датчик получится подключить двумя трехпроводными шлейфами, либо четырьмя одинарными проводами «мама-папа»:

В собранном виде:

Подключаемся к Pi по SSH и включаем шину I²C:

sudo raspi-config
# Далее в интерфейсе: 
5 - Interfacing Options - Configure connections to peripherals
5 I2C - Enable/Disable automatic loading of I2C kernel module 
Would you like the ARM I2C interface to be enabled? - Yes

Проверяем корректность подключения

Копируем скрипт на Pi:

[embed]

При правильном подключении получаем данные:

➜ python meteoSensor.py
Temperature in Celsius is : 17.80 C
Temperature in Fahrenheit is : 64.05 F
Relative Humidity is : 27.78 %RH

Создаем Telegram бота

Открываем Telegram и добавляем бота BotFather.

При создании нового бота необходимо выбрать ему имя и адрес, добавить в контакты и сохранить полученный Access Token вида:

111111111:XXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Устанавливаем (или разрабатываем) необходимый софт

Для работы с железом на Raspberry Pi часто используют Python, но под все популярные языки программирования обязательно есть удобная библиотека для работы либо с GPIO конкретно Raspberry Pi, либо для работы с конкретной шиной (нам нужна I²C).

Особо отмечу Control Everything Community — замечательный сборник примеров работы с огромным числом различных чипов, притом сразу на нескольких популярных языках и под большинство популярных платформ помимо Rasbperry Pi.

Я разработал решение на Java с использованием:

Запускаем

1. Бинарник:

  • Загружаем сборку и копируем на Raspberry Pi
  • Устанавливаем Java
sudo apt-get update
sudo apt-get install -y galternatives openjdk-8-jdk
  • Запускаем, подставив в параметры ранее полученный Access Token бота в Telegram:
java -jar raspberry-pi-meteo-bot.jar --telegram.bot.token=111111111:XXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • Открываем Telegram и наслаждаемся!

2. Из исходников:

git clone -b sht3x_only https://github.com/axelrodvl/raspberry-pi-meteo-bot.git 
cd raspberry-pi-meteo-bot
  • В src/main/resources/application.properties можно при желании сразу вставить нужный telegram.bot.token
  • Собираем, копируем и запускаем:
mvn clean install
scp target/raspberry-pi-meteo-bot-0.2.0.jar pi@address:~
ssh pi@address 'nohup java -jar raspberry-pi-meteo-bot-0.2.0.jar &> meteo-bot.out&'

В качестве бонуса — в master ветке репозитория бот расширен поддержкой датчика углекислого газа.

Погодная станция готова, приятного использования!

Originally published at axelrod.co.


메타데이터
post_id
cf21182cede8
slug
собираем-домашнюю-метеостанцию-с-telegram-ботом-на-raspberry-pi-cf21182cede8
url
https://medium.com/@axelrodvl/%D1%81%D0%BE%D0%B1%D0%B8%D1%80%D0%B0%D0%B5%D0%BC-%D0%B4%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D1%8E%D1%8E-%D0%BC%D0%B5%D1%82%D0%B5%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8E-%D1%81-telegram-%D0%B1%D0%BE%D1%82%D0%BE%D0%BC-%D0%BD%D0%B0-raspberry-pi-cf21182cede8
canonical_url
https://medium.com/@axelrodvl/%D1%81%D0%BE%D0%B1%D0%B8%D1%80%D0%B0%D0%B5%D0%BC-%D0%B4%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D1%8E%D1%8E-%D0%BC%D0%B5%D1%82%D0%B5%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8E-%D1%81-telegram-%D0%B1%D0%BE%D1%82%D0%BE%D0%BC-%D0%BD%D0%B0-raspberry-pi-cf21182cede8
author_url
https://medium.com/@axelrodvl
status
ok
fetched_at
2026-08-05 23:11:39