Cuprins:
- Pasul 1: Încărcarea unui plugin pentru plugin
- Pasul 2: Găsirea datelor pe senzor
- Pasul 3: Atingeri de finisare
- Pasul 4: Utilizarea acestuia în contextul mai mare
- Pasul 5: Închiderea cuvintelor
Video: FlowerCare și Nymea pentru salvarea plantelor mele: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Se murdăresc mâinile la conectarea senzorilor de îngrijire a plantelor la casa mea inteligentă open source existentă. O prezentare generală privind dezvoltarea pluginurilor pentru nymea.
Povestea
La fel ca mulți alți jucători și hackeri, suferă și eu de faptul că hacking-ul pe lucruri îmi ocupă atât de mult timp, încât uit ocazional să-mi ud plantele. După ce Monstera Deliciosa a suferit încă o dată de sol uscat, am decis să văd dacă pot face ceva pentru a-mi aminti când este sete.
O cercetare rapidă pe web mi-a atras atenția asupra Xiaomi FlowerCare, cunoscută și sub numele de MiCare sau PlantCare. Este un dispozitiv Bluetooth cu consum redus de energie și unele cercetări de bază au relevat că protocolul său pare a fi destul de ușor de înțeles. În timp ce Xiaomi nu pare să ofere nicio specificație publică, a existat încă un pic de inginerie inversă pe internet pentru acest dispozitiv. Așa că am decis să comand una dintre acestea.
Câteva zile mai târziu a fost livrat și, bineînțeles, am început să mă joc cu el imediat. Am verificat pe scurt aplicația care vine cu ea, dar după cum probabil puteți ghici, utilizarea acesteia în configurarea sa implicită nu a fost niciodată planul meu. Bineînțeles, acest lucru trebuie să fie integrat cu configurarea mea de casă inteligentă existentă. După cum am descris și aici, folosesc nymea ca soluție pentru casă inteligentă (Da, puteți chiar să vedeți Monstera într-una dintre imaginile de acolo:)). Din păcate, nymea nu a acceptat acel senzor încă, așa că a pornit un IDE.
Pasul 1: Încărcarea unui plugin pentru plugin
Deci, primul lucru pe care l-am făcut a fost să copiez pluginul existent Texas Instruments Sensor Tag, mi s-a părut suficient de similar cu ceea ce am presupus că ar trebui să funcționeze și pentru dispozitivul FlowerCare. După redenumirea de bază a lucrurilor din plugininfo.json și am comentat cea mai mare parte a codului pluginului sensortag, am fost gata să încărc noul plug stub.
Așa cum era de așteptat, descoperirea ar arăta deja senzorul imediat și îmi va permite să îl adaug în sistem. Desigur, nu ar produce date semnificative în acest moment.
Pasul 2: Găsirea datelor pe senzor
Ca la orice dispozitiv Bluetooth LE, primul lucru pe care doriți să-l faceți este să aflați despre serviciile pe care le oferă și caracteristicile acestora. Undeva acolo, datele reale sunt ascunse. Cu o imprimare rapidă de depanare care a trecut prin toate serviciile descoperite și am imprimat caracteristicile lor, am fost în punctul în care am putut compara informațiile pe care le-am găsit pe internet cu ceea ce raportează dispozitivul.
void FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice * btDev = static_cast (sender ()); qCDebug (dcFlowerCare ()) << "au uuide de serviciu"
Versiunea firmware-ului și nivelul bateriei au fost ușoare. Am putut vedea deja valorile corespunzătoare tipărite în această primă încercare de listare a datelor. Valorile reale ale senzorului sunt ascunse puțin mai adânc acolo, dar combinându-le cu datele de pe internet a indicat imediat unde să îl găsesc și mai ales cum să-l citesc.
void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & caractéristice, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "Caracteristică citire" << QString:: number (caractéristice.handle (), 16) temp; qint8 sări; stream >> sari; quint32 lux; flux >> lux; qint8 umiditate; curent >> umezeala; qint16 fertilitate; flux >> fertilitate; emit terminat (m_batteryLevel, 1,0 * temp / 10, lux, umiditate, fertilitate); }
Unind acest lucru, pluginul a început deja să producă date semnificative.
Pasul 3: Atingeri de finisare
Deci, practic a funcționat acum, cu toate acestea, o problemă a rămas încă acolo. Senzorul FlowerCare, spre deosebire de Texas Instruments SensorTag, ar renunța la conexiunea Bluetooth după câteva secunde. Totuși, având în vedere cazul de utilizare, acest lucru nu pare să fie o problemă, deoarece este destul de fiabil în răspunsul la încercările de conectare. Având în vedere că, în mod normal, o plantă nu aspiră un litru de apă în câteva minute, ci mai degrabă zile, nu pare necesar să rămâi conectat tot timpul. De asemenea, acest lucru ar descărca destul de mult bateria. Așa că am decis să adaug un PluginTimer care să reconecteze senzorul la fiecare 20 de minute și să preia date din acesta. Dacă, dintr-un anumit motiv, senzorul nu va răspunde la încercarea de conectare, codul va porni un alt cronometru care încearcă să se reconecteze în fiecare minut din acel moment până când reușește să obțină datele. Apoi, s-ar întoarce pentru a prelua date din intervalul de 20 de minute din nou. Dacă dispozitivul nu reușește să se conecteze de două ori la rând (adică, după 20 + 1 minute), acesta va fi marcat offline în sistem și utilizatorul poate fi alertat despre acesta.
void DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare * flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << Adresa "Reîmprospătare" (); flowerCare-> refreshData (); } else {qCDebug (dcFlowerCare ()) << Adresa „Nu reîmprospătează” () << „Următoarea reîmprospătare în„ << m_refreshMinutes [flowerCare] << „minute”; } // Dacă am avut două sau mai multe încercări de conectare eșuate, marcați-l ca deconectat dacă (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Nu s-a putut actualiza pentru" << (m_refreshMinutes [flowerCare] * -1) <setStateValue (flowerCareConnectedStateTypeId, false); }}}
Cu această strategie, nymea părea acum să furnizeze date perfect fiabile de la acest senzor.
Pasul 4: Utilizarea acestuia în contextul mai mare
Obținerea valorilor de la senzor nu este însă atât de utilă, aș fi putut folosi și aplicația originală pentru asta. Acum să facem câteva lucruri inteligente cu el.
Nymea acceptă trimiterea notificărilor push, fie la telefoane cu nymea: aplicație instalată, fie prin PushBullet. Deci, lucrul evident de făcut este să-mi trimit câteva notificări push ori de câte ori umiditatea solului scade sub 15%. Este destul de ușor să configurați acest lucru în aplicație. Ca premisă, fie aveți nevoie de un cont în nymea: cloud, fie pe PushBullet. Pentru notificările push nymea: cloud este suficient să activați nymea: cloud pe nymea: core și în nymea: app. De îndată ce ambele sunt conectate, va apărea automat o notificare. Pentru PushBullet adăugați un lucru nou în sistem, veți găsi PushBullet în lista de acolo. Vă va solicita cheia API pe care o obțineți atunci când vă înscrieți la PushBullet. Odată ce aveți o notificare push în nymea, puteți crea o regulă.
Desigur, puteți face orice altceva doriți … Puteți, de asemenea, să aprindeți o lumină pentru a reflecta valorile senzorilor sau puteți utiliza pluginul HTTP commander pentru a posta valorile senzorului pe un server de pe internet, de exemplu. Nu am o supapă de apă care poate fi controlat digital (încă), dar bineînțeles, dacă aveți așa ceva și nu este încă acceptat de nymea, adăugarea unui plugin pentru asta ar fi mai degrabă similară cu aceasta.
Pasul 5: Închiderea cuvintelor
Pluginul flowercare a fost acceptat în amonte până acum și dacă aveți unul dintre acestea, este gata să fie utilizat acum cu nymea. Cu toate acestea, sper că acest articol ar putea fi de interes dacă cineva dorește să adauge suport pentru alte dispozitive. Ar trebui să fie o descriere generală a modului de construire a propriului plugin pentru nymea.
Dacă doriți doar să construiți această configurație acasă, tot ce aveți nevoie este senzorul FlowerCare, un Raspberry Pi, imaginea comunității nymea (include pluginul pentru îngrijirea florilor până acum) și nymea: aplicație disponibilă în magazinele de aplicații. De asemenea, până acum Monstera Deliciosa este din nou fericită și așa cum ați fi văzut în capturi de ecran, am obținut un al doilea dintre acei senzori pentru a urmări și sănătatea pomului meu de lămâie. Pentru aceasta, îmi trimit o notificare push ori de câte ori îngheață afară, astfel încât să o pot aduce în timpul iernii în siguranță.
Recomandat:
Salvarea vieții plictisitoare cu o lampă inteligentă: 3 pași
Salvarea vieții plictisitoare cu o lampă inteligentă: Sperăm cu toții că putem trăi mai confortabil acasă. Fie că vă simțiți adesea inconfortabil, deoarece estomparea lămpilor de uz casnic nu este suficient de inteligentă? Sau dacă vă simțiți monoton, deoarece funcția lămpii de uz casnic? Această lampă vă poate rezolva
Drona de grădinărit pentru inspecția plantelor DIY (Tricopter pliabil la un buget): 20 de pași (cu imagini)
Drona de grădinărit pentru inspecția plantelor DIY (Tricopter pliabil la un buget): la casa noastră de weekend avem o grădină frumoasă, cu o mulțime de fructe și legume, dar uneori este greu să țineți pasul cu modul în care plantele se schimbă. Au nevoie de supraveghere constantă și sunt foarte vulnerabili la vreme, infecții, bug-uri, etc … Eu
Creați propriile grafice pentru datele mele IOT pe un Raspberry PI: 3 pași
Creați propriile grafice pentru datele mele IOT pe un Raspberry PI: Vă rugăm să citiți mai departe dacă doriți să puteți crea propriile grafice IOT folosind 7 linii de cod. Am vrut să creez diagrame pentru a afișa date într-un format grafic din senzorii IOT pe o pagină web. Anterior, pentru asta, am folosit servicii terțe (unele pa
Salvarea imaginilor pentru sarcina dvs.: 4 pași (cu imagini)
Salvarea imaginilor pentru sarcina dvs.: 1. Deschideți un nou document Google și utilizați această pagină pentru a vă proteja imaginile. Folosiți ctrl (control) și „c” cheie de copiat.3. Utilizați ctrl (control) și „v”. cheie de lipit
Top zece cele mai utile sfaturi și trucuri pentru panourile mele: 9 pași (cu imagini)
Cele mai utile zece sfaturi și trucuri ale panourilor mele: Există 6 centimetri de zăpadă pe pământ și sunteți adăpostit în casă. V-ați pierdut momentan motivația de a lucra la laserul tăietor de metale ghidat de GPS. Nu au existat proiecte noi pe site-ul dvs. preferat care să fi stârnit int