Активное самоохлаждение малины с помощью NODE-RED MQTT и др.

Хоть на малине и установлено пассивное охлаждение в виде алюминиевых радиаторов, температура процессора без нагрузок держится в пределах 50С. А держать кулер постоянно включенным нет никакого желания.

Поэтому сформировалась задача: включать кулер при достижении определенной температуры (в моем случае 55С), и отключать при достижении желаемого минимума (менее 40С), ну и конечно же видеть какая температура на данный момент.
База для выполнения данной задачи уже есть с предыдущего поста  "Управление нагрузкой Raspberry Pi3 GPIO + NODE-RED + MQTT + 2 Relay" Осталось получить температуру процессора и передать её через MQTT в NODE-RED (а наличие данной информации в MQTT уже решает задачу по мониторингу). Чтобы получить значение температуры процессора в командной строке достаточно ввести в консоли:
cat /sys/class/thermal/thermal_zone0/temp

Для того чтобы передать значение MQTT брокеру, понадобится консольный MQTT клиент. Для этого устанавливаем  mosquitto-clients:
 sudo apt-get install mosquitto-clients
И отправляем значение температуры нашему MQTT серверу:
mosquitto_pub -r -t /sast/rpi3/tcpu -m $(cat /sys/class/thermal/thermal_zone0/temp)
Данная строка актуальна если MQTT сервер находится на том же компьютере где меряем температуру. Ключ "-r" делает публикацию "Retained" чтобы в любой момент подключившись к брокеру можно было узнать последний замер температуры. А так как вручную публиковать не будем, данную строку внесем в планировщик заданий crone. Для этого в командной строке вводим crontab -e и добавляем строчку * * * * * mosquitto_pub -r -t /sast/rpi3/tcpu -m $(cat /sys/class/thermal/thermal_zone0/temp). После данных манипуляций каждую минуту в ветку /sast/rpi3/tcpu будет публиковаться значение температура процессора. Считать значение можно с помощью любого mqtt клиента. Все что мне нужно для работы с MQTT с мобильного есть в MQTT Dash, а добавленная в последнем обновлении возможность синхронизировать настройки приложения между другими мобильными устройствами через тот же MQTT делает данное приложение чуть ли не уникальным!

Теперь осталось дело за малым, создать несложный алгоритм в NODE-RED который в зависимости от значения температуры полученной с ветки /sast/rpi3/tcpu будет отправлять значение в ветку /sast/rpi3/rl2 отвечающую за вкл./выкл. кулера на малине. Выглядит данный сценарий следующим образом

Значения настроек каждого элемента:

1 - получаем значение температуры
2 - определяем границы для включения и выключения
3 - отправляем значение "1" - выкл.
4 - отправляем значение "0" - вкл.
5 - публикуем полученное значение в ветку
отвечающую за состояние второго реле
После получения значения в ветке /sast/rpi3/rl2 тот же NODE-RED дает команду на соответствующий пин для включения или отключения реле управляющего кулером охлаждения малины.

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

Немає коментарів:

Дописати коментар