Raspberry Pi telah mendapatkan popularitas luar biasa di seluruh dunia. Namun, banyak pengembang amatir dihadapkan dengan masalah mengakses perangkat dari Internet. Sebagai aturan, Anda harus menyulap dengan DDNS atau membeli alamat IP statis. Kedua opsi melibatkan pengaturan router, yang tidak untuk semua orang dan tidak selalu tersedia. Selain itu - pembukaan akses langsung ke perangkat dari Internet membawa risiko keamanan tertentu.
Cara yang sangat umum untuk menyelesaikan masalah ini adalah dengan menggunakan server perantara di mana server dan klien terhubung satu sama lain.
Skema ini sangat banyak digunakan dalam berbagai paket akses jarak jauh: VNCViewer, AmmyyAdmin, dll.
Opsi 1-DDNS
Opsi 2 - Alamat IP Statis
Opsi 3 - menggunakan server perantara
Skema koneksi ini dapat diimplementasikan melalui MQTT melalui protokol Websockets, tetapi menarik bagi saya untuk mengimplementasikan sesuatu yang lebih sederhana, berorientasi JSON, dapat diperluas, tanpa batasan protokol pada ukuran pesan dan dengan model keamanan yang lebih jelas.
Pilihan protokol sudah jelas. WebSocket telah lama didukung oleh browser dan sebagian besar platform dan bahasa pemrograman.
Model bus data adalah sepele:
WebSocket Server mendukung jumlah saluran yang tidak terbatas. Setiap saluran dapat dibuka atau dilindungi kata sandi. Saluran hanya ada saat itu memiliki setidaknya satu klien terhubung. Tidak ada data yang secara fundamental disimpan di server. Kata sandi diatur oleh klien pertama yang terhubung ke saluran. Klien tanpa kata sandi / dengan kata sandi yang salah tidak akan diizinkan masuk ke saluran.
Saluran adalah wadah untuk pesan. Pesan terdiri dari tiga jenis: pesan alamat (perintah), yang ditujukan untuk satu atau beberapa penerima, pesan respons dan pesan siaran yang akan diterima oleh semua klien yang terhubung ke saluran.

Skema semacam itu memungkinkan penggunaan hub umum bagi banyak konsumen secara relatif aman tidak perlu pengaturan, pembuatan pengguna di server (seperti pada MQTT), pembuatan kunci akses, dll.
Pesan tidak disimpan di mana pun, tidak dicatat dan dikirim melalui protokol aman wss.
Pesan diketik objek JSON. Informasi biner ditransmisikan sebagai string yang disandikan Base64.
Kode proyek tersedia di
GitHub , dan hub saat ini dapat Anda temukan di
sini .
Proyek ini terdiri dari server WebSocket di .net, aplikasi klien web yang terhubung ke server dan aplikasi python untuk raspberry pi.
Aplikasi web jauh dari satu-satunya cara yang mungkin untuk berinteraksi dengan server websocket. Misalnya, Anda dapat dengan mudah menulis klien cloud yang akan "mendengarkan" acara webcam dan menyimpan gambar ke beberapa jenis penyimpanan cloud.
Arsitektur memungkinkan Anda untuk menghubungkan raspberry pi dan klien per saluran yang tidak terbatas.
Misalnya, jika Anda ingin membangun semacam sistem keamanan / kontrol iklim / rumah pintar, Anda dapat meletakkan semua raspberry di satu saluran dan mengirim perintah ke semua atau beberapa contoh sekaligus.
Siaran acara "siaran" akan menerima semua peserta jaringan.
Beberapa kata tentang fitur aplikasi
- Akses jarak jauh ke sistem file. Anda dapat menonton, mengunduh, dan mengunggah gambar, file suara, dan file lainnya. Cukup nyaman untuk tidak membawa seluruh arsip multi-terabyte foto Anda di ponsel Anda. Ya, atau jika Anda perlu mencari sesuatu di arsip.
- PiCamera memungkinkan Anda menerima gambar baik berdasarkan permintaan maupun dalam mode webcam. Bersamaan dengan menerima suara dari mikrofon, itu dapat digunakan sebagai solusi keamanan yang murah. Membutuhkan kamera pi yang terhubung.
- Kirim rekaman suara ke raspberry atau terima rekaman dari mikrofon. Ini dapat digunakan baik untuk beberapa tugas keamanan, dan untuk interaksi suara dengan kucing atau anak-anak. Membutuhkan koneksi ke TV / speaker dan mikrofon, masing-masing.
- Hidupkan / matikan / dapatkan fokus TV. Protokol CEC memungkinkan Anda untuk mengontrol TV Anda melalui kabel HDMI. Anda harus menginstal cec-client di raspberry.
- Tampilkan informasi audio dan teks di TV. Fitur ini termasuk menghidupkan dan menerima fokus pada TV dan menampilkan pesan teks, disertai dengan sinyal suara. Lebih mudah jika Anda perlu memaksa anak-anak untuk melakukan pekerjaan rumah dari jarak jauh.
- Tampilan gambar jarak jauh. Jika Anda ingin mengejutkan keluarga Anda dan tiba-tiba menampilkan foto petualangan Anda di TV keluarga, maka fungsi ini hanya untuk itu. Pilih gambar PC atau ponsel Anda dan kirim ke raspberry.
- Memperoleh data tentang kelembaban, suhu. Raspberry mengirimkan pesan Siaran dengan periodisitas yang ditentukan. Selain kelembaban dan suhu, pesan berisi informasi tentang suhu dan beban prosesor, disk, dan memuat memori. Bersama-sama, kontrol port I / O jarak jauh dapat digunakan sebagai kontrol jarak jauh iklim dalam ruangan. Sensor suhu DHT11 ($ 1) diperlukan untuk mengukur suhu.
- Kelola Port I / O Ini memungkinkan keduanya membaca informasi dari port GPIO yang dipilih dan mengeluarkan sinyal kepada mereka. Anda dapat memperoleh status sakelar, bola lampu, bel dering, dan melalui kontrol relai beberapa perangkat yang lebih serius.
- Perintah mulai jarak jauh memungkinkan untuk menjalankan perintah shell apa pun di raspberry. Misalnya, mulai melihat album foto atau film. Jika kesempatan seperti itu tampaknya tidak aman bagi Anda, fungsi ini dapat dinonaktifkan.

Dilanjutkan ...