Orodha ya maudhui:

FlowerCare na Nymea Kuokoa Mimea Yangu: Hatua 5
FlowerCare na Nymea Kuokoa Mimea Yangu: Hatua 5

Video: FlowerCare na Nymea Kuokoa Mimea Yangu: Hatua 5

Video: FlowerCare na Nymea Kuokoa Mimea Yangu: Hatua 5
Video: Anthurium Flowering Tips / Learn Gardening 2024, Novemba
Anonim
FlowerCare na Nymea Kuokoa Mimea Yangu
FlowerCare na Nymea Kuokoa Mimea Yangu

Kupata mikono chafu kwa kuunganisha sensorer za utunzaji wa mimea kwa nyumba yangu iliyopo wazi ya chanzo. Njia ya maendeleo ya programu-jalizi kwa nymea.

Hadithi

Kama wachekeshaji wengine wengi na wadukuzi, mimi pia nina shida kutokana na suala kwamba utapeli juu ya vitu huchukua muda wangu mwingi hivi kwamba mara kwa mara nimesahau kumwagilia mimea yangu. Baada ya Monstera Deliciosa yangu kuugua tena udongo kavu, niliamua kuona ikiwa ninaweza kufanya kitu juu yake kunikumbusha wakati iko na kiu.

Utafiti wa haraka kwenye wavuti ulileta umakini wangu kwa Xiaomi FlowerCare, pia inajulikana kama MiCare au PlantCare. Ni kifaa cha Nishati ya Chini ya Bluetooth na utafiti wa kimsingi ulifunua kwamba itifaki yake inaonekana kuwa rahisi kuelewa. Wakati Xiaomi haionekani kutoa vielelezo vyovyote vya umma, kumekuwa na uhandisi wa nyuma kwenye wavuti kwa kifaa hiki bado. Kwa hivyo niliamua kuagiza moja ya hizo.

Siku chache baadaye ilifikishwa na kwa kweli nilianza kucheza nayo mara moja. Niliangalia kwa kifupi programu inayokuja nayo lakini kama unaweza kudhani, kuitumia katika usanidi wake chaguomsingi haikuwa mpango wangu kamwe. Kwa kweli hii inahitaji kuunganishwa na usanidi wangu uliopo wa nyumba. Kama ilivyoelezewa hapa ninatumia nymea kama suluhisho langu la nyumba nzuri (Ndio, unaweza hata kuona Monstera katika moja ya picha hapo:)). Kwa kusikitisha, nymea haikuunga mkono sensorer hiyo kwa hivyo kurusha IDE ilikuwa sawa.

Hatua ya 1: Kupata Kifurushi cha Programu-jalizi kilichopakiwa

Kupata Kijiti cha Programu-jalizi
Kupata Kijiti cha Programu-jalizi
Kupata Kijiti cha Programu-jalizi
Kupata Kijiti cha Programu-jalizi
Kupata Kijiti cha Programu-jalizi
Kupata Kijiti cha Programu-jalizi

Kwa hivyo jambo la kwanza nililofanya ni kunakili programu-jalizi iliyopo ya Texas Instruments Sensor Tag, ilionekana sawa sawa na ile ambayo nilifikiri inapaswa kufanya kazi kwa kifaa cha FlowerCare pia. Baada ya kubadilisha jina la kimsingi la vitu kwenye plugininfo.json na kutoa maoni mbali zaidi ya nambari ya programu-jalizi ya sensortag nilikuwa tayari kupakia kijiko kipya cha programu-jalizi.

Kama inavyotarajiwa, ugunduzi tayari ungeonyesha kihisi mara moja na kuniruhusu niongeze kwenye mfumo. Kwa kweli haingeweza kutoa data yoyote ya maana kwa wakati huu.

Hatua ya 2: Kupata Takwimu kwenye Sensorer

Kupata Data kwenye Sensor
Kupata Data kwenye Sensor

Kama ilivyo na kifaa chochote cha Bluetooth LE, jambo la kwanza unalotaka kufanya ni kujua juu ya huduma zinazotoa na sifa zao. Mahali fulani hapo data halisi imefichwa. Kwa kuchapisha utatuzi haraka juu ya huduma zote zilizogunduliwa na kuchapisha sifa zao nilikuwa mahali ambapo ningeweza kulinganisha habari niliyoipata kwenye mtandao na kile kifaa kinaripoti kweli.

utupu FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice * btDev = static_cast (mtumaji ()); qCDebug (dcFlowerCare ()) << "wana huduma ya uuids" mtawala () -> kuundaServiceObject (sensorServiceUuid, hii); unganisha (m_sensorService, & QLowEnergyService:: stateChanged, this, & FlowerCare:: onSensorServiceStateChanged); unganisha (m_sensorService, & QLowEnergyService:: tabiaSoma, hii, & FlowerCare:: onSensorServiceCharacteristicRead); m_sensorService-> DiscoverDetails (); } utupu FlowerCare:: onSensorServiceStateChanged (const QLowEnergyService:: ServiceSate & state) {if (state! = QLowEnergyService:: ServiceDiscovered) {kurudi; } foreach (const QLowEnergyCharacteristic & tabia, m_sensorService-> sifa ()) {qCDebug (dcFlowerCare ()). nafasi () <"<< tabia.uuid (). toString () <<" ("<< characteristic.handle () << "Jina:" << tabia.name () << "):" << tabia.thamani () << "," << tabia.thamani (). ToHex (); foreach (const QLowEnergyDescriptor & descriptor, tabia.descriptors ()) {qCDebug (dcFlowerCare ()). nafasi () <"<< descriptor.uuid (). toString () <<" ("<< descriptor.handle () <<" Name: "<< descriptor).name () << "):" << descriptor.value () << "," << descriptor.value (). toHex (); }}}

Toleo la firmware na kiwango cha betri kilikuwa rahisi. Tayari nilikuwa naweza kuona maadili kulingana na yaliyochapishwa katika jaribio hili la kwanza la kuorodhesha data. Maadili halisi ya sensorer yamefichwa kidogo ndani, lakini kuichanganya na data kutoka kwa wavuti mara moja ilielekeza wapi kuipata na haswa jinsi ya kuisoma.

utupu FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & characteristic, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "Characteristic read" << QString:: number (characteristic.handle (), 16) temp; ruka qint8; mkondo >> ruka; quint32 lux; mkondo >> lux; unyevu wa qint8; mkondo >> unyevu; uzazi wa qint16; mkondo >> uzazi; toa kumaliza (m_batteryLevel, 1.0 * temp / 10, lux, unyevu, uzazi); }

Kuweka hii pamoja, programu-jalizi tayari ilianza kutoa data yenye maana.

Hatua ya 3: Kumaliza Kugusa

Kumaliza Kugusa
Kumaliza Kugusa

Kwa hivyo ilifanya kazi sasa, hata hivyo, toleo moja bado lilikuwa limebaki hapo. Sensor ya FlowerCare ingekuwa, kinyume na SensorTag ya Texas Instruments, itashuka muunganisho wa Bluetooth baada ya sekunde chache. Kuzingatia kesi ya utumiaji, hii haionekani kuwa suala kwani inaaminika kabisa kujibu majaribio ya unganisho. Kwa kuwa kawaida mmea hainyeshi lita moja ya maji ndani ya dakika, lakini badala ya siku, haionekani kuwa ya lazima kuendelea kushikamana kila wakati. Pia hii ingeweza kumaliza betri sana. Kwa hivyo niliamua kuongeza PluginTimer ambayo ingeunganisha tena sensor kila dakika 20 na itafute data kutoka kwake. Ikiwa, kwa sababu fulani, sensor haitajibu jaribio la unganisho, nambari itaanza kipima muda kingine ambacho kinajaribu kuunganisha kila dakika kutoka hapo hadi hapo itaweza kupata data. Kisha ingeweza kurudi kuchukua data kwenye muda wa dakika 20 tena. Ikiwa kifaa kinashindwa kuungana mara mbili mfululizo (ikimaanisha, baada ya dakika 20 + 1), ingewekwa alama nje ya mtandao kwenye mfumo na mtumiaji anaweza kufahamishwa juu yake.

batili DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare * flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << "Refresh" address (); mauaCare-> refreshData (); } mwingine {qCDebug (dcFlowerCare ()) << "Haifurahishi" anwani () << "Pumzika tena katika" << m_refreshMinutes [flowerCare] << "dakika"; } // Ikiwa tulikuwa na majaribio 2 au zaidi yaliyoshindwa ya unganisho, weka alama kuwa imekatika ikiwa (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Imeshindwa kuonyesha upya kwa" << (m_refreshMinutes [flowerCare] * -1) <setStateValue (flowerCareConnectedStateTypeId, uwongo); }}}

Kwa mkakati huu nymea sasa ilionekana kutoa data ya kuaminika kabisa kutoka kwa sensa hii.

Hatua ya 4: Kuitumia katika Muktadha Mkubwa

Kuitumia kwa Muktadha Mkubwa
Kuitumia kwa Muktadha Mkubwa
Kuitumia katika Muktadha Mkubwa
Kuitumia katika Muktadha Mkubwa

Kupata tu maadili kutoka kwa sensa sio muhimu sana ingawa, ningeweza pia kutumia programu asili kwa hiyo. Sasa wacha tufanye mambo mazuri nayo.

Nymea inasaidia kutuma arifa za kushinikiza, ama kwa simu zilizo na nymea: programu iliyosanikishwa, au kupitia PushBullet. Kwa hivyo jambo la dhahiri kufanya ni kujipatia arifa za kushinikiza wakati wowote unyevu wa mchanga unapoanguka chini ya 15%. Ni rahisi kuweka hiyo kwenye programu. Kama sharti unahitaji akaunti katika nymea: wingu au kwenye PushBullet. Kwa nymea: arifa za kushinikiza kwa wingu inatosha kuwezesha nymea: wingu kwenye nymea: msingi na katika nymea: programu. Mara tu wawili wanapounganishwa, jambo la arifa litaonekana moja kwa moja. Kwa PushBullet ongeza kitu kipya kwenye mfumo, utapata PushBullet kwenye orodha hapo. Itakuuliza ufunguo wa API unayopata wakati wa kujisajili na PushBullet. Mara tu unapokuwa na taarifa ya kushinikiza katika nymea, unaweza kuunda sheria.

Kwa kweli unaweza kufanya chochote kingine unachotaka… Inaweza pia kuwasha taa ili kuonyesha maadili ya sensa, au tumia programu-jalizi ya kamanda wa HTTP kuchapisha maadili ya seva kwenye wavuti kwa mfano. Sina valve ya maji ambayo inaweza kudhibitiwa kwa dijiti (bado) lakini kwa kweli, ikiwa unayo kitu kama hicho na haijaungwa mkono na nymea bado, na kuongeza programu-jalizi kwa hiyo itakuwa sawa na hii.

Hatua ya 5: Maneno ya Kufunga

Maneno ya Kufunga
Maneno ya Kufunga

Programu-jalizi ya utunzaji wa maua imekubaliwa mto kwa sasa na ikiwa unayo moja wapo tayari iko tayari kutumiwa na nymea sasa. Walakini, natumahi nakala hii inaweza kuwa ya kupendeza ikiwa mtu anataka kuongeza msaada kwa vifaa vingine. Inapaswa kuwa safari ya jinsi ya kujenga programu-jalizi yako kwa nymea.

Ikiwa unataka kujenga usanidi huu nyumbani kwako, unachohitaji ni sensa ya Maua, Raspberry Pi, picha ya jamii ya nymea (inajumuisha programu-jalizi ya utunzaji wa maua kwa sasa), na nymea: programu ambayo inapatikana katika duka za programu. Pia, hadi sasa Monstera Deliciosa yangu anafurahi tena na kama unavyoweza kuona kwenye viwambo vya skrini, nimepata moja ya sensorer hizo kufuatilia afya ya mti wangu wa limao pia. Kwa hiyo mimi ninajitumia arifu ya kushinikiza wakati wowote inapoganda nje ili niweze kuileta wakati wa baridi salama.

Ilipendekeza: