Isi kandungan:

Pemantauan Rumah Raspberry Pi Dengan Dropbox: 7 Langkah
Pemantauan Rumah Raspberry Pi Dengan Dropbox: 7 Langkah

Video: Pemantauan Rumah Raspberry Pi Dengan Dropbox: 7 Langkah

Video: Pemantauan Rumah Raspberry Pi Dengan Dropbox: 7 Langkah
Video: Membuat Web Hosting Dengan Raspberry Pi + aaPanel - OURPCB.COM 2024, November
Anonim
Pemantauan Rumah Raspberry Pi Dengan Dropbox
Pemantauan Rumah Raspberry Pi Dengan Dropbox

Tutorial ini akan menunjukkan kepada anda cara membuat sistem pemantauan rumah yang mudah dan diperluas menggunakan Raspberry Pi, kamera web, beberapa komponen elektrik dan akaun Dropbox anda. Sistem yang sudah siap akan membolehkan anda meminta dan melihat gambar dari kamera web dari jauh sambil menggunakan sensor suhu digital di luar rak untuk memantau suhu rumah anda melalui internet, semuanya menggunakan Dropbox.

Ini adalah projek pertama yang saya fikirkan setelah menerima model Raspberry Pi 2 B. Tujuan saya adalah untuk membuat sistem pemantauan berasaskan Python yang dapat saya kendalikan dan terima data dari internet. Walaupun terdapat banyak cara untuk melakukan ini, saya memutuskan untuk menggunakan Dropbox sebagai antara muka antara Pi dan internet kerana mereka mempunyai API Python sederhana yang membolehkan anda memuat naik, mengubah dan mencari fail dalam folder tertentu menggunakan beberapa baris kod.

Saya juga mahu penyelesaian saya ringan dan sederhana, dan untuk mengelakkan kekacauan Pi saya dengan perpustakaan dan program yang tidak perlu. Komponen perisian projek ini terdiri daripada skrip Python tunggal, yang bermaksud bahawa anda dapat terus menggunakan Pi anda seperti biasa, walaupun sistem pemantauan sedang berjalan.

Untuk projek ini, anda memerlukan:

Pi Raspberry. Mana-mana model mesti berfungsi, saya menggunakan starter kit semua-dalam-satu, tetapi mungkin anda memerlukan unit pusat sahaja

Kamera web USB. Saya membeli ADVENT AWC72015 yang murah, yang berfungsi dengan baik. Mungkin ada baiknya anda melihat senarai kamera web ini yang disahkan berfungsi dengan Pi. Perhatikan bahawa ada yang memerlukan hab USB berkuasa (lombong berfungsi dengan baik tanpa)

Akaun Dropbox. Saya menggunakan akaun percuma standard saya kerana projek ini tidak memerlukan banyak ruang simpanan

Sensor suhu digital DS18B20 dan perintang 4.7k. Anda boleh membeli sensor di sini, dan mungkin juga bernilai mengambil sebungkus pelbagai perintang

Beberapa aksesori bangunan litar. Saya akan mengesyorkan menggunakan papan roti dan kabel pelompat untuk membuat proses pembinaan litar semudah mungkin

[Sekiranya anda memutuskan untuk membeli mana-mana produk ini, saya akan sangat menghargainya jika anda mengakses senarai menggunakan pautan di atas - dengan cara itu, saya akan mendapat sedikit keuntungan tanpa kos tambahan kepada anda!]

Langkah 1: Sediakan Perkakasan

Sediakan Perkakasan
Sediakan Perkakasan

Langkah pertama adalah memastikan Pi dan periferal yang berkaitan disiapkan.

Pertama, sambungkan Pi anda ke internet. Ini diperlukan untuk memastikan bahawa program pemantauan dapat menerima permintaan Anda dan memuat naik data ke Dropbox. Saya menggunakan sambungan ethernet untuk memastikan kebolehpercayaan, tetapi sambungan Wi-Fi juga boleh berfungsi dengan baik, sementara juga mempunyai kelebihan kemudahan mudah alih yang lebih baik. Sekiranya anda memilih Wi-Fi, saya akan mengesyorkan dongle USB ini untuk Pi.

Seterusnya, sambungkan kamera web anda ke Pi dengan memasukkannya ke salah satu port USB. Walaupun arahan kamera web Advent saya tidak secara eksplisit mengatakan bahawa ia akan berfungsi dengan Linux, yang harus saya lakukan ialah memasangkannya dan mem-boot Pi. Pemasangan tidak diperlukan lagi. Kamera web lain mungkin berbeza. Anda boleh memeriksa sama ada kamera web anda telah dikesan oleh Linux menggunakan arahan berikut:

lsusb

Dalam gambar di atas, kamera web saya disenaraikan sebagai '0c45: 6340 Microdia'

Akhirnya, anda boleh menyambungkan sensor suhu DS18B20 anda ke tajuk GPIO Pi. Saya menggunakan papan roti saya untuk membuat proses membuat litar lebih mudah, dan saya mengesyorkan anda melakukan perkara yang sama, terutamanya kerana DS18B20 memerlukan perintang 4.7k untuk diletakkan di antara dua daripada tiga pinnya. Pautan ini memberikan gambarajah pendawaian yang baik yang menunjukkan bagaimana papan roti boleh digunakan untuk menyambung ke sensor suhu ini.

Halaman seterusnya dari tutorial di atas juga merangkumi langkah-langkah yang diperlukan untuk membaca data dari DS18B20, dan menunjukkan kepada anda bagaimana untuk memastikan ia berfungsi. Penting untuk melakukan langkah-langkah penyediaan ini sebelum anda dapat menggunakan DS18B20 untuk projek ini. Kami juga akan menggabungkan contoh skrip Python dari tutorial ke dalam program pemantauan kami, jadi anda mungkin ingin mengetahui kod ini dengan cepat.

Perhatikan juga nombor unik DS18B20 anda. Ini adalah nombor yang bermula dengan '28 - 'yang anda temui semasa tutorial persediaan. Anda perlu memasukkannya ke dalam program Python yang akan datang untuk membolehkannya membacanya pada suhu.

Langkah 2: Sediakan Dropbox

Sediakan Dropbox
Sediakan Dropbox

Agar Pi anda dapat berinteraksi dengan Dropbox, anda perlu menyediakan aplikasi Dropbox baru. Ini akan memberi anda butiran yang diperlukan agar Pi anda menjalankan pengurusan fail dalam talian menggunakan Python. Dengan andaian anda telah membuat akaun Dropbox dan log masuk, anda boleh membuat aplikasi baru menggunakan pilihan menu 'Developers'. Lihat gambar di atas untuk ringkasan langkah-langkah penting.

Di dalam menu 'Developers', pilih 'Aplikasi saya', kemudian tekan butang 'Buat aplikasi'. Untuk mengisi borang yang dihasilkan, pilih 'Dropbox API' diikuti oleh 'App Folder'. Akhirnya, anda boleh memilih nama yang unik untuk aplikasi anda dalam Dropbox. Klik 'Buat aplikasi'.

Anda kemudian akan dibawa ke halaman tetapan aplikasi anda dalam Dropbox. Hanya ada satu perkara lagi yang perlu anda lakukan di sini - buat sendiri Token Akses. Untuk melakukan ini, tatal ke bawah ke bahagian 'OAuth 2' dan di bawah 'Token akses yang dihasilkan', klik butang 'Jana'.

Ini akan memberi anda rentetan watak panjang yang diperlukan untuk mengakses akaun Dropbox anda menggunakan Python. Catat Token Akses ini kerana anda perlu menentukannya kemudian dalam kod anda. Sekiranya anda kehilangan token, anda boleh menavigasi kembali ke tetapan aplikasi anda dengan mengklik 'Aplikasi saya' di bahagian Dropbox 'Pembangun' dan menghasilkan token baru.

Anda boleh meninggalkan tetapan lain sebagaimana adanya. Untuk mengesahkan bahawa aplikasi anda telah membuat folder yang diperlukan pada akaun Dropbox anda, arahkan ke halaman utama storan anda dan cari folder 'Aplikasi'. Di dalam folder ini mestilah sub-folder dengan nama yang anda pilih untuk aplikasi baru anda. Di sinilah semua fail untuk sistem pemantauan anda akan diletakkan.

Langkah 3: Menyiapkan Folder Aplikasi Dropbox Anda

Menyiapkan Folder Aplikasi Dropbox Anda
Menyiapkan Folder Aplikasi Dropbox Anda

Setelah anda menyediakan aplikasi Dropbox anda, inilah masanya untuk memikirkan bagaimana anda akan menggunakan folder yang dihasilkan di akaun Dropbox anda untuk berinteraksi dengan Pi anda. Ini dapat dicapai dengan sederhana. Skrip Python yang akan dijalankan pada Pi akan menggunakan subkumpulan perintah dari Dropbox API untuk mencari dan mengubah nama beberapa fail kosong tanpa perluasan dalam folder aplikasi anda. Kami akan memanggil fail ini sebagai 'parameter file' kerana masing-masing akan membolehkan anda mengawal aspek yang berbeza dari tingkah laku sistem pemantauan. Gambar di atas menunjukkan empat fail parameter yang perlu ada di folder aplikasi Dropbox anda untuk projek ini. Membuatnya mudah:

Bermula dengan folder aplikasi anda kosong sepenuhnya, buka program penyunting teks di komputer anda. Walaupun ini dapat dilakukan dengan menggunakan Pi, saya merasa lebih mudah menggunakan komputer riba Windows saya untuk fasa persediaan ini. Setelah editor teks dibuka (saya menggunakan Notepad pada Windows 7), yang perlu anda lakukan hanyalah menyimpan fail teks yang kosong di mana sahaja di komputer anda. Sebagai contoh pertama kami, kami akan membuat parameter pertama dalam gambar tajuk. Namakan fail 'delay = 10' semasa anda menyimpannya.

Untuk merakam, sekarang anda harus menyimpan fail teks kosong di komputer anda dengan nama 'delay = 10'. Fail juga akan mempunyai pelanjutan '.txt' yang mungkin atau tidak kelihatan.

Langkah seterusnya adalah memuat naik fail ini ke folder aplikasi Dropbox anda. Ini sama seperti muat naik Dropbox yang lain. Cukup arahkan ke folder aplikasi anda dan klik 'Muat naik' dan pilih fail 'delay = 10' anda.

Apabila fail ini dimuat naik, anda mesti membuang pelanjutan '.txt' yang kini boleh dilihat di nama fail. Untuk melakukan ini, cukup klik kanan fail dan pilih 'Namakan semula'. Keluarkan bahagian '.txt' dari nama fail. Anda sekarang harus dibiarkan dengan file yang disebut 'delay = 10' tanpa perluasan fail, seperti yang ditunjukkan dalam gambar tajuk.

Fail parameter 'delay' adalah satu dari empat yang akan digunakan oleh program pemantauan. Untuk membuat yang lain, anda hanya boleh menyalin dan menamakan semula fail 'kelewatan' anda dengan mengklik kanannya. Setelah anda membuat tiga salinan, beri nama seperti yang ditunjukkan dalam gambar tajuk sehingga folder aplikasi anda sama dengan yang ditunjukkan pada awal langkah ini.

Langkah 4: Bermula dengan Kod

Seperti yang telah dibincangkan, inti sistem pemantauan kami akan terdiri daripada satu skrip Python yang akan bersambung dengan Dropbox. Agar program pemantauan aktif, skrip ini harus dijalankan di latar belakang pada Pi Anda. Saya rasa ia paling tepat digambarkan sebagai skrip 'daemon', yang bermaksud anda boleh membuatnya berjalan dan melupakannya. Skrip dilampirkan pada langkah ini, jadi tidak ada gunanya mengulangi kod di sini. Sekarang mungkin masa yang sesuai untuk memuat turunnya dan membiasakannya.

Sebelum anda dapat menjalankan skrip, penting untuk memastikan anda memasang perpustakaan Python yang berkaitan. Yang anda perlukan disenaraikan di bahagian atas skrip yang dilampirkan. Mereka adalah:

import dropbox

import pygame.camera import os masa import

Pemasangan Python pada Pi saya sudah termasuk permainan, os dan masa jadi satu-satunya yang perlu saya pasang ialah Dropbox. Saya melakukan ini menggunakan arahan pemasangan mereka yang sangat mudah dengan pip.

Setelah perpustakaan anda disiapkan, anda perlu mengedit dua baris teratas skrip yang dilampirkan agar sesuai dengan Token Akses Dropbox dan pengecam unik sensor suhu DS18B20 anda. Ini adalah dua baris yang perlu diedit:

APP_ACCESS_TOKEN = '**********'

THERMOMETER_FILE = '/ sys / bus / w1 / devices / 28 - ********** / w1_slave'

Cukup ganti **** dengan nilai yang betul. Pada ketika ini, anda sebenarnya sudah bersedia untuk mula menggunakan program pemantauan! Daripada hanya melompat masuk, saya mengesyorkan agar anda terus ke langkah seterusnya untuk gambaran keseluruhan kod.

PENTING: Semasa anda menjalankan skrip ini, anda ingin ia berjalan di latar belakang sehingga a) anda dapat terus menggunakan Pi, dan b) ketika anda menutup sesi SSH, skrip akan terus berjalan. Ini adalah arahan yang saya gunakan semasa menjalankan skrip:

nohup python DropCamTherm.py &

Ini menyelesaikan tiga perkara: Ia akan menjalankan skrip ('python DropCamTherm.py'), ia akan mengembalikan kawalan ke baris arahan dengan segera supaya anda dapat terus menggunakan Pi ('&'), dan ia akan menghantar output Python yang akan biasanya dipaparkan pada baris perintah ke dalam fail bernama 'nohup.out'. Ini dapat dibaca menggunakan editor teks Linux (kegemaran saya adalah nano), dan akan dibuat secara automatik dalam direktori dari mana skrip dijalankan.

Langkah 5: Menggali Lebih Dalam Kod

Apabila anda membuka skrip, anda akan melihatnya terdiri dari tiga fungsi bersama dengan sekatan kod yang menerapkan fungsi ini ketika skrip dijalankan. Fungsinya menggunakan Dropbox API dan dan mengakses fail log suhu DS18B20 untuk mendengarkan perintah dari Dropbox dan memuat naik bacaan suhu terkini. Berikut adalah gambaran umum mengenai fungsi yang dilakukan, dan bagaimana fungsi tersebut digunakan untuk membuat sistem pemantauan berfungsi:

- poll_parameter ():

Fungsi ini menunjukkan tujuan file parameter Dropbox yang kami buat pada langkah 3. Ini mencari folder aplikasi Dropbox untuk fail yang berisi teks 'param ='. Ia kemudian mengekstrak teks setelah '=' dan cuba mengubahnya menjadi bilangan bulat. Anda dapat melihat bahawa ini membolehkan kami mengawal program dengan menambahkan nombor yang relevan ke akhir fail parameter secara manual. Langkah selanjutnya akan berisi manual instruksi ringkas yang menunjukkan cara menggunakan setiap fail parameter untuk mengendalikan aspek program.

- set_parameter ():

Fungsi ini membolehkan program menamakan semula fail parameter dari dalam Python. Ini dilakukan dalam beberapa kesempatan, terutamanya untuk mengurangkan keperluan penamaan semula fail secara berlebihan.

- set_latest_temp ():

Fungsi ini menggunakan set_parameter () untuk memuat naik suhu terbaru ke folder aplikasi Dropbox dengan menambahkannya ke file parameter 'suhu'. Fungsi membaca suhu terkini dari fail log DS18B20 (yang tersedia di Linux di jalan yang ditunjukkan oleh pemboleh ubah THERMOMETER_FILE).

Bahagian akhir program mengandungi kod yang akan dijalankan ketika skrip dijalankan. Setelah beberapa langkah persediaan diperlukan untuk sensor DS18B20, ia membuka sesi Dropbox menggunakan Access Token anda dan menggunakan permainan pygame untuk mencari kamera web anda. Sekiranya kamera web dijumpai, ia akan memasuki gelung di mana ia menggunakan poll_parameter () untuk mengekstrak maklumat dari Dropbox dan bertindak di atasnya.

PENTING: Anda akan melihat baris kod berikut:

cam = pygame.camera. Camera (senarai_ cam [0], (864, 480))

… ini cuba membuat antara muka kamera yang boleh digunakan dari kamera web pertama yang dikesan oleh pygame. Resolusi mungkin perlu diubah agar sesuai dengan kamera web anda. Eksperimen dengan sebilangan nilai untuk mencari yang paling sesuai.

Langkah 6: Menggunakan Fail Parameter Dropbox

Jadi sekarang anda harus mempunyai skrip yang berfungsi, ketika dijalankan menggunakan petunjuk dari langkah 4, akan memungkinkan Pi anda mulai memantau folder aplikasi untuk input anda. Pada jangka pertama anda, folder aplikasi harus mengandungi fail parameter berikut:

kelewatan = 10

program keluar = 0 imagerequest = 0 suhu = 0

Interaksi dengan program ini dicapai dengan menamakan semula fail parameter secara manual melalui Dropbox. Untuk melakukan ini, klik kanan salah satu fail dan pilih 'ganti nama'. Setiap fail parameter mempunyai fungsi yang berbeza:

- kelewatan:

Fail ini memberitahu program pemantauan berapa saat menunggu antara setiap lelaran gelung pemantauan. Apabila saya tahu bahawa saya tidak akan banyak berinteraksi dengan program, saya menetapkannya ke 60 atau 120. Apabila saya tahu bahawa saya sering meminta data dari Pi, saya menetapkannya menjadi 10.

- program keluar:

Ini harus diatur ke 1 atau 0. Jika program mendeteksi bahwa itu diatur ke 1, itu akan mengakhiri skrip. Sekiranya anda menetapkannya ke 1 dan skrip keluar, anda perlu log masuk ke Pi sekali lagi untuk memulakannya kembali. Parameter ini ada sehingga anda dapat mengakhiri program pemantauan dengan anggun ketika anda tidak lagi memerlukannya untuk dijalankan (contohnya, jika anda sudah pulang dan tidak lagi ingin memantau kamera web dari jauh).

- imagerequest:

Ini mungkin parameter yang paling penting. Ini harus ditetapkan ke 1 atau 0. Jika program mendeteksi bahwa program ditetapkan ke 1, ia akan meminta gambar dari kamera web dan memuat naiknya ke dalam folder aplikasi (dengan judul 'image.jpg'). Sekiranya 'image.jpg' lain ada, ia akan menimpanya.

- suhu:

Ini adalah bacaan suhu DS18B20 yang ditetapkan oleh fungsi set_latest_temp (). Anda tidak perlu mengedit fail parameter ini - ia secara automatik ditetapkan oleh program.

Perhatikan bahawa jika anda menetapkan 'exitprogram' atau 'imagerequest' ke 1, program akan mengembalikannya secara automatik ke 0 sebelum melaksanakan kod yang berkaitan. Ini untuk kemudahan. Anda juga mungkin menyedari bahawa kod tersebut mengandungi banyak blok 'cuba' dan 'kecuali' yang merangkumi banyak fungsi kritikal. Ini untuk memastikan bahawa skrip tidak akan membuang pengecualian (dan oleh itu berhenti berjalan) jika ada yang tidak kena (seperti masalah penyambungan internet yang menghalang akses Dropbox).

Langkah 7: Kesimpulannya

Projek ini telah menunjukkan cara untuk mengawal Raspberry Pi menggunakan Python dan Dropbox. Walaupun perkakasan yang digunakan dalam projek ini adalah sensor suhu dan kamera web USB, terdapat banyak aplikasi lain untuk kaedah ini mengendalikan Pi. Sebenarnya, mana-mana komponen perkakasan yang dapat diakses melalui GPIO dapat dikendalikan menggunakan struktur program yang serupa, menjadikan sistem ini sangat mudah dikembangkan.

Sebagai langkah selanjutnya, Anda juga dapat menggunakan perpustakaan GUI seperti Tkinter bersama dengan Dropbox API untuk membuat program klien yang akan memungkinkan Anda mengubah fail parameter tanpa perlu masuk ke Dropbox.

Saya harap tutorial ini jelas, dan jika anda mempunyai pertanyaan atau mahu saya menjelaskan apa-apa, sila hantarkan komen!

Disyorkan: