Мазмұны:

FlowerCare және Nymea менің өсімдіктерді құтқарады: 5 қадам
FlowerCare және Nymea менің өсімдіктерді құтқарады: 5 қадам

Бейне: FlowerCare және Nymea менің өсімдіктерді құтқарады: 5 қадам

Бейне: FlowerCare және Nymea менің өсімдіктерді құтқарады: 5 қадам
Бейне: Бұл гүлдерді тікелей бақшаға себіңіз. Олар жыл сайын жаз бойы гүлдейді 2024, Шілде
Anonim
FlowerCare және Nymea өсімдіктерді құтқару үшін
FlowerCare және Nymea өсімдіктерді құтқару үшін

Менің қолданыстағы ашық көзі ақылды үйге өсімдіктерді күту датчиктерін қосу қолды ластау. Nymea үшін плагиндерді әзірлеу бойынша нұсқаулық.

Тарих

Басқа да көптеген хакерлер мен хакерлер сияқты, мен де проблемадан зардап шегемін, өйткені заттарды бұзу менің көп уақытымды алады, мен кейде өсімдіктерді суаруды ұмытып кетемін. Менің Monstera Deliciosa құрғақ топырақтан тағы бір рет зардап шеккеннен кейін, мен шөлдеген кезде еске салу үшін бұл туралы бірдеңе жасай аламын ба деп шештім.

Интернеттегі жылдам зерттеу менің назарымды Xiaomi FlowerCare -ге аударды, оны MiCare немесе PlantCare деп те атайды. Бұл Bluetooth төмен энергиялы құрылғы және кейбір негізгі зерттеулер көрсеткендей, оның протоколы түсіну оңай сияқты. Xiaomi жалпыға ортақ сипаттамаларды бермейтін сияқты, бірақ бұл құрылғы үшін интернетте әлі де кері инженерия бар. Сондықтан мен солардың біріне тапсырыс беруді шештім.

Бірнеше күннен кейін ол жеткізілді, мен, әрине, онымен бірден ойнай бастадым. Мен онымен бірге келетін қосымшаны қысқаша тексердім, бірақ сіз болжап отырғандай, оны әдепкі баптауда пайдалану ешқашан менің жоспарым болған емес. Әрине, бұл менің ақылды үй қондырғысымен біріктірілуі керек, мұнда сипатталғандай, мен nymea -ды ақылды үйдің шешімі ретінде қолданамын (Иә, сіз тіпті сол жердегі суреттердің бірінде Monstera -ны байқай аласыз:)). Өкінішке орай, nymea бұл сенсорды қолдамады, сондықтан IDE -ді өшіру дұрыс болды.

1 -қадам: плагинге арналған түпнұсқа жүктеледі

Плагинге арналған түпнұсқа жүктелуде
Плагинге арналған түпнұсқа жүктелуде
Плагинге арналған түпнұсқа жүктелуде
Плагинге арналған түпнұсқа жүктелуде
Плагинге арналған түпнұсқа жүктелуде
Плагинге арналған түпнұсқа жүктелуде

Мен жасаған бірінші нәрсе - бұл қолданыстағы Texas Instruments Sensor Tag плагинін көшіру болды, бұл менің ойымша, FlowerCare құрылғысында да жұмыс істеуі керек. Plugininfo.json ішіндегі заттардың негізгі атауын өзгерткеннен кейін және сенсорлық плагин кодының көпшілігін түсіндіргеннен кейін мен жаңа плагиннің қойындысын жүктеуге дайын болдым.

Күтілгендей, жаңалық сенсорды бірден көрсетеді және оны жүйеге қосуға мүмкіндік береді. Әрине, бұл сәтте ол ешқандай маңызды ақпарат бермейді.

2 -қадам: сенсордан деректерді іздеу

Сенсордағы мәліметтерді іздеу
Сенсордағы мәліметтерді іздеу

Кез келген Bluetooth LE құрылғысы сияқты, бірінші кезекте сіз ұсынатын қызметтер мен олардың сипаттамалары туралы білгіңіз келеді. Бір жерде нақты деректер жасырылады. Барлық табылған қызметтерді жылдам басып шығарып, олардың сипаттамаларын басып шығарып, мен Интернеттен тапқан ақпаратты құрылғы шынымен хабарлағанмен салыстыра алатын кез болдым.

void FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice *btDev = static_cast (sender ()); qCDebug (dcFlowerCare ()) << «қызмет көрсету құралдары бар» контроллер ()-> createServiceObject (sensorServiceUuid, бұл); қосылу (m_sensorService, & QLowEnergyService:: stateChanged, this, & FlowerCare:: onSensorServiceStateChanged); қосылу (m_sensorService, & QLowEnergyService:: characterRead, this, & FlowerCare:: onSensorServiceCharacteristicRead); m_sensorService-> discoverDetails (); } void FlowerCare:: onSensorServiceStateChanged (const QLowEnergyService:: ServiceSate & state) {if (state! = QLowEnergyService:: ServiceDiscovered) {қайтару; } foreach (const QLowEnergyCharacteristic & сипаттамасы, m_sensorService-> сипаттамалары ()) {qCDebug (dcFlowerCare ()). nospace () <«<< сипаттамасы.uuid (). toString () <<» («<< сипаттамасы.қол ()) << «Аты:» << сипаттамасы. Аты () << «):» << сипаттамасы. Мәні () << «,» << сипаттамасы.мәні (). ToHex (); foreach (const QLowEnergyDescriptor & дескриптор, сипаттама).descriptors ()) {qCDebug (dcFlowerCare ()). nospace () <«<< descriptor.uuid (). toString () <<» («<< descriptor.handle () <<» Name: «<< descriptor).name () << «):» << descriptor.value () << «,» << descriptor.value (). toHex (); }}}

Микробағдарлама нұсқасы мен батарея деңгейі оңай болды. Мен деректерді тізімдеудің бірінші әрекетінде басылған мәндерді көре алдым. Сенсордың нақты мәндері біршама тереңірек жасырылған, бірақ оны интернеттен алынған мәліметтермен біріктіру оны қайдан табуға болатынын және әсіресе оны қалай оқу керектігін көрсетеді.

void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & сипаттамасы, const QByteArray & value) {qCDebug (dcFlowerCare ()) << «Мінезді оқу» << QString:: сан (сипаттамасы.қол (), 16) темп; qint8 өткізіп жіберу; ағын >> өткізіп жіберу; квинт 32 люкс; ағын >> lux; qint8 ылғалдылығы; ағын >> ылғал; qint16 құнарлылығы; ағын >> құнарлылық; шығару аяқталды (m_batteryLevel, 1.0 * temp / 10, lux, ылғал, құнарлылық); }

Мұны қосқанда, плагин маңызды деректерді шығара бастады.

3 -қадам: Түртуді аяқтау

Аяқталатын жанасулар
Аяқталатын жанасулар

Ол қазір жұмыс істеді, алайда бір мәселе әлі сол жерде қалды. FlowerCare сенсоры, Texas Instruments SensorTag -тан айырмашылығы, Bluetooth байланысын бірнеше секундтан кейін үзеді. Қолдану жағдайын ескере отырып, бұл мәселе емес сияқты, себебі ол қосылуға тырысуға сенімді. Әдетте өсімдік бірнеше минут ішінде бір литр суды сорып алмайтынын ескерсек, үнемі байланыста болу қажет емес сияқты. Сонымен қатар, бұл батареяны айтарлықтай азайтуға мүмкіндік береді. Мен сенсорды әр 20 минут сайын қайта қосатын және одан деректерді алатын PluginTimer қосуды шештім. Егер қандай да бір себептермен сенсор қосылу әрекетіне жауап бермесе, код басқа уақытты қосады, ол сол сәттен бастап деректерді алғанға дейін қайта қосылуға тырысады. Содан кейін ол қайтадан 20 минуттық интервал бойынша деректерді алуға оралады. Егер құрылғы қатарынан екі рет қосылмаса (20 + 1 минуттан кейін), ол жүйеде офлайн деп белгіленеді және бұл туралы пайдаланушыға ескертуге болады.

void DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare *flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << «Сергіту» мекенжайы (); flowerCare-> refreshData (); } else {qCDebug (dcFlowerCare ()) << «Жаңартылмады» мекенжайы () << «Келесі жаңарту» << m_refreshMinutes [flowerCare] << «минуттарда»; } // Егер бізде қосылу әрекеті 2 немесе одан да көп сәтсіз болса, оны ажыратылған деп белгілеңіз, егер (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << «Жаңартылмады» << (m_refreshMinutes [flowerCare] *) -1) <setStateValue (flowerCareConnectedStateTypeId, жалған); }}}

Бұл стратегиямен nymea енді осы сенсордан сенімді деректерді жеткізетін сияқты болды.

4 -қадам: Оны үлкен контекстте қолдану

Оны үлкен контекстте қолдану
Оны үлкен контекстте қолдану
Оны үлкен контекстте қолдану
Оны үлкен контекстте қолдану

Сенсордан мәндерді алу соншалықты пайдалы емес, бірақ мен бұл үшін түпнұсқалық қосымшаны қолдана алар едім. Енді онымен ақылды нәрселер жасайық.

Nymea push хабарландыруларын nymea: қолданбасы орнатылған телефондарға немесе PushBullet арқылы жіберуді қолдайды. Топырақтың ылғалдылығы 15%-дан төмен болған кезде мен өзіме бірнеше хабарландыру жіберуім керек. Оны қолданбада орнату өте оңай. Міндетті шарт ретінде сізге nymea: cloud немесе PushBullet -те тіркелгі қажет. Nymea: бұлтқа негізделген push хабарландырулары үшін nymea: core және nymea: app бағдарламаларында бұлтты қосу жеткілікті. Екеуі де қосылғаннан кейін автоматты түрде хабарландыру пайда болады. PushBullet жүйеге жаңа нәрсе қосуы үшін сіз сол жерден тізімнен PushBullet таба аласыз. Ол сізден PushBullet -ке тіркелу кезінде алатын API кілтін сұрайды. Сізде nymea -да push хабарландыруы бар болса, сіз ереже жасай аласыз.

Әрине, сіз қалаған нәрсені жасай аласыз … Сондай -ақ сенсордың мәнін көрсету үшін шамды қосуға болады немесе сенсордың мәндерін интернетте серверге жіберу үшін HTTP командирі плагинін қолдана аласыз. Менде су клапаны жоқ. ол цифрлық (әлі) басқарылуы мүмкін, бірақ, әрине, егер сізде мұндай нәрсе болса және оны әлі nymea қолдамаса, оған плагин қосу бұған ұқсас болады.

5 -қадам: Қорытынды сөздер

Қорытынды сөздер
Қорытынды сөздер

Flowercare плагині қазірдің өзінде жоғарыда қабылданды, және егер сізде олардың бірі болса, оны nymea -мен қолдануға дайын. Алайда, егер біреу басқа құрылғыларға қолдау қосқысы келсе, бұл мақала қызықты болады деп үміттенемін. Бұл nymea үшін плагинді қалай құруға болатындығы туралы нұсқаулық болуы керек.

Егер сіз бұл қондырғыны үйде жасағыңыз келсе, сізге FlowerCare сенсоры, Raspberry Pi, nymea қауымдастығының бейнесі (оған гүл күтімі плагині кіреді) және nymea: қолданба дүкендерінде қол жетімді. Сондай -ақ, әзірге менің Monstera Deliciosa тағы да бақытты және сіз скриншоттарда көрген боларсыз, мен өзімнің лимон ағашымның денсаулығын қадағалайтын сенсорлардың екіншісін алдым. Бұл үшін мен сыртта аяз болған кезде өзіме хабарландыру жіберемін, сондықтан мен оны қыста қауіпсіз жеткізе аламын.

Ұсынылған: