Но это и понятно почему. "Из коробки", т.е. в тех исходниках, что есть для RPi процесс сканирования ресивера настроен через тупой цикл while без задержек. И конечно же процессор только и делает, что раз в максимальное время занят обработкой этого цикла. У меня проц работает на 60 градусах стандартно (с радиатором), в итоге поднялось до 80 градусов почти. В коде дописал в начале:
Код: Выделить всё
#include <unistd.h>
Код: Выделить всё
sleep(2);
Теперь не много теории, как я себе это вижу.
Всякие там датчики газа, воды и т.д. работают по такому принципу, что если они обнаружили что-то, то начинают слать свой код в эфир до тех пор пока тревога не перестанет быть актуальной. С датчиком открытия двери надо отдельно разобраться, но думаю, что там принцип такой же. Максимум, что происходит на некоторых датчиках - они шлют свой код в равные промежутки времени или равными временными промежутками. Скажем, шлют код 1-5 секунд и застывают на еще какое-то кол-во секунд, потом опять продолжают пока тревога актуальна. Следовательно, поставив задержку в периоде сканирования мы особо ничего не теряем, а вот RPi нагружаем меньше. sleep'ом можно поиграться. Поставить, скажем, 1 секунду и последить за температурой. Главное не влупить большое число, а то реально пропустить что-то можно.
Ну это как я себе вижу данную "проблему". Поправьте если у кого есть какое-то свое мнение и желательно подкрепленное аргументами.