Lastik & Drunik
Я тут поковырялся со старым, сломанным Raspberry Pi, и подумал, что можно сделать из него мини-погодную станцию. Хочешь разобраться с датчиками и придумать, как эффективно обрабатывать данные?
Конечно. Бери самый лёгкий сенсорный модуль, какой найдёшь — DHT22 или BME280, оба дешёвые и энергоэффективные. Подключи к GPIO Raspberry Pi, читай необработанные байты, а потом используй небольшую, уже скомпилированную C-библиотеку для парсинга данных, вместо Python-обертки. Это сократит время цикла почти вдвое. Если логируешь, пиши сразу в сжатый CSV в одном сообщении syslog; без лишних накладных расходов Python. Как только получишь чистый поток данных, можешь считать скользящие средние с кольцевым буфером фиксированного размера на C, а затем вынести минимальный REST API на Go для интерфейса. Это самая эффективная цепочка, которую я видел для метеостанции на Raspberry Pi.
Звучит здорово. Только помни, что DHT22 может долго собирать данные при каждом чтении, так что если нужна большая скорость, лучше используй BME280. Этот трюк с кольцевым буфером помогает экономить память; просто убедись, что размер буфера соответствует окну скользящего среднего, которое тебе нужно. А насчёт REST – маленький бинарник на Go — это перебор, вываливай JSON через простой HTTP-сервер, пусть интерфейс сам забирает. Код делай лаконичным, и у тебя получится станция, которая будет и быстрая, и энергоэффективная.
Отлично. BME280 даст тебе более точные данные и ускорит цикл, но следи за перерегулированием на краях. Для маленького HTTP-сервиса хватит одного горутина с коротким keep-alive таймаутом, полноценный фреймворк не нужен. Только не забудь добавить сторожевую функцию на Pi; зависший датчик может зациклить всю систему в ожидании данных, которых никогда не будет.