Apa yang saya perlukan untuk membuat cloud pribadi saya sendiri untuk perangkat IoT?

18

Ini adalah topik yang sudah lama saya pikirkan, terutama karena konsep "IoT" banyak beredar akhir-akhir ini.

Saya akan mulai dengan apa yang saya maksud ketika saya mengatakan "IOT" . Saya tahu bahwa istilah IoT bisa berarti hal yang berbeda dan kadang-kadang disalahgunakan. Ini bisa menjadi istilah yang tidak didefinisikan secara jelas dan dapat mengarah pada diskusi besar tentang apa sebenarnya artinya, saya sendiri tidak tahu definisi istilah yang tepat dan diterima secara luas. Jadi bagi saya IoT adalah sebuah konsep, sebuah konsep yang mendefinisikan kemampuan untuk terhubung ke perangkat yang tertanam dari jarak jauh melalui internet baik dari perangkat yang tertanam lainnya atau dari ponsel . Sesimpel itu.

Pada konteks ini, tujuan koneksi tidak masalah, jika Anda dapat menghubungkan satu perangkat di kantor Anda dengan yang lain di rumah, atau jika Anda dapat terhubung ke satu perangkat di rumah dari ponsel Anda, semua ini melalui internet, maka kita berbicara tentang perangkat IoT ( perangkat yang tertanam, bukan telepon).

Jadi, setelah menyetujui apa yang saya maksud dengan IOT saya sekarang akan menggambarkan apa yang saya coba capai.

Apa yang saya coba capai adalah apa yang saya jelaskan pada definisi saya tentang IoT.

Saya ingin memiliki satu atau beberapa perangkat tertanam di rumah terhubung ke router internet saya, baik dengan ethernet atau wifi dan dapat terhubung ke mereka dari jarak jauh dengan perangkat tertanam lainnya di lokasi yang jauh (dan dengan jarak jauh saya maksudkan tidak pada jaringan yang sama) dan mungkin juga untuk dapat terhubung dengan mereka dengan aplikasi pemantauan di ponsel saya

Misalnya, saya mungkin memiliki perangkat tertanam sederhana yang berfungsi sebagai sakelar on / off yang terhubung ke pembuka pintu garasi saya dan perangkat tertanam lainnya yang bertindak sebagai tombol merah besar di meja saya di tempat kerja sehingga saya dapat menekan tombol merah di meja saya dan pintu garasi terbuka.

Contoh lain adalah memiliki perangkat tertanam dengan kemampuan ADC yang dapat memonitor suhu rumah saya dan mengirim saya peringatan ketika mencapai ambang batas. Pemberitahuan dapat diterima baik oleh aplikasi android sederhana atau oleh perangkat tertanam lainnya dengan sedikit layar duduk di meja saya di tempat kerja.

Contoh-contoh ini mungkin konyol tetapi hanya untuk menggambarkan skenario yang mungkin dan menggunakan kasus untuk apa yang saya coba capai. Pada akhirnya, idenya sama, sambungkan satu perangkat yang tertanam dengan yang lain melalui internet.

Satu hal yang perlu diklarifikasi adalah bahwa pertukaran data antara perangkat-perangkat ini akan sangat ringan, hanya beberapa byte setiap kali, bukan berarti ratusan kilobyte perlu dipertukarkan antar perangkat.

Selain itu, jenis "perangkat yang disematkan" yang saya maksud adalah perangkat sederhana namun mampu yang didasarkan pada mikrokontroler korteks-m4 100MHz atau 200MHz. Dan itu penting untuk diklarifikasi karena tidak akan ada Linux atau pustaka kompleks yang berjalan pada perangkat tersebut. Pada akhirnya, itu adalah pemborosan sumber daya dan sama sekali tidak perlu memiliki prosesor yang kuat yang menjalankan Linux hanya untuk menghidupkan dan mematikan bola lampu . Bagaimanapun, saya berencana untuk menggunakan BeagleBoard, Raspberry Pi, atau papan lain seperti itu sebagai perangkat yang tertanam. Hanya Microcontrollers karena tidak lebih rumit dari yang dibutuhkan.

Saya tidak tahu banyak tentang platform IoT dan solusi kompleks semacam itu di luar sana. Ketika saya memulai perjalanan ini untuk menemukan cara menghubungkan satu perangkat yang tertanam dengan yang lain melalui internet, saya menemukan beberapa situs dengan layanan IoT.

Saya tahu bahwa ada beberapa layanan cloud IoT seperti:

Hanya untuk beberapa nama. Masalah utama dengan itu adalah biaya dan kompleksitas. Anda harus membayar untuk mendapatkan layanan tersebut dan juga Anda harus belajar bagaimana menerapkan semua layanan yang mereka miliki, jika Anda membutuhkan semuanya, dan API mereka dan mungkin banyak hal lain yang tampaknya tidak perlu bagi saya untuk menjadi hanya dapat menukar beberapa byte antar perangkat. Saya hanya ingin sesuatu yang lebih sederhana dari itu, sesuatu yang bisa saya lakukan sendiri.

Anda dapat mengatakan bahwa menerapkan "cloud" saya sendiri, jika itu adalah sesuatu yang harus saya lakukan, tidak sederhana dan kadang-kadang lebih baik untuk menggunakan layanan semacam itu demi kesederhanaan tetapi ada dua alasan utama saya ingin tahu cara mengimplementasikan layanan IoT saya sendiri.

Alasan utamanya adalah saya ingin melakukannya sendiri. Saya tidak ingin bergantung pada pihak ke-3 untuk menghubungkan perangkat saya satu sama lain dan karena saya akan mengembangkan kode dan perangkat keras untuk perangkat saya maka rasanya lebih baik untuk juga membuat cara saya sendiri untuk menghubungkan mereka sebagai perangkat IoT.

Alasan kedua adalah belajar bagaimana melakukannya. Dengan mengetahui semua hal yang perlu saya lakukan untuk mencapai ini, saya akan memiliki pemahaman yang lebih baik tentang dunia IoT.

Juga, saya ingin menyebutkan bahwa saya mahir dalam C dan saya menggunakan Linux sebagai OS sehari-hari saya di tempat kerja maupun di rumah saya, jadi tolong hindari barang-barang windows karena itu tidak berguna bagi saya. Saya tidak takut pada apa pun yang harus saya terapkan dalam C untuk perangkat yang tertanam atau di Linux untuk menerapkan apa pun yang diperlukan untuk mencapai tujuan saya.

Jadi pertanyaan saya adalah, apa yang perlu diimplementasikan, dan di mana, untuk dapat menghubungkan dua atau lebih perangkat yang tertanam satu sama lain dengan tujuan pertukaran data di antara mereka?

Pertanyaan ini Apa yang dapat saya gunakan untuk membuat IOT di server kami sendiri? memiliki sesuatu yang serupa tetapi ditutup dan tidak memiliki jawaban, juga mengasumsikan infrastruktur cloud yang sudah ada untuk digunakan. Jadi itu tidak membantu saya.

Posting ini yang lain Layanan IoT apa yang tersedia untuk menyimpan / mengirim / menerbitkan data generik di cloud? memiliki pertanyaan serupa tetapi OP secara eksplisit meminta layanan IoT dan saya mencoba untuk menghindarinya.

m4l490n
sumber
2
Bagaimana server merupakan "infrastruktur cloud yang ada"? Server hanyalah sebuah komputer. Infrastruktur cloud jauh lebih banyak.
user253751
1
Juga perhatikan bahwa ketika kami memiliki IPv6 di mana-mana Anda mungkin dapat membuat perangkat IOT Anda berbicara satu sama lain, tidak perlu server pusat / cloud.
user253751
1
terkait: iot.stackexchange.com/questions/1119/…
Sean Houlihane

Jawaban:

10

Mungkin saya melewatkan inti pertanyaan, tetapi saya pikir ini adalah awal yang baik untuk sebuah jawaban.

Anda memerlukan tiga hal, minimal.

  1. Node komputasi yang selalu aktif untuk mengumpulkan data Anda. Ini tidak perlu kuat, Ini bisa menjadi proses yang berjalan di NAS Anda, atau bahkan (secara teori) di router Anda. Untuk kesederhanaan, anggap itu adalah Raspberry Pi. Ini juga dapat memberikan protokol radio mewah apa pun yang Anda putuskan untuk didukung di masa depan. Meskipun secara teori Anda bisa menjalankan peer-to-peer dengan semua node terpapar ke internet, lebih mudah untuk menominasikan satu sebagai master dan meminta ini menangani pengumpulan dan penerbitan data (untuk aplikasi / pengguna). Tentu saja, hub juga bisa menjadi simpul, terutama jika Anda menggunakan node WiFi yang cukup kuat.
  2. Tumpukan perangkat lunak yang sesuai untuk memungkinkan titik akhir mengirimkan data mereka ke simpul hub Anda. adalah hal yang Anda butuhkan di sini, ditambah OS untuk menjalankannya.
  3. DNS dan port-forwarding untuk memfasilitasi akses ke server Anda dari internet yang lebih luas.

Maka jangan lupa keamanan. Dengan melakukan ini, Anda akan lebih dekat untuk membuka segala sesuatu di jaringan rumah Anda untuk diserang. Mungkin hanya sedikit, tapi ada baiknya waspada dengan risikonya. Anda dapat mencoba dan berhati-hati, tetapi anggaplah Anda akan membuat kesalahan.

Sean Houlihane
sumber
1
Saya tidak yakin ini jawaban yang Anda inginkan. Akan membantu untuk mengetahui apa yang perlu Anda tanyakan.
Sean Houlihane
1
Terima kasih telah membantu !! Jadi, apa yang Anda maksud pada poin pertama Anda adalah bahwa saya memerlukan semacam hub atau gateway?
m4l490n
1
Ya, Anda memerlukan gateway, atau lebih dari satu. Jika Anda hanya memiliki satu node, ini jelas bisa menjadi node Anda. Saya mengedit jawaban saya sedikit.
Sean Houlihane
11

Perangkat ringan, dan beberapa tingkat tanggal byte meminta untuk menggunakan MQTT , seperti yang telah disebutkan. Node sensor Anda dapat didasarkan pada modul ESP8266 mandiri yang cukup kuat untuk menampung implementasi klien MQTT. Atau Anda cukup menggunakan modul ini sebagai modul Wi-Fi yang dikendalikan perintah AT bersama mikrokontroler eksternal Anda.

Anda dapat mengimplementasikan solusi MQTT Anda sendiri pada mikrokontroler yang jauh kurang kuat seperti orang ini yang telah menggunakan Atmega48V dengan 4 kB flash .

Anda dapat meng-host broker di komputer Anda, meskipun akan lebih hemat daya untuk menjalankan Raspberry Pi sebagai gantinya. Sekali lagi jika Anda suka coding Anda bisa mengimplementasikan broker MQTT Anda sendiri. Secara pribadi saya menemukan Mosquitto hebat untuk tujuan ini.

Kerugian bahwa semua node sensor Anda akan membutuhkan koneksi TCP / IP.


Solusi ramah baterai dapat menggunakan node / aktuator node yang diaktifkan LoraWAN atau ZigBee dan mengimplementasikan gateway pada Raspberry / BeagleBone yang juga dapat menampung server web sederhana yang dapat diakses dari ponsel Anda atau perangkat lain.


Dalam setiap kasus, semuanya berujung agar hub, gateway, atau server Anda dapat diakses di luar jaringan pribadi Anda. Ada lebih banyak cara untuk melakukan ini dan perhatian utama adalah selalu keamanan. Ini adalah bagian paling berisiko menurut saya.

Persyaratan dasar dirangkum dengan cukup baik oleh @Sean.

Bence Kaulics
sumber
Menurut jawaban Anda dan jawaban @ Sean, saya melihat bahwa saya memerlukan semacam hub atau gateway. Apakah ini mutlak diperlukan? Maksud saya, tidak bisakah saya terhubung langsung ke simpul apa pun dengan mengetahui alamat IP atau nama host? Bukannya saya sedang berusaha menghindari hub atau gateway, saya hanya ingin mengerti apakah itu perlu dan mengapa. Terima kasih telah membantu !!
m4l490n
Pernahkah Anda menemukan bahwa Raspberry Pi baik-baik saja sebagai perangkat "selalu menyala"? Saya memiliki HDD kecil yang terhubung ke Pi saya yang saya gunakan sebagai penyimpanan jaringan tetapi ragu untuk membiarkannya sepanjang waktu. Haruskah tidak apa-apa jika saya melakukannya? (FWIW saya punya heatsink kecil di atasnya)
BruceWayne
1
@ m4l490n Menggunakan hub atau gateway membuatnya lebih sederhana. Dengan cara ini Anda harus mengatur penerusan port atau hanya untuk hub atau gateway. Jika Anda ingin langsung terhubung ke semua perangkat di belakang router Anda, maka Anda harus mengatur port forwarding untuk masing-masing misalnya. Lebih berisiko ketika Anda membuka lebih banyak cara ke jaringan pribadi Anda, dan lebih banyak pekerjaan.
Bence Kaulics
10

Anda telah mempertanyakan kedua jawaban sebelumnya tentang perlunya pengontrol / hub. Pertimbangkan bahwa untuk mewujudkan sesuatu, Anda perlu aturan agar ada. Jika Anda ingin menekan tombol merah besar untuk membuka pintu garasi, beberapa aturan harus mengikat sensor (tombol) dengan tindakan yang diinginkan (membuka pintu). Ada dua cara untuk mewujudkannya: Anda bisa meletakkan aturan langsung di tombol, atau Anda bisa meletakkan aturan di komputer yang terpisah.

Mari kita pikirkan lebih lanjut tentang solusi langsung. Jika Anda mengajarkan tombol tentang pintu garasi, maka tombol Anda memegang aturan secara internal. Tombol ini membutuhkan ID pintu garasi, jadi jika Anda mengganti pintu garasi, tombol itu tidak berfungsi. Jika tombol ada di meja Anda, dan rumah Anda menggunakan jaringan berpemilik, tombol tersebut harus mengetahui alamat gateway rumah Anda dan alamat pintu. Tombol perlu mengetahui protokol khusus untuk memberi sinyal pintu Anda terbuka - apakah semua produsen membuat tombol yang kompatibel yang mengetahui semua sinyal pintu? Tombol tidak dapat melakukan hal lain kecuali jika Anda memprogram ulang - apakah Anda memiliki programer flash untuk chip tombol, dan apakah programmer itu kompatibel dengan perangkat lain? Jika Anda ingin pintu garasi terbuka, dan 5 menit kemudian tutup, tombol Anda membutuhkan semua kompleksitas untuk mempertahankan jam waktu nyata. Tombol Anda tidak akan mengetahui kondisi pintu, sehingga sulit untuk mengetahui apakah Anda menutup pintu atau membukanya. Dan bagaimana Anda membuat cadangan aturan sehingga jika tombol Anda rusak, tombol pengganti Anda dapat melakukan pekerjaan itu? Di sisi positifnya, ini terdengar murah: Anda tidak perlu komputer terpisah.

Dengan controller, semuanya berbeda. Semua pesan dari semua sensor dikirim ke controller. Setiap sensor sederhana: mengirim sinyal ke controller. Pengontrol kemudian dapat menerapkan input apa pun yang diperlukan untuk aturan yang sangat kompleks: ia dapat memeriksa sensor sinar matahari dan tidak menyalakan lampu di luar kecuali gelap, atau tidak menjalankan penyiram jika curah hujan rata-rata untuk bulan di atas rata-rata dan suhu saat ini lima derajat di bawah rata-rata. Kontroler dapat melacak keadaan. Ini bisa menjadi penting jika Anda menginginkan tombol "tutup pintu garasi" tetapi bukan tombol "pintu garasi terbuka" (ketika saya jauh dari rumah, saya jarang ingin membuka pintu, tetapi saya pasti ingin menutupnya jika ada sengaja dibiarkan terbuka.)

Pengontrol dapat menyediakan tempat bagi driver perangkat yang tahu cara mendengarkan tombol dan driver lain yang tahu cara berbicara ke pintu. Pengontrol mungkin lebih dapat diupgrade ke perangkat dan tipe perangkat baru daripada chip kecil yang terselip di dalam sebuah tombol.

Pengontrol juga dapat memiliki logika yang lebih kompleks untuk tugas-tugas infrastruktur seperti mengirim pesan dengan menawarkan tingkat layanan tertentu. Sebagai contoh, protokol MQTT memungkinkan untuk tiga tingkatan yang berbeda: mencoba untuk mengirimkan pesan sekali, mengirimkannya berulang kali sampai terlihat setidaknya sekali, atau mengirimkannya sekali dan hanya sekali.

Pengontrol ini menawarkan tempat yang logis secara arsitektur untuk menggabungkan semua pesan ke dan dari gateway komunikasi, memungkinkan penggunaan antarmuka eksternal. Ini berarti tombol Anda dan telepon Anda berdua dapat mengirim sinyal, dan aturan dapat menentukan bahwa salah satu dari mereka diperbolehkan untuk membuka pintu garasi. Gateway juga dapat memberikan keamanan. Anda tidak harus meletakkan tombol dan pintu garasi Anda di internet; Anda dapat menempatkan keduanya di jaringan terisolasi swasta dan menggunakan gateway untuk membawa sinyal. Pengontrol juga menyediakan satu titik untuk mendukung semua aturan untuk sistem Anda.

Kelemahan pada controller ditambahkan latensi dan kompleksitas ekstra. Anehnya, controller tidak membuat biaya naik lumayan. Anda dapat mengimplementasikan pengontrol pada Raspberry Pi dengan harga kurang dari satu sakelar lampu rata-rata yang dapat dikendalikan dari jarak jauh. Jangan mengabaikan ide berdasarkan biaya saja.

John Deters
sumber
Yah, tampaknya memiliki HUB, atau pengontrol, sangat diinginkan, terutama jika saya memerlukan fungsionalitas berbasis aturan di semua perangkat IoT saya yang dapat memanfaatkan seluruh jaringan secara maksimal.
m4l490n
Jadi, jika saya mengerti dengan benar, saya dapat memiliki koneksi peer-to-peer asalkan saya tidak memerlukan aturan yang kompleks atau bahkan jaringan perangkat IoT yang kompleks dan ini juga akan menganggap bahwa perangkat IoT tidak akan memiliki interoperabilitas dengan merek lain dan misalnya, satu tombol akan selalu terikat pada pembuka pintu yang sama.
m4l490n
Kalau tidak, jika lebih banyak fleksibilitas dan fungsionalitas diperlukan, maka saya harus memiliki HUB. Apakah itu benar?
m4l490n
Ya, itu ringkasan yang akurat. Hampir setiap orang akhirnya membutuhkan semacam hub / controller. Ada banyak opsi untuk hub, baik komersial maupun open source.
John Deters