როგორ განვახორციელოთ წყალდიდობის გამოვლენის ჭკვიანი სიგნალიზაცია ჟოლოს პი და ნაწილაკების არგონის გამოყენებით: 6 ნაბიჯი
როგორ განვახორციელოთ წყალდიდობის გამოვლენის ჭკვიანი სიგნალიზაცია ჟოლოს პი და ნაწილაკების არგონის გამოყენებით: 6 ნაბიჯი
Anonim
Image
Image
როგორ განვახორციელოთ წყალდიდობის გამოვლენის ჭკვიანი სიგნალიზაცია ჟოლოს პი და ნაწილაკების არგონის გამოყენებით
როგორ განვახორციელოთ წყალდიდობის გამოვლენის ჭკვიანი სიგნალიზაცია ჟოლოს პი და ნაწილაკების არგონის გამოყენებით

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

მაგრამ ეს ართულებს, თუ სახლში არ ხართ დაესწროთ განგაში.

რა თქმა უნდა, შეგიძლიათ შეიძინოთ ეს ჭკვიანი

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

მარაგები

Raspberry pi (მე ვიყენებ მოდელს 3 B+) რასპბიანით

ნაწილაკი არგონი

გროვის წყლის სენსორი

რასპის კამერა

ბუზერი

ჯუმბერის მავთულები

ნაბიჯი 1: შეაერთეთ წყლის სენსორი ნაწილაკთან

შეაერთეთ წყლის სენსორი ნაწილაკთან
შეაერთეთ წყლის სენსორი ნაწილაკთან
შეაერთეთ წყლის სენსორი ნაწილაკთან
შეაერთეთ წყლის სენსორი ნაწილაკთან

წყლის სენსორს აქვს 4 ქინძისთავები, რომლებიც არის GND, VCC, NC და SIG და ჩვენ ვაპირებთ გამოვიყენოთ მხოლოდ სამი მათგანი

მე SIG პინს ვუკავშირებ D2 არგონზე.

ახლა თქვენ შეგიძლიათ გაუშვათ ნაწილაკების ვებ IDE, რომ დაწეროთ კოდი და განათავსოთ არგონი

ასე რომ, ჩვენ დავარეგისტრირეთ ნაწილაკების ფუნქცია თხევადი და განვსაზღვრეთ ცვლადი isFloodPresent, რომელსაც შეიძლება გამოვიძახოთ ნაწილაკების კონსოლიდან და მივიღოთ isFloodPresent- ის ლოგიკური მნიშვნელობა და ასევე გამოვიძახოთ ფუნქციის თხევადი იმიტირებული ტესტირებისათვის, რომელიც იღებს 1 მნიშვნელობას, რაც ნიშნავს ჭეშმარიტ წყალდიდობას (წყალი) რა

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

ნაბიჯი 2: შეაერთეთ სიგნალიზაციის წყარო ჟოლოსთან

შეაერთეთ სიგნალიზაციის წყარო ჟოლოსთან
შეაერთეთ სიგნალიზაციის წყარო ჟოლოსთან

პურის დაფაზე შეგიძლიათ დააკავშიროთ ბუზერი ჟოლოს GPIO პინთან

მე ზუზერის უფრო პატარა ბოლო დავუკავშირე GND- ს (PIN 6) და უფრო გრძელი ბოლო 7 -ს ჟოლოსთან.

ახლა გაუშვით კოდი რომ ნახოთ. ჩვენ დაგვჭირდება ეს პითონის ფაილი მუდმივად გაშვებული, რათა მას შეეძლოს მიიღოს გამომწვევები ვებ სერვერისგან და შესაბამისად უპასუხოს.

გარდა ამისა, თქვენ შეგიძლიათ გაუშვათ ეს ფაილი ჟოლოს გაშვებისას, რისი გაკეთებაც შეგიძლიათ /etc /systemd

და ეს ფაილი განთავსდება თქვენი apache სერვერის cgi საქაღალდეში, მე გავაკეთე ახალი დირექტორია flood-cgi შიგნით/var/www/html/და მოვათავსე ეს.py ფაილი, რომელიც დაუკავშირდება ჩემს cgi სკრიპტს

ნაბიჯი 3: დააინსტალირეთ Apache სერვერი

Apache სერვერის კონფიგურაცია
Apache სერვერის კონფიგურაცია

შეგიძლიათ დააინსტალიროთ apache სერვერი sudo apt-get install apache2 აკრეფით

როდესაც ის დაინსტალირებულია, შეგიძლიათ გადაამოწმოთ მასპინძლის სახელის აკრეფით -I

თქვენ მიიღებთ თქვენს ადგილობრივ IP მისამართს და შეგიძლიათ მიხვიდეთ თქვენს ბრაუზერში და უნდა ნახოთ სერვერი გაშვებული

ნაბიჯი 4: ჩართეთ CGI Apache– ზე

ჩართეთ CGI Apache– ზე
ჩართეთ CGI Apache– ზე

თქვენ შეგიძლიათ ჩართოთ cgi აკრეფით sudo a2enmod cgi

ნაგულისხმევად apache– ს cgi_bin მდებარეობს/usr/lib/cgi-bin– ში

ეს არის სადაც შეგიძლიათ განათავსოთ თქვენი cgi სკრიპტები cgi ჩართვის შემდეგ

ეფექტის მისაღწევად, თქვენ უნდა გადატვირთოთ apache სერვერი

მე მინდოდა პერსონალური დირექტორია ჩემი cgi სკრიპტებისთვის, ამიტომ შევქმენი დირექტორია/var/www/html/სახელწოდებით flood-cgi

ამ დირექტორიის გასააქტიურებლად მე უნდა შევქმნა conf ფაილი აკრეფით

sudo nano /etc/apache2/conf-available/flood-cgi.conf

და დაამატეთ ბრძანებები, როგორც ეს ნაჩვენებია ეკრანის სურათზე

შემდეგ ჩართეთ ეს დირექტორია აკრეფით

var/www/html $ sudo a2enconf flood-cgi

ახლა თქვენ შეგიძლიათ ხელახლა გადატვირთოთ თქვენი apache სერვერი და ნებართვის შემდეგ ამ საქაღალდედან ყველა cgi წაიკითხება apache– ს მიერ.

ნაბიჯი 5: შექმენით ვებ გვერდი

შექმენით ვებ გვერდი
შექმენით ვებ გვერდი

ამ მარტივი ვებ სერვისისთვის, მე ვიყენებ HTML, Javascript, CSS, jquery და ajax.

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

$ ("#ფოტო ღილაკი"). დააწკაპუნეთ (ფუნქცია () {var floodDate = ახალი თარიღი ();

var floodImageName = "Flood_IMG_" + floodDate.toLocaleTimeString ();

$.ajax ({

url: 'flood-cgi/flood_cgi.py', მეთოდი: 'პოსტი', მონაცემები: {name_for_image: floodImageName}, წარმატება: ფუნქცია (მონაცემები) {

გაფრთხილება (მონაცემები, სტატუსი)

$ ("#Recentpic"). attr ("src", "flood-cgi/" + floodImageName + ".jpg");

}

})

});

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

სიგნალიზაციის შემთხვევაში, ჩვენ შეგვიძლია გამოვიყენოთ ეს ფუნქცია

ფუნქცია callAlarm (alarmType) {

$.ajax ({

url: 'flood-cgi/alarm.cgi', მეთოდი: 'პოსტი', მონაცემები: {alarm_type: alarmType}, წარმატება: ფუნქცია (მონაცემები) {გაფრთხილება (მონაცემები)

}, შეცდომა: ფუნქცია (XMLHttpRequest, textStatus, throwError) {alert (throwError)}});

}

ფუნქცია callAlarm გამოიძახება, როდესაც ზუმერის ეტიკეტზე დააწკაპუნებთ, $ ("#buzzer"). დააწკაპუნეთ (ფუნქცია () {callAlarm ("ტესტი");

})

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

$ ("#mockFlood"). დააწკაპუნეთ (ფუნქცია () {console.log ("იმიტირებული წყალდიდობა მოითხოვა");

var floodVal = 1;

$ ("#signal2"). css ("შრიფტის ზომა", "მცირე");

var varName = "isFloodPresent";

var deviceID = "თქვენი მოწყობილობის ID";

var accessToken = "თქვენი წვდომის ნიშანი";

თუ (floodVal) {

$.post ("https://api.particle.io/v1/devices/" + deviceID + "/liquid? access_token =" + accessToken, {liquid: floodVal}, ფუნქცია (მონაცემები, სტატუსი) {

თუ (სტატუსი == "წარმატება") {

განგაში ("იმიტირებული წყალდიდობა ჩატარდა !!!");

} სხვა {

გაფრთხილება ("უკაცრავად, იყო პრობლემა");

}

});

}

});

ეს არის ის ძირითადი ფუნქციები, რომლებიც გჭირდებათ ნაწილაკების Api– სთან და თქვენს ჟოლოსთან დასაკავშირებლად, რათა თქვენს ჟოლოს pi და ნაწილაკების მოწყობილობას არგონმა შეძლოს ურთიერთობა.

შენიშვნა: მინდოდა ყველა კოდის ატვირთვა, მაგრამ ეს არ მაძლევს საშუალებას.html ფაილის ატვირთვა

ნაბიჯი 6: შექმენით სკრიპტი Raspi კამერისთვის

ჩვენ ვქმნით მარტივ.py სურათის გადასაღებად და რომელსაც ექნება ანოტაცია მიმდინარე თარიღისა და დროის შესახებ.

შემდეგ ჩვენ შევქმნით cgi სტრიქონს flood_cgi.py, ასე რომ ის გამოიძახება ვებდან და ეს ბრძანებს.py ფაილს ფოტოს გადასაღებად.

დარწმუნდით, რომ დაიწყეთ cgi სკრიპტი # - ით! /usr/bin/env პითონი

ასევე მიეცით apache ნებართვა ამ ფაილების გაშვებისთვის.

apache სერვერი მუშაობს მომხმარებლის ვებ მონაცემებზე, ასე რომ, მას შემდეგ რაც შევქმნით.py ან.cgi ფაილს, apache უნდა იყოს ფაილის მფლობელი

sudo chown pi: www-data flood-cgi.py

და მისცეს შესრულების ნებართვა

sudo chmod a+x flood-cgi.py

თქვენ მოგიწევთ ამის გაკეთება ყველა ფაილისთვის, რომელიც უნდა გაუშვათ apache სერვერიდან.

შენიშვნა: თქვენი ჟოლოს ინტერნეტით გამოქვეყნება და ყველა ამ ნებართვის მიცემა თქვენს ჟოლოს უსაფრთხოების თვალსაზრისით ძალიან დაუცველს ხდის, ამიტომ მკაცრი მომხმარებელი და ნებართვები უნდა დაიცვან და დააინსტალიროთ ბუხარი გაურთულებელი ბუხრის მსგავსად (ufw)

გირჩევთ: