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