Obsah:
- Krok 1: Načtení stubu pluginu
- Krok 2: Vyhledání dat na senzoru
- Krok 3: Dokončení dotyků
- Krok 4: Použití v širším kontextu
- Krok 5: Uzavření slov
Video: FlowerCare a Nymea na záchranu mých rostlin: 5 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Znečištění rukou zapojením senzorů péče o rostliny do mého stávajícího inteligentního domu s otevřeným zdrojovým kódem. Návod na vývoj pluginu pro nymea.
Příběh
Jako mnoho dalších drotářů a hackerů také trpím problémem, že hackování věcí mi zabírá tolik času, že občas zapomenu zalévat své rostliny. Poté, co moje Monstera Deliciosa opět trpěla suchou půdou, rozhodl jsem se zjistit, zda s tím mohu něco udělat, aby mi to připomnělo, když má žízeň.
Rychlý průzkum na webu mě upozornil na Xiaomi FlowerCare, známý také jako MiCare nebo PlantCare. Jedná se o zařízení Bluetooth s nízkou spotřebou energie a některé základní průzkumy odhalily, že jeho protokol se zdá být docela snadno pochopitelný. Ačkoli se zdá, že Xiaomi neposkytuje žádné veřejné specifikace, na internetu bylo pro toto zařízení dosud docela dost reverzního inženýrství. Rozhodl jsem se tedy jeden takový objednat.
O několik dní později to bylo doručeno a já jsem si s tím samozřejmě začal hned hrát. Krátce jsem zkontroloval aplikaci, která je součástí dodávky, ale jak pravděpodobně uhodnete, použití ve výchozím nastavení nebylo nikdy mým plánem. Samozřejmě to musí být integrováno s mým stávajícím nastavením chytré domácnosti. Jak zde bylo také popsáno, jako řešení pro chytrou domácnost používám nymea (Ano, Monsteru můžete dokonce spatřit na jednom z obrázků:)). Nymea bohužel tento senzor ještě nepodporovala, takže vypálit nějaké IDE bylo v pořádku.
Krok 1: Načtení stubu pluginu
Takže první věc, kterou jsem udělal, bylo zkopírovat stávající plugin Texas Instruments Sensor Tag, zdálo se to dost podobné tomu, co jsem předpokládal, že by mělo fungovat i pro zařízení FlowerCare. Po základním přejmenování věcí v plugininfo.json a odkomentování většiny kódu pluginu sensortag jsem byl připraven načíst nový pahýl pluginu.
Jak se dalo očekávat, objev by již ukázal senzor hned a umožnil mi jej přidat do systému. V tuto chvíli by to samozřejmě nepřineslo žádná smysluplná data.
Krok 2: Vyhledání dat na senzoru
Jako u každého zařízení Bluetooth LE je první věcí, kterou musíte udělat, zjistit informace o službách, které nabízí, a jejich charakteristikách. Někde tam jsou skrytá skutečná data. Díky rychlému ladění tisku ve smyčce nad všemi objevenými službami a tiskem jejich charakteristik jsem byl v bodě, kdy jsem mohl porovnat informace, které jsem našel na internetu, s tím, co zařízení ve skutečnosti hlásí.
neplatné FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice *btDev = static_cast (sender ()); qCDebug (dcFlowerCare ()) << "mít servisní uuids"
Verze firmwaru a úroveň baterie byly snadné. Už při prvním pokusu o výpis dat jsem viděl vytištěné odpovídající hodnoty. Skutečné hodnoty senzorů jsou tam skryty trochu hlouběji, ale jejich kombinace s daty z internetu okamžitě ukázala, kde je najít a hlavně jak je číst.
neplatné FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & charakteristické, konst QByteArray & hodnota) {qCDebug (dcFlowerCare ()) << "čtení charakteristik" << QString:: number (charakteristika.handle (), 16) temp; qint8 přeskočit; stream >> přeskočit; quint32 lux; stream >> lux; qint8 vlhkost; proud >> vlhkost; qint16 plodnost; proud >> plodnost; emitovat hotové (m_batteryLevel, 1,0 * teplota / 10, lux, vlhkost, plodnost); }
Když to shrneme, plugin již začal produkovat smysluplná data.
Krok 3: Dokončení dotyků
Takže to v podstatě fungovalo nyní, nicméně jeden problém tam stále zůstal. Senzor FlowerCare by na rozdíl od Texas Instruments SensorTag po několika sekundách přerušil připojení Bluetooth. Vzhledem k případu použití se však nezdá, že by to byl problém, protože je docela spolehlivý při reakci na pokusy o připojení. Vzhledem k tomu, že rostlina obvykle nesaje litr vody během několika minut, ale spíše dnů, nezdá se nutné zůstat neustále ve spojení. Také by to docela vybilo baterii. Rozhodl jsem se tedy přidat PluginTimer, který každých 20 minut senzor znovu připojí a načte z něj data. Pokud z nějakého důvodu senzor nereaguje na pokus o připojení, kód spustí další časovač, který se od tohoto bodu každou minutu pokusí znovu připojit, dokud se mu nepodaří získat data. Poté se vrátí zpět k načtení dat v 20minutovém intervalu znovu. Pokud se zařízení nepodaří připojit dvakrát za sebou (to znamená po 20 + 1 minutách), bude v systému označeno offline a uživatel na to může být upozorněn.
zrušit DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare *flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << "Obnovovací" adresa (); flowerCare-> refreshData (); } else {qCDebug (dcFlowerCare ()) << "Neobnovující se adresa" () << "Další aktualizace v" << m_refreshMinutes [flowerCare] << "minut"; } // Pokud jsme měli 2 nebo více neúspěšných pokusů o připojení, označte to jako odpojené, pokud (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Obnovení se nezdařilo pro" << (m_refreshMinutes [flowerCare] * -1) <setStateValue (flowerCareConnectedStateTypeId, false); }}}
S touto strategií se zdálo, že nymea nyní poskytuje dokonale spolehlivá data z tohoto senzoru.
Krok 4: Použití v širším kontextu
Získání hodnot ze senzoru není tak užitečné, ale mohl jsem k tomu také použít původní aplikaci. Nyní s tím uděláme pár chytrých věcí.
Nymea podporuje zasílání push notifikací, a to buď na telefony s nainstalovanou aplikací nymea: nebo prostřednictvím PushBullet. Zjevnou věcí, kterou je třeba udělat, je zaslat si několik oznámení, kdykoli půdní vlhkost klesne pod 15%. Je docela snadné to nastavit v aplikaci. Předpokladem je, že budete potřebovat účet v nymea: cloud nebo na PushBullet. Pro nymea: cloudová push oznámení stačí povolit nymea: cloud na nymea: core a v nymea: app. Jakmile jsou obě propojeny, automaticky se zobrazí oznámení. Pro PushBullet přidejte do systému novou věc, v seznamu najdete PushBullet. Požádá vás o klíč API, který získáte při registraci pomocí PushBullet. Jakmile máte v nymea věc s push notifikací, můžete vytvořit pravidlo.
Samozřejmě můžete dělat cokoli jiného, co chcete … Můžete také zapnout nějaké světlo, aby odráželo hodnoty senzorů, nebo použít plugin HTTP Commander například pro odeslání hodnot senzorů na server na internetu. Nemám vodní ventil který lze ovládat digitálně (zatím), ale samozřejmě, pokud něco takového máte a není to zatím podporováno nymea, přidání pluginu pro to by bylo dost podobné než toto.
Krok 5: Uzavření slov
Plugin pro péči o květiny byl již přijat proti proudu, a pokud máte jeden z nich, je připraven k použití s nymea. Doufám však, že tento článek by mohl být zajímavý, pokud někdo chce přidat podporu pro další zařízení. Měl by to být návod, jak vytvořit vlastní plugin pro nymea.
Pokud si chcete toto nastavení postavit doma, potřebujete pouze senzor FlowerCare, Raspberry Pi, image komunity nymea (již nyní obsahuje plugin pro péči o květiny) a aplikaci nymea: která je k dispozici v obchodech s aplikacemi. Také zatím je moje Monstera Deliciosa opět šťastná a jak jste si mohli všimnout na screenshotech, pořídil jsem si druhý z těchto senzorů pro sledování zdraví i mého citroníku. Kvůli tomu posílám oznámení push, kdykoli venku mrzne, abych to mohl bezpečně přenést přes zimu.
Doporučuje:
Automatický systém zavlažování rostlin pomocí mikro: bit: 8 kroků (s obrázky)
Automatický systém zavlažování rostlin pomocí mikro: bit: V tomto Instructable vám ukážu, jak vytvořit automatický systém zavlažování rostlin pomocí Micro: bit a některých dalších malých elektronických součástek. Micro: bit používá snímač vlhkosti sledovat hladinu vlhkosti v půdě rostliny a
Fax: Vysvětlení součástí a co stojí za záchranu: 9 kroků
Fax: Vysvětlení součástí a co stojí za záchranu: Nedávno jsem našel tento fax. Vyčistil jsem to a připojil pomocí napájecího kabelu a telefonní linky a fungovalo to správně, ale nepotřebuji fax a řekl jsem si, že by bylo hezké to rozebrat a udělat o tom další instrukce. Já
DVD přehrávač: Vysvětlení součástí a co stojí za záchranu: 9 kroků
DVD přehrávač: Vysvětlení součástí a co stojí za záchranu: Dnes se podíváme na tento starý DVD přehrávač. Nefungovalo to správně, tak jsem se rozhodl to otevřít a podívat se, co je uvnitř. Problém byl v tom, že se neustále otvíral a zavíral a nechtělo se mu číst z disku. Vysvětlím základy
Části na záchranu z přehrávače DVD/CD: 10 kroků
Části na záchranu z přehrávače DVD/CD: Všichni máme kolem sebe stará zastaralá zařízení. Pokud máte čas, pak je otevřete a zachraňte části, což je účinný způsob, jak se naučit spoustu věcí, a ano, sbírat také některé vzácné části. Bylo načase rozloučit se starým přehrávačem DVD. Udělal jsem t
Kdo je u mých dveří? Projekt PIR snímače pohybu/rozsahu: 5 kroků
Kdo je u mých dveří? Projekt PIR pohybového senzoru/senzoru dosahu: Náš projekt je zaměřen na snímání pohybu pomocí PIR a senzorů vzdálenosti. Kód Arduino vydá vizuální a zvukový signál, aby oznámil uživateli, že je někdo blízko. Kód MATLAB odešle e -mailový signál, který uživatele upozorní, že je někdo poblíž. Toto zařízení