Sisällysluettelo:
- Vaihe 1: Lisäosien lataaminen
- Vaihe 2: Tietojen etsiminen anturista
- Vaihe 3: Viimeistely
- Vaihe 4: Käytä sitä laajemmassa kontekstissa
- Vaihe 5: Sanojen sulkeminen
Video: FlowerCare ja Nymea pelastamaan kasvejani: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Käsien likaantuminen kasvienhoitotunnistimien liittämisestä olemassa olevaan avoimen lähdekoodin älykkääseen kotiin. Käsittely laajennusten kehittämisestä nymealle.
Tarina
Kuten monet muut piilottelijat ja hakkerit, kärsin minäkin siitä ongelmasta, että asioiden hakkerointi vie niin paljon aikani, että unohdan toisinaan kastella kasvejani. Kun Monstera Deliciosa kärsi jälleen kuivasta maaperästä, päätin katsoa, voinko tehdä asialle jotain muistuttaakseni sitä, kun on jano.
Nopea tutkimus verkossa toi huomioni Xiaomi FlowerCareen, joka tunnetaan myös nimellä MiCare tai PlantCare. Se on Bluetooth Low Energy -laite, ja jotkut perustutkimukset paljastivat, että sen protokolla näyttää olevan melko helppo ymmärtää. Vaikka Xiaomi ei näytä tarjoavan mitään julkisia tietoja, Internetissä on vielä ollut melko vähän käänteistä suunnittelua tälle laitteelle. Joten päätin tilata yhden niistä.
Muutamaa päivää myöhemmin se toimitettiin ja tietysti aloin leikkiä sen kanssa heti. Tarkistin lyhyesti sen mukana tulevan sovelluksen, mutta kuten luultavasti arvaatte, sen käyttäminen oletusasetuksissa ei koskaan ollut suunnitelmani. Tietenkin tämä on integroitava olemassa olevaan älykkään kodin määritykseeni, kuten myös tässä on kuvattu, käytän nymeaa älykkään kodin ratkaisuna (Kyllä, voit jopa havaita Monsteran yhdessä kuvista:)). Valitettavasti nymea ei vielä tukenut tätä anturia, joten jonkin IDE: n käynnistäminen oli kunnossa.
Vaihe 1: Lisäosien lataaminen
Joten ensimmäinen asia, jonka tein, oli kopioida olemassa oleva Texas Instruments Sensor Tag -laajennus, se vaikutti riittävän samanlaiselta kuin oletin, että sen pitäisi toimia myös FlowerCare -laitteessa. Kun plugininfo.json -tiedoston asiat on nimetty uudelleen ja kommentoitu pois suurin osa sensortag -laajennuksen koodista, olin valmis lataamaan uuden lisäosan tynkän.
Kuten odotettiin, löytö näyttää jo anturin heti ja antaa minun lisätä sen järjestelmään. Se ei tietenkään tuota mitään merkityksellistä tietoa tässä vaiheessa.
Vaihe 2: Tietojen etsiminen anturista
Kuten minkä tahansa Bluetooth LE -laitteen kanssa, ensimmäinen asia, jonka haluat tehdä, on selvittää sen tarjoamat palvelut ja niiden ominaisuudet. Jossain siellä todelliset tiedot on piilotettu. Nopean virheenkorjaustulostussilmukan avulla kaikki löydetyt palvelut ja tulostusominaisuudet tulin siihen pisteeseen, jossa voisin verrata Internetistä löytämiäni tietoja siihen, mitä laite todella raportoi.
mitätön FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice *btDev = static_cast (lähettäjä ()); qCDebug (dcFlowerCare ()) << "on palvelu uuids"
Laiteohjelmistoversio ja akun varaustaso olivat helppoja. Voisin nähdä vastaavat arvot tulostettuna tässä ensimmäisessä tietojen luettelointikokeilussa. Todelliset anturiarvot ovat piilossa hieman syvemmälle sinne, mutta niiden yhdistäminen Internetin tietoihin osoitti heti, mistä se löytyy ja erityisesti miten se luetaan.
void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & feature, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "Characteristic read" << QString:: numero (ominaisuus.kahva (), 16) lämpötila; qint8 ohita; stream >> ohita; quint32 lux; virta >> lux; qint8 kosteus; virtaus >> kosteus; qint16 hedelmällisyys; virta >> hedelmällisyys; emit valmis (m_batteryLevel, 1,0 * temp / 10, lux, kosteus, hedelmällisyys); }
Yhdistämällä tämän, laajennus alkoi jo tuottaa merkityksellistä dataa.
Vaihe 3: Viimeistely
Joten se toimi periaatteessa nyt, mutta yksi asia jäi vielä siihen. Toisin kuin Texas Instruments SensorTag, FlowerCare -anturi katkaisi Bluetooth -yhteyden muutaman sekunnin kuluttua. Käyttötapa huomioon ottaen tämä ei kuitenkaan näytä olevan ongelma, koska se on melko luotettava vastaamaan yhteysyrityksiin. Kun otetaan huomioon, että normaalisti kasvi ei ime litraa vettä muutamassa minuutissa, vaan päivissä, ei vaikuta välttämättömältä pysyä yhteydessä koko ajan. Tämä myös tyhjentää akun melko paljon. Joten päätin lisätä PluginTimerin, joka yhdistäisi anturin uudelleen 20 minuutin välein ja noutaisi tietoja siitä. Jos anturi jostain syystä ei reagoi yhteysyritykseen, koodi käynnistää uuden ajastimen, joka yrittää muodostaa yhteyden uudelleen joka minuutti siitä hetkestä lähtien, kunnes se onnistuu saamaan tiedot. Sitten se palaisi hakemaan tietoja uudelleen 20 minuutin välein. Jos laite ei muodosta yhteyttä kahdesti peräkkäin (eli 20 + 1 minuutin kuluttua), se merkitään järjestelmässä offline -tilaan ja käyttäjää voidaan varoittaa siitä.
void DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare *flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << "Päivitetään" osoite (); flowerCare-> refreshData (); } else {qCDebug (dcFlowerCare ()) << "Ei virkistävä" osoite () << "Seuraava päivitys" << m_refreshMinutes [flowerCare] << "minuuttia"; } // Jos meillä oli kaksi tai useampia epäonnistuneita yhteysyrityksiä, merkitse se katkeamattomaksi, jos (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Virhe päivitys:" << (m_refreshMinutes [flowerCare] * -1) <setStateValue (flowerCareConnectedStateTypeId, false); }}}
Tällä strategialla nymea näytti nyt toimittavan täysin luotettavia tietoja tästä anturista.
Vaihe 4: Käytä sitä laajemmassa kontekstissa
Pelkästään arvojen saaminen anturista ei kuitenkaan ole kovin hyödyllistä, olisin voinut käyttää myös alkuperäistä sovellusta. Tehdään nyt fiksuja asioita sen kanssa.
Nymea tukee push -ilmoitusten lähettämistä joko puhelimiin, joissa on nymea: sovellus asennettuna, tai PushBulletin kautta. Joten ilmeinen asia on lähettää itselleni push -ilmoituksia aina, kun maaperän kosteus laskee alle 15%. Sen asettaminen sovellukseen on melko helppoa. Edellytyksenä on, että tarvitset joko tilin nymea: cloud -palvelussa tai PushBullet -palvelussa. Nymea: pilvipohjaiset push -ilmoitukset riittävät ottamaan nymea: cloud käyttöön nymea: core: ssa ja nymeassa: app. Heti kun molemmat on yhdistetty, ilmoitus tulee automaattisesti näkyviin. Jos haluat lisätä PushBullet -järjestelmään uuden asian, löydät PushBulletin luettelosta. Se pyytää sinulta API -avaimen, jonka saat rekisteröityessäsi PushBullet -palveluun. Kun olet saanut push -ilmoituksen nymeassa, voit luoda säännön.
Voit tietysti tehdä mitä haluat… Voit myös sytyttää jonkin valon anturien arvojen heijastamiseksi tai käyttää HTTP -komentajalaajennusta esimerkiksi anturien arvojen lähettämiseen esimerkiksi Internetissä olevalle palvelimelle. jota voidaan hallita digitaalisesti (vielä), mutta tietysti, jos sinulla on sellainen asia ja nymea ei vielä tue sitä, lisäosan lisääminen tähän olisi melko samanlainen kuin tämä.
Vaihe 5: Sanojen sulkeminen
Kukkahoidon laajennus on hyväksytty jo nyt ja jos sinulla on jokin niistä, se on valmis käytettäväksi nymean kanssa nyt. Toivon kuitenkin, että tämä artikkeli saattaa kiinnostaa, jos joku haluaa lisätä tukea muille laitteille. Sen pitäisi olla opas kuinka rakentaa oma laajennus nymealle.
Jos haluat vain rakentaa tämän kokoonpanon kotiisi, tarvitset vain FlowerCare -anturin, Raspberry Pi: n, nymea -yhteisökuvan (se sisältää nyt kukkahoidon laajennuksen) ja nymea: -sovelluksen, joka on saatavana sovelluskaupoista. Lisäksi toistaiseksi Monstera Deliciosa on onnellinen jälleen, ja kuten olet ehkä nähnyt kuvakaappauksissa, olen hankkinut itselleni toisen näistä antureista seuratakseni myös sitruunapuuni terveyttä. Lähetän itselleni push -ilmoituksen aina, kun ulkona on pakkasta, jotta voin viedä sen talven läpi turvallisesti.
Suositeltava:
DIY Raspberry Pi Downloadbox: 4 vaihetta
DIY Raspberry Pi Downloadbox: Löydätkö usein itsesi lataamasta suuria tiedostoja, kuten elokuvia, torrentteja, kursseja, TV -sarjoja jne., Niin tulet oikeaan paikkaan. Tässä Instructable -ohjelmassa muuttaisimme Raspberry Pi zero -laitteemme latauskoneeksi. Joka voi ladata minkä tahansa
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen