Да си направим монитор на качеството на въздуха с помощта на InfluxDB, Grafana, Docker и Raspberry Pi

.td_uid_42_5cd02e7f12935_rand.td-a-rec-img{text-align:left}.td_uid_42_5cd02e7f12935_rand.td-a-rec-img img{margin:0 auto 0 0}

Мислили сте да си направите сами вкъщи малко и точно устройство за денонощен мониторинг на качеството на въздуха? Нашият проект, който ние нарекохме balenaSense е неголям прибор, който може да измерва температурата, влажността, атмосферното налягане и разбира се, качеството на въздуха. Устройството може да бъде управлявано чрез интернет връзка, както и дистанционно да се отчитат показанията, да се прегледа и изтегли статистиката на събитията, да се проследят тенденциите.

           InfluxDB, Grafana, Docker  Raspberry PiВъведение

За измерването качеството на въздуха метеорологичните станции използват техника с много проводници и най-различни сензори. Но последно време на пазара се появиха специализирани сензори, които извършват всички измервания с помощта на малка платка, която е много удобна за използване.

           InfluxDB, Grafana, Docker  Raspberry Pi

.td_uid_41_5cd02e7f12632_rand.td-a-rec-img{text-align:left}.td_uid_41_5cd02e7f12632_rand.td-a-rec-img img{margin:0 auto 0 0}

Тук ще се спрем на мониторинг на температурата, влажността, атмосферното налягане и качеството на въздуха с помощта на един от новите сензори, който включва всичко в едно и се съединява директно с миникомпютъра Raspberry Pi, като не са необходими никакви други компоненти. Не е необходим никакъв опит в областта на електрониката. Добре ще е, ако умеете да използвате поялник, но и без поялник може – ще има малка разлика в цената на устройството. Проектът включва и изграждането на база данни за записване и съхраняване на всички показания, статистиките на които могат да бъдат разгледани с помощта на удобен графичен интерфейс, който позволява проследяването на тенденциите.

           InfluxDB, Grafana, Docker  Raspberry Pi           InfluxDB, Grafana, Docker  Raspberry PiНеобходимите компоненти

Ето какво трябва да се купи за този проект. В зависимост от това, дали ще използвате поялник или не, избираме сензорната платка. Единият вид сензорни платки просто се поставят и започват да работят. Другият вид изискват съвсем малко запояване.

           InfluxDB, Grafana, Docker  Raspberry PiНе искам да запоявамRaspberry Pi Zero WHМинимум 8 GB microSD карта, ние препоръчваме Sandisk Extreme Pro SDЗахранване и кабелСензор тип Pimoroni BME680 с платка-преходникPimoroni Breakout Garden pHATАз искам да запоявам

Ако нямате нищо против да вземете в ръце поялник, то ще ви трябват:

Raspberry Pi Zero WHМинимум 8 GB microSD карта, ние препоръчваме Sandisk Extreme Pro SDЗахранване с кабелСензор тип Pimoroni BME680 с платка-преходник (по-долу ще изброим алтернативитеСъединителен кабел

Други сензори

Ако вече имате някакъв подобен сензор, проектът поддържа Sense HAT с допълнителен бонус: емотикон на светодиодната матрица, който е различен за различното качество на въздуха.

           InfluxDB, Grafana, Docker  Raspberry Pi Bosch BME680 заедно с платката преходник може да бъде поръчана от различни доставчици, които я продават при различна цена:

Pimoroni BME680: ?18,50 (има версия без запояване с pHAT)Adafruit BME680: US$22,50Sparkfun SparkX BME680: US$19,95 (има версия без запояване)Безименен BME680: US$9,92

Забележка: тук използваме Pimoroni. Тази платка има това преимущество, че изводите на нейния конектор са съвместими с Raspberry Pi GPIO. При използването на други платки е необходимо да се провери, дали изводите за захранването и I2C (SDA и SCL) шината съвпадат.

Софтуерът

Проектът е качен в GitHub под името balena-sense и включва всичкия необходим софтуер, конфигурация и код, необходими за работата на системата. Възнамеряваме да продължим развитието на проекта в безплатния акаунт balenaCloud. Идеята е да предложим нов софтуер за Raspberry Pi, както и да осигурим отдалечен достъп. Ето защо ще ви трябват:

Регистрация в balenaCloudНякакъв инструмент за запис на SD флаш карти от рода на balenaEtcherКлониране или сваляне на нашия проект от GitHubСглобяването

От хардуерна гледна точка работата е малко. Трябва само малката платка със сензора да бъде съединена с GPIO контактите на Raspberry Pi.

Сензорът BME680 взаимодейства с Raspberry Pi с помощта на I2C (eye-squared-see) шината – последователна комуникация с помощта на две линии. Това са линията за синхронизация (SCK) и линията за обмен на данни (SDA). Допълнително на сензора трябва да се подаде напрежение (3,3V или 3V3), необходимо е съединяването на общия проводник (GND). Ако е избран вариантът без запояване на Pimoroni или Sparkfun или използвате Sense HAT, достатъчно е просто да включите новите компоненти към Raspberry Pi и всички съединения са готови – можете да пристъпите към следващата стъпка.

А ако сте решили да включите сензора към Raspberry Pi с помощта на Pimoroni или с друга съгласуваща платка, най-главното е правилното съединяване на изводите – (SDA, SCK, 3V3 и GND).

           InfluxDB, Grafana, Docker  Raspberry Pi

Полезен сайт за работата с GPIO изводите на Raspberry Pi е pinout.xyz. Там съвсем ясно се казва, че са необходими изводите 1 (3V3 захранване), 3 (SDA), 5 (SCL) и 9 (GND). A 40-пиновият GPIO конектор е стандартен за миникомпютрите Pi 2 и по-късните версии. Ако използвате Pimoroni платката, всичко вече е направено. Обърнете внимание накъде трябва да бъдат обърнати надписите на платката със сензора.

           InfluxDB, Grafana, Docker  Raspberry Pi

Само че ако включим сензора по този начин, на неговите показания ще оказва влияние топлината на процесора на Raspberry Pi. За да си осигурим по-точно измерване е необходимо сензорът да бъде изнесен извън миникомпютъра. Това става съвсем лесно с помощта на кабелите DuPont или Jumper Jerky:

           InfluxDB, Grafana, Docker  Raspberry Pi Аналогично, ако използвате някакъв друг сензор, изводите на който не съвпадат с пиновете на Raspberry Pi, този метод е идеален. Главното е да бъде осугурено съответствието на 3V3, SDA, SCL и GND. Ако на платката със сензора има изводи SDI, SDO, CS – игнорираме ги. Те са необходими за алтернативния интерфейс SPI, който в този проект не се използва.

На показаните по-горе снимки се вижда Raspberry Pi 3A+, но всичко работи по съвсем същия начин и с Pi Zero, който е едно по-евтино решение.

Настройване на Raspberry Pi

Трябва да запишем на SD картата операционната система balenaOS, да се свържем с електронния облак balenaCloud, да добавим в него своето устройство и да настроим проекта по такъв начин, че по-късно лесно да можем да обновим всичко.

Първоначално е необходимо да си направим акаунт в balenaCloud. Тоест – регистрация, добавяне на приложение и добавяне на устройството.

Първа стъпка: регистрация в balenaCloud

Ако имате GitHub или Google акаунт, можете да го използвате за логване в системата без да правите регистрация.

Втора стъпка: добавете приложение

Добавете приложение, като изберете правилния тип на устройството и Starter като приложение. След това напишете Create New Application. Този тип поддържа всички микро онлайн услуги и е безплатен за до десет устройства.

След това ще попаднете в панела за мониторинг на това приложение, от който можете да добавите устройството. Може да бъде дадено произволно име, което ще ни потрябва по-късно.

Трета стъпка: добавете устройството и заредете операционната система

След създаването на приложението, добавянето на устройството към него става с кликването върху зеления бутон Add Device. При добавянето на устройството укажете неговия правилен тип. Ако използвате безжична мрежа, можете да въведете своите SSID WiFI и паролата.

Забележка: в анимацията е показан Raspberry Pi 3: не забравяте да изберете вашата версия на миникомпютъра

           InfluxDB, Grafana, Docker  Raspberry Pi

При този процес се създава дисков образ за приложенията и типа на устройството, в който вече са въведени параметрите на мрежата (ако са указани).

Забележка: в началото е по-добре да се избере dev, подходящ за всякакви тестове и отстраняване на възникнали неизправности. По-подробна информация за разликите между development и production е дадена тук. Може да се използва balenaEtcher.

Четвърта стъпка: запис на SD картата и зареждане

Когато дисковият образ е изтеглен, необходимо е да се запише SD картата. Един от многото начини е да се използва balenaEtcher.

           InfluxDB, Grafana, Docker  Raspberry Pi

След приключването на процеса поставете SD картата в Raspberry Pi и подайте захранващо напрежение.

           InfluxDB, Grafana, Docker  Raspberry Pi Когато устройството се включва за първи път, то се съединява с програмата за мониторинг на balenaCloud, след което то трябва да се появи в в онлайн списъка. Ако се е появило, може да се продължава нататък.

           InfluxDB, Grafana, Docker  Raspberry Pi

Възможни проблеми. Ако устройството не се появява в този програмен прозорец в рамките на няколко минути, нещо не е наред. В документацията е дадена подробна инструкция за отстраняване на грешките и са показани различни ситуации с обяснения, защо е могло да стане така.

Разгръщане на софтуера

Когато вашият Raspberry Pi е подготвен, заредил е и е съединен към balenaCloud, всичко е готово за инсталирането на необходимото програмно осигуряване.

Инсталиране инструментите на balena CLI

BalenaCloud дава възможност по отдалечен път да се зареждат програми и данни в Raspberry Pi. За да може да стане това, вашият персонален компютър (не е Raspberry Pi), трябва да има инсталиран допълнителен софтуер. Удобното тук е, че за успешното използване на тази малка метеорологична станция не е необходимо да се въвеждат каквито и да било команди нито на самото устройство с помощта например на SSH, нито от balenaCloud панела. Всичко става дистанционно с помощта на много удобен потребителски интерфейс.

Ако на вашия компютър вече има (или можете да си настроите) npm, то това е най-бързият начин за стартиране инструментите CLI инструментите. Предлагат се двоични файлове за Windows, macOS и Linux.

Предлага се и подробна документация за CLI инструментите, в която е описано всичко.

Когато на вашия компютър е инсталиран и вече работи CLI пакетът, първата стъпка е да се влезе в balenaCloud с помощта на командата

balena login           InfluxDB, Grafana, Docker  Raspberry Pi           InfluxDB, Grafana, Docker  Raspberry PiЗареждане на проекта от GitHub

Следващата стъпка е изтеглянето на кода на този проект от GitHub. Синият бутон изтегля zip файла, а ако сте запознати с командите на GitHub, можете да използвате стандартната

git cloneИнсталиране на Raspberry Pi

Следващата стъпка е изграждането и стартирането на Docker образ, който ще се стартира на вашето устройство. Необходимо е от папката на проекта след неговото разкомпресиране, да бъде изпълнена командата

balena push

където appName е името на приложението, което зададохме още в началото – например, balena push balenaSense.

Ако всичко е направено правилно, след няколко минути информационният програмен прозорец на вашето устройство ще покаже стартираните процеси, по един за всеки програмен компонент:

           InfluxDB, Grafana, Docker  Raspberry Pi

Първия път зареждането може да отнеме няколко минути в зависимост от скоростта на интернет връзката, но след това ще започнат да се зареждат само промените в Docker контейнера и всичко става много бързо.

           InfluxDB, Grafana, Docker  Raspberry Pi

Забележка: когато приложението се стартира за първи път, сензорът около 5 минути извършва инициализация. През това време не се регистрират никакви показания и нищо не се записва в базата данни. През това време приложението ще показва обратно броене до началото на работата и именно това ще се показва в balenaCloud панела:

Когато броенето стигне до нулата, ще излезе съобщението „Starting loop…“, след което данните ще започнат да се прочитат и записват на всеки 10 секунди.

Мониторинг

Една от най-удобните функции на balenaCloud е Public Device URL.

           InfluxDB, Grafana, Docker  Raspberry Pi

Активирайте тази опция и кликнете върху иконката със синята стрелка, за да получите достъп до програмата за мониторинг. Тази препратка може да бъде споделяна и използвана и в смартфона, като по този начин показанията на малката метеорологична станция могат да бъдат прегледано отвсякъде, където има интернет достъп.

           InfluxDB, Grafana, Docker  Raspberry Pi

Ако искате да влезете в Grafana и да опитате всички настройки, то данните на акаунта са admin с парола също admin.

Променете паролата

Ако ще давате публичен достъп до това устройство, силно се препоръчва да се промени паролата за Grafana.

           InfluxDB, Grafana, Docker  Raspberry Pi

Това става от иконката в долния ляв ъгъл на програмния прозорец. При следващо логаване ще бъде поискана нова парола.

Настройки

Интерфейсът на Grafana дава възможност за настройка на всеки параметър чрез кликване върху неговото име, след което се дава възможност за редактиране. Параметрите не се запомнят автоматично и след презареждане на страницата, всичко става както е било. За да бъдат запазени избраните параметри е необходимо да се кликне върху Save в горната част на програмния прозорец.

           InfluxDB, Grafana, Docker  Raspberry Pi

Дадена е възможност и за настройване работата на сензорите, които могат да бъдат от различен вид. Има опция вместо цифри да се изписват букви.

           InfluxDB, Grafana, Docker  Raspberry Pi

 

Описаната малка метеорологична станция може да се използва за измерване на температурата и влажността, както и за контрол на качеството на въздуха, но на практика всичко зависи от избрания сензор, включен към миникомпютъра.

Коментари
Все още няма коментари
Статистика
Прегледи 263
Коментари 0
Рейтинг
Добавена на06 Май 2019
ИзточникKaldata

Тагове
Docker, InfluxDB, Grafana, Raspberry