نظام سقي الحديقة التلقائي لمساعد المنزل ، ESP8266 و MiFlora



منذ بعض الوقت كان لعائلتي منزل مع حديقة صغيرة في مكان دافئ وجاف للغاية ، وواجهنا مشكلة الري المنتظم.

كنت أرغب في أن يكون نظام الري أوتوماتيكيًا ، ولدى اختياره كان عليّ مراعاة الشروط التالية:

  • مياه باهظة الثمن يجب توفيرها بكل الطرق المتاحة
  • نباتات مختلفة في الحديقة لمتطلبات الرطوبة ، من العصارة إلى المحبة للرطوبة
  • الحاجة إلى الري المستقل تمامًا أثناء غياب الأشخاص في المنزل ، ويفضل أن يكون ذلك مع إمكانية التحكم عن بعد
  • مناخ جاف لا يغفر أخطاء الري

بعد تقييم الحلول الجاهزة التي تم العثور عليها على شبكات DIY المحلية وعلى Amazon وقراءة المراجعات حول موثوقيتها (عادةً ليست الأعلى) ، قررنا محاولة القيام بشيء ما بمفردنا.

إخلاء المسؤولية: المؤلف ليس متخصصًا في تكنولوجيا المعلومات ، ولا يدعي أنه معرفة مهنية بالموضوع. مستوى تنفيذ المشروع هو هواية. يدرك المؤلف جيدًا مستوى معرفته بالبرمجة والإلكترونيات وسيقدر بشدة الاقتراحات لتحسين وتحسين الحلول المستخدمة.

مخطط الرسم البياني


تم تقسيم الحديقة إلى 4 مناطق ري ، كل منها مجهز بجهاز استشعار رطوبة التربة الفردية ويمكن ريه وفقًا لجدول فردي وكمية مختلفة من المياه.
على الأرض ، يتم وضع أنابيب PND للري بالتنقيط مع الانثقاب ، والتي ترتبط بالأنابيب المتقاربة في وحدة تجميع المياه ويتم توصيلها من خلال الصمامات الكهرومغناطيسية بإمدادات المياه. يتم التحكم في الصمامات بواسطة مرحلات متصلة بـ ESP8266 (Sonoff 4Ch).

يتم الري من خلال المؤقتات ليلاً لزيادة كمية الماء التي يتم امتصاصها في الأرض ولن تتبخرها الشمس.

في وقت الري المحدد ، يتم التحقق من الامتثال لعدة شروط:

  • رطوبة التربة أقل من القيمة المحددة مسبقًا
  • لا يوجد هطول متوقع في كمية كبيرة بما يكفي لليومين القادمين
  • لا يتم تجاوز حد المياه للري لهذا الخط

المعدات المستعملة


فطيرة التوت مع تثبيت HassIO (لديها بالفعل)

ESP32 DevKit ، وهو برنامج ثابت ESPHome ، يعمل كبوابة بلوتوث لـ MiFlora ويستقبل البيانات من أجهزة استشعار الرطوبة السلكية. موجود في الحديقة ،

مستشعرات رطوبة سلكية ، مستشعر رطوبة التربة بالسعة v1.2 ، والذي يقيس الرطوبة في مناطق الري الأقرب إلى موقع التثبيت ESP32. ترتبط

مستشعرات MiFlora بـ ESP32 عبر BLE ، والتي تقيس الرطوبة في مناطق الري عن بعد.

تقع SONOFF 4Ch ، التي تومض بـ ESPHome ، في وحدة تجميع المياه ، حيث تأتي الأنابيب من جميع مناطق الري

4 صمامات الملف اللولبي 220 فولت المغلقة عادةتقع في موقف المياه ومتصلة Sonoff 4Ch. افتح مصدر المياه للري. تم اختيار نموذج مغلق بشكل طبيعي بحيث يتم تقليل احتمالية "الفيضان" في حالة حدوث أي عطل في الكهرباء والإلكترونيات ، ومن أجل تقليل عدد مخرجات التتابع المطلوبة. عداد

مياه نابض عند مدخل نظام الري في وحدة سحب المياه ومتصل بـ Sonoff 4ch. يسمح بتحويل بيانات تدفق المياه بالكامل إلى مساعد المنزل وتنفيذ وظيفة الري بكمية معينة. اتضح أنه ناجح جدًا أنه في هذا الإصدار من sonoff تم لحام جهات الاتصال الخاصة بالبرامج الثابتة بالفعل ، وحتى كان هناك GPIO02 واحد مجاني - تم تعليق عداد النبض عليه.


يبدو جامعًا مزودًا بصمامات مثبتة وعداد مياه. وحدة التحكم (sonoff 4Ch) لم تدخل في الإطار ، يتم تثبيتها على مسافة نصف متر في درع IP65

إعدادات ESPHome و Home Assistant


Sonoff 4ch
ESPHome , :

switch:
  - platform: gpio
    name: "   1"
    pin: GPIO12
    id: sw1
    icon: mdi:water
  - platform: gpio
    name: "   2"
    pin: GPIO5
    id: sw2
    icon: mdi:water
  - platform: gpio
    name: "   3"
    pin: GPIO4
    id: sw3
    icon: mdi:water
  - platform: gpio
    name: "   4"
    pin: GPIO15
    id: sw4
    icon: mdi:water
binary_sensor:
  - platform: gpio
    name: "WaterCounter"
    id: button
    pin:
      number: GPIO2
      mode: INPUT_PULLUP


مستشعر رطوبة التربة بالسعة v1.2
ESPHome:

sensor:
  - platform: adc
    pin: GPIO34
    filters:
      - lambda: |-
          if (x > 3.22) {
            return 0;
          } else if (x < 1.65) {
            return 100;
          } else {
            return (3.22-x) / (3.22-1.65) * 100.0;
          }
    name: "   1  "
    update_interval: 60s
    attenuation: 11db
    unit_of_measurement: "%"
    accuracy_decimals: 0
    icon: mdi:water-percent

(ADC)
, ( 3.22 ) (1,65 ). log' ESPHome HassIO .



ESP32 Home Assistant ,

نبض عداد المياه
«», ( ). — , , ( — 3 10 ).
, GND GPIO .

ESPHome :

binary_sensor:
  - platform: gpio
    name: "WaterCounter"
    id: counter
    pin:
      number: GPIO2
      mode: INPUT_PULLUP

Home Assistant :

(counter),
(, «» ). — counter, ESPHome, sensor, counter ( ).

2 — , «». , , .

( automations.yaml )
- alias:     
  trigger:
  - entity_id: binary_sensor.watercounter
    platform: state
    from: 'on'
    to: 'off'
  action:
  - data:
      entity_id:
      - counter.my_water_counter
    service: counter.increment
- alias:    1 
  trigger:
  - entity_id: binary_sensor.watercounter
    platform: state
    from: 'on'
    to: 'off'
  condition:
    - condition: state
      entity_id: switch.sistema_poliva_liniia_1
      state: 'on'
  action:
  - data:
      entity_id:
      - counter.my_water_line1, counter.my_water_line1t
    service: counter.increment    


configuration.yaml +

sensor:
  - platform: template
    sensors:
      water_counter:    
        unit_of_measurement: 'M3'
        value_template: "{{ (states('counter.my_water_counter')| float)/1000 }}"    
counter:
  my_water_counter:
    initial: 2.667
    step: 10
  my_water_line1:
    name: " 1     ()"
    initial: 0
    step: 10
  my_water_line1t:
    name: " 1   ()"
    initial: 0
    step: 10



مستشعر MiFlora
MiFlora ESPHome , esphome.io
Home Assistant — , , «» . — , .

جهاز استشعار هطول الأمطار الظاهري
— . , .

darksky. , Apple « ». API , , , , HA . darksky, , .

2 :

configuration.yaml sensors.yaml

sensor:
  - platform: darksky
    api_key: xxxx_your_API_key_xxxx
    forecast:
      - 1
      - 2
    monitored_conditions:
      - precip_intensity

HA : sensor.dark_sky_precip_intensity_1d sensor.dark_sky_precip_intensity_2d, .

template-sensor:

configuration.yaml sensors.yaml

sensor:
  - platform: template
    sensors:
       rain2days:    
        unit_of_measurement: 'mm'
        value_template: "{{ (((states('sensor.dark_sky_precip_intensity_2d')| float)+(states('sensor.dark_sky_precip_intensity_1d')| float))*24)| round(3) }}"    

HA sensor.rain2days 2 .
, Darksky ,


بعد جمع جميع البيانات ، يمكنك المتابعة مباشرة للري.

هذه هي الطريقة التي تبدو بها قطعة من الواجهة من إحدى المناطق في Home Assistant:



هنا يمكنك تعيين كمية المياه للري (باستخدام شريط التمرير) ورؤية قيم أجهزة الاستشعار والعدادات الرئيسية. أعطيت الواجهة لواحد من الخطوط ، لأن بقية كل شيء هو نفسه ، فقط على الخطوط التي تحتوي على مستشعرات بيانات سلكية أقل قليلاً.

في الواجهة ، يمكنك ملاحظة تفاصيل "غير ضرورية" - المستشعر الإضافي "تم الوصول إلى القاعدة". كان لا بد من تقديمه ، لأنه لم أتمكن من الحصول على الشرط: قالب للعمل على إيقاف الأتمتة عندما تم الوصول إلى معيار كمية المياه ، ونتيجة لذلك ، يتحقق الأتمتة فقط من قيمة هذا المستشعر. أنا متأكد من أن هذا الجزء من الأتمتة يمكن أن يكون أبسط وأكثر أناقة ، لكن مستواي لم يكن كافيًا لذلك.

فيما يلي رمز مستشعر القالب "crutch" الناتج:

مستشعر كفاية الري (داخل config.yaml أو ملف منفصل)
  - platform: template
    sensors:
      line4_status:
        friendly_name: " 4 -  "
        value_template: >-
          {% if states('counter.my_water_line4t')|float > states('input_number.slider4')|float %}
            yes
          {% elif states('counter.my_water_line4t')|float == states('input_number.slider4')|float  %}
            yes
          {% else %}
            no
          {% endif %}


تبدو الأتمتة لبدء الري في النهاية كما يلي:

ابدأ الري (داخل automations.yaml أو ملف منفصل)
- alias:   4   23.01
  trigger:
    platform: time
    at: "23:01:00"
  condition:
   condition: and
   conditions:
#    
    - condition: numeric_state
      entity_id: sensor.rainfor2days
      below: 5
#      
    - condition: numeric_state
      entity_id: sensor.miflora_1_moisture
      below: 50
# ,       
    - condition: state
      entity_id: 'sensor.line4_status'
      state: 'no'
  action:
   - service: switch.turn_on
     entity_id: switch.sistema_poliva_liniia_4


يبدأ الري في وقت متأخر من المساء ، حيث يبدأ كل خط في فاصل زمني خاص به. يتيح لك الفصل حسب وقت البدء استخدام عداد مياه مدخل واحد للحصول على البيانات في 4 خطوط.

عند بدء التشغيل ، يتم التحقق من ثلاثة شروط:

  • هل لم يتم تجاوز الحد المسموح به لكمية المياه اليوم (على سبيل المثال ، إذا تم تشغيل الري اليدوي)
  • هل تتجاوز الرطوبة 50٪ (وفقًا للملاحظات في ظروفنا ، فإن التربة المنسكبة الطازجة لا تحتوي على نسبة رطوبة لا تزيد عن 60٪)
  • لا يتوقع هطول أمطار يزيد عن 5 مم في اليومين المقبلين.

الأتمتة التالية تعطل الري:

تعطيل الري (داخل automations.yaml أو ملف منفصل)
- alias:   4 
  trigger:
#      
  - entity_id: sensor.line4_status
    platform: state
    to: 'yes'
    for: 
      seconds: 5    
#   
  - platform: time
    at: "23:59:00"
#     
  - platform: numeric_state
    entity_id: sensor.miflora_1_moisture
    above: 65
#       
  - platform: state
    entity_id: switch.sistema_poliva_liniia_4
    to: 'on'
    for: 
      minutes: 60
  action:
   - service: switch.turn_off
     entity_id: switch.sistema_poliva_liniia_4


في الأتمتة ، تم استخدام ما يصل إلى 4 أنواع مختلفة من المشغلات ، ولكنها تعمل في معظم الحالات وفقًا للأول - مستشعر "عكاز" ، الذي يراقب زيادة الحد حسب كمية الماء. يتم تصنيع بقية المحفزات إلى حد كبير لأسباب تتعلق بالسلامة.

حسنًا ، آخر عملية أتمتة تتعلق بالمشكلة هي إعادة تعيين العداد اليومي

صفر العداد اليومي (داخل automations.yaml أو ملف منفصل)

- alias:    4 
  trigger:
  - platform: time
    at: "00:00:01"
  action:
  - service: counter.reset
    entity_id: counter.my_water_line4t


اقتصاديات المشروع


كانت تكاليف جزء التحكم في نظام الري على النحو التالي:

(Raspberry PIE مع HassIO على متنه وجهاز توجيه WiFi مع طلاء في الحديقة كانت بالفعل قبل بدء المشروع ، وأنا لا

آخذه بعين الاعتبار) UNIPUMP BCX-15 1/2 "صمام الملف اللولبي (مغلق عادة) 4 * 20 يورو
Sonoff 4CH 17 يورو
نبض متر بولسار 8 يورو
ESP32 DevKitC 3.5 يورو
مستشعر رطوبة التربة بالسعة v1.2 2 * 0.67 يورو
MiFlora مستشعرات 2 * 16 يورو
حراس ، جامع ، أسلاك ، تركيبات جميعًا معًا حوالي 50 يورو

المجموع: حوالي 190 يورو

الوقت المستغرق في إعداد أجهزة الاستشعار و MK هو حوالي 3-4 مساءًا لعدة ساعات ، ولكن تم قضاء معظم الوقت على "اختراع الدراجات" واختراع "العكازات" ، بشكل عام ، ليس هناك الكثير من العمل. استغرق التجمع المادي للنظام حوالي 2 أمسيات.
بشكل عام ، من المتوقع توفير حوالي 20-50٪ من المياه مقارنة بنظام المؤقت "السخيف" وبأسعار المياه المحلية ، يجب أن يؤتي ثماره في موسم أو موسمين.

أوجه القصور وخطط المراجعة


نتيجة للمشروع ، تم الكشف عن بعض الفروق الدقيقة والفرص لمزيد من التحسين.

على وجه الخصوص ، سأستبدل صمامات الملف اللولبي 220 فولت بنموذج 24 فولت - هذا الجهد قياسي لأنظمة الري. في هذه الحالة ، سيكون عليك إضافة محول 24V إلى النظام وتغيير Sonoff 4Ch إلى شيء مع اتصال جاف (على سبيل المثال ، Sonoff 4CH Pro أو شيء مجمع ذاتيًا). الصمامات نفسها أرخص (من 8 يورو) وتقلل من احتمال حدوث صدمة كهربائية.

اتضح أيضًا أنه للعمل مع خطوط الأنابيب البلاستيكية ، فإن الضغط من إمدادات المياه مرتفع جدًا ، ويمكن أن تتسرب التركيبات أثناء دورة الري. في حالتي ، هذا ليس بالغ الأهمية ، توجد جميع التركيبات فوق سطح الري ، ولكن بطريقة جيدة تحتاج إلى إضافة مخفض عند المدخل لخفض الضغط.

كنت أكثر انزعاجًا من استحالة حساب كمية المياه للري بأحجام أقل من 10 لترات - هذا الحجم هو الحد الأدنى من الكمية القابلة للقياس لمثل هذا العداد. يمكن حل هذه المشكلة عن طريق تفكيك العداد وتبديل العجلات ، ولكن حتى ذلك الحين لم تصل اليدين.

All Articles