Satura rādītājs:

FlowerCare un Nymea manu augu glābšanai: 5 soļi
FlowerCare un Nymea manu augu glābšanai: 5 soļi

Video: FlowerCare un Nymea manu augu glābšanai: 5 soļi

Video: FlowerCare un Nymea manu augu glābšanai: 5 soļi
Video: Soybean Harvest Hard Working Farmers #satisfying #shot 2024, Jūlijs
Anonim
FlowerCare un Nymea, lai glābtu manus augus
FlowerCare un Nymea, lai glābtu manus augus

Rokas kļūst netīras, pieslēdzot augu kopšanas sensorus manai esošajai atvērtā pirmkoda viedajai mājai. Pārskats par nymea spraudņu izstrādi.

Stāsts

Tāpat kā daudzi citi viltotāji un hakeri, es arī ciešu no tā, ka uzlaušana uz lietām aizņem tik daudz mana laika, ka es laiku pa laikam aizmirstu laistīt savus augus. Pēc tam, kad mana Monstera Deliciosa atkal cieta no sausas augsnes, es nolēmu noskaidrot, vai es varu kaut ko darīt lietas labā, lai atgādinātu, kad tas ir izslāpis.

Ātrs pētījums tīmeklī piesaistīja manu uzmanību Xiaomi FlowerCare, kas pazīstams arī kā MiCare vai PlantCare. Tā ir Bluetooth zemas enerģijas ierīce, un daži pamata pētījumi atklāja, ka tās protokols, šķiet, ir diezgan viegli saprotams. Lai gan šķiet, ka Xiaomi nesniedz nekādas publiskas specifikācijas, internetā šai ierīcei vēl ir bijis diezgan daudz reversās inženierijas. Tāpēc es nolēmu pasūtīt vienu no tiem.

Dažas dienas vēlāk tas tika piegādāts, un, protams, es uzreiz sāku ar to spēlēties. Es īsi pārbaudīju lietotni, kas tai pievienota, bet, kā jūs droši vien varat uzminēt, tās izmantošana noklusējuma iestatījumos nekad nebija mans plāns. Protams, tas ir jāintegrē ar manu esošo viedās mājas iestatījumu. Kā arī šeit aprakstīts, es izmantoju nymea kā savu viedās mājas risinājumu (Jā, jūs pat varat pamanīt Monstera vienā no attēliem:)). Diemžēl nymea vēl neatbalstīja šo sensoru, tāpēc bija jāiededzina daži IDE.

1. darbība: ielādējiet spraudņa atveri

Ielādēt spraudņa atveri
Ielādēt spraudņa atveri
Ielādēt spraudņa atveri
Ielādēt spraudņa atveri
Ielādēt spraudņa atveri
Ielādēt spraudņa atveri

Tātad pirmā lieta, ko es izdarīju, bija nokopēt esošo Texas Instruments Sensor Tag spraudni, tas šķita pietiekami līdzīgs tam, kas, manuprāt, vajadzētu darboties arī FlowerCare ierīcei. Pēc plugininfo.json lietu pamata pārdēvēšanas un lielākās daļas sensortag spraudņa koda komentēšanas es biju gatavs ielādēt jauno spraudņa nepilnību.

Kā gaidīts, atklājums jau uzreiz parādītu sensoru un ļautu man to pievienot sistēmai. Protams, tas šobrīd neradītu nekādus nozīmīgus datus.

2. darbība. Datu atrašana uz sensora

Datu atrašana uz sensora
Datu atrašana uz sensora

Tāpat kā jebkurai Bluetooth LE ierīcei, pirmā lieta, ko vēlaties darīt, ir uzzināt par tās piedāvātajiem pakalpojumiem un to īpašībām. Kaut kur tur faktiskie dati ir paslēpti. Ātri atkļūdojot drukājot visu atklāto pakalpojumu un izdrukājot to īpašības, es nonācu pie vietas, kur varēju salīdzināt internetā atrasto informāciju ar to, ko ierīce faktiski ziņo.

void FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice *btDev = static_cast (sūtītājs ()); qCDebug (dcFlowerCare ()) << "ir pakalpojums uuids" kontrolieris ()-> createServiceObject (sensorServiceUuid, šis); connect (m_sensorService, & QLowEnergyService:: stateChanged, this, & FlowerCare:: onSensorServiceStateChanged); connect (m_sensorService, & QLowEnergyService:: raksturojumsLasīt šo, & FlowerCare:: onSensorServiceCharacteristicRead); m_sensorService-> findDetails (); } void FlowerCare:: onSensorServiceStateChanged (const QLowEnergyService:: ServiceSate & state) {if (state! = QLowEnergyService:: ServiceDiscovered) {return; } foreach (const QLowEnergyCharacteristic & raksturojums, m_sensorService-> raksturlielumi ()) {qCDebug (dcFlowerCare ()). nospace () <"<< raksturojums.uuid (). toString () <<" ("<< raksturlielums. rokturis () << "Nosaukums:" << raksturojums.nosaukums () << "):" << raksturlielums.vērtība () << "," << raksturīga.vērtība (). ToHex (); foreach (const QLowEnergyDescriptor & deskriptors, raksturojums.descriptors ()) {qCDebug (dcFlowerCare ()). nospace () <"<< descriptor.uuid (). toString () <<" ("<< descriptor.handle () <<" Name: "<< deskriptors.name () << "):" << descriptor.value () << "," << descriptor.value (). toHex (); }}}

Programmaparatūras versija un akumulatora uzlādes līmenis bija vienkāršs. Jau šajā pirmajā datu uzskaitīšanas mēģinājumā es varēju redzēt atbilstošās vērtības. Faktiskās sensora vērtības ir paslēptas mazliet dziļāk, taču, apvienojot to ar datiem no interneta, uzreiz tika norādīts, kur to atrast un jo īpaši to lasīt.

void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & raksturlielums, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "Raksturīgs lasījums" << QString:: numurs (raksturojums.rokturis (), 16) temp; qint8 izlaist; straume >> izlaist; quint32 lux; straume >> lukss; qint8 mitrums; straume >> mitrums; qint16 auglība; straume >> auglība; emit pabeigts (m_batteryLevel, 1,0 * temp / 10, lux, mitrums, auglība); }

Saliekot to kopā, spraudnis jau sāka ražot nozīmīgus datus.

3. solis: apdares darbi

Apdares darbi
Apdares darbi

Tātad tas būtībā strādāja tagad, tomēr viens jautājums joprojām tika atstāts. FlowerCare sensors, pretēji Texas Instruments SensorTag, pēc dažām sekundēm pārtrauks Bluetooth savienojumu. Tomēr, ņemot vērā lietošanas gadījumu, tas, šķiet, nav problēma, jo tas ir diezgan uzticams, reaģējot uz savienojuma mēģinājumiem. Ņemot vērā, ka parasti iekārta neuzsūc litru ūdens dažu minūšu laikā, bet gan dienu laikā, šķiet, ka nav nepieciešams pastāvīgi uzturēt savienojumu. Tas arī ļoti iztukšotu akumulatoru. Tāpēc es nolēmu pievienot PluginTimer, kas ik pēc 20 minūtēm atkārtoti pievienotu sensoru un iegūtu no tā datus. Ja kāda iemesla dēļ sensors nereaģētu uz savienojuma mēģinājumu, kods sāks citu taimeri, kas mēģina no jauna izveidot savienojumu katru minūti no šī brīža, līdz tam izdodas iegūt datus. Tad atkal atgrieztos, lai iegūtu datus par 20 minūšu intervālu. Ja ierīcei neizdodas izveidot savienojumu divas reizes pēc kārtas (tas nozīmē, pēc 20 + 1 minūtes), tā sistēmā tiks atzīmēta bezsaistē un lietotājs par to var tikt brīdināts.

void DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare *flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << "Atsvaidzinoša" adrese (); flowerCare-> refreshData (); } cits {qCDebug (dcFlowerCare ()) << "Neatjauno" adrese () << "Nākamā atsvaidzināšana pēc" << m_refreshMinutes [flowerCare] << "minūtes"; } // Ja mums bija divi vai vairāki neveiksmīgi savienojuma mēģinājumi, atzīmējiet to kā atvienotu, ja (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Neizdevās atsvaidzināt" << (m_refreshMinutes [flowerCare] * -1) <setStateValue (flowerCareConnectedStateTypeId, false); }}}

Izmantojot šo stratēģiju, šķiet, ka nymea tagad sniedz pilnīgi uzticamus datus no šī sensora.

4. darbība. Izmantojiet to plašākā kontekstā

Izmantojot to plašākā kontekstā
Izmantojot to plašākā kontekstā
Izmantojot to plašākā kontekstā
Izmantojot to plašākā kontekstā

Tikai vērtību iegūšana no sensora tomēr nav tik noderīga, es tam varēju izmantot arī sākotnējo lietotni. Tagad darīsim dažas gudras lietas ar to.

Nymea atbalsta push paziņojumu sūtīšanu uz tālruņiem, kuros ir instalēta lietotne nymea: lietotne vai izmantojot PushBullet. Tāpēc acīmredzams ir nosūtīt sev push paziņojumus ikreiz, kad augsnes mitrums nokrītas zem 15%. To ir diezgan viegli iestatīt lietotnē. Kā priekšnoteikums jums ir nepieciešams konts nymea: mākonis vai PushBullet. Nymea: uz mākoņiem balstītiem push paziņojumiem pietiek, lai iespējotu nymea: mākoni vietnē nymea: core un nymea: app. Tiklīdz abi ir savienoti, automātiski parādīsies paziņojumu lieta. Lai PushBullet sistēmā pievienotu jaunu lietu, tur esošajā sarakstā atradīsit PushBullet. Tas lūgs jums API atslēgu, ko saņemat, reģistrējoties PushBullet. Tiklīdz jums ir push paziņojumu lieta nymea, varat izveidot kārtulu.

Protams, jūs varat darīt visu, ko vēlaties … Varat arī ieslēgt gaismu, lai atspoguļotu sensora vērtības, vai izmantot HTTP komandiera spraudni, lai, piemēram, publicētu sensora vērtības serverī internetā. Man nav ūdens vārsta ko var kontrolēt digitāli (vēl), bet, protams, ja jums ir tāda lieta un to vēl neatbalsta nymea, spraudņa pievienošana tam būtu diezgan līdzīga.

5. solis: Vārdu aizvēršana

Noslēguma vārdi
Noslēguma vārdi

Ziedu kopšanas spraudnis līdz šim ir pieņemts, un, ja jums ir kāds no tiem, tas ir gatavs lietošanai ar nymea. Tomēr es ceru, ka šis raksts varētu būt interesants, ja kāds vēlas pievienot atbalstu citām ierīcēm. Tam vajadzētu būt aprakstam, kā izveidot savu spraudni nymea.

Ja vēlaties tikai izveidot šo iestatījumu savās mājās, viss, kas jums nepieciešams, ir FlowerCare sensors, Raspberry Pi, kopienas nymea tēls (līdz šim tas ietver ziedu kopšanas spraudni) un nymea: lietotne, kas ir pieejama lietotņu veikalos. Turklāt līdz šim mana Monstera Deliciosa atkal ir laimīga, un, kā jūs, iespējams, redzējāt ekrānuzņēmumos, esmu ieguvis sev otru no šiem sensoriem, lai izsekotu arī mana citronkoka veselību. Šim nolūkam es sūtu pašpiegādes paziņojumu ikreiz, kad ārā sasalst, lai es varētu to droši pārvest ziemā.

Ieteicams: