Tartalomjegyzék:
- 1. lépés: A beépülő modul betöltése
- 2. lépés: Adatok keresése az érzékelőn
- 3. lépés: Utolsó simítások
- 4. lépés: Használata nagyobb környezetben
- 5. lépés: Záró szavak
Videó: FlowerCare és Nymea a növényeim megmentéséhez: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Piszkosul kezem a növényápolási érzékelők csatlakoztatásával a meglévő nyílt forráskódú intelligens otthonomhoz. Áttekintés a nymea plugin -fejlesztéséről.
A történet
Mint sok más bütykölő és hacker, én is szenvedek attól a problémától, hogy a dolgok feltörése annyi időt vesz igénybe, hogy időnként elfelejtem öntözni a növényeimet. Miután a Monstera Deliciosa ismét száraz talajt szenvedett, úgy döntöttem, hátha tudok tenni valamit ellene, hogy emlékeztessen, amikor szomjas vagyok.
Az interneten végzett gyors kutatás felhívta a figyelmemet a Xiaomi FlowerCare -re, más néven MiCare -re vagy PlantCare -re. Ez egy alacsony energiafogyasztású Bluetooth -eszköz, és néhány alapkutatás azt mutatta, hogy a protokollja meglehetősen könnyen érthető. Bár úgy tűnik, hogy a Xiaomi nem nyújt nyilvános specifikációkat, az interneten még elég sok fordított tervezés történt ennek az eszköznek. Ezért úgy döntöttem, hogy megrendelek egyet közülük.
Néhány nappal később kézbesítették, és természetesen azonnal játszani kezdtem vele. Röviden megnéztem a hozzá tartozó alkalmazást, de ahogy valószínűleg sejtheti, az alapértelmezett beállításban való használata soha nem volt tervem. Természetesen ezt integrálni kell a meglévő intelligens otthoni beállításaimba. Amint azt itt is leírtam, a nymea -t használom intelligens otthoni megoldásként (Igen, még a Monstera -t is megtalálhatja az egyik képen:)). Sajnos a nymea még nem támogatta ezt az érzékelőt, így az IDE bekapcsolása megfelelő volt.
1. lépés: A beépülő modul betöltése
Tehát először le kellett másolnom a meglévő Texas Instruments Sensor Tag bővítményt, ami eléggé hasonlított ahhoz, amit feltételeztem, hogy a FlowerCare eszköz esetében is működnie kell. A plugininfo.json -ban található dolgok alapvető átnevezése és a sensortag -bővítmény kódjainak többségének megjegyzése után készen álltam az új bővítménycsonk betöltésére.
A várakozásoknak megfelelően a felfedezés már azonnal megmutatná az érzékelőt, és lehetővé tenné, hogy hozzáadjam a rendszerhez. Természetesen ezen a ponton semmilyen érdemi adat nem keletkezik.
2. lépés: Adatok keresése az érzékelőn
Mint minden Bluetooth LE eszköz, az első dolog, amit meg kell tennie, hogy tájékozódjon az általa kínált szolgáltatásokról és azok jellemzőiről. Valahol ott vannak elrejtve a tényleges adatok. Az összes felfedezett szolgáltatás gyors hibakeresési nyomtatásával és azok jellemzőinek kinyomtatásával azon a ponton voltam, ahol összehasonlíthattam az interneten talált információkat az eszköz tényleges jelentéseivel.
void FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice *btDev = static_cast (sender ()); qCDebug (dcFlowerCare ()) << "have service uuids"
A firmware verzió és az akkumulátor töltöttségi szintje egyszerű volt. Már az adatok felsorolásának első kísérletében láttam a megfelelő értékeket. A tényleges érzékelőértékek egy kicsit mélyebben vannak elrejtve, de az internetről származó adatokkal kombinálva azonnal rámutattak, hogy hol találjuk meg, és különösen hogyan kell olvasni.
void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & jellemző, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "Characteristic read" << QString:: szám (jellemző.fogantyú (), 16) temp; qint8 kihagyás; folyam >> kihagyás; quint32 lux; patak >> lux; qint8 nedvesség; patak >> nedvesség; qint16 termékenység; patak >> termékenység; kibocsátás kész (m_batteryLevel, 1,0 * temp / 10, lux, nedvesség, termékenység); }
Ezt összevonva a plugin már elkezdett értelmes adatokat előállítani.
3. lépés: Utolsó simítások
Tehát alapvetően most is működött, azonban egy kérdés még mindig ott maradt. A FlowerCare érzékelő a Texas Instruments SensorTaggal ellentétben néhány másodperc múlva megszakítja a Bluetooth -kapcsolatot. Figyelembe véve a használati esetet, ez azonban nem tűnik problémának, mivel meglehetősen megbízhatóan reagál a csatlakozási kísérletekre. Tekintettel arra, hogy egy növény általában nem szív fel egy liter vizet perceken belül, hanem napok alatt, nem tűnik szükségesnek, hogy állandóan kapcsolatban maradjon. Ezenkívül ez nagyon lemeríti az akkumulátort. Ezért úgy döntöttem, hogy hozzáadok egy PluginTimer -t, amely 20 percenként újracsatlakoztatja az érzékelőt, és lekéri az adatokat. Ha valamilyen oknál fogva az érzékelő nem reagál a csatlakozási kísérletre, a kód elindít egy másik időzítőt, amely ettől kezdve minden percben megpróbál újra csatlakozni, amíg sikerül lekérnie az adatokat. Ezután ismét visszanyerné a 20 perces intervallum adatainak lekérését. Ha az eszköz egymás után kétszer nem tud csatlakozni (azaz 20 + 1 perc elteltével), akkor a rendszer offline állapotban lesz megjelölve a rendszerben, és figyelmeztetheti a felhasználót erre.
void DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare *flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << "Frissítés" cím (); flowerCare-> refreshData (); } else {qCDebug (dcFlowerCare ()) << "Nem frissítő" cím () << "Következő frissítés a következőben:" << m_refreshMinutes [flowerCare] << "perc"; } // Ha két vagy több sikertelen csatlakozási kísérletünk volt, akkor jelölje meg, hogy megszakadt, ha (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Nem sikerült frissíteni a következőhöz:" << (m_refreshMinutes [flowerCare] * -1) <setStateValue (flowerCareConnectedStateTypeId, false); }}}
Ezzel a stratégiával most úgy tűnt, hogy a nymea tökéletesen megbízható adatokat szolgáltat erről az érzékelőről.
4. lépés: Használata nagyobb környezetben
Csak az értékek lekérése az érzékelőből nem túl hasznos, de az eredeti alkalmazást is használhattam volna erre. Most tegyünk néhány okos dolgot vele.
A Nymea támogatja a push értesítések küldését vagy a nymea: telefonra telepített telefonokra: az alkalmazás telepítve van, vagy a PushBulleten keresztül. Tehát a nyilvánvaló dolog az, hogy küldök magamnak néhány push értesítést, amikor a talaj nedvessége 15%alá esik. Ezt meglehetősen könnyű beállítani az alkalmazásban. Előfeltételként vagy szüksége van a nymea: cloud vagy PushBullet fiókra. Nymea: felhőalapú push értesítések esetén elegendő a nymea: cloud engedélyezése a nymea: core és a nymea: app alkalmazásban. Amint mindkettő csatlakoztatva van, automatikusan megjelenik egy értesítési dolog. Ha a PushBullet új elemet szeretne hozzáadni a rendszerhez, akkor a PushBullet listát találja. A rendszer kérni fogja az API -kulcsot, amelyet akkor kap, amikor regisztrál a PushBullet szolgáltatással. Ha már rendelkezik push értesítéssel a nymeában, létrehozhat egy szabályt.
Természetesen bármit megtehet, amit csak akar … Bekapcsolhat egy lámpát is, hogy tükrözze az érzékelő értékeit, vagy használhatja a HTTP parancsnok bővítményt az érzékelőértékek közzétételére például egy internetes szerverre. Nincs vízszelepem amely digitálisan (még) vezérelhető, de természetesen, ha van ilyenje, és ezt még nem támogatja a nymea, akkor ehhez egy plugin hozzáadása meglehetősen hasonló lenne.
5. lépés: Záró szavak
A virágápoló beépülő modult már elfogadták a gyártási szakaszban, és ha van ilyen, akkor készen áll a nymea -val való használatra. Remélem azonban, hogy ez a cikk érdekes lehet, ha valaki támogatást szeretne adni más eszközökhöz. Ez egy áttekintés arról, hogyan lehet saját plugint készíteni a nymea számára.
Ha csak otthon szeretné megépíteni ezt a beállítást, akkor csak a FlowerCare szenzorra, a Raspberry Pi -re, a nymea közösségi képre (ez már tartalmazza a virágápolási bővítményt) és a nymea: alkalmazásra, amely elérhető az alkalmazásboltokban. Ezenkívül eddig a Monstera Deliciosa ismét boldog, és amint azt a képernyőképeken is láthattad, szereztem magamnak egy másodikat ezekből az érzékelőkből, hogy a citromfám egészségét is nyomon kövessem. Ezért küldök magamnak push értesítést, ha kint fagy, hogy biztonságosan átvihessem a telet.
Ajánlott:
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Akusztikus levitáció az Arduino Uno-val Lépésről lépésre (8 lépés): 8 lépés
Akusztikus lebegés az Arduino Uno-val Lépésről lépésre (8 lépés): ultrahangos hangátvivők L298N Dc női adapter tápegység egy egyenáramú tűvel Arduino UNOBreadboard és analóg portok a kód konvertálásához (C ++)
Élő 4G/5G HD videó streamelés DJI drónról alacsony késleltetéssel [3 lépés]: 3 lépés
Élő 4G/5G HD videó streaming a DJI Drone-tól alacsony késleltetéssel [3 lépés]: Az alábbi útmutató segít abban, hogy szinte bármilyen DJI drónról élő HD minőségű videó streameket kapjon. A FlytOS mobilalkalmazás és a FlytNow webes alkalmazás segítségével elindíthatja a videó streamingjét a drónról
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
4 lépés az akkumulátor belső ellenállásának méréséhez: 4 lépés
4 lépés az akkumulátor belső ellenállásának mérésére: Íme a 4 egyszerű lépés, amelyek segítenek mérni az akkumulátor belső ellenállását