Pi: монитор отопления дома
Вам нужны:
» Любой Raspberry Pi A+, B+ или Pi 2
» Свежая ОС Raspbian
»Датчик DS18B20 (часть CamJam EduKit 2)
» Макетная плата
» Кабели-перемычки «папа-мама»
» Резистор 4,7 кОм
» Приставка Wi-Fi
»Учетная запись на www.initial-state.com
» Любой Raspberry Pi A+, B+ или Pi 2
» Свежая ОС Raspbian
»Датчик DS18B20 (часть CamJam EduKit 2)
» Макетная плата
» Кабели-перемычки «папа-мама»
» Резистор 4,7 кОм
» Приставка Wi-Fi
»Учетная запись на www.initial-state.com
Визуализируйте свое центральное отопление.
Мы присоединили DS18B20 к макетной плате и подали питание на его информационный вывод через резистор 4,7 кОм
Для данного проекта мы с головой окунулись в Интернет Вещей (IоТ). Будем определять температуру в доме с помощью недорогого датчика, передавать эти данные в облако и на их основании строить диаграмму. Используемый нами датчик - Dallas DS18B20. Его можно добыть относительно дешево, однако простым решением будет приобрести комплект Cam-Jam EduKIt 2, поскольку в него входит водонепроницаемый Dallas DS18B20. Соберите оборудование и присоедините к PI по схеме (см. скриншот выше). Далее мы настроим датчик, и для этого есть удобная схема CamJam (http://bit.ly/CamJamTempWorksheet). Для работы понадобится учетная запись на www.initialstate.com и ключ API, который вы найдете в настройках своей учетной записи. Для установки стримера Initial State введите:
curl -sSL https://get.initialstate.com/python -o - | sudo bash Начнем наш код с импорта библиотек для работы с ОС и временем, а также для передачи наших данных в облако:
import os, glob, time
from ISStreamer.Streamer import Streamer Далее мы загрузим модули ядра для датчика с помощью mod-probe, упакуем команды Bash в функцию os.system() для Python и сообщим нашему коду, где найти файл для хранения данных о температуре:
os.system(‘modprobe w1-gpio’)
os.system(‘modprobe w1-therm’)
base_dir = ‘/sys/bus/w1/devices/’
device_folder = glob.glob(base_dir + ‘28*’)[0]
device_file = device_folder + ‘/w1_slave’Затем создадим функцию для считывания содержимого файла, который хранит исходные данные о температуре и сохраняет данные как переменную:
def read_temp_raw():
f = open(device_file, ‘r’)
lines = f.readlines()
f.close()
return linesТеперь прочитаем данные и переработаем их в нечто более удобоваримое: сохраним дельную информацию и откинем шелуху, после чего конвертируем данные в температуру.
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != ‘YES’:
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find(‘t=’)
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
return temp_cНаш последний раздел — это цикл, который непрерывно проверяет температуру, выполняет преобразования и ежеминутно передает данные в Initial State.
while True:
temp_c = read_temp()
temp_f = temp_c * 9.0 /5.0 + 32.0
streamer.log(‘temperature (C)’, temp_c)
streamer.log(‘temperature (F)’, temp_f)
time.sleep(60)Сохраните код и нажмите на Run > Run Module, чтобы запустить его.
Initial State
В этом проекте мы отправляем температурные данные в облако с помощью сервиса под названием Initial State. Этот сервис позволяет отображать и обрабатывать данные из разных источников практически мгновенно. В этом руководстве мы выбрали бесплатную опцию, с хранением данных 24 часа, а потом они удаляются. Есть и другие опции, в т. ч. с хранением данных неопределенный период времени для неограниченного числа датчиков.
Для нашего проекта мы использовали информацию с одного датчика, DS18B20, но благодаря Raspberry Pi и его GPIO можно собирать информацию по всему дому намного большим количеством датчиков: например, в другом проекте мы использовали геркон. Его тоже можно подружить с Initial State и показывать данные об открывании двери. То есть с помощью этого сервиса можно интерпретировать данные о нашем доме. Такие вещи, как герконы на окнах; температурные датчики в комнатах; фиксатор на электросчетчике и световые датчики снаружи соберут нам данные о том,насколько энергосберегающим является наш дом, и эти данные можно отображать графически за несколько месяцев, чтобы отследить энергопотребление в разные времена года. Эти данные помогут автоматически управлять системой центрального отопления вашего дома — с помощью скромного Pi!