giriiş
Nesnelerin İnterneti (IoT) geliştiricilerinin çoğu zaman IoT aletinin durumunu mahalli olarak yada uzaktan yönetmek için sağlam bir mekanizma uygulaması gerekir. Tipik bir örnek, sıcaklığı (aygıt durumu) ayarlamak için yerleşik denetim panelini kullanabileceğiniz yada bulutta çalışan bir yazılım uygulamasından ısı ayarlama mesajlarını uzaktan tetikleyebileceğiniz bir akıllı ev radyatörü, bir IoT cihazıdır.
AWS IoT Device Shadow hizmetini kullanarak bu mekanizmayı süratli bir halde oluşturabilirsiniz. AWS IoT Device Shadow hizmeti, aralıklı ağ bağlantısı durumunda bile bir cihazın durumunu iş mantığınızın kullanımına sunabilir.
Ek olarak cihazınızın yazılım yaşam döngüsünü verimli bir halde yönetmek ve geliştirme çalışmalarınızı hızlandırmak için AWS IoT Greengrass’ı evvelinde oluşturulmuş bileşenleriyle beraber kullanabilirsiniz. AWS IoT Greengrass, aygıt yazılımı yapmaya, dağıtmaya ve yönetmeye yönelik açık kaynaklı bir uç emek harcama zamanı ve bulut hizmetidir. AWS IoT Greengrass’ın bileşenlerinden biri, çekirdek cihazınızda mahalli gölge hizmetine olanak tanıyan gölge yöneticisidir. Mahalli gölge hizmeti, bileşenlerin mahalli gölgelerle etkileşim oluşturmak için işlemler arası iletişimi (IPC) kullanmasına olanak tanır. Gölge yöneticisi bileşeni, mahalli gölge belgelerinin depolanmasını yönetir ve ek olarak mahalli gölge durumlarının AWS IoT Aygıt Gölgesi hizmetiyle senkronizasyonunu yönetir.
Bu blog yazısında, akıllı ev radyatörünü simüle etmek için AWS IoT Device Shadow hizmetini ve AWS IoT Greengrass’ı Raspberry Pi ve Sense HAT donanımıyla beraber kullanıyorum. Bu gösterimde çıkış enerjisini simüle etmek için tek haneli bir sayı (0 – 9) kullanılır. Bu numara, mahalli ve uzak herhangi bir yerden yönetmek istediğimiz cihazın durumudur. Kullanıcı bu numarayı mahalli bir donanım anahtarı (Sense HAT üstündeki yerleşik kumanda kolu) vasıtasıyla ve ek olarak bulut tabanlı bir uygulamadan uzaktan değiştirebilir.
Raspberry Pi, Sense HAT LED ekranında radyatör çıkış enerjisini gösteren sayıyı gösterir. Kullanıcı, sayıyı çoğaltmak için Sense HAT üstündeki joystick’i yukarı itebilir (yada azaltmak için aşağı doğru itebilir).
Biçim 1. Raspberry Pi – ev radyatörünün simülasyonu
Biçim 2. Mimariye genel bakış
Bu blog gönderisini takip ederek, cihazınızın durumunu her yerde yönetmek için IoT çözümlerinizi süratli bir halde yapmaya ve kontrol etmeye başlayabilirsiniz.
Önkoşullar
Bu blog yazısını kovuşturmak için ihtiyacınız olacak:
Donanım:
Yazılım:
İzlenecek yol
Adım 1: AWS IoT Greengrass çekirdek yazılımını Raspberry Pi’ye yükleyin ve yapılandırın.
Raspberry Pi’nizi bir AWS IoT Greengrass çekirdek aleti yapmak için AWS IoT Greengrass Başlarken belgesindeki 1. adımdan 3. adıma kadar olan adımları izleyin. Aleti aşağıdaki konfigürasyonla oluşturdum:
- Çekirdek aygıt adı: PiWithSenseHat
- Şey grubu: RaspberryPiGroup
Artık bu aleti AWS konsolunuzda görebilmelisiniz.
Biçim 3. Konsoldaki AWS IoT Greengrass çekirdek aleti
2. Adım: Evvelde oluşturulmuş AWS IoT Greengrass bileşenlerini cihaza dağıtın
Bir sonraki adım, evvelinde oluşturulmuş AWS IoT Greengrass bileşenlerini cihaza dağıtmaktır. AWS IoT Greengrass, gelişimimizi hızlandırabilecek bir takım evvelinde oluşturulmuş bileşen sağlar ve bunların bakımını yapar. Bu gösteride aşağıdaki bileşenleri dağıtıyorum:
- yeşil çim.Cli:
Bileşenleri mahalli olarak geliştirmek ve hatalarını ayıklamak için çekirdek cihazlarda kullanabileceğiniz mahalli bir komut satırı arayüzü sağlar
- yeşil çim.ShadowManager
Çekirdek cihazınızda mahalli gölge hizmetini etkinleştirir ve mahalli gölge durumlarının AWS IoT Device Shadow hizmetiyle senkronizasyonunu yönetir
- greengrass.LocalDebugConsole (isteğe bağlı)
AWS IoT Greengrass temel cihazlarınız ve bileşenleri hakkında informasyon görüntüleyen mahalli bir denetim paneli sağlar
Adımlar:
- AWS IoT Greengrass konsoluna gidin
- Şu yöne rotayı ayarla Dağıtım içinde Greengrass cihazlarıyeni bir dağıtım oluşturun
- Dağıtım hedefi Ya olabilir Şey grubu RaspberryPiGroup yada Çekirdek aygıt
- Bu 3 bileşeni seçin Genel bileşenler
Biçim 4. Evvelde oluşturulmuş bileşenleri seçin
- aws.greengrass.ShadowManager bileşenini yapılandırma
İçinde Bileşenleri yapılandırma adımında aws.greengrass.ShadowManager’ı seçin ve peşinden tıklayın. Bileşeni yapılandır
Biçim 5. aws.greengrass.ShadowManager’ı yapılandırma
- Aws.greengrass.ShadowManager’ın bileşen sürümünü ve yapılandırma json’unu ayarlayın
Biçim 6. aws.greengrass.ShadowManager’ı yapılandırma – ayrıntılar
- Sürüm: 2.3.1
- Birleştirilecek yapılandırma:
{
"synchronize": {
"coreThing": {
"classic": true,
"namedShadows": [
"NumberLEDNamedShadow"
]
},
"shadowDocuments": [],
"direction": "betweenDeviceAndCloud"
},
"rateLimits": {
"maxOutboundSyncUpdatesPerSecond": 100,
"maxTotalLocalRequestsRate": 200,
"maxLocalRequestsPerSecondPerThing": 20
},
"shadowDocumentSizeLimitBytes": 8192
}
Json yapılandırması, isminde olan bir gölgeyi senkronize eder. NumaraLEDAdlandırılmışGölge bu örnekte her iki yönde de, Aygıt ile Bulut içinde seçenek. Gerçek dünya uygulamanızda, tek yönlü yada çift yönlü senkronizasyonla birden fazla adlandırılmış gölge kullanabilirsiniz. Aws.greengrass.ShadowManager’ın ayrıntılarını kendi belgesinden deneyin.
- Tamamla Dağıtım oluşturmak dağıtımı tamamlamak için sihirbazı kullanın.
2. Adımın sonunda Raspberry Pi, adlandırılmış bir gölgeyi senkronize etmeye hazırdır. NumaraLEDAdlandırılmışGölge AWS IoT Greengrass çekirdek yazılımını ve evvelinde oluşturulmuş bileşeni kullanarak aygıt ile bulut içinde.
3. Adım: Akıllı ev radyatörünü mahalli kontrolle simüle etmek için AWS IoT Greengrass bileşenleri oluşturun
Şimdi mahalli kontrole haiz bir akıllı ev radyatörünü simüle etmek için iki AWS IoT Greengrass bileşeni oluşturun. Bileşenler arasındaki iç yazışma için süreçler arası iletişimden (IPC) yararlanabiliriz. Hususi AWS IoT Greengrass bileşenlerinin iyi mi oluşturulacağı mevzusunda bilginiz yoksa lütfen Başlarken belgesindeki 4. adımı izleyin. Bu blogda bu tarz şeyleri mahalli olarak oluşturup kontrol ediyoruz.
- Bileşen örnek.sensehat.joystick: Vakaları joystick’ten yakalayın ve vakaları bir IPC mevzusuna yayınlayın “ipc/kumanda çubuğu” (Tarifte değişken olarak tanımlanmıştı).
- Bileşen örnek.sensehat.led: IPC mevzusuna abone olun “ipc/kumanda çubuğu”mahalli gölgeyi ve Sense HAT LED ekranını güncelleyin.
3.1 Bileşen oluştur com.example.sensehat.joystick
Bu bileşen, yerleşik kumanda kolunun vakalarını AWS IoT Greengrass çekirdek IPC’sine yayınlıyor. Vaka şöyleki:
{
"timemillis":1669202845134,
"direction":"down",
"action":"released"
}
Bileşen tarifini ve yapısını blog kaynak kodu deposundan bulabilirsiniz. IPC konusunu kaynak kodunda durağan(durgun) kodlamak yerine, tarifte değişken olarak tanımlanır.
3.2 Bileşen oluştur com.example.sensehat.led
Şimdi adlı ikinci bileşeni oluşturun com.example.sensehat.led. Bileşen tarifini ve yapısını kaynak kod deposunda bulabilirsiniz. Tarifte IPC ve gölge belgelere erişim iznini tanımlar.
Bu bileşen:
- Bir sayıyı aygıt durumu olarak korur ve bunu LED’de görüntüler
- IPC vasıtasıyla joystick etkinlik mevzusuna abone olur
- Alınan joystick vakasına bakılırsa sayıyı artırın/azaltın
- Gölgeyi periyodik olarak denetim eder. Gölge belgede yeni bir numara var ise aleti bu numarayla güncelleyin.
Biçim 7. com.example.sensehat.led bileşeninin iş akışı
Demo: Aygıt durumunu çalışırken yönetin
Artık Raspberry Pi simülatör olarak kullanıma hazırdır.
2 tür vakaya cevap verir:
- Yeni joystick etkinliği: Aleti mahalli olarak deneyin
- Yeni bulut gölgesi belgesi: Aleti uzaktan deneyin
Biçim 8: Aleti mahalli olarak yada uzaktan denetim etme mantığı
Aygıt gölgesini çalışırken görmek için:
- AWS IoT Greengrass konsoluna gidin
- Şu yöne rotayı ayarla Şeylerseçme PiWithSenseHat
- İçinde Aygıt Gölgelerişunları bulabilirsin NumaraLEDAdlandırılmışGölge. Bu gölgeyi manuel olarak oluşturmanıza gerek olmadığını ihmal etmeyin. Aygıt ilk kez gölgeyi geri bildirdiğinde, eksikse sizin için gölgeyi oluşturacaktır.
Biçim 9. AWS konsolunda aygıt gölgesini bulun
Demo 1: Joystick’i kullanarak aleti mahalli olarak güncelleyin
- Sayıyı mahalli olarak çoğaltmak/azaltmak için joystick’i kullanın (Başlangıçtaki sayı 6’ydı. Ilkin 0’a düşürdüm, sonrasında 2’ye çıkardım).
- Aygıt gölge belgesinin AWS konsolunda gerçek zamanlı olarak güncellendiğini gözlemleyin. Değişim, gerçek zamanlı olarak bulut gölgesiyle senkronize edilir.
-
- durum “mahalli tarafınca güncellenen aygıt” olarak değiştirildi
- sayı yerelden yeni değere değiştirildi
Biçim 10: Numarayı güncellemek ve yeni kıymeti buluta gerçek zamanlı olarak bildirmek için joystick’i kullanma
Demo 2: Buluttaki aygıt gölge belgesini güncelleyerek aleti uzaktan güncelleyin
- Bu demonun başlangıcında aygıt LED’i 0’ı gösteriyordu ve aygıt gölge belgesi
{ "state": { "desired": { "number": 0 }, "reported": { "status": "device is updated by local", "number": 0 } } }
- AWS IoT Core konsolunda, Düzenlemek aşağıdaki Json’a haiz gölge belgeyi oluşturun (“rapor edilen” bölümünü atlayabilirsiniz), peşinden tıklayın Güncelleme
{ "state": { "desired": { "number":9 } } }
- Raspberry Pi LED’inin numarayı güncellediğini gözlemleyin. Değişim buluttan mahalli cihaza aktarılır. Şimdi aygıt 9 sayısını gösteriyor:
-
- durum “aygıt gölge tarafınca güncellendi” olarak değiştirildi
- sayısı 0’dan 9’a değiştirildi.
Biçim 11. Buluttaki aygıt gölge belgesini güncelleyerek aleti uzaktan güncelleyin
Ekran numarası mahalli joystick ile yada uzaktan AWS konsolundan güncellenebildiğinden son olarak güncelleme önceliklidir. Bu yüzden, güncelleme mahalli olarak yapıldığında, “istenen” kıymeti buluttaki uzak gölgeye ayarlamak önemlidir, böylece uzak gölge yeni “istenen” kıymeti bilir ve bir sonraki gölge senkronizasyon döngüsünde bunu güncellemez. Daha fazlasını cihaz-gölge-boş-alanlar belgesinde görebilirsiniz.
Temizlemek
- AWS IoT Greengrass çekirdek yazılımını Raspberry Pi’ye yüklemek için kullandığınız IAM kullanıcısını silin/dönem dışı bırakın
- AWS IoT konsolu altında şuraya gidin: Greengrass cihazları
- İçinde Çekirdek Aygıt PiWithSenseHat cihazını seçin ve sağ üstteki Sil tuşuna basın.
- İçinde Şey grupları RaspberryPiGroup’u sil
- Bu iki hususi bileşeni Raspberry Pi’den kaldırın
- Raspberry Pi’deki terminalde aşağıdaki komutları çalıştırın
sudo /greengrass/v2/bin/greengrass-cli --ggcRootPath /greengrass/v2 deployment create --remove "com.example.sensehat.led"
sudo /greengrass/v2/bin/greengrass-cli --ggcRootPath /greengrass/v2 deployment create --remove "com.example.sensehat.joystick"
- AWS IoT Greengrass çekirdek yazılımını Raspberry Pi’den kaldırın
- AWS IoT Greengrass çekirdek yazılımını Raspberry Pi’nizden kaldırmak için bu belgedeki adımları izleyin.
- Raspberry Pi’deki terminalde aşağıdaki komutları çalıştırın
Çözüm
Bu gönderide, ister mahalli olarak ister uzaktan yapılsın, IoT aygıt durumunu yönetmek için sağlam bir çözüm oluşturmak amacıyla AWS IoT Device Shadow hizmetini ve AWS IoT Greengrass’ı iyi mi kullanacağınızı öğrendiniz. Artık kendi iş mantığınıza odaklanabilir ve bu iki AWS hizmetinin, herhangi bir yerde aygıt durumunu yönetme mevzusundaki ağır işleri yapmasına izin verebilirsiniz. Şu anda bu iki hususi bileşen cihazda mahalli olarak oluşturulmakta ve dağıtılmaktadır. Bir sonraki adım, bu tarz şeyleri daha çok cihaza dağıtabilmeniz için AWS IoT Greengrass’ta kullanıma sunmak olabilir. Bunun için AWS IoT Greengrass belgesindeki 5. ve 6. adımları takip edebilirsiniz.
Yazar hakkında
Source: aws.amazon.com