Სარჩევი:

რამადანის შუქები - სახლის ავტომატიზაცია IOT: 6 ნაბიჯი
რამადანის შუქები - სახლის ავტომატიზაცია IOT: 6 ნაბიჯი

ვიდეო: რამადანის შუქები - სახლის ავტომატიზაცია IOT: 6 ნაბიჯი

ვიდეო: რამადანის შუქები - სახლის ავტომატიზაცია IOT: 6 ნაბიჯი
ვიდეო: Он велел матери откопать его гроб ровно через год. Увиденное внутри поразило старушку! 2024, ივლისი
Anonim
რამადანის შუქები | სახლის ავტომატიზაცია IOT
რამადანის შუქები | სახლის ავტომატიზაცია IOT

რამადანის კარზე აკაკუნება, მსოფლიოს ქალაქები ანათებენ და ემზადებიან მარხვის თვისთვის. განათება ეკიდა საჯარო მოედნებს და ქალაქის ქუჩებს, ასევე სახლების გარე კედლებს, რომლებიც ღამით ანათებდა, სანამ მზე არ ამოვიდოდა დილით.

ამ პროექტში მსურს ჩემი წვლილის გაზიარება, რომელშიც მე ავტომატიზირებული ვარ ამ დეკორაციების განათება ადჰანის დროზე დაყრდნობით და ამას ვამატებ ჩემს ჭკვიან სახლის სისტემაში.

ნაბიჯი 1: თეორია

ძირითადად, უფრო ადვილია და გამოიყენება განათების ავტომატიზაცია მზის სინათლის ინტენსივობიდან, მაგალითად. თუმცა, მე მსურს, რომ სული წმინდა თვის იყოს, ანუ შუქები აინთება მანამ, სანამ ადამიანებს მიეცემათ უფლება ჭამა სამარხვო თვის განმავლობაში. კერძოდ, შუქები იხსნება მაღრიბიდან დაწყებული ფაჯრ ადანამდე ყოველ დღე ადამიანთა ყოველგვარი ურთიერთქმედების გარეშე.

ნაბიჯი 2: დიზაინი

ქვემოთ ჩამოვთვლი ამ პროექტის მოთხოვნებს/შესაძლებლობებს:

  • სისტემას უნდა შეეძლოს ჩატვირთვისას ავტომატურად დამუშავება.
  • სისტემას უნდა შეეძლოს პერიოდულად შეასრულოს გადაწყვეტილების (ON/OFF) ალგორითმი.
  • სისტემას უნდა შეეძლოს API– ს დარეკვა ყოველდღიურად.
  • სისტემას უნდა შეეძლოს აღდგენა დაუგეგმავი გადატვირთვის შემდეგ.
  • სისტემამ უნდა შეასრულოს გადაწყვეტილების (ON/OFF) ალგორითმი მონაცემების მყისიერი მიღებისთანავე.
  • სისტემამ უნდა უზრუნველყოს გადამრთველი ავტოპილოტის რეჟიმის ჩართვისათვის (ავტომატური რეჟიმი).
  • სისტემამ უნდა უზრუნველყოს გადამრთველების ჩართვა/გამორთვა ხელით.
  • მექანიკური გადამრთველის გააქტიურებამ ხელით რეჟიმი უნდა ჩართოს OFF.
  • როდესაც ავტომატური რეჟიმი ჩართულია, გადაწყვეტილების ალგორითმის შედეგი უნდა აისახოს მექანიკურ ჩართვაზე/გამორთვაზე.

ნაბიჯი 3: ტექნიკური დეტალები: API

ტექნიკური დეტალები: API
ტექნიკური დეტალები: API

იმისთვის, რომ თეორია გამოვიყენოთ, საჭიროა იცოდეთ ედანის დრო ყოველდღიურად, მისი ცვლადიდან და ვიმოქმედოთ მასზე განათების/დეკორაციების ჩართვის/გამორთვის მიზნით.

ამ მიზნით, მე გადავწყვიტე გამოვიყენო მდებარეობაზე დაფუძნებული API მონაცემების მომსახურებისთვის (დრო Adhan– ისთვის)

muslimsalat.com/api/#location

  • ეს API გთავაზობთ მრავალფეროვან ვარიანტს და კონფიგურაციის პარამეტრებს, რომლებიც აღწერილია ზემოთ დოკუმენტაციის ბმულში.
  • მიზანშეწონილია გამოიყენოთ თქვენი API_key, რომელიც უფასოა რეგისტრაციისას.
  • ჩემი დიზაინით, მე მაინტერესებს ყოველდღიური ვადები.
  • დაბრუნებული დრო არის 12 საათის ფორმატში (AM/PM).
  • ადგილმდებარეობის თვალსაზრისით, ვისურვებდი, რომ ამ API- ს შეეძლო მიეწოდებინა უფრო ზუსტი პარამეტრები ისეთი ადგილებისთვის, როგორიცაა გეოგრაფიული კოორდინატების სისტემა (გრძედი და გრძედი). ამ გზით, ამ API– ს შეიძლება მიენიჭოს მაგალითად ქალაქის სახელი და ეს უმეტეს შემთხვევაში სავსებით საკმარისია. სამწუხაროდ, ჩემი კონკრეტული ქალაქის შედეგები საკმაოდ მიკერძოებული იყო მრავალჯერადი ტესტების დროს და იყო რამდენიმე წუთიანი განსხვავება ადჰანის დროის შედარებისას API შედეგებსა და ჩემს ქალაქში ადჰანის რეალურ დროს შორის. მეორეს მხრივ, შედეგები შესანიშნავად დაემთხვა, როდესაც ჩრდილოეთით მჭიდრო ქალაქი მივაწოდე და მე დავრჩებოდი მას!
  • API url რომელსაც ვიყენებ არის: https://muslimsalat.com/.json? Key =

ნაბიჯი 4: ტექნიკური დეტალები: აპარატურა

ტექნიკური დეტალები: აპარატურა
ტექნიკური დეტალები: აპარატურა

სიმარტივისთვის, მე ვტოვებ ტექნიკას API– თან სინქრონიზაციის პროცესისა და დროის გამოთვლის გარეშე, ამ ოპერაციების დელეგირებით ჩემი სახლის ავტომატიზაციის სისტემაში. ეს მეტ კონტროლს მომცემს, თუ მინდა შეცვალო API წყარო და გამოთვლის ალგორითმი.

ამის თქმისთანავე, მე გამოვიყენე ESP8266 (NodeMCU) ადგილობრივ ქსელთან დასაკავშირებლად WIFI- ს და სარელეო მოდულის სახით, როგორც გამააქტიურებელი. NodeMCU გამოიყენებს MQTT პროტოკოლს და მოუსმენს კონკრეტულ თემას სარელეო ჩართვის/გამორთვის ბრძანებების მისაღებად. ასე მარტივად!

ნაბიჯი 5: ტექნიკური დეტალები: წერტილების დაკავშირება | სახლის ავტომატიზაცია

ტექნიკური დეტალები: წერტილების დაკავშირება | სახლის ავტომატიზაცია
ტექნიკური დეტალები: წერტილების დაკავშირება | სახლის ავტომატიზაცია
ტექნიკური დეტალები: წერტილების დაკავშირება | სახლის ავტომატიზაცია
ტექნიკური დეტალები: წერტილების დაკავშირება | სახლის ავტომატიზაცია
ტექნიკური დეტალები: წერტილების დაკავშირება | სახლის ავტომატიზაცია
ტექნიკური დეტალები: წერტილების დაკავშირება | სახლის ავტომატიზაცია

ჩემი RaspberryPi ფლობს კვანძოვან მაგალითს, რომელსაც შეუძლია გაუმკლავდეს ყველაფერს, რაც მჭირდება ამ პროექტისათვის. მას ასევე აქვს დაყენებული MQTT სერვერი, რომ გამოაქვეყნოს ჩვენი შეტყობინებები.

თავიდან ვიფიქრე, რომ შემიძლია მივიღო API მონაცემები ყოველდღიურად დილის 9 საათზე და ამოვიღო როგორც ფაჯრი, ასევე მაჰგრიბ ადჰანის დრო და გავაგრძელო მიმდინარე დროის შედარება ამ ცვლადებთან, ეს არის:

თითოეული 30 წამი:

თუ: Mahgrib <NOW <Fajr true | აანთეთ განათება | გამოაქვეყნეთ ON შეტყობინება მითითებულ MQTT თემაზე სხვა: გამორთეთ

დროის შესადარებლად, მე ვაქცევ API- ს მიერ მიწოდებულ საათებს hh: მმ (AM/PM) სრულ თარიღის ფორმატში თარიღის ნაწილის უმნიშვნელო თარიღად დაყენებით ისტორიაში მაგ. (1/1/1970) რადგან ჩვენ ვადარებთ დროს მხოლოდ მიმდინარე დროზე (თარიღის ნაწილი ასევე გარდაიქმნება).

სამწუხაროდ, ეს იმუშავებს მხოლოდ უშუალო შემთხვევებში. დავუშვათ, როდესაც ელექტროენერგია იკლებს ან სისტემა გადატვირთულია დაუგეგმავი მიზეზის გამო. თუ ეს მოხდება დილის 12 საათამდე, ჩვენ ჯერ კიდევ უსაფრთხო მხარეს ვართ, მაგრამ დილის 12 საათის შემდეგ ეს ჩვენი მარტივი ალგორითმი ჩავარდება.

მაგალითის მისაცემად, მოდით გვქონდეს მაგრიბ ედანი საღამოს 7:30 საათზე და ფაჯრი დილის 4:10 საათზე. სისტემის ჩატვირთვისას ის გამოგიგზავნით ახალ მოთხოვნას ადრე ნახსენები მონაცემების მოსაპოვებლად. თუ ახლა არის 1:45 დილით, ჩვენ ველოდებით, რომ ჩვენი ალგორითმი დაბრუნდება ჭეშმარიტად, მაგრამ სინამდვილეში ეს ასე არ იქნება, რადგან დილის 1:45 ნაკლებია ვიდრე ფაჯრზე (დილის 4:10), მაგრამ არ აღემატება მაგრიბს (საღამოს 7:30 საათზე). ეს იმიტომ ხდება, რომ ჩვენ ვაერთიანებთ თარიღს ყველა ცვლადს შორის. ქვემოთ მოცემულია ალგორითმის საბოლოო ვერსია (ჯერჯერობით):

თითოეული 30 წამი:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || ფაჯრ <maghrib) {fajr.setDate (fajr.getDate ()+1); // გატარება spanning days endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // გაშლილი დღეების გატარება currentTime}} // ქვემოთ არის წინა კოდის ბლოკი, თუ: Mahgrib <NOW <Fajr true | აანთეთ განათება | გამოაქვეყნეთ ON შეტყობინება მითითებული MQTT თემაზე სხვა: ყალბი | გამორთვა

პროცესის სრული ნაკადი აღწერილია ზემოთ მოცემულ სურათზე.

ინტერფეისის თვალსაზრისით, მე დავამატე 2 გადამრთველი ინტერფეისზე/ინტერფეისზე:

  1. გადართვა ამ პროცესის ავტომატური ან მექანიკური გადასატანად.
  2. განათების ჩართვის/გამორთვის გადამრთველი ხელით.

ნაბიჯი 6: შეფუთვა

დრო ისე გადის, რომ არ გავიხსენო. ასეთი მარტივი 1 დღიანი პროექტების გაკეთება საშუალებას გაძლევთ სუნთქვა შეეხოთ ამ სწრაფ ზოლში და დაგეხმაროთ დროთა განმავლობაში გააცოცხლოთ თქვენი რბილი უნარები.

მე მაქსიმალურად შევეცადე ამ პროექტში, რომ ის მარტივი და მრავალჯერადი გამოყენება ყოფილიყო მთელ მსოფლიოში.

გთხოვთ, მიეცით ხმა ამ სასწავლო ინსტრუქციას, თუ ფიქრობთ, რომ ეს პროექტი იმსახურებს.

გილოცავთ რამადანს!

გირჩევთ: