Съдържание:
- Стъпка 1: Зареждане на плъгин
- Стъпка 2: Намиране на данни на сензора
- Стъпка 3: Довършителни щрихи
- Стъпка 4: Използването му в по -големия контекст
- Стъпка 5: Заключване на думите
Видео: FlowerCare и Nymea за спасяване на моите растения: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Изцапване на ръцете при свързване на сензори за грижа за растенията към съществуващия умен дом с отворен код. Помощ за разработка на плъгини за nymea.
Историята
Както много други калайджии и хакери, аз също страдам от проблема, че хакването на неща отнема толкова много време, че понякога забравям да поливам растенията си. След като моята Monstera Deliciosa отново пострада от суха почва, реших да видя дали мога да направя нещо по въпроса, за да ми напомня, когато е жаден.
Бързо проучване в мрежата привлече вниманието ми към Xiaomi FlowerCare, известен също като MiCare или PlantCare. Това е Bluetooth устройство с ниска енергия и някои основни изследвания разкриха, че протоколът му изглежда доста лесен за разбиране. Въпреки че Xiaomi не предоставя публични спецификации, в интернет все още има доста обратен инженеринг за това устройство. Затова реших да поръчам един от тях.
Няколко дни по -късно беше доставен и разбира се веднага започнах да си играя с него. Накратко проверих приложението, което се доставя с него, но както вероятно се досещате, използването му в настройката по подразбиране никога не е бил планът ми. Разбира се, това трябва да бъде интегрирано със съществуващата ми настройка за интелигентен дом. Както е описано тук, използвам nymea като мое решение за интелигентен дом (Да, дори можете да забележите Monstera на една от снимките там:)). За съжаление, nymea все още не поддържа този сензор, така че стартирането на някаква IDE беше наред.
Стъпка 1: Зареждане на плъгин
Първото нещо, което направих, беше да копирам съществуващата приставка на Texas Instruments Sensor Tag, тя изглеждаше достатъчно подобна на това, което предполагах, че трябва да работи и за устройството FlowerCare. След основното преименуване на нещата в plugininfo.json и коментирането на по -голямата част от кода на плъгина на сензорния маркер бях готов да заредя новия плъгин.
Както се очакваше, откритието вече щеше да покаже сензора веднага и ще ми позволи да го добавя към системата. Разбира се, това няма да даде значими данни на този етап.
Стъпка 2: Намиране на данни на сензора
Както при всяко Bluetooth LE устройство, първото нещо, което искате да направите, е да разберете за услугите, които предлага, и техните характеристики. Някъде там действителните данни са скрити. С бърз печат за отстраняване на грешки, обхождащ всички открити услуги и отпечатвайки техните характеристики, бях на мястото, където можех да сравня информацията, която намерих в интернет, с това, което устройството всъщност съобщава.
void FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice *btDev = static_cast (изпращач ()); qCDebug (dcFlowerCare ()) << "има сервизни uuids"
Версията на фърмуера и нивото на батерията бяха лесни. Вече можех да видя съответните стойности, отпечатани в този първи опит за изброяване на данните. Действителните стойности на сензора са скрити малко по -дълбоко там, но комбинирането им с данните от интернет веднага посочи къде да го намерите и най -вече как да го прочетете.
void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & character, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "Характеристично четене" << QString:: number (karakteristična.handle (), 16) temp; qint8 пропускане; поток >> пропуснете; quint32 лукса; поток >> лукс; qint8 влага; поток >> влага; qint16 плодовитост; поток >> плодородие; излъчват завършени (m_batteryLevel, 1.0 * temp / 10, lux, влага, плодородие); }
Сглобявайки това, плъгинът вече започна да произвежда значими данни.
Стъпка 3: Довършителни щрихи
Така че по принцип работи сега, но един въпрос все още беше оставен там. Сензорът FlowerCare, за разлика от Texas Instruments SensorTag, ще прекъсне Bluetooth връзката след няколко секунди. Като се има предвид случаят на използване, това не изглежда да е проблем, тъй като е доста надеждно в отговор на опитите за свързване. Като се има предвид, че обикновено растението не изсмуква литър вода в рамките на минути, а по -скоро дни, не изглежда необходимо да поддържате връзка през цялото време. Също така това ще изтощи доста батерията. Затова реших да добавя PluginTimer, който да свързва отново сензора на всеки 20 минути и да извлича данни от него. Ако по някаква причина сензорът не реагира на опита за свързване, кодът ще стартира друг таймер, който се опитва да се свърже отново всяка минута от този момент нататък, докато успее да получи данните. След това отново ще се върне, за да извлече данни за 20 -минутния интервал. Ако устройството не успее да се свърже два пъти подред (което означава, след 20 + 1 минути), то ще бъде маркирано като офлайн в системата и потребителят може да бъде предупреден за това.
void DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare *flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << "Опресняване" на адрес (); flowerCare-> refreshData (); } else {qCDebug (dcFlowerCare ()) << "Не се опреснява" адрес () << "Следващо опресняване в" << m_refreshMinutes [flowerCare] << "минути"; } // Ако имахме 2 или повече неуспешни опита за свързване, маркирайте го като прекъснат, ако (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Неуспешно опресняване за" << (m_refreshMinutes [flowerCare] * -1) <setStateValue (flowerCareConnectedStateTypeId, false); }}}
С тази стратегия изглежда, че nymea доставя напълно надеждни данни от този сензор.
Стъпка 4: Използването му в по -големия контекст
Само получаването на стойности от сензора обаче не е толкова полезно, можех да използвам и оригиналното приложение за това. Сега нека направим някои умни неща с него.
Nymea поддържа изпращане на push известия, или на телефони с инсталирано приложение nymea: или чрез PushBullet. Така че очевидното нещо, което трябва да направите, е да си изпращам известни push известия, когато влажността на почвата падне под 15%. Това е доста лесно да се настрои в приложението. Като предпоставка имате нужда от акаунт в nymea: cloud или в PushBullet. За nymea: cloud базирани push известия е достатъчно да активирате nymea: cloud на nymea: core и в nymea: app. Веднага щом и двете са свързани, автоматично ще се появи известие. За PushBullet добавете нещо ново в системата, ще намерите PushBullet в списъка там. Той ще ви поиска API ключ, който получавате, когато се регистрирате с PushBullet. След като имате нещо с push известия в nymea, можете да създадете правило.
Разбира се, можете да правите каквото искате … Можете също така да включите светлина, за да отразявате стойностите на сензора, или да използвате приставката за HTTP командир, за да публикувате например стойности на сензора на сървър в интернет. Нямам клапан за вода което може да се контролира цифрово (все още), но разбира се, ако имате такова нещо и все още не се поддържа от nymea, добавянето на плъгин за това би било по -скоро подобно на това.
Стъпка 5: Заключване на думите
Плъгинът за грижа за цветя вече е приет нагоре по веригата и ако имате един от тях, той вече е готов за използване с nymea. Надявам се обаче тази статия да представлява интерес, ако някой иска да добави поддръжка за други устройства. Това трябва да бъде упътване за това как да създадете свой собствен плъгин за nymea.
Ако искате просто да изградите тази настройка у дома си, всичко, от което се нуждаете, е сензорът FlowerCare, Raspberry Pi, изображението на общността nymea (до момента включва приставката за грижа за цветята) и приложението nymea:, което се предлага в магазините за приложения. Също така, досега моята Monstera Deliciosa отново е щастлива и както може би сте виждали на екранните снимки, аз си взех втори такъв сензор за проследяване на здравето на моето лимоново дърво. За това си изпращам push известие, когато навън замръзне, за да мога да го пренеса безопасно през зимата.
Препоръчано:
Моите инструкции за сглобяване на лазерно оръжие: 10 стъпки
Моите инструкции за сглобяване на лазерен пистолет: С извинение за забавянето, ето моите отдавна закъснели Инструкции за това как да сглобявам лазерната стрелка Ray-Gun, можете да закупите векторни планове за рисуване, за да го направите … На CNC Лазерно рязане! Https: //cults3d.com/en/3d-model/gadget/ray-gun Ето как
Конвертиране на моите Bluetooth слушалки в Bluetooth високоговорители: 5 стъпки
Конвертиране на моите Bluetooth слушалки в Bluetooth високоговорители: Моите слушалки вече не се захранват сами, захранват се само когато свържа зареждането на микро-USB конектора, батерията вече е изтощена и един от високоговорителите не работи. Но Bluetooth все още работи без проблеми. Днес ще покажа
Предупреждение за вода - устройство за спасяване на вашата лодка: 5 стъпки (със снимки)
Предупреждение за вода - устройство за спасяване на вашата лодка: Ако сте собственик на лодка, има солиден комфорт най -накрая да качите лодката на суша. Не може да потъне там. Навсякъде другаде се сблъсква с постоянна битка за преодоляване на тенденцията да се подхлъзне под вълните и да изчезне. През зимата тук, уви
Спасяване на Windows извън екрана незабавно (Windows и Linux): 4 стъпки
Спасяване на Windows извън екрана незабавно (Windows и Linux): Когато програма се премести извън екрана - може би към втори монитор, който вече не е свързан - имате нужда от бърз и лесен начин да я преместите на текущия монитор. Това е, което правя -ЗАБЕЛЕЖКА --- Размазах изображенията за поверителност
Части за спасяване от DVD/CD плейър: 10 стъпки
Части за спасяване от DVD/CD плейър: Всички имаме стари остарели устройства. Ако имате време, отварянето и спасяването на части е ефективен начин да научите много неща и да, да съберете и някои редки части. Време беше да се сбогуваме със стар DVD плейър. Направих т