Агуулгын хүснэгт:

FlowerCare ба Nymea нар миний ургамлыг аврах: 5 алхам
FlowerCare ба Nymea нар миний ургамлыг аврах: 5 алхам

Видео: FlowerCare ба Nymea нар миний ургамлыг аврах: 5 алхам

Видео: FlowerCare ба Nymea нар миний ургамлыг аврах: 5 алхам
Видео: Посейте эти цветы сразу в сад они будут цвести каждый год все лето 2024, Долдугаар сарын
Anonim
FlowerCare ба Nymea нар миний ургамлыг аврах болно
FlowerCare ба Nymea нар миний ургамлыг аврах болно

Миний одоо байгаа нээлттэй эхийн ухаалаг гэрт ургамлын арчилгааны мэдрэгчийг залгахад гараа бохирдуулж байна. Nymea -д зориулсан залгаас хөгжүүлэх талаархи танилцуулга.

Түүх

Бусад олон тооны хакерууд болон хакеруудын нэгэн адил би аливаа зүйлийг хакердах нь маш их цаг зарцуулдаг тул би ургамлаа услахаа мартдаг. Миний Monstera Deliciosa хуурай хөрсөнд дахин нэг удаа шаналж байсны дараа би цангасан үед надад сануулахын тулд энэ талаар ямар нэгэн зүйл хийж чадах эсэхийг харахаар шийдлээ.

Вэб дээр хийсэн хурдан судалгаа нь MiCare эсвэл PlantCare гэгддэг Xiaomi FlowerCare -т анхаарлаа хандуулав. Энэ бол Bluetooth -ийн бага энерги бүхий төхөөрөмж бөгөөд зарим үндсэн судалгаанаас харахад түүний протоколыг ойлгоход хялбар байдаг. Xiaomi олон нийтэд тодорхой мэдээлэл өгөөгүй байгаа ч интернэтэд энэ төхөөрөмжийн хувьд урвуу инженерчлэл хийгдээгүй байна. Тиймээс би тэдний нэгийг захиалахаар шийдсэн.

Хэдэн өдрийн дараа үүнийг хүргэсэн бөгөөд мэдээж би тэр дор нь тоглож эхлэв. Би түүнтэй хамт ирдэг програмыг товчхон шалгаж үзсэн боловч үүнийг та анхдагч тохиргоондоо ашиглах нь миний төлөвлөгөө байгаагүй юм. Мэдээжийн хэрэг үүнийг одоо байгаа ухаалаг гэрийн тохиргоотой нэгтгэх шаардлагатай байна. Энд тайлбарласны дагуу би nymea -г ухаалаг гэрийн шийдэл болгон ашиглаж байна (Тийм ээ, та Monstera -г тэнд байгаа зургуудын аль нэгээс нь харж болно:)). Харамсалтай нь nymea энэ мэдрэгчийг дэмждэггүй байсан тул IDE -ийг ажиллуулах нь дэс дараалалтай байв.

Алхам 1: Plugin Stub -ийг ачаалж байна

Plugin Stub ачаалж байна
Plugin Stub ачаалж байна
Plugin Stub ачаалж байна
Plugin Stub ачаалж байна
Plugin Stub ачаалж байна
Plugin Stub ачаалж байна

Миний хийсэн хамгийн эхний зүйл бол одоо байгаа Texas Instruments Sensor Tag залгаасыг хуулбарлах явдал байсан бөгөөд энэ нь FlowerCare төхөөрөмж дээр бас ажиллах ёстой гэж бодсонтой төстэй юм шиг санагдсан. Plugininfo.json дээрх зүйлсийн нэрийг өөрчилж, ихэнх sensortag залгаасын кодыг тайлбарласны дараа би шинэ залгаасын ишийг ачаалахад бэлэн боллоо.

Хүлээгдэж байсны дагуу нээлт нь мэдрэгчийг шууд харуулаад системд нэмэх боломжийг надад олгоно. Мэдээжийн хэрэг, энэ нь ямар ч утга учиртай мэдээлэл өгөхгүй.

Алхам 2: Мэдрэгч дээрх өгөгдлийг хайж олох

Мэдрэгч дээрх өгөгдлийг хайж олох
Мэдрэгч дээрх өгөгдлийг хайж олох

Бусад Bluetooth LE төхөөрөмжийн нэгэн адил хамгийн түрүүнд санал болгож буй үйлчилгээ, шинж чанаруудын талаар олж мэдэх хэрэгтэй. Бодит өгөгдөл хаа нэгтээ нуугдсан байдаг. Илэрсэн бүх үйлчилгээнүүдийг хурдан дибаг хийж, шинж чанаруудыг нь хэвлэсний дараа би интернетээс олж авсан мэдээллээ тухайн төхөөрөмж үнэндээ юу мэдээлж байгааг харьцуулах боломжтой болсон юм.

void FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice *btDev = static_cast (sender ()); qCDebug (dcFlowerCare ()) << "үйлчилгээний uuids байна" хянагч ()-> createServiceObject (sensorServiceUuid, энэ); холбох (m_sensorService, & QLowEnergyService:: stateChanged, this, & FlowerCare:: onSensorServiceStateChanged); холбох (m_sensorService, & QLowEnergyService:: characterRead, this, & FlowerCare:: onSensorServiceCharacteristicRead); m_sensorService-> DiscoverDetails (); } хүчингүй FlowerCare:: onSensorServiceStateChanged (const QLowEnergyService:: ServiceSate & state) {if (state! = QLowEnergyService:: ServiceDiscovered) {return; } foreach (const QLowEnergyCharacteristic & шинж чанар, m_sensorService-> шинж чанарууд)) {qCDebug (dcFlowerCare ()). nospace () <"<< шинж чанар.uuid (). toString () <<" ("<< шинж чанар. бариул) << "Нэр:" << шинж чанарын нэр () << "):" << онцлог шинж чанар () << "," << шинж чанар.descriptors ()) {qCDebug (dcFlowerCare ()). nospace () <"<< descriptor.uuid (). toString () <<" ("<< descriptor.handle () <<" Name: "<< descriptor).name () << "):" << descriptor.value () << "," << descriptor.value (). toHex (); }}}

Програм хангамжийн хувилбар болон батерейны түвшин хялбар байсан. Өгөгдлийг жагсаах анхны оролдлого дээр хэвлэгдсэн утгыг би аль хэдийн харж байсан. Бодит мэдрэгчийн утгыг арай гүнзгий нуусан боловч үүнийг интернетээс авсан өгөгдөлтэй хослуулан хаанаас олох, ялангуяа хэрхэн уншихыг зааж өгсөн болно.

void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & шинж чанар, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "Онцлог унших" << QString:: тоо (шинж чанар.ханд (), 16) темп; qint8 алгасах; урсгал >> алгасах; quint32 люкс; урсгал >> lux; qint8 чийг; урсгал >> чийг; qint16 төрөлт; урсгал >> үржил шим; ялгаруулж дууссан (m_batteryLevel, 1.0 * temp / 10, lux, чийгшил, үржил шим); }

Үүнийг нэгтгэн үзэхэд залгаас нь утга учиртай өгөгдөл үүсгэж эхэлжээ.

Алхам 3: Хүрч дуусгах

Мэдээллийг дуусгах
Мэдээллийг дуусгах

Тиймээс энэ нь үндсэндээ одоо ажилласан боловч нэг асуудал тэнд үлдсэн хэвээр байв. FlowerCare мэдрэгч нь Texas Instruments SensorTag -аас ялгаатай нь Bluetooth холболтыг хэдхэн секундын дараа таслах болно. Ашиглалтын тохиолдлыг авч үзвэл энэ нь холболт хийх оролдлогод хариу өгөхөд нэлээд найдвартай тул асуудал биш юм шиг байна. Ердийн үед ургамал нэг литр усыг хэдхэн минутын дотор сордоггүй, харин хэдхэн хоногийн дотор байнга холбогдоод байх шаардлагагүй юм шиг санагддаг. Мөн энэ нь батерейг маш их цэнэггүй болгох болно. Тиймээс би мэдрэгчийг 20 минут тутамд холбож, үүнээс өгөгдөл авах боломжтой PluginTimer -ийг нэмж оруулахаар шийдсэн. Хэрэв ямар нэгэн шалтгаанаар мэдрэгч холболтын оролдлогод хариу өгөхгүй бол код нь өөр цаг хэмжигчийг эхлүүлж, тэр мөчөөс эхлэн өгөгдлийг олж авах хүртэл дахин холбохыг оролддог. Дараа нь 20 минутын завсарлагааны өгөгдлийг дахин авах болно. Хэрэв төхөөрөмж дараалан хоёр удаа холбогдоогүй бол (энэ нь 20 + 1 минутын дараа гэсэн үг) системд офлайн гэж тэмдэглэгдсэн байх бөгөөд хэрэглэгчид энэ тухай анхааруулах боломжтой болно.

void DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare *flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << "Сэргээх" хаяг (); flowerCare-> refreshData (); } өөр {qCDebug (dcFlowerCare ()) << "Сэргээгүй" хаяг () << "Дараагийн шинэчлэлт" << m_refreshMinutes [flowerCare] << "минут" дотор; } // Хэрэв бид 2 ба түүнээс дээш холболтын оролдлого хийсэн бол (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Шинэчилж чадсангүй" << (m_refreshMinutes [flowerCare] *) -1) <setStateValue (flowerCareConnectedStateTypeId, худал); }}}

Энэхүү стратегийн тусламжтайгаар nymea одоо энэ мэдрэгчээс найдвартай найдвартай өгөгдлийг хүргэж байгаа юм шиг санагдаж байна.

Алхам 4: Үүнийг том контекстэд ашиглах

Үүнийг том контекстэд ашиглах нь
Үүнийг том контекстэд ашиглах нь
Үүнийг том контекстэд ашиглах нь
Үүнийг том контекстэд ашиглах нь

Мэдрэгчээс утга авах нь тийм ч их ач тустай биш ч гэсэн би анхны програмыг ашиглаж болох байсан. Одоо түүнтэй хамт ухаалаг зүйл хийцгээе.

Nymea нь nymea: апп суулгасан утас руу эсвэл PushBullet -ээр дамжуулан мэдэгдэл илгээхийг дэмждэг. Тиймээс хийх ёстой хамгийн чухал зүйл бол хөрсний чийг 15%-иас доош буух үед өөртөө түлхэх мэдэгдэл илгээх явдал юм. Үүнийг апп дээр тохируулах нь илүү хялбар байдаг. Үүний урьдчилсан нөхцөл бол танд nymea: cloud эсвэл PushBullet дээр данс хэрэгтэй болно. Nymea: үүлд суурилсан түлхэх мэдэгдлүүдийн хувьд nymea: core болон nymea: app дээрх nymea: cloud -ийг идэвхжүүлэхэд хангалттай. Аль аль нь холбогдсон даруй мэдэгдлийн зүйл автоматаар гарч ирнэ. PushBullet -ийн системд шинэ зүйл нэмж оруулахын тулд та жагсаалтаас PushBullet -ийг олох болно. Энэ нь PushBullet -т бүртгүүлэхдээ API түлхүүрийг авахыг танаас хүсэх болно. Хэрэв танд nymea -д түлхэх мэдэгдэл байгаа бол та дүрмийг үүсгэж болно.

Мэдээжийн хэрэг та хүссэн зүйлээ хийж болно … Мэдрэгчийн утгыг тусгахын тулд гэрэл асаах эсвэл HTTP командлагч залгаас ашиглан интернет дэх сервер дээр мэдрэгчийн утгыг оруулах боломжтой. Надад усны хавхлага байхгүй. Үүнийг дижитал (хараахан) хянах боломжтой боловч мэдээж хэрэв танд ийм зүйл байгаа бөгөөд үүнийг nymea хараахан дэмждэггүй бол түүнд залгаас нэмэх нь үүнтэй төстэй байх болно.

Алхам 5: Хаалтын үгс

Төгсгөлийн үгс
Төгсгөлийн үгс

Flowercare залгаасыг одоогийн байдлаар хүлээн авсан бөгөөд хэрэв танд эдгээрийн аль нэг нь байгаа бол одоо nymea -тай хамт ашиглахад бэлэн байна. Гэсэн хэдий ч, хэрэв хэн нэгэн бусад төхөөрөмжид нэмэлт дэмжлэг үзүүлэхийг хүсч байвал энэ нийтлэл сонирхолтой байх болно гэж найдаж байна. Энэ нь nymea -д зориулсан өөрийн залгаасыг хэрхэн бүтээх талаар хийх ёстой алхам юм.

Хэрэв та энэ тохиргоог гэртээ хийхийг хүсч байвал FlowerCare мэдрэгч, Raspberry Pi, nymea олон нийтийн зураг (одоогоор цэцэг арчилгааны залгаасыг оруулсан болно), апп дэлгүүрт байдаг nymea: апп л хэрэгтэй болно. Түүнчлэн, одоог хүртэл миний Monstera Deliciosa дахин баяртай байгаа бөгөөд та дэлгэцийн агшинд харсан шиг би нимбэгнийхээ модны эрүүл мэндийг хянах хоёр мэдрэгчийн нэгийг олж авлаа. Үүний тулд би гадаа хүйтэн жавартай байх үед өөртөө мэдэгдэл илгээж байгаа болохоор өвлийн улиралд аюулгүй авчирч чадна.

Зөвлөмж болгож буй: