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.
sumber
Jawaban:
Mungkin saya melewatkan inti pertanyaan, tetapi saya pikir ini adalah awal yang baik untuk sebuah jawaban.
Anda memerlukan tiga hal, minimal.
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.
sumber
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.
sumber
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.
sumber