يستخدم هذا المشروع جهاز Raspberry Pi Zero W وPimoroni Enviro+ ومستشعر جودة الهواء Plantower لمراقبة وعرض والإبلاغ عن جزيئات الهواء والغازات ودرجة الحرارة والرطوبة وضغط الهواء ومستويات الضوء ومستويات الضوضاء. هناك أيضًا خيار مراقبة مستويات eCO2 وTVOC عن طريق إضافة مستشعر SGP30. يعتمد الكود على العديد من أمثلة ومكتبات بايثون التي نشرها بيموروني، مع مجموعة من التعديلات والتحسينات.
تمت إضافة وظيفة أساسية للتنبؤ بالطقس، بناءً على مستويات ضغط الهواء والتغيرات.
تم تغيير عرض مستوى الإضاءة في حالة الطقس والضوء الرائعة لعرض مستويات جودة الهواء. يمثل لون الخلفية الآن مستوى جودة الهواء ويتم الآن عرض موقع الشمس عبر أيقونة الشمس المرئية. كما يوفر أيضًا معلومات تنبؤات الطقس ومستويات الضوضاء (إذا تم تمكينها) ويحتوي على بعض التغييرات الطفيفة في مؤشر الرطوبة.
تم تعديل الوظيفة المدمجة لتوفير رؤية محسنة لكل رسم بياني. تعتمد ألوان الرسم البياني على حدود المستوى لكل معلمة وتعرض فقط المعلمات التي تم قياسها. تم أيضًا تعديل طريقة "display_everything" لإظهار معلمات جودة الهواء فقط، وذلك لتحسين إمكانية قراءة الشاشة.
تم تعديل وظيفة All in One للسماح بالتنقل بين جميع وظائف Enviro Monitor.
تم تحسين دقة قياسات درجة الحرارة والرطوبة من خلال إجراء اختبارات واسعة النطاق وتحليل الانحدار (بين 0 و40 درجة مئوية) لتطوير خوارزميات تعويض أكثر فعالية. ومع ذلك، حتى هذه الخوارزميات المحسنة لم توفر دقة كافية، وكان من الضروري استخدام علبة مطبوعة ثلاثية الأبعاد لفصل Enviro+ عن Raspberry Pi Zero W وتوصيلهما عبر كابل شريطي.
بالإضافة إلى تحسين قياسات درجة الحرارة والرطوبة، تم إجراء الاختبار وتحليل الانحدار لتوفير الانجراف على أساس الوقت ودرجة الحرارة والرطوبة وتعويض ضغط الهواء لأجهزة استشعار الغاز Enviro+. تُستخدم أيضًا الخوارزميات ومعايرة الهواء النظيف لتوفير قراءات مستشعر الغاز بجزء في المليون. يتم توفير وظيفة تسجيل البيانات لدعم تحليل الانحدار. يجب تمكين ملف السجل لهذا التحليل وتحويله إلى تنسيق json صالح قبل إجراء المزيد من تحليل الانحدار.
يتم توفير دقة قراءات ضغط الهواء من خلال تعويض الارتفاع. يتم تعيين الارتفاع بواسطة معلمة "altitude" في ملف config.json.
العلبة ليست مقاومة للماء وتحتاج إلى الحماية من العناصر. القاعدة مطلوبة فقط إذا لم يتم تركيب الوحدة على سطح عمودي. هناك نوع مختلف من العلبة والغطاء لطراز Indoor Plus الذي يراقب مستويات eCO2 وTVOC. يوفر هذا النوع من العلبة مساحة إضافية وتدفق هواء لمستشعر SGP30.
تحتوي العلبة أيضًا على خيار إضافة غطاء للطقس لتوفير حماية إضافية من العناصر. عند استخدام هذا الغلاف، من الضروري ضبط "enable_display" في ملف config.json على "خطأ". وهذا يحد من وظيفة العرض لتقتصر فقط على اللون والرقم التسلسلي المعتمدين على جودة الهواء، بالإضافة إلى تغيير متغيرات تعويض درجة الحرارة والرطوبة للتخفيف من تأثير الغطاء على مستشعر درجة الحرارة والرطوبة.
تمت إضافة قياسات مستويات الضوضاء التقريبية إلى الإصدار 6، بناءً على هذا المستودع. لم تتم معايرة هذه الميزة ولا يجوز استخدامها لإجراء قياسات دقيقة لمستوى الصوت. قام الإصدار 6.7 بتحسين تعويض التردد لوظيفة قياس مستوى الضوضاء، باستخدام هذا، ولكن لا يزال هناك حاجة إلى مزيد من العمل والمعايرة. تتطلب وظيفة قياس مستوى الضوضاء إعدادًا إضافيًا (موضح أدناه) وبعد الإعداد، يجب تمكينها في ملف التكوين.
يتم توفير دعم mqtt لتمكين استخدام أجهزة استشعار درجة الحرارة والرطوبة الخارجية (لتسجيل البيانات وتحليل الانحدار)، والتشغيل البيني بين شاشة Enviro ونظام التشغيل الآلي للمنزل ودعم التشغيل البيني بين شاشات Enviro الخارجية والداخلية. يسمح هذا التشغيل البيني بعرض شاشة Enviro Monitor الداخلية للتنقل بين القراءات الداخلية والخارجية.
البديل لاستخدام شاشات Enviro الداخلية والخارجية المرتبطة بـ mqtt للحصول على قراءات خارجية على شاشة Enviro Monitor الداخلية، هو تكوين شاشة Enviro Monitor الداخلية لالتقاط قراءات Luftdaten أو خلاصات Adafruit IO من شاشة Enviro أخرى.
تم تعديل التشغيل البيني Luftdaten لدعم إضافة قراءات مستوى الضوضاء الأدنى والحد الأقصى والمتوسط. يمكن إرسال قراءات مستوى الضوضاء إلى Luftdaten عن طريق ضبط "enable_luftdaten_noise" على القيمة true في ملف config.json. لاحظ أنه لا يمكن تكوين Luftdaten حاليًا بثلاثة أجهزة استشعار لكل عقدة، لذلك لا يمكن إرسال قراءات مستوى الضوضاء إلى Luftdaten إلا إذا تم تعطيل قراءات PM أو المناخ. يمكن القيام بذلك عن طريق تعيين "disable_luftdaten_sensor_upload" في ملف config.json إما على "Climate" أو "PM".
يتم استخدام نفس إعداد Enviro+ لإعداد Enviro Monitor ويتم استخدام معلمات الملف config.json لتخصيص وظائفه. يوجد وصف لمعلمات ملف config.json هنا.
يتطلب إعداد قياسات مستوى الضوضاء الخطوات الإضافية التالية:
يعد التنفيذ الناجح لهذا الإعداد ضروريًا قبل تمكين قياس الضوضاء في ملف التكوين.
سودو الرابطة بين الحصول على التحديث
سودو الرابطة بين الحصول على الترقية
حليقة -sSL https://get.pimoroni.com/enviroplus | سحق
sudo python -m pip إلغاء تثبيت sounddevice
sudo pip3 تثبيت sounddevice==0.3.15
بالنسبة للإصدارات 6.7 والإصدارات الأحدث، قم أيضًا بما يلي:
sudo apt-get install python3-scipy
Sudo pip3 تثبيت git+https://github.com/endolith/waveform_analogy.git@master
ثم اتبع التعليمات الموجودة على: https://learn.adafruit.com/adafruit-i2s-mems-microphone-breakout/raspberry-pi-wiring-test بما في ذلك "إضافة التحكم في مستوى الصوت"
استخدم ما يلي بدلاً من النص الموثق لـ ~/.asoundrc:
للإصدارات السابقة للإصدار 6.7:
استخدم alsamixer لضبط مستوى التقاط adau7002 على 50
للإصدار 6.7 والإصدارات الأحدث:
استخدم alsamixer لضبط مستوى التقاط adau7002 على 10
يوفر دليل المستخدم إرشادات حول استخدام Enviro Monitor.
يتم توفير الدعم لتدفق توقعات الطقس، وجودة الهواء، ودرجة الحرارة، والرطوبة، ونقطة الندى، وضغط الهواء، وتركيز PM، وتركيز الغاز، ومستويات الضوء، ومستويات الضوضاء، ومع مستشعر SGP30 الاختياري، وبيانات eCO2 وTVOC إلى Adafruit IO. يمكن تمكين هذا وإعداده على النحو التالي:
يجب ملء الحقول التالية في ملف config.json الخاص بـ Enviro Monitor لتوفير البيانات إلى خلاصات Adafruit IO.
"enable_adafruit_io": اضبط على "صحيح" للتمكين وعلى "خطأ" لتعطيل خلاصات Adafruit IO،
"aio_user_name": "اسم مستخدم Adafruit IO الخاص بك"،
"aio_key": "مفتاح Adafruit IO الخاص بك"،
"aio_feed_window": القيمة بين 0 و9. يضبط وقت البدء لنافذة التغذية لمدة دقيقة واحدة (راجع التحكم في اختناق Adafruit). اضبط على 0 إذا كان لديك شاشة Enviro واحدة فقط،
"aio_feed_sequence": القيمة بين 0 و3. يضبط وقت بدء تحديث الخلاصة خلال نافذة تحديث الخلاصة التي تبلغ دقيقة واحدة (راجع التحكم في اختناق Adafruit). اضبط على 0 إذا كان لديك شاشة Enviro واحدة فقط،
"aio_household_prefix": "بادئة مفتاح Adafruit IO للمنزل الذي تراقبه (راجع اتفاقية تسمية Adafruit IO)"،
"aio_location_prefix": "بادئة مفتاح Adafruit IO لموقع شاشة Enviro هذه تحديدًا. استخدم "داخلي" للشاشة الداخلية أو "خارجي" للشاشة الخارجية. (راجع اتفاقية تسمية Adafruit IO)"،
"aio_package": اضبط على "Premium Plus" أو "Premium Plus Noise" أو "Premium" أو "Premium Noise" أو "Basic Air" أو "Basic Combo"
ستحتاج إلى حساب Adafruit IO+ لتتمكن من استخدام باقات "Premium Plus" أو "Premium Plus Noise" أو "Premium" أو "Premium Noise" وشاشة Enviro Monitor Indoor Plus (المجهزة بمستشعر SGP30 eCO2/TVOC) لـ " باقات Premium Plus' أو 'Premium Plus Noise' (انظر باقات Adafruit IO)"،
يقوم البرنامج النصي بإعداد خلاصات Adafruit IO الخاصة بـ Enviro Monitor ولوحات المعلومات والكتل مثل هذا المثال
يمكن للبرنامج النصي إعداد أسر ومواقع متعددة في تشغيل واحد، عن طريق ملء قاموس aio_feed_prefix بالبيانات المطلوبة. تنسيق aio_feed_prefix هو:
aio_feed_prefix = {'اسم المنزل 1': {'مفتاح': 'مفتاح المنزل 1', 'الحزمة': 'aio_package', 'المواقع': {'Location1Name': 'location1key', 'Location2Name': 'location2key'}, 'الرؤية ': 'عام' أو 'خاص'}، 'اسم الأسرة 2': {'مفتاح': 'household2key'، 'package': 'aio_package'، 'locations': {'Location1Name': 'location1key'}، 'visibility': 'عام' أو 'خاص'}}
يجب أن تكون أسماء الأسرة والمفاتيح المنزلية متوافقة مع تلك المحددة في ملفات config.json الخاصة بمراقبي Enviro ذات الصلة.
على سبيل المثال، إذا كان لديك شاشة Enviro واحدة فقط لأسرتك، وإذا قمت بتعيين "aio_household_prefix" على "home" و"aio_location_prefix" على "outdoor" و"aio_package" على "Premium" في ملف config.json الخاص بك مراقبة Enviro، وإذا كنت تريد تعيين الخلاصات ولوحات المعلومات والكتل مع رؤية خاصة:
aio_feed_prefix = {'Home': {'key': 'home', 'package': Premium', 'locations': {'Outdoor': 'outdoor'}, 'visibility': 'private'}}
إذا كان لديك شاشتي Enviro لمنزلك، وإذا قمت بتعيين ملفات config.json كـ "aio_household_prefix" على "home" لكل من شاشتي Enviro، و"aio_location_prefix" على "outdoor" للشاشة الخارجية و"indoor" لشاشتي Enviro. شاشتك الداخلية، ومن "aio_package" إلى "Premium" لشاشتك الخارجية و"Premium Plus" لشاشتك الداخلية، وإذا كنت تريد الخلاصات ولوحات المعلومات و مجموعة الكتل ذات الرؤية العامة:
aio_feed_prefix = {'Home': {'key': 'home', 'package': Premium Plus', 'locations': {'Outdoor': 'outdoor', 'Indoor': 'indoor'}, 'visibility': 'عام'}}
القواميس الأخرى المعرفة من قبل المستخدم هي aio_user_name وaio_key. يجب أن يتم ملؤها بنفس اسم المستخدم والمفتاح الذي استخدمته في ملف config.json الخاص بجهاز Enviro Monitor.
aio_user_name = "اسم مستخدم Adafruit IO الخاص بك"
aio_key = "مفتاح الإدخال والإخراج الخاص بـ Adafruit"
إذا تم تمكينه، فسيتم إنشاء تحديثات موجز Adafruit IO كل 10 دقائق. يتم استخدام متغيرات aio_feed_window وaio_feed_sequence الخاصة بملف التكوين لتقليل أخطاء اختناق Adafruit IO عند تجميع الخلاصات من شاشات Enviro المتعددة. يمكن أن يكون المتغير aio_feed_window قيمة تتراوح بين 0 و9 لتعيين وقت البدء لنافذة تحديث موجز مدتها دقيقة واحدة. 0 يفتح النافذة عند 0 و10 و20 و30 و40 و50 دقيقة بعد الساعة، 1 يفتح النافذة عند 1 و11 و21 و31 و41 و51 دقيقة بعد الساعة، 2 يفتح النافذة عند 2، 12، 22، 32، 42 و 52 دقيقة بعد الساعة، وهكذا. يمكن أن يكون المتغير aio_feed_sequence قيمة تتراوح بين 0 و3 لتعيين وقت بدء تحديث الخلاصة خلال نافذة تحديث الخلاصة التي تبلغ دقيقة واحدة. 0 يبدأ تحديث التلقيم مباشرة بعد فتح النافذة، 1 يؤخر البدء بمقدار 15 ثانية، 2 بمقدار 30 ثانية، و3 بمقدار 45 ثانية.
إن اصطلاح التسمية لكل خلاصات Adafruit IO الخاصة بـ Enviro Monitor أو لوحات المعلومات أو الكتل، هو استخدام اسم الأسرة، متبوعًا بموقع موقع Enviro Monitor ذي الصلة داخل تلك الأسرة، كبادئة لكل خلاصة أو لوحة معلومات أو كتلة. اخترت اسمًا مناسبًا لـ "aio_household_prefix"، ويمكن أن يكون "aio_location_prefix" إما "داخلي" أو "خارجي". على سبيل المثال، يؤدي تعيين "aio_household_prefix" إلى "home" و"aio_location_prefix" إلى "outdoor" إلى تعيين بادئة اسم كل خلاصة على أنها "Home Outdoor" وبادئة مفتاح كل خلاصة على أنها "home-outdoor-". لذلك، سيكون لتغذية درجة الحرارة اسم "درجة حرارة المنزل الخارجية" ومفتاح "درجة حرارة المنزل-الخارج" وستحتوي لوحة القيادة على اسم "المنزل" ومفتاح "المنزل" وكتلة قياس درجة الحرارة داخل لوحة القيادة تلك سيكون له اسم "مقياس درجة الحرارة الخارجية" ومفتاح "مقياس درجة الحرارة الخارجية".
تتوفر ستة خيارات لحزمة Adafruit IO: "Premium" مع 14 خلاصة بيانات لكل Enviro، و"Premium Noise" مع 17 خلاصة بيانات لكل Enviro، و"Premium Plus" مع 16 خلاصة بيانات لكل Enviro (أي إضافة eCO2 وTVOC من خلال الخيار الاختياري) مستشعر SGP30)، "Premium Plus Noise" مع 19 خلاصة بيانات لكل Enviro والتي تحتاج جميعها إلى حساب Adafruit IO+؛ "الهواء الأساسي" مع 5 تدفقات بيانات جودة الهواء (مستوى جودة الهواء، نص جودة الهواء، PM1، PM2.5 وPM10) و"Basic Combo" مع 5 تيارات لجودة الهواء/المناخ (مستوى جودة الهواء، أيقونة توقعات الطقس، درجة الحرارة، الرطوبة وضغط الهواء).
يتطلب استخدام حزمتي "Premium Noise" و"Premium Plus Noise" Adafruit IO تكوين قياسات الضوضاء وتمكينها في Enviro، باستخدام تعليمات الإعداد ذات الصلة. يقوم الإصدار 6.5 بتغيير خلاصات الضوضاء ولوحات المعلومات لإظهار مستويات الضوضاء القصوى والدنيا والمتوسط بين تحديثات الخلاصة، بينما أظهرت الإصدارات السابقة فقط مستويات الضوضاء القصوى بين تحديثات الخلاصة.
تم ترخيص هذا المشروع بموجب ترخيص MIT - راجع ملف LICENSE.md للحصول على التفاصيل
توقعات الطقس بناءً على www.worldstormcentral.co/law_of_storms/secret_law_of_storms.html بواسطة RJ Ellis