תוכן עניינים:
- שלב 1: טעינת תקע פלאגין
- שלב 2: מציאת נתונים על החיישן
- שלב 3: גימור נגיעות
- שלב 4: שימוש בו בהקשר גדול יותר
- שלב 5: סגירת מילים
וִידֵאוֹ: FlowerCare ו- Nymea להצלת הצמחים שלי: 5 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
מלכלך ידיים על חיבור חיישני טיפוח צמחים לבית החכם הקיים הקוד הפתוח שלי. הדרכה בנושא פיתוח תוספים עבור nymea.
הסיפור
כמו הרבה מתעסקים והאקרים, אני סובל גם מהבעיה שהפריצה לדברים גוזלת כל כך הרבה מזמני עד שאני שוכח מדי פעם להשקות את הצמחים שלי. לאחר שה- Monstera Deliciosa שלי שוב סבלה מאדמה יבשה, החלטתי לבדוק אם אוכל לעשות משהו בנידון כדי להזכיר לי כשהיא צמאה.
מחקר מהיר באינטרנט הפנה את תשומת לבי ל- Xiaomi FlowerCare, המכונה גם MiCare או PlantCare. זהו מכשיר Bluetooth נמוך אנרגיה וכמה מחקר בסיסי גילה כי נראה שהפרוטוקול שלו די קל להבנה. למרות שייתכן ש- Xiaomi לא מספקת מפרט פומבי, עדיין יש לא מעט הנדסה הפוכה באינטרנט למכשיר זה. אז החלטתי להזמין אחד כזה.
כמה ימים לאחר מכן הוא נמסר וכמובן שהתחלתי לשחק איתו מייד. בדקתי בקצרה את האפליקציה המצורפת אליה, אך כפי שאתה כנראה יכול לנחש, השימוש בה בהגדרת ברירת המחדל שלה מעולם לא הייתה התוכנית שלי. כמובן שצריך לשלב את זה עם התקנת הבית החכם הקיים שלי. כפי שמתואר כאן אני משתמש ב- nymea כפתרון הבית החכם שלי (כן, אתה יכול אפילו לזהות את המונסטרה באחת התמונות שם:)). למרבה הצער, nymea לא תמכה בחיישן הזה עדיין, כך שצריך היה להפעיל קצת IDE.
שלב 1: טעינת תקע פלאגין
אז הדבר הראשון שעשיתי היה להעתיק את התוסף הקיים של Texas Instruments Sensor Tag, הוא נראה מספיק דומה למה שהנחתי שצריך לעבוד גם עבור מכשיר FlowerCare. לאחר שינוי השם הבסיסי של דברים ב- plugininfo.json והערת רוב קוד התוסף של sensortag הייתי מוכן לטעון את תקע התוסף החדש.
כצפוי, הגילוי כבר יראה את החיישן מיד ויאפשר לי להוסיף אותו למערכת. כמובן שזה לא ייצור נתונים משמעותיים בשלב זה.
שלב 2: מציאת נתונים על החיישן
כמו כל מכשיר Bluetooth LE, הדבר הראשון שאתה רוצה לעשות הוא לברר על השירותים שהוא מציע ועל המאפיינים שלהם. אי שם שם הנתונים האמיתיים מוסתרים. עם הדפסה מהירה של ניפוי באגים על כל השירותים שהתגלו והדפסת המאפיינים שלהם הייתי בנקודה שבה אוכל להשוות את המידע שמצאתי באינטרנט למה שהמכשיר מדווח בפועל.
void FlowerCare:: onServiceDiscoveryFinished () {BluetoothLowEnergyDevice *btDev = static_cast (sender ()); qCDebug (dcFlowerCare ()) << "יש לך מדריכי שירות"
גרסת הקושחה ורמת הסוללה היו קלים. כבר יכולתי לראות את הערכים בהתאם להדפסה בניסיון הראשון הזה של רישום הנתונים. ערכי החיישנים האמיתיים מוסתרים שם קצת יותר עמוק, אך שילובם עם הנתונים מהאינטרנט הצביע מייד היכן ניתן למצוא אותו ובמיוחד כיצד לקרוא אותו.
void FlowerCare:: onSensorServiceCharacteristicRead (const QLowEnergyCharacteristic & character, const QByteArray & value) {qCDebug (dcFlowerCare ()) << "קריאה אופיינית" << QString:: number (character.handle (), 16) temp; qint8 לדלג; זרם >> דלג; quint32 lux; זרם >> לוקס; לחות qint8; זרם >> לחות; פוריות qint16; זרם >> פוריות; פולט סיים (m_batteryLevel, 1.0 * טמפ ' / 10, לוקס, לחות, פוריות); }
לאחר חיבור זה, התוסף כבר החל לייצר נתונים בעלי משמעות.
שלב 3: גימור נגיעות
אז זה בעצם עבד עכשיו, עם זאת, נושא אחד עדיין נשאר שם. חיישן FlowerCare היה, בניגוד ל- SensTag של טקסס אינסטרומנטס, מנתק את חיבור ה- Bluetooth לאחר מספר שניות. בהתחשב במקרה השימוש, לא נראה שזו בעיה מכיוון שהיא אמינה למדי בתגובה לניסיונות חיבור. בהתחשב בכך שבדרך כלל צמח אינו שואב ליטר מים בתוך דקות, אלא ימים, לא נראה צורך להישאר מחובר כל הזמן. גם זה יוריד את הסוללה לא מעט. אז החלטתי להוסיף PluginTimer שיחבר מחדש את החיישן כל 20 דקות ויביא ממנו נתונים. אם מסיבה כלשהי החיישן לא היה מגיב לניסיון החיבור, הקוד יפעיל טיימר נוסף המנסה להתחבר מחדש כל דקה מאותה נקודה עד שהוא מצליח להשיג את הנתונים. ואז הוא יחזור להביא נתונים על מרווח של 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] << "דקות"; } // אם היו לנו שני ניסיונות חיבור שנכשלו או יותר, סמן אותו כמנותק אם (m_refreshMinutes [flowerCare] <-2) {qCDebug (dcFlowerCare ()) << "הריענון נכשל עבור" << (m_refreshMinutes [flowerCare] * -1) <setStateValue (flowerCareConnectedStateTypeId, false); }}}
עם אסטרטגיה זו נראה ש nymea מספקת נתונים אמינים לחלוטין מהחיישן הזה.
שלב 4: שימוש בו בהקשר גדול יותר
רק קבלת ערכים מהחיישן היא לא כל כך שימושית, אבל יכולתי גם להשתמש באפליקציה המקורית לשם כך. עכשיו בואו נעשה עם זה כמה דברים חכמים.
Nymea תומכת בשליחת הודעות דחיפה, לטלפונים עם nymea: אפליקציה מותקנת, או באמצעות PushBullet. אז הדבר הברור לעשות הוא לשלוח לעצמי כמה הודעות דחיפה בכל פעם שלחות הקרקע יורדת מתחת ל -15%. זה די קל להגדיר את זה באפליקציה. כתנאי מוקדם או שאתה צריך חשבון ב- nymea: cloud או ב- PushBullet. עבור nymea: הודעות דחיפה מבוססות ענן זה מספיק כדי לאפשר nymea: ענן ב- nymea: core וב- nymea: app. ברגע ששניהם מחוברים, דבר הודעה יופיע אוטומטית. עבור PushBullet הוסף דבר חדש במערכת, תמצא את PushBullet ברשימה שם. הוא יבקש ממך את מפתח ה- API שתקבל בעת ההרשמה ל- PushBullet. ברגע שיש לך דבר של הודעות דחיפה בנימאה, תוכל ליצור כלל.
כמובן שאתה יכול לעשות מה שאתה רוצה … אתה יכול גם להדליק קצת אור על מנת לשקף את ערכי החיישנים, או להשתמש בתוסף מפקד HTTP כדי לפרסם ערכי חיישנים למשל לשרת באינטרנט. אין לי שסתום מים. אשר ניתן לשלוט בו דיגיטלית (עדיין) אבל כמובן, אם יש לך דבר כזה והוא עדיין לא נתמך על ידי nymea, הוספת תוסף עבור זה תהיה די דומה לזה.
שלב 5: סגירת מילים
התוסף לטיפוח פרחים התקבל במעלה הזרם עד עכשיו ואם יש לך אחד מאלה הוא מוכן לשימוש עם nymea כעת. עם זאת, אני מקווה שמאמר זה עשוי לעניין אם מישהו רוצה להוסיף תמיכה במכשירים אחרים. זה צריך להיות הדרכה כיצד לבנות תוסף משלך עבור nymea.
אם אתה רק רוצה לבנות את ההתקנה הזו בבית שלך, כל מה שאתה צריך הוא חיישן FlowerCare, פטל פטל, תמונת הקהילה של nymea (היא כוללת את התוסף לטיפול בפרחים עד עכשיו) ו- nymea: אפליקציה הזמינה בחנויות האפליקציות. כמו כן, עד כה Monstera Deliciosa שלי שוב שמח וכפי שאולי ראית בצילומי המסך, קיבלתי לעצמי אחד מהחיישנים האלה כדי לעקוב אחר בריאות העץ הלימוני שלי. בשביל זה אני שולח לעצמי הודעת דחיפה בכל פעם שקופא בחוץ כדי שאוכל לעבור את זה בחורף בבטחה.
מוּמלָץ:
מקל ניטור לחות קרקע Arduino - לעולם אל תשכח להשקות את הצמחים שלך: 4 שלבים (עם תמונות)
מקל ניטור לחות קרקע Arduino - לעולם אל תשכח להשקות את הצמחים שלך: האם אתה שוכח לעתים קרובות להשקות את הצמחים הפנימיים שלך? או שאולי אתה נותן להם יותר מדי תשומת לב ומים אותם? אם כן, עליך להכין לעצמך מקל ניטור לחות קרקע המונע על ידי סוללה. צג זה משתמש בלחות אדמה קיבולית
החימום החשמלי שלי עם שלי: 13 שלבים
החימום החשמלי שלי עם שלי: רציתי לחלוק את החוויה שלי באוטומציה ביתית של חימום הרצפה החשמלי שלי עם המודולים של Shelly1pm, והתוסף לתרמוסטט של Jeedom. התקנה זו נועדה להפחית את צריכת החשמל שלי, על ידי הגבלת החימום אם אנו רחוקים מהבית
צג בריאות הצמחים: 7 שלבים
צג בריאות הצמחים: שלום, שוב. הסיבה לפרויקט הזה הייתה אחותי הקטנה. יום ההולדת שלה מתקרב, והיא אוהבת שני דברים- הטבע (גם החי והחי) וגם מעט תכשיטים וכאלה. אז רציתי לשלב את שני הדברים האלה ולעשות לה יום הולדת
קליפים להצלת סוללה 9V מסוללות מתות: 10 שלבים
קליפים להצלת סוללה 9V מסוללות מתות: אתה יכול להשתמש בחלק העליון של סוללת 9V ישנה כקליפ סוללה של 9V לפרויקטים שונים של אלקטרוניקה. "קליפ 9V" משמש גם בכמה מחזיקי בלילה של מתח שונה (כלומר מארז סוללות 4AA.) כך יוצרים גרסה יפה עם עופרת חוט … (זה
המקלדת שלי הידיים שלי: 8 שלבים (עם תמונות)
המקלדת שלי הידיים שלי: השתמשתי בחותך הלייזר החדש של Epilog ש- Instructables קיבל לאחרונה כדי לחרוט תמונה של הידיים שלי על המקלדת של המחשב הנייד שלי … לצמיתות. עכשיו זה מבטל את האחריות שלך בסגנון עשה זאת בעצמך! חרטתי בלייזר יותר מחשבים ניידים מרוב מאז שאני עוזר