Talaan ng mga Nilalaman:

FlowerCare at Nymea upang iligtas ang Aking mga Halaman: 5 Hakbang
FlowerCare at Nymea upang iligtas ang Aking mga Halaman: 5 Hakbang

Video: FlowerCare at Nymea upang iligtas ang Aking mga Halaman: 5 Hakbang

Video: FlowerCare at Nymea upang iligtas ang Aking mga Halaman: 5 Hakbang
Video: 🔥斗破苍穹缘起篇!萧炎的至仁至善感染药老!被当众退婚的少年走向成为炎帝之路!【斗破苍穹 Battle Through the Heavens】 2024, Hulyo
Anonim
FlowerCare at Nymea upang Iligtas ang Aking Mga Halaman
FlowerCare at Nymea upang Iligtas ang Aking Mga Halaman

Ang pagkuha ng maruming kamay sa pag-hook ng mga sensor ng pangangalaga ng halaman sa aking mayroon nang bukas na mapagkukunang matalinong tahanan. Isang walkthrough sa pag-unlad ng plugin para sa nymea.

Ang kwento

Tulad ng maraming iba pang mga tinker at hacker, naghihirap din ako mula sa isyu na ang pag-hack sa mga bagay ay tumatagal ng labis sa aking oras na paminsan-minsan ay nakakalimutan kong tubig ang aking mga halaman. Matapos ang aking Monstera Deliciosa na muling nagdusa mula sa tuyong lupa, nagpasya akong tingnan kung may magagawa ako tungkol dito upang mapaalalahanan ako kapag nauuhaw ito.

Ang isang mabilis na pagsasaliksik sa web ay nagdala ng aking pansin sa Xiaomi FlowerCare, na kilala rin bilang MiCare o PlantCare. Ito ay isang aparatong Bluetooth Low Energy at isiniwalat ng ilang pangunahing pananaliksik na ang protocol nito ay tila napakadaling maintindihan. Habang ang Xiaomi ay tila hindi nagbibigay ng anumang mga pampublikong pananaw, nagkaroon ng kaunting reverse engineering sa internet para sa aparatong ito. Kaya't napagpasyahan kong mag-order ng isa sa mga iyon.

Makalipas ang ilang araw naihatid ito at syempre nagsimula na akong maglaro dito kaagad. Sandali kong sinuri ang app na kasama nito ngunit maaaring marahil hulaan mo, ang paggamit nito sa default na pag-setup ay hindi kailanman naging plano ko. Siyempre kailangan itong isama sa aking mayroon nang smart home setup. Tulad ng inilarawan dito ginagamit ko ang nymea bilang aking smart home solution (Oo, maaari mo ring makita ang Monstera sa isa sa mga larawan doon:)). Nakalulungkot, hindi pa sinusuportahan ng nymea ang sensor na iyon kaya't ang pagpapaputok ng ilang IDE ay maayos.

Hakbang 1: Pagkuha ng isang Plugin Stub Loaded

Pagkuha ng isang Plugin Stub Loaded
Pagkuha ng isang Plugin Stub Loaded
Pagkuha ng isang Plugin Stub Loaded
Pagkuha ng isang Plugin Stub Loaded
Pagkuha ng isang Plugin Stub Loaded
Pagkuha ng isang Plugin Stub Loaded

Kaya unang bagay na ginawa ko ay kopyahin ang mayroon nang plugin ng Texas Instruments Sensor Tag, tila sapat na katulad sa inaakala kong dapat gumana para sa aparato ng FlowerCare din. Matapos ang pangunahing pagpapalit ng pangalan ng mga bagay sa plugininfo.json at pagbibigay ng puna sa karamihan ng code ng sensortag plugin handa na akong mag-load ng bagong plugin plugin.

Tulad ng inaasahan, ipapakita na agad ng pagtuklas ang sensor at papayagan akong idagdag ito sa system. Siyempre hindi ito makakagawa ng anumang makabuluhang data sa puntong ito.

Hakbang 2: Paghahanap ng Data sa Sensor

Paghahanap ng Data sa Sensor
Paghahanap ng Data sa Sensor

Tulad ng anumang aparatong Bluetooth LE, ang unang bagay na nais mong gawin ay upang malaman ang tungkol sa mga serbisyong inaalok nito at kanilang mga katangian. Sa isang lugar doon ay nakatago ang aktwal na data. Sa isang mabilis na pag-print ng pag-print ng debug sa lahat ng mga natuklasan na serbisyo at pag-print ng kanilang mga katangian ako ay nasa puntong maaari kong ihambing ang impormasyong natagpuan ko sa internet sa kung ano ang talagang naiulat ng aparato.

void FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice * btDev = static_cast (sender ()); qCDebug (dcFlowerCare ()) << "may service uuids" controller () -> createServiceObject (sensorServiceUuid, ito); kumonekta (m_sensorService, & QLowEnergyService:: stateChanged, this, & FlowerCare:: onSensorServiceStateChanged); kumonekta (m_sensorService, & QLowEnergyService:: katangianRead, ito, at FlowerCare:: onSensorServiceCharacteristicRead); m_sensorService-> DiscoverDetails (); } void FlowerCare:: onSensorServiceStateChanged (const QLowEnergyService:: ServiceSate & state) {if (state! = QLowEnergyService:: ServiceDiscovered) {return; } maaga << "Pangalan:" << katangian.name () << "):" << katangian.value () << "," << katangian.value (). ToHex (); maaga.descriptors ()) {qCDebug (dcFlowerCare ()). nospace () <"<< deskriptor.uuid (). toString () <<" ("<< deskriptor.handle () <<" Pangalan: "<< deskriptor.name () << "):" << deskriptor.value () << "," << deskriptor.value (). toHex (); }}}

Ang bersyon ng firmware at ang antas ng baterya ay madali. Nakita ko na ang mga naaayon na halagang nakalimbag sa kauna-unahang pagtatangka nitong ilista ang data. Ang aktwal na mga halaga ng sensor ay nakatago nang medyo malalim doon, ngunit ang pagsasama nito sa data mula sa internet ay agad na itinuro kung saan ito hahanapin at lalo na kung paano ito basahin.

void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & character, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "Characteristic read" << QString:: number (characterist.handle (), 16) temp; laktawan ang qint8; stream >> laktawan; quint32 lux; stream >> lux; qint8 kahalumigmigan; stream >> kahalumigmigan; qint16 pagkamayabong; stream >> pagkamayabong; emit tapos (m_batteryLevel, 1.0 * temp / 10, lux, kahalumigmigan, pagkamayabong); }

Pinagsama ito, nagsimula na ang plugin upang makabuo ng makabuluhang data.

Hakbang 3: Pagtatapos ng Mga Touch

Mga Pagtatapos ng Mga Touch
Mga Pagtatapos ng Mga Touch

Kaya't karaniwang gumagana ito ngayon, subalit, isang isyu ang natira pa rin doon. Ang sensor ng FlowerCare ay, taliwas sa Texas Instruments SensorTag, ihuhulog ang koneksyon ng Bluetooth pagkatapos ng ilang segundo. Kung isasaalang-alang ang kaso ng paggamit bagaman, tila hindi ito isang isyu dahil ito ay lubos na maaasahan sa pagtugon sa mga pagtatangka sa koneksyon. Dahil sa normal na ang isang halaman ay hindi sumisipsip ng isang litro ng tubig sa loob ng ilang minuto, ngunit sa halip na mga araw, tila hindi kinakailangan na manatiling konektado sa lahat ng oras. Gayundin ito ay maubos ang baterya ng maraming. Kaya't nagpasya akong magdagdag ng isang PluginTimer na muling kumonekta sa sensor tuwing 20 minuto at kukuha ng data mula rito. Kung, sa ilang kadahilanan, ang sensor ay hindi tumugon sa pagtatangka ng koneksyon, magsisimula ang code ng isa pang timer na sumusubok na kumonekta muli bawat minuto mula sa puntong iyon hanggang sa namamahala ito upang makuha ang data. Pagkatapos ay babalik ito upang makuha ang data sa pagitan ng 20 minuto muli. Kung nabigo ang aparato na kumonekta nang dalawang beses sa isang hilera (ibig sabihin, pagkatapos ng 20 + 1 minuto), mamarkahan ito nang offline sa system at maaaring maalerto ang gumagamit tungkol dito.

void DevicePluginFlowercare:: onPluginTimer () {precach (FlowerCare * flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << "Refreshing" address (); bulaklakCare-> refreshData (); } iba pa {qCDebug (dcFlowerCare ()) << "Hindi nagre-refresh" address () << "Susunod na pag-refresh sa" << m_refreshMinutes [flowerCare] << "minuto"; } // Kung mayroon kaming 2 o higit pang nabigong mga pagtatangka sa koneksyon, markahan ito bilang naka-disconnect kung (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Nabigong i-refresh para sa" << (m_refreshMinutes [flowerCare] * -1) <setStateValue (flowerCareConnectedStateTypeId, false); }}}

Sa diskarteng ito nymea ngayon ay tila naghahatid ng perpektong maaasahang data mula sa sensor na ito.

Hakbang 4: Gamit Ito sa Mas Malaking Konteksto

Paggamit nito sa Mas Malaking Konteksto
Paggamit nito sa Mas Malaking Konteksto
Paggamit nito sa Mas Malaking Konteksto
Paggamit nito sa Mas Malaking Konteksto

Ang pagkuha lamang ng mga halaga mula sa sensor ay hindi gaanong kapaki-pakinabang, maaari ko ring magamit ang orihinal na app para doon. Ngayon gawin natin ang ilang mga matalinong bagay dito.

Sinusuportahan ng Nymea ang pagpapadala ng mga notification ng push, alinman sa mga teleponong may naka-install na nymea: app, o sa pamamagitan ng PushBullet. Kaya't ang malinaw na bagay na dapat gawin ay magpadala sa aking sarili ng ilang mga abiso sa pagtulak tuwing ang kahalumigmigan ng lupa ay bumaba sa ibaba 15%. Mas madaling i-set up iyon sa app. Bilang paunang kinakailangan kailangan mo ng isang account sa nymea: cloud o sa PushBullet. Para sa nymea: mga alerto sa push based cloud ay sapat na upang paganahin nymea: cloud sa nymea: core at sa nymea: app. Sa sandaling konektado ang pareho, isang bagay na abiso ang awtomatikong lilitaw. Para sa PushBullet magdagdag ng isang bagong bagay sa system, mahahanap mo ang PushBullet sa listahan doon. Hihilingin sa iyo ang API key na makukuha mo kapag nag-sign up sa PushBullet. Kapag mayroon kang isang bagay na push notification sa nymea, maaari kang lumikha ng isang panuntunan.

Siyempre maaari mong gawin ang anumang nais mo … Maaari ring i-on ang ilang ilaw upang maipakita ang mga halaga ng sensor, o gamitin ang plugin ng HTTP kumander upang ma-post ang mga halaga ng sensor sa isang server sa internet halimbawa. Wala akong balbula sa tubig na maaaring kontrolin nang digital (pa) ngunit syempre, kung mayroon kang ganoong bagay at hindi pa ito sinusuportahan ng nymea, pagdaragdag ng isang plugin para sa katulad na sa halip.

Hakbang 5: Mga Salitang Nagsasara

Pangwakas na Salita
Pangwakas na Salita

Ang plugin ng pag-aalaga ng bulaklak ay tinanggap sa ngayon sa agos at kung mayroon kang isa sa mga iyon handa na itong magamit sa nymea ngayon. Gayunpaman, inaasahan kong ang artikulong ito ay maaaring maging interesado kung ang isang tao ay nais na magdagdag ng suporta para sa iba pang mga aparato. Dapat itong maging isang walkthrough sa kung paano bumuo ng iyong sariling plugin para sa nymea.

Kung nais mong itayo lamang ang pag-set up na ito sa iyong bahay, ang kailangan mo lang ay ang sensor ng FlowerCare, isang Raspberry Pi, ang imahe ng komunidad ng nymea (kasama rito ang plugin ng pangangalaga ng bulaklak sa ngayon), at nymea: app na magagamit sa mga app store. Gayundin, sa ngayon ang aking Monstera Deliciosa ay masaya muli at tulad ng nakita mo sa mga screenshot, nakuha ko ang aking sarili na isang pangalawa sa mga sensor na iyon upang subaybayan ang kalusugan ng aking puno ng lemon din. Para sa isang iyon ay pinapadalhan ko ang aking sarili ng abiso sa tuwing ito ay nagyeyelo sa labas upang mailabas ko ito nang ligtas sa taglamig.

Inirerekumendang: