Kazalo:
- 1. korak: Naložite vtičnik
- 2. korak: Iskanje podatkov na senzorju
- 3. korak: Zaključni dotiki
- 4. korak: Uporaba v večjem kontekstu
- 5. korak: Zaključek besed
Video: FlowerCare in Nymea za reševanje mojih rastlin: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Umazati roke pri priklopu senzorjev za nego rastlin na moj obstoječi odprtokodni pametni dom. Navodila za razvoj vtičnikov za nymea.
Zgodba
Tako kot mnogi drugi loparji in hekerji, tudi jaz trpim zaradi težave, ki mi vlečenje stvari vzame toliko časa, da občasno pozabim zalivati svoje rastline. Potem ko je moja Monstera Deliciosa spet trpela zaradi suhe zemlje, sem se odločil, da vidim, ali lahko kaj storim glede tega, da me opomni, ko sem žejen.
Hitra raziskava na spletu me je opozorila na Xiaomi FlowerCare, znan tudi kot MiCare ali PlantCare. Gre za napravo z nizko porabo energije Bluetooth in nekatere osnovne raziskave so pokazale, da je njen protokol precej enostaven za razumevanje. Čeprav Xiaomi ne ponuja nobenih javnih specifikacij, je bilo v internetu za to napravo še kar nekaj obratnega inženiringa. Zato sem se odločil naročiti enega od teh.
Nekaj dni kasneje je bil dostavljen in seveda sem se takoj začel igrati z njim. Na kratko sem preveril aplikacijo, ki je priložena, vendar, kot verjetno ugibate, uporaba v privzeti nastavitvi nikoli ni bila moj načrt. Seveda je to treba integrirati z mojo obstoječo nastavitvijo pametnega doma. Kot je opisano tukaj, uporabljam nymea kot svojo rešitev za pametni dom (ja, Monstero lahko opazite celo na eni od slik tam:)). Na žalost nymea še ni podprla tega senzorja, zato je bilo treba sprožiti nekaj IDE.
1. korak: Naložite vtičnik
Tako sem najprej naredil kopijo obstoječega vtičnika Texas Instruments Sensor Tag, ki se mi je zdel dovolj podoben tistemu, za kar sem domneval, da bi moral delovati tudi za napravo FlowerCare. Po osnovnem preimenovanju stvari v plugininfo.json in komentiranju večine kode vtičnika sensortag sem bil pripravljen naložiti nov čep vtičnika.
Po pričakovanjih bi odkritje že takoj pokazalo senzor in mi omogočilo, da ga dodam v sistem. Seveda na tej točki ne bi prinesel nobenih pomembnih podatkov.
2. korak: Iskanje podatkov na senzorju
Kot pri vseh napravah Bluetooth LE je prva stvar, ki jo želite narediti, da se pozanimate o storitvah, ki jih ponuja, in njihovih značilnostih. Nekje tam so dejanski podatki skriti. S hitrim tiskalniškim odpravljanjem napak, ki je preletel vse odkrite storitve in natisnil njihove lastnosti, sem bil na mestu, kjer sem lahko primerjal informacije, ki sem jih našel na internetu, s tem, kar naprava dejansko poroča.
void FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice *btDev = static_cast (pošiljatelj ()); qCDebug (dcFlowerCare ()) << "have service uuids"
Različica vdelane programske opreme in raven napolnjenosti baterije sta bili enostavni. Že pri prvem poskusu naštevanja podatkov sem lahko videl ustrezne vrednosti. Dejanske vrednosti senzorjev so v njem skrite nekoliko globlje, vendar so z združevanjem s podatki iz interneta takoj pokazale, kje jih najdete in zlasti, kako jih prebrati.
void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & karakteristika, const QByteArray & vrednost) {qCDebug (dcFlowerCare ()) << "Značilno branje" << QString:: številka (značilna.handle (), 16) temp; preskok qint8; tok >> preskoči; quint32 luksov; tok >> lux; qint8 vlaga; tok >> vlaga; qint16 plodnost; tok >> rodnost; oddajajo končane (m_batteryLevel, 1,0 * temp / 10, lux, vlaga, plodnost); }
Če to združimo, je vtičnik že začel proizvajati pomembne podatke.
3. korak: Zaključni dotiki
Tako je v bistvu zdaj delovalo, vendar je eno vprašanje še vedno ostalo tam. Senzor FlowerCare bi v nasprotju s Texas Instruments SensorTag po nekaj sekundah prekinil povezavo Bluetooth. Glede na primer uporabe se zdi, da to ni problem, saj je precej zanesljiv pri odzivanju na poskuse povezave. Glede na to, da običajno rastlina ne sesa litra vode v nekaj minutah, ampak v nekaj dneh, se ne zdi nujno, da ostanemo ves čas povezani. Tudi to bi precej izpraznilo baterijo. Zato sem se odločil, da dodam PluginTimer, ki bi senzor ponovno povezal vsakih 20 minut in iz njega pribral podatke. Če se iz nekega razloga senzor ne odzove na poskus povezave, se koda zažene z drugim časovnikom, ki se od te točke poskuša znova povezati vsako minuto, dokler ne uspe pridobiti podatkov. Nato bi se znova vrnili k pridobivanju podatkov v 20 -minutnem intervalu. Če se naprava ne poveže dvakrat zapored (to pomeni po 20 + 1 minutah), bo v sistemu označena kot brez povezave, uporabnik pa je lahko o tem opozorjen.
void DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare *flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << "Osvežujoč" naslov (); flowerCare-> osvežiData (); } else {qCDebug (dcFlowerCare ()) << "Ne osvežuje" naslova () << "Naslednja osvežitev v" << m_refreshMinutes [flowerCare] << "minute"; } // Če smo imeli 2 ali več neuspešnih poskusov povezave, ga označimo kot prekinjenega, če (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Ni bilo mogoče osvežiti za" << (m_refreshMinutes [flowerCare] * -1) <setStateValue (flowerCareConnectedStateTypeId, false); }}}
S to strategijo je zdaj zdelo, da nymea prinaša popolnoma zanesljive podatke s tega senzorja.
4. korak: Uporaba v večjem kontekstu
Samo pridobivanje vrednosti iz senzorja ni tako koristno, za to bi lahko uporabil tudi prvotno aplikacijo. Zdaj pa naredimo nekaj pametnih stvari z njim.
Nymea podpira pošiljanje potisnih obvestil bodisi na telefone z nameščeno aplikacijo nymea: ali prek PushBullet. Zato je očitno, da si pošljem nekaj potisnih obvestil, kadar vlaga v tleh pade pod 15%. To je precej enostavno nastaviti v aplikaciji. Predpogoj je, da potrebujete račun v nymea: cloud ali na PushBullet. Za potisna obvestila na osnovi nymea: cloud je dovolj, da omogočite nymea: cloud na nymea: core in v nymea: app. Takoj, ko sta oba povezana, se samodejno prikaže obvestilo. Če želite PushBullet dodati novo stvar v sistem, boste na seznamu našli PushBullet. Od vas bo zahteval ključ API, ki ga dobite ob prijavi z PushBullet. Ko imate v nymei potisno obvestilo, lahko ustvarite pravilo.
Seveda lahko naredite karkoli želite … Lahko tudi prižgete luč, da odraža vrednosti senzorjev, ali uporabite vtičnik poveljnika HTTP, da na primer objavite vrednosti senzorjev na strežniku v internetu. Nimam ventila za vodo ki jih je mogoče (še) digitalno nadzirati, seveda pa, če imate kaj takega in ga nymea še ne podpira, bi bilo dodajanje vtičnika za to precej podobno kot to.
5. korak: Zaključek besed
Vtičnik za nego cvetja je bil do zdaj sprejet navzgor in če imate enega od teh, je zdaj pripravljen za uporabo z nymeo. Upam pa, da bi bil ta članek zanimiv, če želi kdo dodati podporo za druge naprave. To bi morala biti predstavitev, kako zgraditi lasten vtičnik za nymea.
Če želite to nastavitev samo zgraditi doma, potrebujete le senzor FlowerCare, Raspberry Pi, podobo skupnosti nymea (do sedaj vključuje vtičnik za nego cvetja) in aplikacijo nymea:, ki je na voljo v trgovinah z aplikacijami. Tudi moja Monstera Deliciosa je zaenkrat spet srečna in kot ste morda videli na posnetkih zaslona, sem si priskrbel še enega od teh senzorjev za spremljanje zdravja moje limonine drevesa. Za to si pošiljam potisno obvestilo, kadar zunaj zmrzne, da ga lahko varno prenesem skozi zimo.
Priporočena:
Arduino - Robot za reševanje labirinta (MicroMouse) Stenski robot: 6 korakov (s slikami)
Arduino | Robot za reševanje labirinta (MicroMouse) Wall Naslednji robot: Dobrodošli, jaz sem Isaac in to je moj prvi robot "Striker v1.0". Ta robot je bil zasnovan za reševanje preprostega labirinta. Na tekmovanju smo imeli dva labirinta in robota jih je lahko identificiral. Vse druge spremembe v labirintu lahko zahtevajo spremembo
Opozorilo o vodi - naprava za reševanje vašega čolna: 5 korakov (s slikami)
Opozorilo o vodi - naprava za reševanje vašega čolna: Če ste lastnik čolna, obstaja trdno udobje, da čoln končno spravite na suho. Tam ne more potoniti. Povsod drugje se sooča z nenehno bitko, da bi premagala težnjo, da bi zdrsnila pod valove in izginila. Pozimi tukaj, na žalost
Reševanje tabel resnic: 10 korakov
Reševanje tabel resnic: Tabela resnic je način za vizualizacijo vseh rezultatov problema. Ta niz navodil je namenjen ljudem, ki se začenjajo ukvarjati z diskretno matematiko. Danes bomo vadili s primerom težave, ki je specifična za ta navodila. Vi boste
Kdo je pri mojih vratih? Projekt PIR senzorja gibanja/senzorja dosega: 5 korakov
Kdo je pri mojih vratih? Projekt senzorja gibanja PIR/senzorja dosega: Naš projekt je namenjen zaznavanju gibanja prek PIR in senzorjev razdalje. Koda Arduino bo oddajala vizualni in zvočni signal, ki bo uporabniku povedal, da je nekdo v bližini. Koda MATLAB bo poslala e -poštni signal, ki bo uporabnika opozoril, da je nekdo v bližini. Ta naprava
Mojih deset najbolj uporabnih nasvetov in zvijač: 9 korakov (s slikami)
Mojih deset najbolj uporabnih nasvetov in zvijač: Na tleh je 6 centimetrov snega, v hiši pa ste zaprti. Za trenutek ste izgubili motivacijo za delo z laserskim rezalnikom kovin, ki ga vodi GPS. Na vašem najljubšem spletnem mestu ni bilo novih projektov, ki bi navdušili vašo notranjost