সুচিপত্র:

ফ্লাওয়ার কেয়ার এবং নাইমিয়া আমার উদ্ভিদ উদ্ধার করতে: 5 টি ধাপ
ফ্লাওয়ার কেয়ার এবং নাইমিয়া আমার উদ্ভিদ উদ্ধার করতে: 5 টি ধাপ

ভিডিও: ফ্লাওয়ার কেয়ার এবং নাইমিয়া আমার উদ্ভিদ উদ্ধার করতে: 5 টি ধাপ

ভিডিও: ফ্লাওয়ার কেয়ার এবং নাইমিয়া আমার উদ্ভিদ উদ্ধার করতে: 5 টি ধাপ
ভিডিও: গাছে ফ্লোরা দিলে কি হয়- Unknown Uses of flora-গাছে ফ্লোরার ব্যবহার 2024, নভেম্বর
Anonim
ফ্লাওয়ার কেয়ার এবং নাইমিয়া আমার গাছগুলিকে উদ্ধার করবে
ফ্লাওয়ার কেয়ার এবং নাইমিয়া আমার গাছগুলিকে উদ্ধার করবে

আমার বিদ্যমান ওপেন সোর্স স্মার্ট হোমের সাথে প্ল্যান্ট কেয়ার সেন্সর জড়িয়ে হাত নোংরা করা। Nymea এর জন্য প্লাগইন ডেভেলপমেন্টের উপর একটি ওয়াকথ্রু।

গল্পটি

অন্যান্য অনেক টিঙ্কার এবং হ্যাকার হিসাবে, আমি এই সমস্যা থেকেও ভুগছি যে জিনিসগুলিতে হ্যাকিং আমার এত বেশি সময় নেয় যে আমি মাঝে মাঝে আমার গাছগুলিতে জল দিতে ভুলে যাই। আমার মনস্টেরা ডেলিসিওসা আবার শুকনো মাটিতে ভোগার পর, আমি তৃষ্ণার্ত হলে আমাকে মনে করিয়ে দেওয়ার জন্য আমি এটি সম্পর্কে কিছু করতে পারি কিনা তা দেখার সিদ্ধান্ত নিয়েছি।

ওয়েবে একটি দ্রুত গবেষণা আমার দৃষ্টি আকর্ষণ করেছে শাওমি ফ্লাওয়ারকেয়ার, যা মাইকেয়ার বা প্লান্টকেয়ার নামেও পরিচিত। এটি একটি ব্লুটুথ লো এনার্জি ডিভাইস এবং কিছু মৌলিক গবেষণায় জানা গেছে যে এর প্রোটোকল বোঝা বেশ সহজ বলে মনে হচ্ছে। যদিও শাওমি কোন পাবলিক স্পেক্স প্রদান করে বলে মনে হয় না, এই ডিভাইসের জন্য ইন্টারনেটে বেশ কিছুটা রিভার্স ইঞ্জিনিয়ারিং হয়েছে। তাই আমি এর মধ্যে একটি অর্ডার করার সিদ্ধান্ত নিয়েছি।

কিছু দিন পরে এটি বিতরণ করা হয় এবং অবশ্যই আমি এখনই এটির সাথে খেলতে শুরু করি। আমি সংক্ষিপ্তভাবে এটির সাথে আসা অ্যাপ্লিকেশনটি পরীক্ষা করে দেখেছি কিন্তু আপনি সম্ভবত অনুমান করতে পারেন, এটির ডিফল্ট সেটআপ ব্যবহার করা কখনই আমার পরিকল্পনা ছিল না। অবশ্যই এটি আমার বিদ্যমান স্মার্ট হোম সেটআপের সাথে একীভূত হওয়া প্রয়োজন এখানে যেমন বর্ণনা করা হয়েছে আমি আমার স্মার্ট হোম সলিউশন হিসাবে নিমাইয়া ব্যবহার করছি (হ্যাঁ, আপনি সেখানে একটি ছবিতে মনস্টেরাও দেখতে পারেন:))। দুlyখের বিষয়, নিমাইয়া সেই সেন্সরকে সমর্থন করেনি, তারপরও কিছু আইডিই ফায়ার করা ঠিক ছিল।

ধাপ 1: একটি প্লাগইন স্টাব লোড হচ্ছে

একটি প্লাগইন স্টাব লোড হচ্ছে
একটি প্লাগইন স্টাব লোড হচ্ছে
একটি প্লাগইন স্টাব লোড হচ্ছে
একটি প্লাগইন স্টাব লোড হচ্ছে
একটি প্লাগইন স্টাব লোড হচ্ছে
একটি প্লাগইন স্টাব লোড হচ্ছে

তাই আমি প্রথম যে কাজটি করেছি তা হল বিদ্যমান টেক্সাস ইন্সট্রুমেন্টস সেন্সর ট্যাগ প্লাগইনটি অনুলিপি করা, এটি ফ্লাওয়ারকেয়ার ডিভাইসের জন্যও কাজ করা উচিত বলে আমি অনুমান করেছি। প্লাগইনইনফো.জসনে জিনিসগুলির মৌলিক নামকরণ এবং সেন্সরটেগ প্লাগইন কোডের বেশিরভাগ মন্তব্য করার পরে আমি নতুন প্লাগইন স্টাব লোড করার জন্য প্রস্তুত ছিলাম।

প্রত্যাশিত হিসাবে, আবিষ্কারটি ইতিমধ্যে সেন্সরটি দেখাবে এবং আমাকে এটি সিস্টেমে যুক্ত করার অনুমতি দেবে। অবশ্যই এটি এই মুহুর্তে কোনও অর্থপূর্ণ ডেটা তৈরি করবে না।

ধাপ 2: সেন্সরে ডেটা খোঁজা

সেন্সরে ডেটা খোঁজা
সেন্সরে ডেটা খোঁজা

যেকোনো ব্লুটুথ এলই ডিভাইসের মতো, আপনি যা করতে চান সেগুলি এবং তাদের বৈশিষ্ট্যগুলি সম্পর্কে জানতে হবে। সেখানে কোথাও প্রকৃত তথ্য লুকানো আছে। সমস্ত আবিষ্কৃত পরিষেবাগুলির উপর একটি দ্রুত ডিবাগ প্রিন্ট লুপিং এবং তাদের বৈশিষ্ট্যগুলি মুদ্রণ করার সময় আমি সেই জায়গায় ছিলাম যেখানে আমি ইন্টারনেটে পাওয়া তথ্যের তুলনা করতে পারতাম যা ডিভাইসটি আসলে রিপোর্ট করে।

void FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice *btDev = static_cast (sender ()); qCDebug (dcFlowerCare ()) << "have service uuids" নিয়ামক ()-> createServiceObject (sensorServiceUuid, এই); সংযোগ করুন (m_sensorService, & QLowEnergyService:: stateChanged, this, & FlowerCare:: onSensorServiceStateChanged); সংযোগ করুন (m_sensorService, & QLowEnergyService:: characteristicRead, this, & FlowerCare:: onSensorServiceCharacteristicRead); m_sensorService-> discoverDetails (); } void FlowerCare:: onSensorServiceStateChanged (const QLowEnergyService:: ServiceSate & state) {যদি (state! = QLowEnergyService:: ServiceDiscovered) {return; } পূর্বাঞ্চল << "নাম:" << characteristic.name () << "):" << characteristic.value () << "," << characteristic.value ()। ToHex (); foreach (const QLowEnergyDescriptor & descriptor, characteristic.descriptors ()) {qCDebug (dcFlowerCare ())। nospace () <"<< descriptor.uuid ()। toString () <<" ("<< descriptor.handle () <<" Name: "<< descriptor.name () << "):" << descriptor.value () << "," << descriptor.value ()। toHex (); }}}

ফার্মওয়্যার সংস্করণ এবং ব্যাটারি স্তর সহজ ছিল। আমি ইতিমধ্যে তথ্য তালিকাভুক্তির এই প্রথম প্রচেষ্টায় মুদ্রিত মানগুলি দেখতে পাচ্ছি। আসল সেন্সরের মানগুলি সেখানে কিছুটা গভীরভাবে লুকানো রয়েছে, তবে এটিকে ইন্টারনেট থেকে প্রাপ্ত ডেটার সাথে যুক্ত করে অবিলম্বে এটি কোথায় পাওয়া যায় এবং বিশেষ করে কীভাবে এটি পড়তে হবে তা নির্দেশ করে।

void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & characteristic, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "Characteristic read" << QString:: number (characteristic.handle (), 16) temp; qint8 এড়িয়ে যান; স্ট্রিম >> এড়িয়ে যান; quint32 lux; স্ট্রিম >> লাক্স; qint8 আর্দ্রতা; স্ট্রিম >> আর্দ্রতা; qint16 উর্বরতা; প্রবাহ >> উর্বরতা; নির্গত নির্গত (m_batteryLevel, 1.0 * temp / 10, lux, আর্দ্রতা, উর্বরতা); }

এটিকে একসাথে রেখে, প্লাগইনটি ইতিমধ্যে অর্থপূর্ণ ডেটা তৈরি করতে শুরু করেছে।

ধাপ 3: সমাপ্তি স্পর্শ

সমাপক ছোঁয়া
সমাপক ছোঁয়া

সুতরাং এটি মূলত এখন কাজ করেছে, তবে, একটি সমস্যা এখনও সেখানে রয়ে গেছে। ফ্লাওয়ারকেয়ার সেন্সর, টেক্সাস ইন্সট্রুমেন্টস সেন্সরট্যাগের বিপরীতে, কয়েক সেকেন্ডের পরে ব্লুটুথ সংযোগ বন্ধ করে দেবে। যদিও ব্যবহারের ক্ষেত্রে বিবেচনা করা হচ্ছে, এটি একটি সমস্যা বলে মনে হচ্ছে না কারণ এটি সংযোগ প্রচেষ্টার প্রতিক্রিয়া জানাতে বেশ নির্ভরযোগ্য। সাধারণত একটি উদ্ভিদ কয়েক মিনিটের মধ্যে এক লিটার পানি চুষে না, বরং দিনের পর দিন, সব সময় সংযুক্ত থাকা অপরিহার্য বলে মনে হয় না। এছাড়াও এটি ব্যাটারিকে অনেকটা নিষ্কাশন করবে। তাই আমি একটি প্লাগইনটাইমার যুক্ত করার সিদ্ধান্ত নিয়েছি যা প্রতি 20 মিনিটে সেন্সরটিকে পুনরায় সংযুক্ত করবে এবং এটি থেকে ডেটা আনবে। যদি, কোন কারণে, সেন্সর সংযোগের প্রচেষ্টায় সাড়া না দেয়, কোডটি আরেকটি টাইমার শুরু করবে যা সেই পয়েন্ট থেকে প্রতি মিনিটে পুনরায় সংযোগ করার চেষ্টা করে যতক্ষণ না এটি ডেটা পেতে পরিচালিত হয়। তারপর এটি আবার 20 মিনিটের ব্যবধানে ডেটা আনতে ফিরে যাবে। যদি ডিভাইসটি পরপর দুবার সংযোগ করতে ব্যর্থ হয় (অর্থাত্ 20 + 1 মিনিটের পরে), এটি সিস্টেমে অফলাইনে চিহ্নিত হবে এবং ব্যবহারকারীকে এটি সম্পর্কে সতর্ক করা যেতে পারে।

void DevicePluginFlowercare:: onPluginTimer () {foreach (FlowerCare *flowerCare, m_list) {if (--m_refreshMinutes [flowerCare] <= 0) {qCDebug (dcFlowerCare ()) << "রিফ্রেশিং" ঠিকানা (); ফুলের কেয়ার-> রিফ্রেশডাটা (); } অন্য {qCDebug (dcFlowerCare ()) << "রিফ্রেশ করা হচ্ছে না" ঠিকানা () << "পরবর্তী রিফ্রেশ" << m_refreshMinutes [flowerCare] << "minutes"; } // যদি আমাদের 2 বা ততোধিক ব্যর্থ সংযোগ প্রচেষ্টা থাকে, তাহলে এটি সংযোগ বিচ্ছিন্ন হিসাবে চিহ্নিত করুন যদি -1) <setStateValue (flowerCareConnectedStateTypeId, false); }}}

এই কৌশলের সাথে Nymea এখন এই সেন্সর থেকে পুরোপুরি নির্ভরযোগ্য তথ্য সরবরাহ করবে বলে মনে হচ্ছে।

ধাপ 4: বৃহত্তর প্রসঙ্গে এটি ব্যবহার করা

এটি বৃহত্তর প্রসঙ্গে ব্যবহার করা
এটি বৃহত্তর প্রসঙ্গে ব্যবহার করা
এটি বৃহত্তর প্রসঙ্গে ব্যবহার করা
এটি বৃহত্তর প্রসঙ্গে ব্যবহার করা

সেন্সর থেকে শুধু মান পাওয়া খুব বেশি দরকারী নয়, আমি এর জন্য মূল অ্যাপটিও ব্যবহার করতে পারতাম। এখন এর সাথে কিছু স্মার্ট জিনিস করা যাক।

Nymea পুশ বিজ্ঞপ্তি পাঠাতে সমর্থন করে, হয় Nymea: ফোনে ইনস্টল করা, অথবা PushBullet এর মাধ্যমে ফোনে। তাই সুস্পষ্ট কাজ হল যখনই মাটির আর্দ্রতা 15%এর নিচে নেমে আসে তখন আমাকে কিছু পুশ বিজ্ঞপ্তি পাঠাতে হয়। এটি অ্যাপে সেট আপ করা বরং সহজ। পূর্বশর্ত হিসাবে আপনার হয় Nymea: cloud বা PushBullet এ একটি অ্যাকাউন্ট প্রয়োজন। Nymea: ক্লাউড ভিত্তিক পুশ বিজ্ঞপ্তিগুলির জন্য nymea: nymea: core এবং nymea: app এ সক্ষম করার জন্য এটি যথেষ্ট। যত তাড়াতাড়ি উভয় সংযুক্ত করা হয়, একটি বিজ্ঞপ্তি জিনিস স্বয়ংক্রিয়ভাবে প্রদর্শিত হবে। PushBullet সিস্টেমে একটি নতুন জিনিস যোগ করার জন্য, আপনি সেখানে তালিকায় PushBullet পাবেন। PushBullet- এ সাইন আপ করার সময় আপনি যে API কী পাবেন তা এটি আপনাকে জিজ্ঞাসা করবে। একবার আপনার Nymea এ একটি পুশ বিজ্ঞপ্তি জিনিস আছে, আপনি একটি নিয়ম তৈরি করতে পারেন।

অবশ্যই আপনি যা করতে চান তা করতে পারেন … সেন্সর মান প্রতিফলিত করার জন্য কিছু আলো চালু করতে পারেন, অথবা উদাহরণস্বরূপ ইন্টারনেটে একটি সার্ভারে সেন্সর মান পোস্ট করার জন্য HTTP কমান্ডার প্লাগইন ব্যবহার করতে পারেন। আমার কাছে পানির ভালভ নেই যা ডিজিটালভাবে (এখনো) নিয়ন্ত্রিত হতে পারে কিন্তু অবশ্যই, যদি আপনার এমন কিছু থাকে এবং এটি এখনও নাইমিয়া দ্বারা সমর্থিত না হয়, তার জন্য একটি প্লাগইন যোগ করা এর চেয়ে বরং অনুরূপ হবে।

ধাপ 5: বন্ধ শব্দ

সমাপনী শব্দ
সমাপনী শব্দ

ফ্লাওয়ারকেয়ার প্লাগইনটি এখন পর্যন্ত উজানে গৃহীত হয়েছে এবং আপনার যদি এর মধ্যে একটি থাকে তবে এটি এখন নিমাইয়ের সাথে ব্যবহার করার জন্য প্রস্তুত। যাইহোক, আমি আশা করি এই নিবন্ধটি আগ্রহী হতে পারে যদি কেউ অন্য ডিভাইসের জন্য সমর্থন যোগ করতে চায়। Nymea- এর জন্য আপনার নিজের প্লাগইন কিভাবে তৈরি করা যায় তার উপর এটি একটি ওয়াকথ্রু হওয়া উচিত।

আপনি যদি শুধু আপনার বাড়িতে এই সেটআপটি তৈরি করতে চান, তাহলে আপনার প্রয়োজন শুধু ফ্লাওয়ার কেয়ার সেন্সর, একটি রাস্পবেরি পাই, নাইমিয়া কমিউনিটি ইমেজ (এতে এখন পর্যন্ত ফুল কেয়ার প্লাগইন অন্তর্ভুক্ত), এবং নাইমিয়া: অ্যাপ যা অ্যাপ স্টোরগুলিতে পাওয়া যায়। এছাড়াও, এখন পর্যন্ত আমার মনস্টেরা ডেলিসিওসা আবার খুশি এবং যেমন আপনি স্ক্রিনশটগুলিতে দেখেছেন, আমি আমার লেবু গাছের স্বাস্থ্য ট্র্যাক করার জন্য নিজেকে সেই সেন্সরগুলির মধ্যে একটি পেয়েছি। এর জন্য আমি যখনই বাইরে ঠান্ডা থাকি তখন নিজেকে পুশ বিজ্ঞপ্তি পাঠাচ্ছি যাতে আমি নিরাপদে শীতের মধ্য দিয়ে এটি আনতে পারি।

প্রস্তাবিত: