Мазмуну:

FlowerCare жана Nymea менин өсүмдүктөрүмдү куткаруу үчүн: 5 кадам
FlowerCare жана Nymea менин өсүмдүктөрүмдү куткаруу үчүн: 5 кадам

Video: FlowerCare жана Nymea менин өсүмдүктөрүмдү куткаруу үчүн: 5 кадам

Video: FlowerCare жана Nymea менин өсүмдүктөрүмдү куткаруу үчүн: 5 кадам
Video: Her Saksıya zamanı gelince 1 Avuç Bundan eklerim☘️‼️ Orkide kökleri bundan Çıldırıyor🥳 2024, Ноябрь
Anonim
Менин өсүмдүктөрүмдү куткаруу үчүн FlowerCare жана Nymea
Менин өсүмдүктөрүмдү куткаруу үчүн FlowerCare жана Nymea

Өсүмдүктөргө кам көрүү сенсорлорун учурдагы ачык булактуу акылдуу үйүмө туташтырууда колум кир. Nymea үчүн плагиндерди иштеп чыгуунун жолдору.

Окуя

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

Желедеги ыкчам изилдөө менин көңүлүмдү MiCare же PlantCare деп аталган Xiaomi FlowerCareге бурду. Бул Bluetooth Low Energy түзмөгү жана кээ бир негизги изилдөөлөр анын протоколун түшүнүү абдан оңой көрүнгөнүн көрсөттү. Xiaomi эч кандай ачык мүнөздөмөлөрдү бербесе дагы, интернетте бул түзмөк үчүн бир аз тескери инженерия бар. Ошондуктан мен алардын бирине заказ кылууну чечтим.

Бир нече күндөн кийин ал жеткирилди жана, албетте, мен аны менен ойноп баштадым. Мен аны менен келген колдонмону кыскача текшерип көрдүм, бирок сиз болжогондой, аны демейки жөндөөлөрүндө колдонуу менин планымда болгон эмес. Албетте, бул менин учурдагы акылдуу үй орнотуулары менен интеграцияланышы керек. Ошондой эле бул жерде сүрөттөлгөндөй, мен nymeaны акылдуу үйүмдүн чечими катары колдонуп жатам (Ооба, ал жактагы сүрөттөрдүн биринде Monstera -ды байкаса болот:)). Тилекке каршы, nymea бул сенсорду колдогон жок, андыктан кээ бир IDEди күйгүзүү ирети менен болду.

1 -кадам: Plugin Stub Loaded алуу

Plugin Stub Loading
Plugin Stub Loading
Plugin Stub Loading
Plugin Stub Loading
Plugin Stub Loading
Plugin Stub Loading

Ошентип, мен кылган биринчи нерсе, учурдагы Texas Instruments Sensor Tag плагинин көчүрүү болду, мен FlowerCare түзмөгүндө да иштеши керек деп ойлогондой окшош көрүндү. Plugininfo.json ичиндеги нерселердин негизги аталышын өзгөрткөндөн кийин жана sensortag плагининин көпчүлүк коддорун комментарийлегенден кийин, мен жаңы плагин стубун жүктөөгө даяр болчумун.

Күтүлгөндөй, ачылыш сенсорду дароо көрсөтүп, системага кошууга мүмкүндүк берет. Албетте, бул учурда эч кандай маанилүү маалыматтарды бербейт.

2 -кадам: сенсор боюнча маалыматтарды табуу

Сенсор боюнча маалыматтарды табуу
Сенсор боюнча маалыматтарды табуу

Бардык Bluetooth LE түзмөктөрүндөй эле, биринчи кезекте сиз сунуштаган кызматтар жана алардын мүнөздөмөлөрү жөнүндө билгиңиз келет. Бир жерде чыныгы маалыматтар жашырылган. Бардык табылган кызматтарды оңдоп, алардын мүнөздөмөлөрүн басып чыгаруу менен мен интернеттен тапкан маалыматты түзмөктүн отчеттору менен салыштыра алам.

жараксыз 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 ()). << "Аты:" << мүнөздөмө.ат (.descriptors ()) {qCDebug (dcFlowerCare ()). nospace () <"<< descriptor.uuid (). toString () <<" ("<< descriptor.handle () <<" Name: "<< descriptor).name () << "):" << descriptor.value () << "," << descriptor.value (). toHex (); }}}

Камтылган программанын версиясы жана батарейканын деңгээли оңой эле. Мен маалыматтарды тизмектөөнүн эң биринчи аракетинде басылган баалуулуктарды көрө алдым. Чыныгы сенсор баалуулуктары ал жерде бир аз тереңирээк катылган, бирок аны интернеттен алынган маалыматтар менен бириктирип, аны кайдан табуу керектигин жана өзгөчө кантип окуу керектигин көрсөтүштү.

жараксыз FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & мүнөздөмөсү, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "Мүнөздөмө окуу" << QString:: саны (мүнөздөмө.колго (), 16) темп; qint8 skip; агым >> өткөрүп жиберүү; quint32 lux; агым >> 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 ()) << "Refreshing" address (); flowerCare-> refreshData (); } else {qCDebug (dcFlowerCare ()) << "Жаңылана элек" дареги () << "Кийинки жаңылоо" << m_refreshMinutes [flowerCare] << "мүнөтүндө"; } // Эгерде бизде 2 же андан көп ийгиликсиз туташуу аракети болгон болсо, аны ажыратылган катары белгилеңиз, эгерде (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "Жаңыртылган жок" << (m_refreshMinutes [flowerCare] *) -1) <setStateValue (flowerCareConnectedStateTypeId, жалган); }}}

Бул стратегия менен nymea азыр бул сенсордон толук ишенимдүү маалыматтарды жеткиргендей болду.

4 -кадам: Аны чоң контекстте колдонуу

Аны чоң контекстте колдонуу
Аны чоң контекстте колдонуу
Аны чоң контекстте колдонуу
Аны чоң контекстте колдонуу

Сенсордон баалуулуктарды алуу анчалык деле пайдалуу эмес, бирок мен бул үчүн түпнуска колдонмону колдонмокмун. Эми муну менен акылдуу нерселерди жасайбыз.

Nymea push эскертмелерин жөнөтүүнү колдойт, же nymea бар телефондорго: колдонмо орнотулган, же PushBullet аркылуу. Ошентип, жердин нымдуулугу 15%дан төмөн болгондо, өзүмө бир нече эскертмелерди жөнөтүү керек. Муну колдонмого орнотуу оңой. Алдын ала шарт катары сизге nymea: cloud же PushBullet боюнча эсеп керек. Nymea: булутка негизделген push эскертмелери үчүн nymea: cloud боюнча nymea: core жана nymea: колдонмосун иштетүү жетиштүү. Дароо экөө тең туташканда, автоматтык түрдө билдирме пайда болот. PushBulletке системага жаңы нерсе кошуу үчүн, сиз PushBulletти тизмеден таба аласыз. Ал сизден PushBullet менен катталып жатканда алган API ачкычын сурайт. Сизде nymea'da push билдирүүсү болгондон кийин, сиз эреже түзө аласыз.

Албетте, сиз каалаган нерсеңизди жасай аласыз… Ошондой эле сенсордун маанилерин чагылдыруу үчүн кээ бир жарыкты күйгүзсөңүз болот же HTTP командиринин плагинин колдонуп, сенсордун маанилерин интернеттеги серверге жөнөтө аласыз. санариптик түрдө көзөмөлгө алынышы мүмкүн (бирок), бирок, албетте, эгерде сизде мындай нерсе болсо жана ал nymea тарабынан колдоого алынбаса, буга плагин кошуу буга окшош болмок.

5 -кадам: Жыйынтыктоочу сөздөр

Жабуу сөздөр
Жабуу сөздөр

Flowercare плагини азырынча агымдын агымында кабыл алынган жана эгерде сизде алардын бири болсо, анда азыр nymea менен колдонууга даяр. Бирок, эгер кимдир бирөө башка түзмөктөргө колдоо көрсөтүүнү кааласа, бул макала кызыктырат деп үмүттөнөм. Бул nymea үчүн өзүңүздүн плагинди кантип куруу керектиги боюнча кадам болушу керек.

Эгерде сиз бул жөндөөнү үйүңүздө эле кургуңуз келсе, анда сизге FlowerCare сенсору, Raspberry Pi, nymea коомдоштугунун сүрөтү (азырынча гүлдөргө кам көрүү плагин камтылган) жана nymea: колдонмо дүкөндөрүндө жеткиликтүү. Ошондой эле, буга чейин менин Monstera Deliciosa дагы бактылуу жана сиз скриншоттордо көргөндөй, мен өзүмдүн лимон дарагымдын ден соолугуна көз салуу үчүн ошол сенсорлордун экинчисин алдым. Бул үчүн мен кышында аман -эсен алып келүү үчүн сыртта тоңуп калганда өзүмө эскертүү жөнөтүп жатам.

Сунушталууда: