Mobile Services JS Backend - Data - Sil(Delete)

Mobile Services data özelliğini kullanarak yaptığımız projede tablodan bir satırın nasıl silineceğine bakacağız.    

Daha onceki yazılarda projenin daha önceki adımlarını okumanız mümkün.

MainPage.xaml içindeki ListView'I aşağıdaki şekilde değiştiriyoruz.

Yukarıdaki kodda gördüğünüz gibi yeni bir buton ekledik. Bu butona basıldığında silme işlemi gerçekleştireceğiz.

   

MainPage.xaml.cs dosyasına aşağıdaki kodu yazıyoruz.

Yukarıdaki kodda ilk once basılan butonun içindeki DataContext'a ulaşıyoruz ve Kisiler türünden bir değişkene atıyoruz. Daha sonra bu değişkeni tableClient.DeleteAsync(kisi); komutu ile siliyoruz.

Sonuç

Sonuc

Gördüğünüz gibi silmek istediğim satırın __deleted değeri true olarak değiştirildi ve artık bu item get sorgularında gözükmeyecek. Satır logical olarak silindi ancak halen database'de yer alıyor, bu olayın adı soft delete. Eğer tabloyu yaratırken softdelete'I aktif etmeseydik bu item tablodan tamamen silinecekti.

Server Side Script

Server Side Script

Delete için Server Side Script yazarken silinecek satirin ID'si, auth olmuş user ve request parametre olarak geliyor. Bu örnekte belirtilen id'de satirin silinmesini engellemiş olduk. Eğer uygun id için silme isteği gelirse BAD_REQUEST olarak sonuç dönecek ve uygulamada exception oluşacaktır.

   

Proje: https://github.com/altinokdarici/AzureEgitimSerisi

Ses ile Raspberry Pi 2 üzerinde LED kontrol

Bu yazıda Raspberry Pi 2'ye bağladığımız bir LED'i Windows Phone'dan internet aracılığı ile kontrol edeceğiz. Bu kontrolü ses (ingilizce) veya buton yardımıyla yapacağız.

  Raspberry Windows Phone  

Nasıl çalışacak?

  1. Windows Phone üzerinden ses ile komut vereceğiz. (Şuan için on/off) Sadece ses ile değil buton aracılığı ilede bu işlemi yapabilmeliyiz.
  2. Windows Phone veriyi SignalR ile azure'da bulunan bir web sitesine gönderecek. Bu web siteside yine signalR ile bağlı olan Raspberry Pi'a gönderilecek. (birden çok raspberry pi bağlamak mümkün.)
  3. Raspberry Pi bu komutu signalR aracılığı ile alacak ve gelen veriye göre pin'e gerekli değerleri gönderecek.

   

Kullanacağımız Teknolojiler

Tüm kodlarımızı C# ile yazacağız.

  • Raspberry Pi 2 üzerinde mono kullanacağız. Mono nasıl yüklenir?
  • SignalR (bunun için bir tane asp.net projesi oluşturacağız ve azure websites'ta yayınlayacağız).
  • Windows Phone'da çalışacak uygulamamızı C# ve XAML ile yazacağız.

       

Raspberry Client Uygulaması

Visual Studio'yu açalım ve bir tane C# console uygulaması yaratalım. Aşağıdaki kodları projemize yazalım.

Kodlarda gördüğünüz gibi WiringPi namespace'ine ihtiyacınız olacak. Gereken kodları https://github.com/LocalJoost/SunfounderTest1/tree/master/WiringPi adresinden bulabilirsiniz.

   

Bu kodları build ettikten sonra Raspberry Pi'a yüykleyebiliriz. Ancak Raspberry Pi üzerinde wiringPi ve mono yüklü olamlı. (Mono Nasıl yüklenir?, WiringPi nasıl yüklenir?)

   

SignalR Service

Visual Studio da bir tane Web Application açıyoruz ve Package Manager Console'a

  • Install-Package Microsoft.AspNet.SignalR
  • Update-Package

Komutlarını yazarak SignalR kütüphanelerini projemize ekliyoruz ve gerekli paketleri güncelliyoruz.

Daha sonra MessageHub adında bir class yaratıyoruz ve aşağıdaki kodları yazıyoruz.

   

Daha sonra signalR içeren web projesini Azure Web Sites'a deploy ediyoruz. (Azure yerine .net host edebileceğiniz başka bir server'da olabilir)

   

   

Windows Phone Client Uygulaması

Visual Studio üzerinde yeni bir Windows Phone 8.1 uygulaması yaratıyoruz ve MainPage.xaml içine aşağıdaki kodları yazıyoruz.

   

   

Daha sonra MainPage.xaml.cs dosyasına geçerek aşağıdaki kodu yazıyoruz.

   

   

Daha sonra Package.appxmanifest dosyası içerisinde Capabilities tabı içerisinde Microphone'a check atıyoruz. Böylece uygulamamızın mikrofone erişim yetkisi olacak.

   

Artık Windows Phone uygulamamız hazır. Uygulama üzerinde bulunan textBox'a yazdığın pin numarası ve toogleSwitch ile ayarladığınız on/off değeri gönder butonuna bastığınızda SignalR server'a gönderilecektir. Ve Raspberry Client uygulamamız bu veriyi alacaktır. Komutu ses ile de vermeniz mümkün bunun içinde Speech To Text butonuna basarak Turn off the light veya Turn on the light demeniz yeterli. Bu özellikte pin numarası eklemediğimi şimdi fark ediyorum bunuda siz ekleyebilirsiniz. "Turn on the first light" derseniz 0 numaralı pin'in çalışması gibi bir mantık izleyebilirsiniz.

   

Fiziksel Bağlantı

Raspberry Pi 2 üzerindeki 11 numaralı pin'e LED'in kısa bacağını, 6 numaralı pin'e ise LED'in uzun bacağını bağlamanız(arada 270k resistor kullanmanızı öneririm) gerekmekte. Pin numaralarını aşağıdaki şemada bulabilirsiniz.

   

Uygulamayı çalıştırma zamanı

İlk olarak raspberry pi üzerinde client uygulamasını çalıştıralım ve Started yazmasını bekleylim. Console'a started yazdığında herşey tamam ve bizden komut bekliyor demektir. Şimdi Windows Phone uygulamasını acarak ve "Turn on the light" demeniz yeterli. Veya textBox'a 0 yazarak On konumunda butona basabilirsiniz.

   

Kodlar için: https://github.com/altinokdarici/RPiSignalR

   

Demo