IoT cihazları için kendi kişisel bulutumu oluşturmak için neye ihtiyacım var?


18

Bu, bir süredir düşündüğüm bir konu, özellikle de "IoT" kavramı son zamanlarda çok fazla dalgalandığı için.

"IoT" dediğimde ne demek istediğimle başlayacağım . IoT teriminin farklı şeyler ifade edebileceğini ve bazen yanlış kullanıldığını biliyorum. Açıkça tanımlanmamış bir terim olabilir ve bunun tam olarak ne anlama geldiği konusunda büyük tartışmalara yol açabilir, terimin doğru ve yaygın olarak kabul edilen tanımını kendim bilmiyorum. Bu yüzden benim için IoT bir kavramdır, gömülü bir cihaza internet üzerinden ya başka bir gömülü cihazdan ya da bir cep telefonundan uzaktan bağlanma yeteneğini tanımlayan bir kavramdır . Kadar basit.

Bu bağlamda, bağlantının amacı önemli değil, ofisinizdeki bir cihazı evde başka bir cihaza bağlayabilirseniz veya cep telefonunuzdan evdeki bir cihaza bağlanabiliyorsanız, bunların hepsi internet üzerinden, IoT cihazları hakkında konuşuyoruz (telefon değil, gömülü cihazlar).

Yani, IoT ile ne demek istediğimi kabul ettikten sonra, şimdi elde etmeye çalıştığım şeyi anlatacağım.

Ulaşmaya çalıştığım şey, IoT tanımımda tanımladığım şey.

Evde bir veya birkaç gömülü aygıtın internet yönlendiricime, ethernet veya wifi ile bağlı olmasını ve uzak bir konumdaki başka bir gömülü aygıtla uzaktan bağlanabilmesini istiyorum (ve uzaktan aynı ağda değil) ve belki de onlara telefonumdaki bir izleme uygulamasıyla bağlanabilmek için

Örneğin, garaj kapısı açacağıma bağlı bir açma / kapama anahtarı olarak çalışan basit bir gömülü cihaza ve işyerindeki masamda büyük bir kırmızı düğme gibi davranan başka bir gömülü cihaza sahip olabilirim, böylece masamdaki kırmızı düğmeye basabilirim ve garaj kapısı açılır.

Başka bir örnek, evimin sıcaklığını izleyebilecek ve bir eşiğe ulaştığında bana bir uyarı gönderebilecek ADC özelliklerine sahip gömülü bir cihaza sahip olmak olabilir. Bildirim, basit bir android uygulaması veya işyerindeki masamın üzerinde oturan küçük bir ekrana sahip başka bir gömülü cihaz tarafından alınabilir.

Bu örnekler aptalca olabilir, ancak elde etmeye çalıştığım şeyler için olası senaryoları ve kullanım örneklerini göstermek içindir. Sonunda, fikir aynı, gömülü bir cihazı diğeriyle internet üzerinden bağlayın.

Açıklığa kavuşturulması gereken bir başka şey, bu cihazlar arasındaki veri alışverişinin çok hafif olacağı, her seferinde sadece birkaç bayt olacağı, cihazlar arasında yüzlerce kilobaytın değiştirilmesi gerekmediği.

Ayrıca, bahsettiğim "gömülü cihazlar", 100MHz veya 200MHz cortex-m4 mikrodenetleyicileri temel alan basit ancak yetenekli cihazlardır. Ve bunu açıklığa kavuşturmak önemlidir, çünkü bu cihazlarda herhangi bir Linux veya karmaşık kütüphane çalışmaz. Sonunda, böyle bir kaynak kaybı ve sadece bir ampulü açmak ve kapatmak için Linux çalıştıran güçlü bir işlemciye sahip olmak tamamen gereksizdir . Her durumda, bir BeagleBoard, Raspberry Pi veya bunun gibi başka bir kartı yerleşik aygıtlarım olarak kullanmayı planlıyorum. Sadece Mikrodenetleyiciler çünkü daha fazla karmaşıklık gerekmiyor.

IoT platformları ve bu tür karmaşık çözümler hakkında fazla bir şey bilmiyorum. İnternet üzerinden bir gömülü cihazı diğerine bağlamanın bir yolunu bulma yolculuğuna başladığımda IoT hizmetleri olan birkaç siteye rastladım.

Bazı IoT bulut hizmetleri olduğunu biliyorum:

Sadece birkaç isim. Bunlarla ilgili ana konular maliyet ve karmaşıklıktır. Bu hizmetleri almak için ödeme yapmak zorundasınız ve hepsine ihtiyacınız olması durumunda sahip oldukları tüm hizmetleri ve API'larını ve benim için gerekli görünmeyen bir sürü başka şeyi nasıl uygulayacağınızı öğrenmelisiniz. sadece cihazlar arasındaki bazı baytları değiştirebilir. Sadece bundan daha basit, kendim yapabileceğim bir şey istiyorum.

Kendi "bulutum" u uygulamanın, yapmam gereken bir şey varsa, basit olmadığını ve bazen bu tür hizmetleri basitlik amacıyla kullanmanın daha iyi olduğunu söyleyebilirsin, ancak nasıl yapılacağını bilmek istediğim iki temel neden var. kendi IoT hizmetlerimi uygulamak.

Bunun ana nedeni bunu kendim yapmak istiyorum. Cihazlarımı birbirine bağlamak için 3. bir tarafa güvenmek istemiyorum ve cihazlarım için kodu ve donanımı geliştireceğimden, onları IoT cihazları olarak bağlamak için kendi yöntemlerimi oluşturmak daha iyi hissettiriyor.

İkinci neden, nasıl yapılacağını öğrenmek. Bunu başarmak için ihtiyacım olan tüm şeyleri bilerek IoT dünyası hakkında daha iyi bir anlayışa sahip olacağım.

Ayrıca, C konusunda uzman olduğumu belirtmek istiyorum ve Linux'u evimde olduğu kadar işyerinde de günlük işletim sistemim olarak kullanıyorum, bu yüzden lütfen pencere işlerinden kaçının çünkü bu benim için işe yaramaz. Hedefime ulaşmak için gereken her şeyi uygulamak için gömülü aygıtlarımda veya Linux'ta C'de uygulamak zorunda olduğum hiçbir şeyden korkmuyorum.

Öyleyse sorum şu: İki veya daha fazla gömülü cihazı aralarında veri alışverişi amacıyla birbirine bağlamak için ne gerekli ve nerede gerekli?

Bu soru Kendi sunucumuzda bir IoT oluşturmak için ne kullanabilirim? benzer bir şeye sahip ancak kapalı ve herhangi bir cevabı yok, zaten var olan bir bulut altyapısının kullanılacağını varsayar. Yani bana yardımcı olmuyor.

Bu diğer gönderi Genel verileri bulutta depolamak / göndermek / yayınlamak için hangi IoT hizmetleri mevcuttur? benzer bir sorusu var ama OP açıkça IoT hizmetleri istiyor ve bunlardan kaçınmaya çalışıyorum.


2
Sunucu "mevcut bulut altyapısı" nasıldır? Sunucu sadece bir bilgisayardır. Bulut altyapısı çok daha fazlası.
user253751

1
Ayrıca her yerde bulunan IPv6'mız olduğunda, IoT cihazlarınızın doğrudan birbirinizle konuşmasını sağlayabileceğinizi, merkezi bir sunucuya / buluta gerek olmadığını unutmayın.
user253751

Yanıtlar:


10

Belki sorunun cevabını kaçırdım, ama bence bu cevapta iyi bir başlangıç.

En az üç şeye ihtiyacınız var.

  1. Verilerinizi toplamak için her zaman açık bir işlem düğümü. Bunun güçlü olması gerekmez, NAS'ınızda veya hatta (teoride) yönlendiricinizde çalışan bir süreç olabilir. Basitlik için, bir Raspberry Pi olduğunu varsayalım. Bu, gelecekte desteklemeye karar verdiğiniz herhangi bir fantezi radyo protokolünü de sağlayabilir. Teoride, internete maruz kalan tüm düğümlerle eşler arası çalışabilseniz de, birini master olarak aday göstermek ve bunun veri harmanlamasını ve yayınlamasını (uygulamaya / kullanıcıya) işlemek daha kolaydır. Tabii ki, özellikle de orta derecede güçlü WiFi düğümleri kullanıyorsanız, hub da bir düğüm olabilir.
  2. Uç noktaların verilerini hub düğümünüze göndermesine izin veren uygun bir yazılım yığını. burada ihtiyacınız olan şey, artı çalıştırmak için bir işletim sistemi.
  3. Sunucunuza daha geniş İnternet üzerinden erişimi kolaylaştırmak için DNS ve bağlantı noktası yönlendirme.

O zaman güvenliği unutma. Bunu yaparak, ev ağınızdaki her şeyi saldırıya açmaya daha yakın olacaksınız. Belki sadece biraz, ama riskin farkında olmak iyidir. Denemeye ve ilgilenmeye çalışabilirsiniz, ancak hata yapacağınızı varsayın.


1
Bunun istediğin cevap olduğundan emin değilim. Yine de sormanız gerekenler üzerinde çalışmak yardımcı olacaktır.
Sean Houlihane

1
Yardım için teşekkürler!! Peki, ilk noktasında ne demek istiyorsun, bir çeşit hub veya ağ geçidine ihtiyacım var
m4l490n

1
Evet, bir ağ geçidine veya birden fazlasına ihtiyacınız var.Tek bir düğümünüz varsa, bu açıkça düğümünüz olabilir. Cevabımı biraz düzenledim.
Sean Houlihane

11

Hafif cihazlar ve birkaç bayt tarih oranı , daha önce de belirtildiği gibi MQTT kullanılmasını ister . Sensör düğümleriniz, bir MQTT istemci uygulamasını barındıracak kadar güçlü olan bağımsız ESP8266 modüllerine dayanabilir. Veya bu modülleri harici mikrodenetleyicilerinizle birlikte AT komut kontrollü Wi-Fi modülü olarak kullanabilirsiniz.

4 kB flaşlı bir Atmega48V kullanan bu adam gibi çok daha az güçlü mikrodenetleyicilere kendi MQTT çözümünüzü uygulayabilirsiniz .

Bilgisayarınızda bir komisyoncu barındırabilirsiniz, ancak bunun yerine Raspberry Pi'yi çalıştırmak daha güç tasarruflu olacaktır. Kodlamayı seviyorsanız yine kendi MQTT brokerınızı uygulayabilirsiniz. Şahsen Mosquitto'yu bu amaç için harika buldum .

Tüm sensör düğümlerinizin TCP / IP bağlantısına ihtiyacı olması dezavantajı.


Pil dostu çözüm, LoraWAN veya ZigBee özellikli sensör / aktüatör düğümlerini kullanmak ve Ahududu / BeagleBone'a telefonunuzdan veya diğer cihazlardan da erişilebilen basit bir web sunucusunu barındırabilen bir ağ geçidi uygulamak olabilir.


Her durumda, hub, ağ geçidi veya sunucunuzu özel ağınızın dışında erişilebilir kılmak her şeyden önce gelir. Bunu yapmanın daha fazla yolu vardır ve asıl endişe her zaman güvenliktir. Bu bence en riskli kısım.

Temel gereksinimler @Sean tarafından oldukça iyi özetlenmiştir.


Cevabınıza ve @ Sean'ın cevabına göre, bir çeşit hub veya ağ geçidine ihtiyacım olduğunu görüyorum. Bu kesinlikle gerekli mi? Yani, IP adresini veya ana bilgisayar adını bilerek herhangi bir düğüme doğrudan bağlanamıyor muyum? Bir hub veya ağ geçidini önlemeye çalıştığım için değil, sadece gerekli ve neden olduğunu anlamak istiyorum. Yardım için teşekkürler!!
m4l490n

Raspberry Pi'nin "her zaman açık" bir cihaz kadar iyi olduğunu buldunuz mu? Ağ depolama olarak kullandığım, ancak her zaman açık bırakmaktan çekinmeyin, Pi'ime takılı küçük bir HDD var. Bunu yaparsam iyi olur mu? (FWIW Üzerinde küçük soğutucularım var)
BruceWayne

1
@ m4l490n Bir hub veya ağ geçidi kullanmak bunu kolaylaştırır. Bu şekilde bağlantı noktası iletmeyi veya yalnızca hub veya ağ geçidi için böyle bir ayar yapmanız gerekir. Yönlendiricinizin arkasındaki tüm cihazlara doğrudan bağlanmak istiyorsanız, örneğin her biri için bağlantı noktası yönlendirmeyi ayarlamanız gerekir. Özel ağınıza daha fazla yol açarken daha fazla risk ve daha fazla iş.
Bence Kaulics


10

Bir denetleyici / hub gereksinimi hakkında önceki yanıtları sorguladınız. Bir şeyleri gerçekleştirmek için var olmak için kurallara ihtiyacınız olduğunu düşünün. Bir garaj kapısını açmak için büyük bir kırmızı düğmeye basmak istiyorsanız, bazı kuralların sensörü (düğmeyi) istenen eyleme (kapıyı açarak) bağlaması gerekir. Bunu gerçekleştirmenin iki yolu vardır: kuralı doğrudan düğmeye koyabilir veya kuralı ayrı bir bilgisayara koyabilirsiniz.

Doğrudan çözüm hakkında daha fazla düşünelim. Garaj kapısı ile ilgili düğmeyi öğretirseniz, düğmeniz kuralları dahili olarak tutar. Düğmenin garaj kapısının kimliğine ihtiyacı vardır, bu nedenle garaj kapısını değiştirirseniz düğme çalışmaz. Düğme masanızdaysa ve evinizde özel bir ağ kullanılıyorsa, düğmenin hem evinizin ağ geçidinin adresini hem de kapının adresini bilmesi gerekir. Düğmenin kapınızı açılmasını bildirmek için özel protokolü bilmesi gerekir - tüm üreticiler tüm kapı sinyallerini bilen uyumlu düğmeler yapıyor mu? Yeniden programlamadığınız sürece düğme başka bir şey yapamaz - düğmenin çipinin yerleştirilmesi için bir flaş programlayıcınız var mı ve bu programcı diğer cihazlarla uyumlu mu? Garaj kapısının açılmasını ve 5 dakika sonra kapanmasını istiyorsanız, düğmeniz gerçek zamanlı bir saat tutmanın tüm karmaşıklıklarına ihtiyaç duyar. Düğmeniz kapının durumunu bilmeyecek ve kapıyı kapatıp açmayacağınızı bilmek zorlaşacaktır. Ve düğmeleriniz bozulursa, değiştirme düğmenizin işi yapabilmesi için kuralları nasıl yedeklersiniz? Artı tarafta, kulağa ucuz geliyor: ayrı bir bilgisayara ihtiyacınız yok.

Bir denetleyici ile işler farklıdır. Tüm sensörlerden gelen tüm mesajlar kontrolöre iletilir. Her sensör basittir: sinyali kontrolöre gönderin. Daha sonra kontrolör çok karmaşık kurallara gereken girişleri uygulayabilir: güneş sensörünü kontrol edebilir ve karanlık olmadıkça dış ışıkları açamaz veya ayın ortalama yağış ortalamanın ve mevcut sıcaklığın üzerindeyse sprinkleri çalıştırmaz. ortalamanın beş derece altında. Kontrolör durumu takip edebilir. Eğer bir "garaj kapısını kapat" butonu ama bir "garaj kapısını aç" butonu istemiyorsanız bu önemli olabilir (evden uzaktayken nadiren kapıyı açmak istiyorum, ama eğer kapalıysa kesinlikle kapatmak istiyorum yanlışlıkla açık bırakılır.)

Denetleyici, düğmeleri nasıl dinleyeceğini bilen aygıt sürücüleri ve kapılarla nasıl konuşulacağını bilen diğer sürücüler için yer sağlayabilir. Denetleyici, yeni aygıtlara ve aygıt türlerine, bir düğmenin içine yerleştirilmiş küçük bir yongadan daha yükseltilebilir.

Denetleyici ayrıca belirli düzeylerde hizmet sunarak ileti iletme gibi altyapı görevleri için daha karmaşık bir mantığa sahip olabilir. Örneğin, MQTT protokolü üç farklı seviyeye izin verir: mesajı bir kez iletmeye çalışın, en az bir kez görülene kadar tekrar tekrar iletin veya bir kez ve sadece bir kez iletin.

Denetleyici, bir iletişim ağ geçidine giden ve giden tüm mesajları birleştirmek için mimari olarak mantıklı bir yer sunar ve harici bir arayüz kullanılmasına izin verir. Bu, düğmenizin ve telefonunuzun hem sinyal gönderebileceği hem de kuralların birinin garaj kapısını açmasına izin verildiğini anlayabileceği anlamına gelir. Ağ geçidi de güvenliği sağlayabilir. Düğmenizi ve garaj kapınızı internete koymak zorunda değilsiniz; ikisini de özel yalıtılmış ağlara koyabilir ve sinyalleri taşımak için ağ geçidini kullanabilirsiniz. Denetleyici ayrıca sisteminiz için tüm kuralları yedeklemek için tek bir nokta sağlar.

Denetleyicinin dezavantajları, gecikme ve ekstra karmaşıklık ekler. Şaşırtıcı bir şekilde, bir kontrolör maliyeti kayda değer bir şekilde arttırmaz. Raspberry Pi'ye ortalama bir uzaktan kontrol edilebilir ışık anahtarının maliyetinden daha düşük bir denetleyici uygulayabilirsiniz. Fikri sadece maliyet bazında indirim yapmayın.


Bir HUB veya denetleyiciye sahip olmak, özellikle tüm IoT aygıtlarımda tüm ağdan en iyi şekilde yararlanmaya izin verebilecek kural tabanlı bir işlevselliğe ihtiyaç duyduğumda çok arzu edilir görünüyor.
m4l490n

Bu nedenle, doğru anladıysam, karmaşık kurallara veya hatta karmaşık bir IoT cihazları ağına ihtiyacım olmaması koşuluyla eşler arası bağlantıya sahip olabilirim ve bu da IoT cihazlarının birlikte çalışabileceği diğer markalar ve örneğin bir düğme her zaman aynı kapı açıcıya bağlanacaktır.
m4l490n

Aksi takdirde, daha fazla esneklik ve işlevsellik gerekiyorsa, bir HUB'ım olmalı. Bu doğru mu?
m4l490n

Evet, bu doğru bir özet. Hemen hemen herkes bir tür hub / denetleyiciye ihtiyaç duyar. Hem ticari hem de açık kaynaklı hub'lar için birçok seçenek vardır.
John Deters
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.