Turinys:
- 1 veiksmas: įkelkite papildinį
- 2 žingsnis: suraskite duomenis jutiklyje
- 3 žingsnis: Apdailos darbai
- 4 žingsnis: naudokite jį didesniame kontekste
- 5 žingsnis: Uždarykite žodžius
Video: „FlowerCare“ir „Nymea“mano augalams gelbėti: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Nešvarios rankos prijungiant augalų priežiūros jutiklius prie esamo atviro kodo išmaniųjų namų. Apžvalga apie „nymea“papildinių kūrimą.
Istorija
Kaip ir daugelis kitų meistrų ir įsilaužėlių, aš taip pat kenčiu nuo to, kad įsilaužimas į daiktus užima tiek laiko, kad kartais pamirštu palaistyti augalus. Po to, kai mano „Monstera Deliciosa“dar kartą nukentėjo nuo sausos dirvos, nusprendžiau išsiaiškinti, ar galiu ką nors padaryti, kad tai primintų, kai ištroškęs.
Greitas tyrimas internete atkreipė mano dėmesį į „Xiaomi FlowerCare“, dar žinomą kaip „MiCare“arba „PlantCare“. Tai „Bluetooth“mažai energijos naudojantis įrenginys, o kai kurie pagrindiniai tyrimai atskleidė, kad jo protokolas atrodo gana lengvai suprantamas. Nors atrodo, kad „Xiaomi“nepateikia jokių viešų specifikacijų, internete dar buvo nemažai šio įrenginio atvirkštinės inžinerijos. Taigi nusprendžiau užsisakyti vieną iš jų.
Po kelių dienų jis buvo pristatytas ir, žinoma, iškart pradėjau su juo žaisti. Trumpai peržiūrėjau su juo pateiktą programą, tačiau, kaip jūs tikriausiai galite atspėti, jos naudojimas numatytojoje sąrankoje niekada nebuvo mano planas. Žinoma, tai turi būti integruota į mano išmaniųjų namų sąranką. Kaip ir čia aprašyta, aš naudoju „nymea“kaip savo protingų namų sprendimą (Taip, jūs netgi galite pastebėti „Monstera“vienoje iš nuotraukų:)). Deja, „nymea“dar nepalaikė šio jutiklio, todėl buvo įjungtas tam tikras IDE.
1 veiksmas: įkelkite papildinį
Taigi pirmas dalykas, kurį padariau, buvo nukopijuoti esamą „Texas Instruments Sensor Tag“papildinį, jis atrodė pakankamai panašus į tai, kas, mano manymu, turėtų veikti ir „FlowerCare“įrenginyje. Po pagrindinio „plugininfo.json“daiktų pervadinimo ir komentavimo apie didžiąją dalį „sensortag“įskiepio kodo buvau pasiruošęs įkelti naują papildinį.
Kaip ir tikėtasi, atradimas jau iškart parodys jutiklį ir leis man jį pridėti prie sistemos. Žinoma, šiuo metu jis nepateiks jokių reikšmingų duomenų.
2 žingsnis: suraskite duomenis jutiklyje
Kaip ir naudojant bet kurį „Bluetooth LE“įrenginį, pirmiausia turite sužinoti apie jo teikiamas paslaugas ir jų savybes. Kažkur ten faktiniai duomenys yra paslėpti. Greitai derindamas spausdinimo ciklą per visas atrastas paslaugas ir spausdindamas jų charakteristikas, aš galėjau palyginti informaciją, kurią radau internete, su tuo, ką iš tikrųjų praneša įrenginys.
void FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice *btDev = static_cast (siuntėjas ()); qCDebug (dcFlowerCare ()) << "turėti paslaugą uuids"
Firmware versija ir akumuliatoriaus lygis buvo lengvi. Jau pirmą kartą bandydamas išvardyti duomenis galėjau pamatyti atitinkamas vertes. Faktinės jutiklių vertės yra paslėptos šiek tiek giliau, tačiau jas derinant su duomenimis iš interneto iškart nurodoma, kur ją rasti ir ypač kaip ją perskaityti.
void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & Charakteristika, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "Charakteristinis skaitymas" << QString:: skaičius (charakteristika. rankena (), 16) temp; qint8 praleisti; srautas >> praleisti; kvint32 liuksų; srautas >> liuksas; qint8 drėgmė; upelis >> drėgmė; qint16 vaisingumas; upelis >> vaisingumas; emit baigtas (m_batteryLevel, 1,0 * temp / 10, liuksai, drėgmė, vaisingumas); }
Sudėjus tai, papildinys jau pradėjo gaminti reikšmingus duomenis.
3 žingsnis: Apdailos darbai
Taigi iš esmės tai pavyko dabar, tačiau vienas klausimas vis tiek liko. „FlowerCare“jutiklis, priešingai nei „Texas Instruments SensorTag“, po kelių sekundžių nutrauktų „Bluetooth“ryšį. Tačiau, atsižvelgiant į naudojimo atvejį, tai neatrodo problema, nes ji yra gana patikima reaguojant į bandymus prisijungti. Atsižvelgiant į tai, kad paprastai augalas neišgeria litro vandens per kelias minutes, o greičiau per dienas, neatrodo, kad būtina nuolat palaikyti ryšį. Be to, tai labai išsekintų akumuliatorių. Taigi nusprendžiau pridėti „PluginTimer“, kuris kas 20 minučių vėl prijungtų jutiklį ir gautų iš jo duomenis. Jei dėl kokių nors priežasčių jutiklis nereaguoja į bandymą prisijungti, kodas paleidžia kitą laikmatį, kuris nuo to momento kiekvieną minutę bando prisijungti iš naujo, kol pavyksta gauti duomenis. Tada vėl būtų imami duomenys apie 20 minučių intervalą. Jei įrenginiui nepavyksta prisijungti du kartus iš eilės (tai reiškia, po 20 + 1 minučių), jis sistemoje bus pažymėtas neprisijungus ir vartotojas gali būti apie tai įspėtas.
void DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare *flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << "Atnaujinamas" adresas (); flowerCare-> refreshData (); } else {qCDebug (dcFlowerCare ()) << "Neatsinaujina" adresas () << "Kitas atnaujinimas" << m_refreshMinutes [flowerCare] << "minutes"; } // Jei turėjome du ar daugiau nesėkmingų bandymų prisijungti, pažymėkite jį kaip atjungtą, jei (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Nepavyko atnaujinti" << (m_refreshMinutes [flowerCare] * -1) <setStateValue (flowerCareConnectedStateTypeId, false); }}}
Naudojant šią strategiją, „nymea“dabar pateikė visiškai patikimus šio jutiklio duomenis.
4 žingsnis: naudokite jį didesniame kontekste
Tačiau tiesiog gauti vertes iš jutiklio nėra labai naudinga, aš taip pat galėjau tam naudoti originalią programą. Dabar padarykime su juo keletą protingų dalykų.
„Nymea“palaiko tiesioginių pranešimų siuntimą į telefonus su „nymea“: įdiegta programa arba per „PushBullet“. Taigi akivaizdus dalykas, kurį reikia padaryti, yra atsiųsti tiesioginius pranešimus, kai dirvožemio drėgmė nukrenta žemiau 15%. Tai gana lengva nustatyti programoje. Kaip būtina sąlyga jums reikia paskyros „nymea“: debesyje arba „PushBullet“. „Nymea“: debesies pagrindu teikiamiems tiesioginiams pranešimams pakanka įjungti „nymea: cloud“„nymea: core“ir „nymea: app“. Kai tik abu bus prijungti, automatiškai atsiras pranešimas. Jei norite „PushBullet“sistemoje pridėti naują dalyką, ten esančiame sąraše rasite „PushBullet“. Jis paprašys jūsų API rakto, kurį gausite prisiregistruodami prie „PushBullet“. Kai „nymea“turėsite tiesioginio pranešimo dalyką, galite sukurti taisyklę.
Žinoma, galite daryti ką tik norite… Taip pat galite įjungti šviesą, kad atspindėtų jutiklio vertes, arba naudoti HTTP vado papildinį, kad, pavyzdžiui, paskelbtumėte jutiklio vertes į serverį internete. Neturiu vandens vožtuvo kurį galima valdyti skaitmeniniu būdu (dar), bet, žinoma, jei turite tokį dalyką ir to dar nepalaiko „nymea“, pridėjus papildinį, jis būtų panašus į šį.
5 žingsnis: Uždarykite žodžius
Gėlių priežiūros papildinys jau buvo priimtas prieš srovę ir, jei turite vieną iš jų, dabar jis yra paruoštas naudoti su „nymea“. Tačiau tikiuosi, kad šis straipsnis gali būti įdomus, jei kas nors nori pridėti kitų įrenginių palaikymą. Tai turėtų būti instrukcija, kaip sukurti savo „nymea“papildinį.
Jei norite tiesiog sukurti šią sąranką savo namuose, viskas, ko jums reikia, yra „FlowerCare“jutiklis, „Raspberry Pi“, „nymea“bendruomenės įvaizdis (į jį jau įtrauktas gėlių priežiūros papildinys) ir „nymea“: programa, kurią galima rasti programų parduotuvėse. Be to, kol kas mano „Monstera Deliciosa“vėl džiaugiasi ir, kaip jau matėte ekrano kopijose, įsigijau sau antrą iš tų jutiklių, kad galėčiau sekti ir mano citrinmedžio sveikatą. Dėl to aš siunčiu tiesioginį pranešimą, kai lauke užšąla, kad galėčiau saugiai jį pernešti žiemą.
Rekomenduojamas:
Mano CR10 naujas gyvenimas: SKR pagrindinė plokštė ir „Marlin“: 7 žingsniai
Mano CR10 naujas gyvenimas: SKR pagrindinė plokštė ir Marlin: Mano standartinė MELZI plokštė buvo negyva ir man reikėjo skubiai pakeisti, kad mano CR10 būtų gyvas. Pirmas žingsnis, pasirinkite pakaitinę plokštę, todėl pasirinkau „Bigtreetech skr v1.3“yra 32 bitų plokštė su TMC2208 tvarkyklėmis (palaikanti UART režimą
Otto Bot („Aš pavadinau mano smaigalį“): 5 žingsniai
Otto Bot (aš pavadinau mano smaigalį): Tai paprastas projektas, kurį beveik kiekvienas gali padaryti, kad sukurtų paprastą vaikščiojantį robotą
„ELEGOO Kit Lab“arba kaip palengvinti mano, kaip kūrėjo, gyvenimą: 5 žingsniai (su nuotraukomis)
ELEGOO Kit Lab arba Kaip palengvinti mano, kaip kūrėjo, gyvenimą: Projekto tikslai Daugelis iš mūsų turi problemų dėl maketo aplink UNO valdiklius. Dažnai komponentų prijungimas tampa sudėtingas naudojant daugelį komponentų. Kita vertus, programavimas naudojant „Arduino“gali būti sudėtingas ir gali pareikalauti daug
Nešiojamas „Black+Decker“dulkių siurblių taisymas - „Aspirador De Mano Dustbuster Litio“16,2 Wh talpinantį „Acicn Ciclónica“. „Modelo DVJ315J“: 5 žingsniai (su nuotraukomis)
Nešiojamas „Black+Decker“dulkių siurblių taisymas - „Aspirador De Mano Dustbuster Litio“16,2 Wh talpinantį „Acicn Ciclónica“. „Modelo DVJ315J“: galite išleisti +70 Eur (dolerių ar lygiavertę valiutą) už puikų nešiojamąjį dulkių siurblį, o po kelių mėnesių ar metų jis neveikia taip gerai … Taip, jis vis dar veikia, bet mažiau dirbti ilgiau nei 1 minutę ir tai nieko verta. Reikia pakartotinai
Mano klaviatūra Mano rankos: 8 žingsniai (su paveikslėliais)
Mano klaviatūra Mano rankos: Aš naudoju visiškai naują „Epilog“lazerinį pjoviklį, kurį „Instructables“neseniai gavo lazeriu, kad ant mano nešiojamojo kompiuterio klaviatūros būtų išgraviruotas mano rankų vaizdas … visam laikui. Dabar tai panaikina jūsų „pasidaryk pats“stiliaus garantiją! Aš padėjau lazeriu daugiau nešiojamųjų kompiuterių nei dauguma, nes padedu