Çevre Analizinde IoT

IoT ile hava durumu, kirlilik kontrolü ile yangın, deprem, tsunami gibi afetler erken uyarı sistemleri sayesinde uyarı sistemleri yapılabilmektedir. Bulut tabanlı IoT uygulamalar sayesinde hava, su, toprak gibi sensörlerle algılanan çevresel parametreler etkili bir şekilde izlenebilir duruma gelmektedir.

  • Bulut tabanlı hava izleme
  • Gürültü ve hava kirliliği izleme
  • Yangın algılama sistemleri
  • Deprem ve tsunami erken uyarı sistemi
  • Toprak durum izleme





Arayüzler:
LocationListener: Konum değiştiğinde,LocationManager'den  bildirim almak için kullanılır.
OnNmeaMessageListener: GNSS'den NMEA cümleleri almak için kullanılır.

GNSS(Global Navigation Satellite System(Küresel Uydu Serfisüfer Sistemi)): GNSS aracılığıyla uzaydan yollananan dalgalarla yeryüzünde bulunan elektronik alıcılar bulundukları noktanın ve yakın çevresinin enlem,boylam ve yüksekliğini bulunduğu noktada yerel saatin kaç olduğunu tam olarak hesaplayabilir.

NMEA: Uydu aracılığıyla düzenli olarak kodlanmış bilgi yollayan cümlelere NMEA protokolü denir.

SINIFLAR:
Address(Adres): Bir konumu açıklayan bir dizi dizilerdir.
Criteria(Kriterler): Bir yer sağlayıcı seçmek için uygulama kriterlerini gösteren sınıftır.
Ceocoder: Coğrafi kodlama ve ters kodlama için bir sınıftır.
GnssClock: GPS saat zaman damgasını içeren bir sınıftır.
GnssMeasuerment: Ham ve hesaplanmış bilgi içeren bir GNSS uydu ölçümünü temsil eden bir sınıftır.
GnssMeasurementsEvent: Bir ölçüm olayıyla ilişkili veriler için bir kapsayıcı uygulayan bir sıınıftır.
GnssMeasurementEvent.Callback: GNSS motorundan GNSS uydu ölçümlerini almak için kullanılır.
GnssNavigationMessage: GNSS uydu navigasyon mesajı içeren sınıftır.
GnssNavigationMessage.Callback: GNSS motorundan GNSS uydu navigasyon mesajlarını almak için kullanılır.
GnssStatus: Bir sınıf GNSS motorun mevcut durumunu gösterir.
GnssStatue.Callback: GNSS olayları olduğunda bildirim almak için kullanılır.
Location: Coğrafi konumu temsil eden bir veri sınıfıdır.
LocationManager: Sistem yer hizmetlerine erişim sağlar.
LocationProvider: Yer sağlayıcıları için soyut bir sınıftır.
SettingInjectorService: Sistem ayarları uygulaması tarafından görüntülenen uygulama ayarlarına enjekte edilen bir tercihin etkinleştirilmiş durumunu dinamik olarak belirtir.
Birden çok uygulamayı etkileyen tercihler için yalnızca sistem görüntüsünde bulunan uygulamalar tarafından kullanım içindir.

ARAYÜZLER
 GpsStatus.Listener
   public static interface GpsStatus.Listener
          android.Location.GpsStatus.Listener
                 Gps durumu değiştiğinde bildirim almak için kullanılır.
   public abstract void onGpsStatusChanged(int event)
        GPS durumundaki değişiklikleri bildirmek için kullanılır. Etkinlik numaraları şunlardır:
        GpsStatus.GPS_EVENT_STARTED
        GpsStatus.GPS_EVENT_STOPPED
        GpsStatus.GPS_EVENT_FIRST_FIX
        GpsStatus.GPS_EVENT_SATELLITE_STATUS
    Bu yöntem çağrıldığında, istemci LocationManager.getGpsStatus(GpsStatus) ek durum bilgisi almak için çağrılmalıdır.


 GpsStatusNmeaListener
    public satic interface GpsStatus.NmeaListener
           android.location.GpsStatus.NmeaListener
                   GPS'den NMEA cümleleri almak için kullanılır. GPS motorundan NMEA verilerini almak için LocationManager.addNmeaListener(GpsStatus.NmeaListener) bu arayüzü uygulayabilir ve çağrı yapabiliriz.

  LocationListener
     public interface LocationListener
           android.Location.LocationListener
                   Konum değiştiğinde, LocationManager'den bildirim almak için kullanılır.  LocationManager.requestLocationUpdates(string,long,float,LocationListener) yöntemi kullanarak konum yöneticisi hizmetine kayıtlıysa çağrılır.
       onLocationChanged
             public abstract void onLocationChanged(Location, location)
                   Konum değiştiğinde çağrılır.
       onProviderDisabled
             public abstract void onProviderDisabled(String, provider)
                   Sağlayıcı kullanıcı tarafından devre dışı bırakıldığında çağrılır.
      onProviderEnabled
             public abstract void onProviderEnabled(String, provider)
                   Sağlayıcı kullanıcı tarafından etkinleştirildiğinde çağrılır.
     onStatusChanged
            public abstract void onStatusChanged(String, provider, int Status, Bundle extras)
                  Sağlayıcı durumu değiştiğinde çağrılır. Bu yöntem, bir sağlayıcı bir konum alamadığında veya sağlayıcı uygun bir süre sonra kullanımı sunulduğunda çağrılır.

OnNmeaMessageListener
    public interface OnNmeaMessageListener
           android.location.OnNmeaMessageListener
                  GNSS'den NMEA cümleleri almak için kullanılır.
      onNmeaMessage
           public abstract void onNmeaMessage(String message, long timestamp)
                 Bir NMEA mesajı alındığında çağrılır.




SINIFLAR
Adres
      public class Address
            android.Location.Address
                   Bir konumu açıklayan bir dizi Dizelerdir.
  clearLatitude
      public void clearLatitude()
            Bu adresle ilişkili herhangi bir enlemi kaldırır.
  clearLaongitude
      public void clearLongitude()
            Bu adresle ilişkili herhanngi bir boylamı kaldırır.
  describeContente
     public int describeContents()
            Burada özel nesnelerin türlerini tamamlamalıyız.
   getAddressLine
     public String getAddressLine(int index)
            Belirtilen dizinin (0'dan başlayarak) numaralı adres satırını veya böyle bir satır yoksa null                    değerini döndürür.
   getAdminArea
      public String getAdminArea()
            Adresin yönetim alanı adını döndürür
   getCountryCode
      public String getCountryCode()
            Adresin ülke kodunu döndürür.
   getCountryName
      public String getCountryName()
             Adresin yerelleştirilmiş ülke adını döndürür.
   getExtras
      public Bundle getExtras()
             Bir Bundle adresiyle ilgili ek sağlayıcıya özgü bilgileri döndürür.Anahtarlar ve değerler                       sağlayıcı tarafından belirlenir.
   getFeatureName
      public String getFeatureName()
             Adresin özel adını döndürür.
   getLatitude
      public double getLeatitude()
             Biliniyorsa adresin enlemini döndürür.






























      GPS (Global Positioning System(Küresel Konumlandırma Sistemi)) 1940 yıllarında geliştirilmeye başlanmış ve ilk başlardaki amaç askeri alanlarda kullanmaktı ancak 1980 yıllarında sivil halkın kullanımına sunulmuştur. GPS sinyalleri bulut,cam, plastik gibi cisimlerden geçebilirken duvar ve dağ gibi cisimlerden geçemezler.
      GPS sinyalleri bazı noktalarda yetersizdir yani hatalı sinyal alınabilecek bölgelerde veya hiç sinyal alınamayacak bölgelerde Diferansiyel GPS'ler kullanılarak hatalar en aza indirgenmektedir.
   

      GPS Çalışma Prensibi: Dünya yörüngesinde 24 adet GPS uydu alıcısı bulunmaktadır ve bu uydular 24 saatte 2 tam tur atmaktadırlar. GPS uydu alıcıları bulunması gerekilen yerleri enlem ve boylam olarak hesaplar. Enlem ve boylam olarak belirlemek için 3 GPS, enlem, boylam ve yükseklik olarak ise 4 adet GPS uydusundan yararlanılır. GPS uydu alıcılarında oldukça hassas atomik saatler bulunmaktadır işte bu saatler sayesinde dünya üzerindeki konumumuz bulunabilmektedir. Bu atomik saatler diğer uydular ve yeryüzündeki saatler ile işbirliği içinde çalışmaktadırlar ve herhangi bir sapma günlük olarak düzeltilmektedir. Dünya üzerindeki herhangi bir GPS alıcısı çalıştırıldığında kapsama alanında bulunan GPS uydu alıcılarından  en az 3 tanesinden bu sinyallere ihtiyaç duyar ve gelen saat bilgilerinin mutlak zamanda ne kadar sapma yaptığını bularak her bir uydudan uzaklığını öğrenebilen GPS alıcısı , bu bilgiler ile dünya üzerindeki konumunu hesaplayabilmektedir.


   Günümüzde 3 çeşit GPS alıcısı bulunmaktadır. Bunlar:
   Adi Edinimli Kod Alıcısı
   Taşıyıcı Faz Alıcıları
   Çift Frekans Alıcıları

   Uydu Cihazı Yapan Ülkeler:
   İlk olarak Amerika Birleşik Devleti yapmıştır.
  • Amerika Birleşik  Devleti:GPS
  • Rusya:GLONASS
  • Hindistan: IRNSS
  • Çin: BEİDOU(BDS)
  • Avrupa Ülkeleri:GALİLEO
GPS UYDUNUN KULANIM ALANLARI:

      1. Askeri Kullanım Alanları:
      Arama-Kurtarma
      Hedef izleme
      Navigasyon
      Keşif

      2. Sivil Kullanım Alanları:
      Jeoloji
      İşaretleme
      İzleme
      Navigasyon
      Yüzey Ölçümü
      Harita Yapımı


























 

     
Android Studio da ekrana resim ekleme ve x,y koordinatlarına göre resmi
hareket ettirme:

 // display the current x,y,z accelerometer values
public void displayCurrentValues() {
    imageView(Float.toString(deltaX) + " " + Float.toString(deltaY)
+"" + Float.toString(deltaZ));   
 
 Log.d("x", Float.toString(deltaX));   
 Log.d("y", Float.toString(deltaY));   
 Log.d("z", Float.toString(deltaZ)); 
  
   if(deltaX < 2) {
        imageView.setImageResource(R.drawable.agac3);
// burada agac3 yerine eklenmek istenilen resmin adı yazılmalıdır
}
    else if(deltaY<2){
        imageView.setImageResource(R.drawable.agac2);
// burada agac2 yerine eklenmek istenilen resmin adı yazılmalıdır
   
}
    else{
        imageView.setImageResource(R.drawable.agac); 
// burada agac yerine eklenmek istenilen resmin adı yazılmalıdır
       }
}

Constructors(Yapılandırıcılar):
Metodlar verdiğimiz komutlar doğrultusunda bize belirli işlemleri tamamlayan yapılardı ve ihtiyaç duyduğumuz kısımlarda bu metodu çağırıp işlemlerimizi gerçekleştirebiliyorduk. Fakat bazı durumlarda bir sınıftan nesne oluşturduğumuz anda bazı işlemlerin yerine getirilmiş halde olmasını isteyebiliriz. İşte burada yapılandırıcı metod bize yardımcı olacaktır.
Yapılandırıcı metodlar nesneyi oluşturduğumuz anda çalışan metodlardır. Yapılandırıcı metodların bir geri dönüş tipi(void dahil) yoktur. Yapılandırıcının yaptığı iş, bir nesneyi ilk kullanıma hazırlamaktır.

Yapılandırıcı metod da dikkat edilmesi gerekilen hususlar;
 .Yapılandırıcıların erişim belirteci mutlaka  public olmalıdır.

· Yapılandırıcıların adı sınıfın adıyla aynı olmalıdır.

· Yapılandırıcı metot çağrılırken new anahtar sözcüğü kullanılır.

· Yapılandırıcılar bellekte nesneye bir yer ayrılmasını sağlarlar.

· Yapılandırıcılar her çağırılışlarında yeni bir nesne oluştururlar.


Örnek olarak;

   public class YapılandırıcıMetod { 

    public int sayi1;
    public int sayi2;

    public YapılandırıcıMetod () {
        sayi1= 0;
        sayi2= 0;
    }

    public YapılandırıcıMetod (int c1, int c2) {
        sayi1= c1;
        sayi2= c2;
    }

    public static void main(String[] args){
    YapılandırıcıMetod c= new YapılandırıcıMetod (2,6);
    System.out.println("1. sayı: "+ c.sayi1);
        System.out.println("2. sayı: "+ c.sayi2);
    }   }


// Burada class içinde sayi1 ve sayi2 adında nesnelerimizi tanıttık ve 2. class içinde başlangıç değerlerini verdik. Daha sonra sayi1 ve sayi2 değerlerimizi int değerinin olduğunu belirttik ve ardından void içinde metodumuzu çağırdık, ekrana bastırmak istediğimiz değerleri bastırdık.

          Java'da bir metod içinde tanımlı olan sınıftan oluşturulacak olan ayrıca o nesnenin değişkenini tanımlamamız gerektiğinde kullanırız yani değişken isimlerinin karışıklığını önlemek amacıyla kullanılır. This hangi nesne üzerinde işlem yapılıyorsa o nesneyi döndürür bize.  Ayrıca this ile aynı sınıf içinde diğer yapıcı metodları da çalıştırabiliriz. This deyimini bir static içinde değil sınıflar içinde kullanabiliriz çünkü this sınıflara ait nesnelerin oluşturulmasıyla bellekte yer tutar.

This kullanımı: this.değişken_ismi

Örnek olarak;

public class This{
    

    private final String isim;
    private final String soyad;
    private final String numara;
    
    

    public This(String isim, String soyad, String numara) { 
        this.urunadi= isim; 
        this.marka = soyad; 
        this.model = numara;
        System.out.println(isim+ " " + soyad+ " " + numara);
    } 
    public static void main(String[] args){
    This c= new This("Cansu",Candan","197");  
     }  }

// burada This adında sınıf oluşturduk ve sınıfın içinde içinde isim, soyad ve numara tanıttık. Sonra this kullanarak constructors içinde bu sınıf içinde tanımladığımız nesneleri çağırdık. Daha sonra main kısımda ekrana bastırılacak olan bilgileri verdik ve kodumuzu çalıştırdık.
IOCHAIN; IOT Internet of Things Nesnelerin interneti projelerinde kullanılan sensörlerden gelen verilerin blockchain teknolojisi üzerinde uygulanmasıdır. Nesnelerin interneti (IoT) sektörü büyümesini sürdürdükçe verilerin toplanması ve analiz edilmesi büyük önem kazandı. 
blockchain iot
Blockchain şifrelenmiş verilerin dağıtık veri tabanı olarak tanımlayabiliriz. Verileri zincirleme bir modelle inşa edilen, takip edilebilen ama kırılamayan Blockchain teknolojisi, bir merkeze bağlı olmaksızın işlem yapmaya izin vermektedir. Böylece işlemler direkt olarak sensörler ve makinalar arasında güvenli bir şekilde gerçekleştirilmektedir.

iOchain hakkında daha fazla bilgi almak ve sensörlerinizi blockchain teknolojisi ile kullanmak için iOchain sitesini takip ediniz.


Meşe Bilişim Instagram sayfası yayına girdi.
Instagram sayfamıza https://www.instagram.com/mesebilisim/ adresinden ulaşabilirsiniz.

Son günlerde 50 den fazla firmadan gelen virüslü mail içeriği ile ortalıkta spam ve saldırı amaçlı sahte elektronik posta dolaşmaktadır. Firmalar gelen maile tıkladıkları anda kişi listesi virüs tarafından ele geçiriliyor ve posta listesindeki firmalara posta gönderiliyor. 

Virüslü mail Rar olarak sıkıştırılmış Microsoft Word dosyası içerisinde Microsoft Excel dosyası yerleştirilmiş haldedir. 

Çalışanlarınızı uyararak bu tür bir posta nın açılmasını engelleyiniz.

Virüslü posta içeriği :
"""
MERHABALAR.  '18'  parca Siparisimiz Bulunmaktadir..
siparis Listesi ektedir 
 
Mailinizi bekliyorum
xxx@xxx.com
02.05.2018
 
"""
Virüslü mail resimdeki gibidir.
Virüslü Elektronik Posta












Meşe Bilişim şirketinde Software Testing dersi süresince öğreneceğimiz Django web çatısı hakkında ki yazı serimiz devam ediyor. Bu yazımızda da Django 1.9 sürümü ve GNU/Linux işletim sistemleri ile çalışıldığı varsayılmıştır.

Geçtiğimiz yazıda Django Proje Oluşturmaktan bahsetmiştik. Şimdi sıra ilk web uygulamamızı oluşturmaya geldi. Proje dizinimizde sanal ortamımızı (bkz:Virtual Environment nedir?) aktifleştirelim ve başlayalım.

(myvenv) ~/mesebilisimsw/proje $ python manage.py startapp blog

Yukarıda yer alan komutu terminal üzerinden işlettiğimizde Django bizim için ilk web uygulamamızı oluşturacaktır. Derslerimiz bir "blog" örneği üzerinden ilerlediği için uygulamamızın ismini "blog" olarak belirledik.

Projemizin yer aldığı dizinde oluşan yapının şu şekilde görünmesi gerekiyor.

├── blog
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── manage.py
└── proje
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

Başarılı bir şekilde ilk uygulamamızı oluşturduk. Bu adımın ardından projemizin settings.py dosyasında düzenleme yapmamız gerekiyor.

(myvenv) ~/mesebilisimsw/proje/proje dizininde yer alan settings.py dosyasını açınız. Projemiz ile ilgili ayarların yer aldığı bu dosya içerisinde INSTALLED_APPS bölümünü bulunuz ve "blog" uygulamamızı buraya ekleyiniz.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

Değişiklikleri yaptıktan sonra görünümün yukarıdaki gibi olması gerekmektedir. Bu satırı ekleyerek web çatısına "blog" isimli uygulamamızı projemiz dahilinde kullanacağımızın bilgisini vermiş olduk. İlk Django web uygulamamızı bu şekilde oluşturmuş olduk.
Meşe Bilişim şirketinde Software Testing dersi süresince kullanacağımız araçlardan birisi olan Virtual Environment nedir, neden ihtiyaç duyuyoruz kısaca bu yazı ile bahsetmek istedim.

Python Virtual Environment; Türkçe ismi ile Sanal Ortam. Peki sanal ortamlara neden ihtiyaç duyuyoruz, bu araç hangi sorunun çözümü yazının geri kalanında bu soruya kapsamlı olmasa da yanıt vereceğiz.

Meşe Bilişim şirket kurucusu Şahin Mersin tarafından 2.hafta dersinde anlatılan Django kurulumu öncesinde bilmemiz gereken bir araç olan Sanal Ortam; birden fazla Python projelerinde olabilecek paket çakışmalarını önlemek amacı ile kullanılmaktadır.

Örnek vermek gerekirse; derste geliştirmekte olduğumuz blog uygulaması için Django 1.9 sürümünü kullanıyoruz. Fakat Django 2.0.2 sürümü yayınlandı. Sanal ortam aracılığıyla "blog" uygulamamızda Django 1.9 sürümünü kullanırken başka bir projede Django 2.0.2 yada farklı bir sürüm kullanabiliriz.


Sanal ortam sayesinde bir birinden ayrı projeler için yüklediğimiz yada sildiğimiz paketler, paket sürümleri birbirini etkilemez. Bu sayede projelerimizin yönetimi de bizim için daha kolay hale gelmektedir.

Virtual Environment kurulumu

python3 -m venv myvenv

Proje dizininde yukarıdaki komutu işlettiğinizde sanal ortamınız oluşacaktır. Oluşan sanal ortamın ismi de "myvenv" olacaktır. Burada dilediğiniz gibi isimlendirme yapabilirsiniz.

Terminal üzerinden verdiğimiz komut sonrasında sanal ortamımız oluştu fakat şu anda aktif değil kullanım için aktif etmemiz gerekmektedir.

cd myvenv/bin

source activate

Yukarıdaki komutları terminal aracılığıyla işlettiğimizde artık sanal ortamımız aktif ve bu proje için kullanacağımız web çatısı paket ve modüllerin sürümü sadece bu ortamımız için geçerli olacak. Oluşturulan bu izole ortam sayesinde tüm projelerimiz birbirinden ayrı şekilde karışıklık olmadan yönetilebilir hale getirdik.

Software Testing dersi süresince Linux dağıtımlarından Ubuntu işletim sistemini kullanacağız, fakat  öğrenci grubumuz arasında Windows işletim sistemini kullananların sayısı oldukça fazla bu nedenle Windows Subsystem for Linux kısaca WSL teknolojisinden kısaca bahsedeceğim.

Windows geliştirici takımı, Windows Subsystem for Linux ismini verdikleri WSL altyapısı sayesinde Ubuntu Bash Shell, Windows 10 işletim sistemi içerisinde çalışabiliyor. Windows 10 kullanıcıları bu teknoloji sayesinde Bash scriptleri Linux komut satırı araçlarını kendi işletim sistemlerinde kullanabiliyorlar.
 

Ubuntu Bash Kurulumu

Ayarlar > Güncelleştirme & Güvenlik > Geliştiriciler adımlarını takip ederek karşınıza çıkan ekranda "Geliştirici Modu"aktif hale getirmeniz gerekmektedir.

Daha sonra Windows Özellikleri ekranından Windows Subsystem for Linux yada Linux için Windows alt sistem özelliğini aktifleştirmeniz gerekmektedir. Bu adımın ardından bilgisayarınızı yeniden başlatmanız gerekir.

Ardından Windows Store açıp Ubuntu kelimesini aratın ve karşınıza çıkan Ubuntu (Canonical Grup Limited) uygulamasını seçin ve yüklenmesini bekleyiniz. Kurulum tamamlandığında uygulamayı açınız.

Karşınıza çıkan ekranda sizden yeni UNIX kullanıcı adı ve şifrenizi belirlemenizi isteyecektir. Bu adımları da tamamladıktan sonra Ubuntu Bash'i Windows 10 içerisinde  kullanmaya devam edebilirsiniz.

Bu araç ile birlikte Ruby, Python, Git gibi programlama dili veya sistemleri bir Linux dağıtımda çalışıyormuşsunuz gibi tecrübe edebilirsiniz. Tabi ki bu teknolojiden Linux dağıtımı performansı beklemek yersiz olur fakat Windows kullanıcıları için oldukça güzel bir seçenek olmuş.
2021 yılında 50 Milyar dan fazla cihazın bağlı olacağı nesnelerin interneti tekolojisi Endüstri 4.0 olarak isimlendirilen dijital dönüşümün bir parçasıdır.

Endüstri 4.0 teknolojileri alt teknolojileri kapsar;
  • Büyük veri
  • IoT ve M2M Nesnelerin interneti
  • Bulut çözümleri
  • 3D Baskı makinaları ve ürünleri
  • Robot ve otomasyon sistemleri
  • Simulasyon
  • Ağ güvenliği - Veri  güvenliği
  • Yazılım  ve entegrasyon
  • Arttırılmış gerçeklik


Virtual environment, Python tabanlı uygulamalarımız için izole bir sistem oluşturmamızı sağlar. Bu anlam olarak her projenin kendine has bağımlılıklara
sahip olması ile açıklanabilir. Bu sistem ayrıca versiyon uyuşmazlıklarının önlemek için birden fazla virtual environment oluşturulmasını gerektirir.
En basitinden kullandığımız sistem üzerinde farklı çalışmalarımız için farklı Python versiyonları bulundurmamız gerekebilir(Örneğin 2.7& 3.6 gibi).
Virtual environment ayrıca proje üzerinde kolay yönetime ve denetlemeye imkan tanır. Virtual enviroment kendine spesifik bir sunucu sistemi üzerinde çalışır. Kullandığımız
paketler bu sistem içerisinde tutulacağı için çalıştığımız işi kaldırmak istediğimizde, üzerinde çalıştığımız diğer projeleri etkilemeden kolaylıkla bu eylemi
gerçekleştiririz. Virtual environment globalde bulunan modül ve kütüphanelerimize linkler aracılığıyla bağlanır.Bu bize alan tasarrufu ve özellikle büyük verilerle
uğraştığımız, zamanın daha ön planda olduğu hesaplama işlerinde hız kazancı sağlar.

KURULUM

1-)Öncellikle bizim üzerinde çalışacağımız proje Python 2 üzerinde olacağı için pip aracılığı ile aşağıdaki command ile kolaylıkla gerçekleştirilebilir.

pip install virtualenv

*Python 3 üzerinde geliştirme yapılacaksa dilin kendi standard kütüphanesi içerisindeki venv modülü kullanılabilir.
(virtualenv ile venv birbirinden çok farklı toollardır(komut ve bazı işlevleri ile); buradaki açıklama virtualenv için geçerlidir.Python 3 tabanlı geliştirme yapılacaksa venv incelenmelidir.)

2-)Çalışma ortamı için yeni bir klasör oluşturulması gerekir.Aşağıdaki ifade çalıştırılır.

mkdir ~/virtualenv

Oluşturduğumuz ortam içerisinde, uygulamamız ve Python sürümümüzün temiz bir kopyası bulunmalıdır.Aşağıdaki ifade çalıştırılır.

virtualenv ~/virtualenvironment/proje

Projemizle çalışabilmemiz için, buluntuğu dizine gelmemiz ve virtual environmenti aktif etmemiz gerekir. Virtual environmenti aktif etmek, sistemin $PATH değeri üzerinde değişiklik yapar.Ortamımızı aktif ettiğimizde virtual enviromentimizin "bin" klasörü $PATH içerisinde başlar.Teorik olarak ikisi arasında bir fark yoktur. Virtual environment symlinkini sistemimizin Python binarysine "bin" bağlar.

cd ~/virtualenvironment/proje/bin

Son olarak ortamı aktif etmek için;

source activate

Bu aşamadan sonra pip veya easy_install get installed into proje/lib/python2.7/site-packages
dizini altında istediğimiz paketleri tutup, kullanabiliriz.
Meşe Bilişim şirketinde Software Testing dersi süresince kullanacağımız web çatısı Django kurulumu nasıl yapılır dersin ilk gününde cevabı aranan bir soru olarak karşımıza çıktı. Kısa ve anlaşılır bir şekilde yazının devamında bu soruyu yanıtlamaya çalışacağım.

Django Kurulumu

Şirkette bir dönem sürecek eğitimimiz boyunca Ubuntu işletim sistemi ile çalışacağımız için anlatımda bu işletim sistemi esas alınmıştır.

GNU/Linux dağıtımlarında Python programlama dili ön tanımlı olarak kurulu şekilde bulunmaktadır. Terminali açıp "python"yazdığınızda karşınıza Python sürüm bilgileri gelecektir. Öncelikle sistemimizde Python programlama dilinin var olup olmadığını bu şekilde kontrol etmemiz gerekmektedir.

Terminalde  "python3" yazdığınızda ise aynı şekilde Python 3 sürüm bilgileri karşınıza gelecektir. Ubuntu işletim sisteminde Python2 ve Python3 kurulu olarak gelmektedir.

Python programlama dilinin sistemimizde var olduğunu öğrendikten sonra Django kurulumu gerçekleştirmeden önce sistemimize Python programlama dili için üretilen tüm paketlerin bulunduğu paket yöneticisi olan "pip" kurulmalıdır. 
sudo apt-get install python-pip
                 ya da
sudo apt-get install python3-pip
Size uygun olan komut ile "pip" kurulumunu gerçekleştirmelisiniz. Django web çatısı kurulumu öncesi bu adımı gerçekleştirmeniz gereklidir.

Şimdi Django web çatısı kurulum işlemini gerçekleştirebiliriz. Fakat bu adıma geçmeden önce en güncel olan "pip" paket yöneticisine sahip olduğumuzdan emin olmamız gerekir bu nedenle aşağıdaki komutu işletiriz.
pip install --upgrade pip
Tüm bu işlemlerin ardından Django kurulumunu gerçekleştirebiliriz. Paket yöneticimiz olan "pip" aracılığı ile Django web çatısının kurulumunu şu komutla gerçekleştiririz.
pip install django 
Python2x sürümü kullanan için yukarıdaki komut django kurulumunu gerçekleştirecektir. Pyhon3x sürümü kullanan kişiler ise aşağıda yer alan komutu kullanmalıdırlar.

         pip3 install django 

Sonuç olarak bu adımları takip ederek başarılı bir şekilde Ubuntu işletim sistemi üzerinde Django web çatısı kurulumunu gerçekleştirebiliriz.
Manisa Celal Bayar Üniversitesi Bilgisayar Mühendisliği Bölümü ile bazı özel ve kamu kurumları ortaklığında gerçekleştirilen Software Testing Dersi dahilinde bugün Meşe Bilişim şirketinde şirket kurucusu Şahin Mersin ile ilk dersimizi gerçekleştirdik.

Üniversitenin Bilgisayar Mühendisliği bölümünde okuyan 3 veya 4'üncü sınıf öğrencileri tarafından tercih edilebilen Software Testing dersi intörn eğitim modelini temelinde barındıran bir ders ve bence öğrenciler için müthiş bir fırsat.

Manisa Teknokent içerisinde yer alan Meşe Bilişim şirketinde bir dönem süresince Software Testing dersini almaya devam edeceğiz. Şirket benimle birlikte 10 kişilik bir öğrenci kadrosuna bu dönem ev sahipliği yapacak.

Dersin ilk gününde Meşe Bilişim şirket kurucusu Şahin Mersin, biz öğrencilerine dönem süresince ders dahilinde yapacaklarımızdan bahsetti. Yaklaşık 5 farklı projeden söz eden Şahin Bey'in açık kaynaklı projelere katkıda bulunmak hedefi açıkcası beni etkiledi. Bu doğrultuda, ürettiğimiz tüm projeleri açık kaynak olarak yayınlamak ve yayınlanmış olan açık kaynaklı projelerin dökümanlarına katkıda bulunmak hedefimiz olarak konuşuldu.

Software Testing dersi süresince  GNU/Linux dağıtımlarından Ubuntu işletim sistemini kullanacağız. Linux Yaz Kampı vesilesi ile tanıştığım Linux çekirdeği ve dağıtımlarının şirkette tercih ediliyor olması da eğitim süresince "özgür yazılım"felsefesinden sıkça söz edeceğimizi gösteriyor.

Şahin Bey, Meşe Bilişim şirketinde projelerimizi geliştirirken Python programlama dili ve Django web çatısı tercih edeceğimizden bahsetti. Python 25 yılı aşkın süredir geliştirilmekte Django web çatısı ise 10 yılı aşkın süredir geliştirilmektedir, ders süresince hedeflerimiz arasında bugüne kadar sayısız insanın katkı yaptığı programlama dili ve web çatısına Türkçe döküman üreterek katkı sağlamak var.

Üretmek ve öğrenmenin yanı sıra paylaşmanın da hedefimiz olduğu Software Testing dersi için yaptığı planlama ve ayırdığı vakitten dolayı Meşe Bilişim şirket kurucusu Şahin Mersin'e ve dersin bu formatta açılmasını sağlayan Manisa Celal Bayar Üniversitesi Bilgisayar Mühendisliği Bölüm Başkanı Tuğba Özacar Öztürk hocama ve tüm hocalarıma teşekkür ederim.
Şimdilerde Nesnelerin interneti denildiğinde aklınıza ilk gelen Akıllı Ev sistemleridir. Evimizin akıllanması evde kullanılan cihazların akıllanmasıdır. Örnek verecek olur isek kombimizin akıllı olması, televizyonumuzun akıllı olması, çiçek saksılarımızın akıllı olması, klimamızın akıllı olması.
Bu kadar akıllı cihaz birbirleri ile nasıl konuşabilecek? Bu sorunun cevabı Bulut Veri alanlarında saklıdır. Bulut veri alanları ile bir istemciden gelen veriyi diğerine aktarılacak ve birbirlerini tanımalarına imkan verecektir. Bu veri alanları yurt içi ve yurt dışı olmak üzere bir çok alternatif olmakla beraber listesi şu şekildedir.
IoT Bulut Veri alanları;
05 Ağustos 2017 tarihinde Dünya Gazetesinde yayınlanan IoT için Yerli Bulut Servisi IoThook un yazısı:



Meşe Bilişim Yazılım Mekatronik Eğitim İthalat İhracat Sanayi ve Ticaret Limited Şirketi Hakkında:
        Meşe Bilişim 2015 yılında Ankara’ da kurulmuş, 2017 senesinde Manisa Celal Bayar Üniversitesi Muradiye Kampüs içerisinde bulunan Teknokent’ e taşınarak Elektronik, Mekatronik, Yazılım, Yazılım Test, Donanım Test ve Bilişim Sistemleri alanlarında faaliyet göstermektedir. Kullandığımız teknoloji ve araçlar ile müşteri memnuniyetini en üst seviyede tutarak, yazılımda ve donanımda kalite vazgeçemeyeceğimiz ana hedefimizdir.
Kullandığımız Teknolojiler:
        Arduino, Raspberry Pi, Smd CODE, Mac OS, Windows, Android, Windows Phone, Selenium, Java, iOS, Python, Django, Git, Proteus, Eagle, PCB, Dizayn, Prototip, Android Studio, Eclipse, Virtual, C, C++ kullandığımız teknoloji ve araçlardır.
Neler Yapıyoruz:
        Şirketimiz bünyesinde İnternete bağlanan cihazlar, bulut veri, nesnelerin akıllanması, elektronik kart geliştirme, SAP entegrasyon, Mobil app geliştirme, data iletim protokolleri gibi konularda faaliyet gösteriyoruz.
Size Nasıl Yardımcı Olabiliriz:
        Şirketinizin ihtiyacı olan yazılım, donanım ve elektronik sistemlerine entegrasyonunu sağlayabiliriz.

Projenizde sizinle birlikte çalışmaktan memnuniyet duyarız.

Meşe Bilişim Yazılım Mekatronik Eğitim İthalat İhracat Sanayi ve Ticaret Limited Şirketi
Muradiye Mah. Celal Bayar Üniversitesi Kampüsü Teknoloji Geliştirme Bölgesi İçi Merkezi Apt.
No: 22 - 202 YUNUSEMRE / MANİSA  
Tel : +90 (544) 298 47 90     +90 (236) 503 02 54
IoTdashboard projesi güncellemesidir. Python ve Django ile geliştirilmiş, kodları açık kaynak olarak yayınlanmış, Raspberry pi, Orange Pi kartlar için kullanıma hazır IoT Rest servisidir. 
IoThook ile oluşturulan kanala Python ile deneme datası alacağız. Bu konunun anlaşılması için  IoThook üzerinde kanal ve element oluşturulması gerekmektedir.  
Eğer kanal ve element açma hususunda yardım almak isterseniz https://iothook.com/tr/docs/v1.2/create-new-channel.html sayfasından yardım alabilirsiniz. IoThook kanal apisi ve kullanıcı adı ve şifreleri örnek koddaki yerlere değiştirerek yazınız.

Python script i 2 versiyon için yazılmıştır. Python 3 kullanıyor iseniz diğer örnekleri inceleyiniz. Kod örneklerini Github linki üzerinden inceleyebilirsiniz.
"""
  Python 2 ile IoThook REST Api Testi
  Kod çalıştırıldığında 'data' değişkenine verilen 'all' değişkeni ile
  auth sahipliğindeki tüm veriler alınır.
  Bu ornek IotHook servisine veri almak/gondermek icin baslangic seviyesinde
  testlerin yapilmasini amaclamaktadir.
  10 Mayıs 2017
  Sahin MERSIN
  Daha fazlasi icin
  http://www.iothook.com
  ve
  https://github.com/electrocoder/iotHook
  sitelerine gidiniz.
  Sorular ve destek talepleri icin
  https://github.com/electrocoder/iotHook/issues
  sayfasindan veya Meşe Bilişim den yardım alabilirsiniz.
  Yayin ve sahiplik http://mesebilisim.com
"""
import requests
# url = 'https://iothook.com/api/v1.2/datas/?data=all'
url = 'http://localhost:8000/api/v1.2/datas/?data=all'
auth=('test', 'test12345')
response = requests.get(url, auth=auth)
data = response.json()
print data

IoT Projeleri Hayal değil gerçektir.


 
Endüstri 4.0 teknolojisi ile makineler arası iletişim modülleri hızla gelişmektedir. Sanayide, ziraat da ve evlerde tüm cihazlar akıllanmakta insanların güven ve mutlu bir şekilde yaşamalarına olanak vermek için 7/24 çalışmaktadırlar.

Çalışan bu cihazlarımızın kontrolü de zaman içerisinde kendi içerisinde bir karışıklığa doğru gideceği aşikardır. IoThook servisi bu problemi çözmek için çözümler üretmektedir.

Fabrikalarda örnek kullanım alanları aşağıda açıklanmış, bu cihazları webden, android telefondan, ios telefondan veya tabletler üzerinden kontrol ve monitör etme görevlerleri gerçekleştirilmiştir.

  • Su tankı doluluk seviyesinin takibi ve su motorunun kumanda edilmesi,
  • Buhar kazanı basınç (psi) değerlerinin takip edilmesi,
  • Aydınlatma sistemlerinin kontrol ve kumandası,
  • Priz sistemine bağlı pc, çay makinası, su ısıtıcı gibi ünitelerin kontrol ve kumanda edilmesi,
  • Isı, nem, yağmur yoğunluğu, rüzgar hızı ve yönü gibi bilgiler sensörler üzerinden okunup takip ve kontrol uygulamaları,

gibi işlemler nesnelerin interneti konularına girip günümüz teknolojisi ile hayal değil gerçekleşmiş teknolojilerdir.
Android Things Nedir? 
Android Things; Google firmasının nesnelerin interneti (internet of things) eko sistemi için geliştirmiş olduğu işletim sistemidir. Android Things ile IoT eko sisteminde bende varım diyen Google şu an basit ve güçlü adımlarla ilerlemeye devam ediyor. 
Mevcut Android geliştirme araçlarını, API' leri, kaynakları ve başarılı bir geliştirici topluluğunun kullanmasını sağlayan Google, Android Things ile çeşitli tüketici, perakende ve endüstriyel uygulamalar için geleceğin işletim sistemlerinden birisi olacak gibi duruyor.
 Programlama bilgisi olmayanların bile Android programları geliştirebilmesi için bir çok araç üretilmiştir. MIT tarafından geliştirilen  “Android App Inventor” bunlardan biridir. Şu an Android Things işletim sistemi için destek vermeyen APP Invertor gelecek dönemler için adını daha sık duyacağımız aşikardır. App invertor ile Android uygulama geliştirmek için http://appinventor.mit.edu/explore/ adresini ziyaret edebilirsiniz.
Google ın Android Things i oluştururken dikkat ettiği noktalardan biri de donanım tasarlama bilgisi olmayan kişilerin profesyonelce hazırlanmış things modüllerini kullanarak cihazlarını üretebilmeleri ve seri üretim ihtiyaçlarınıda bu yöntem ile gidermeleridir. Bu platform bize hazır bir işletim sistemi ve hazır bir donanım çözümünü getirmektedir.
Android Things SoC, RAM, Flash Storage, WiFi, Bluetooth ve diğer komponentleri desteklemektedir. Google tarafından üretilen çözümler ile beraber 3. parti üreticilerin kullanıma sunduğu donanım desteklerinide projelerinizde gönül rahatlığı ile kullanabilirsiniz.
Android Things tarafından desteklenen donanım listesi şu şekildedir;
  • Intel® Edison
  • Intel® Joule
  • NXP Pico i.MX6UL
  • Raspberry Pi 3

Android Things tarafından desteklenen çevre birimleri;
  • Adafruit Project Kit
  • Pimoroni Rainbow HAT
  • Sparkfun Project Kit

ANDROID THINGS hakkında daha fazla bilgiyi developerlar için açılan  ANDROID THINGS (https://goo.gl/sbOnND) sayfasından alabilirsiniz.