İçindekiler:

Raspberry Pi'den Akıllı Ev: 5 Adım (Resimlerle)
Raspberry Pi'den Akıllı Ev: 5 Adım (Resimlerle)

Video: Raspberry Pi'den Akıllı Ev: 5 Adım (Resimlerle)

Video: Raspberry Pi'den Akıllı Ev: 5 Adım (Resimlerle)
Video: SMS ile Ev Otomasyonu (Akıllı Ev Sistemleri) - Arduino GSM Shield Kullanımı & Kodlar 2024, Temmuz
Anonim
Raspberry Pi'den Akıllı Ev
Raspberry Pi'den Akıllı Ev

Dairenizi daha akıllı hale getiren birçok ürün var, ancak bunların çoğu tescilli çözümler. Ama akıllı telefonunuzla ışığı değiştirmek için neden bir internet bağlantısına ihtiyacınız var? Kendi Akıllı Ev çözümümü oluşturmamın bir nedeni buydu.

Raspberry Pi üzerinde çalışan bir sunucu uygulaması programladım. Bu, dairenizi yapılandırmanıza ve birkaç müşteriyi ve 'kontrol edilebilir üniteleri' bağlamanıza izin veren java tabanlı bir açık kaynak projesidir. Raspberry Pi'de rc güç kaynağı anahtarlarını işleyen, müzik ve video çalan, akıllı aynada durumu gösteren ve bir android uygulaması ve iki çakıl uygulaması tarafından kontrol edilebilen bir çözüm gösteriyorum. Kaynak, github https://github.com/dabastynator/SmartHome adresinde barındırılmaktadır.

Adım 1: İhtiyacınız Olan Şeyler

İhtiyacın olan şeyler
İhtiyacın olan şeyler

Akıllı Ev'i kurmak için aşağıdaki 'malzemelere' ihtiyacınız var

  • Raspberry Pi en az model 2 B
  • 433 MHz gönderici, bunun gibi bir şey
  • Raspberry Pi ile göndericiyi birbirine bağlayan 3 adet jumper kablosu
  • 433 MHz'de bazı radyo kontrol soketleri
  • İstemci uygulamasını çalıştırmak için Android akıllı telefon

Ek olarak, Akıllı Ev'i daha fazla isteğe bağlı istemci ve bunun gibi birimlerle genişletebilirsiniz.

  • çakıl akıllı saat
  • Akıllı Ayna, bu projeye bakın
  • 433 MHz kontrollü LED şerit, bkz.

Adım 2: Raspberry Pi'yi 433 MHz için hazırlayın

Raspberry Pi'yi 433 MHz için hazırlayın
Raspberry Pi'yi 433 MHz için hazırlayın
Raspberry Pi'yi 433 MHz için hazırlayın
Raspberry Pi'yi 433 MHz için hazırlayın

Aşağıdaki adımlarda Raspberry Pi'deki komut satırına erişmeniz gerekir. Erişim elde etmek için bu talimatı okuyabilirsiniz

433 MHz göndericiyi Raspberry Pi ile yukarıdaki resimde gösterildiği gibi bağlayın.

  • GND (gönderen) 6 GND (raspi)
  • VCC (gönderen) 2 +5V (raspi)
  • VERİ (gönderen) 11 GPIO 17 (raspi)

Lütfen ayrıca ANT (gönderici) pimine 17 cm'lik bir anten bağlayın. Bu, sinyali önemli ölçüde artırır.

Diğer git depolarından bazı kütüphanelere ihtiyacımız olduğu için git'i kurmamız gerekiyor.

sudo apt-get install git-core -y

Raspberry Pi'yi 433 MHz iletişim için kurmak için GPIO'ların daha iyi işlenmesi için kablolama Pi kitaplığına ihtiyacımız var.

git klon git://git.drogon.net/wiringPi

cd kablolamaPi./build

O zaman tipik olarak rc güç kaynağı protokollerini uygulayan bir kitaplığa ihtiyacımız var.

git klon git://github.com/dabastynator/rcswitch-pi.git

cd rcswitch-pi cp gönderme /usr/bin/ yap

'Gönder' yürütülebilir dosyası, mevcut güç kaynaklarının çoğunu değiştirmek için kodlar göndermenize izin verir.

Akıllı Ev kurulumumda ayrıca bu talimatta açıklanan bir rc LED şeridim var: https://www.instructables.com/id/RC-control-LED… Bu LED şeridinin renklerini ayarlamak için başka bir gönderme yürütülebilir dosyasına ihtiyacınız var. herhangi bir Tamsayı değeri göndermek için (Bu, rengi kodlar).

Bu nedenle, sendInt.cpp dosyasını rcswitch-pi deposunda derleyin ve /usr/bin/sendInt dizinine taşıyın.

sudo g++ sendInt.cpp -o /usr/bin/sendInt /home/pi/rcswitch-pi/RCSwitch.o -I/home/pi/rcswitch-pi -lwiringPi

Artık /usr/bin/send ve /usr/bin/sendInt adlı iki yürütülebilir dosyayla rc komutları gönderebilmeniz gerekir.

Adım 3: Akıllı Ev Sunucusunu Kurun

Her şeyden önce, birkaç paket yüklemeniz gerekir. Akıllı Ev uygulaması java tabanlıdır ve openjdk-11 ile sorunsuz çalışır. Diğer Java çalışma zamanı ortamlarından emin değilim. mplayer, minimalist bir komut satırı müzik çalardır. Omxplayer, video kodlaması için Raspberry Pi grafiklerini kullanır, bu nedenle videolar için bu kullanılmalıdır. Java uygulamasını oluşturmak için ant programı gereklidir.

sudo apt-get kurulumu mplayer omxplayer openjdk-11-jdk ant -y

Jar dosyası ve günlükler için kurulum dizinleri.

sudo mkdir /opt/neo

sudo chown pi:pi /opt/neo mkdir /home/pi/Günlükler

Başlatma sırasında uygulamayı otomatik olarak başlatmak için başlatma komut dosyasını yapılandırın. Bu nedenle ekli akıllı ev komut dosyasını /etc/init.d/ dizinine kopyalayın /usr/bin/ içinde komutları ekli komut dosyasına yönlendiren bir komut dosyası oluşturdum, bu yüzden komutları yürütmek için konsola akıllı ana sayfaya giriyorum.

sudo cp akıllı ev /etc/init.d/smart-home

sudo chmod +x /etc/init.d/smart-home sudo sh -c "echo '#! /bin/bash' > /usr/bin/smart-home" sudo sh -c "echo '/etc/init. d/smart-home \$1' >> /usr/bin/smart-home" sudo chmod +x /usr/bin/smart-home sudo update-rc.d akıllı ev varsayılanları

Şimdi depoyu kontrol etme ve uygulamayı oluşturma zamanı. Kendiniz derlemek istemiyorsanız, ekteki smarthome.jar dosyasını indirebilir ve /opt/neo/ dizinine taşıyabilirsiniz.

git klon [email protected]:dabastynator/SmartHome.git

ant -f SmartHome/de.neo.smarthome.build/build.ant build_remote cp SmartHome/de.neo.smarthome.build/build/jar/* /opt/neo/

Akıllı evi başlatmayı deneyin ve günlük dosyasını kontrol edin. GPIO'lara erişim sağlamak için uygulama sudo tarafından başlatılmalıdır.

sudo akıllı ev başlangıcı

kedi Günlükleri/smarthome.log

Bizi bir sonraki adıma yönlendiren Yapılandırma dosyası mevcut değil hata mesajını görmelisiniz. Depo, yapılandırma dosyasını açıklayan bir benioku dosyası içerir. Bunu github'da güzel bir şekilde görebilirsiniz:

Bu xml'yi /home/pi/controlcenter.xml dizinine kopyalayın, ardından medya sunucunuzun konumunu ayarlayın ve içeriği istediğiniz gibi değiştirin. Yapılandırmayı bitirdikten ve akıllı evi yeniden başlattıktan sonra (sudo akıllı ev yeniden başlatma) smarthome.log'da aşağıdaki içeriği görmelisiniz.

24.05-08:26 de.neo.smarthome.cronjob. CronJob@15aeb7ab tarafından UZAKTAN BİLGİ: Zamanlama cron işi

24.05-08:26 [trigger.light] ile UZAK BİLGİ: Yürütme için 79391760 ms bekleyin 24.05-08:26 Web işleyicisi Ekle ile RMI BİLGİSİ (5061/ledstrip) 24.05-08:26 Web işleyicisi Ekle ile RMI BİLGİSİ (5061) /eylem) 24.05-08:26 Web işleyici ekle (5061/mediaserver) ile RMI BİLGİSİ 24.05-08:26 Web işleyici ekle (5061/switch) ile RMI BİLGİSİ 24.05-08:26 Web işleyici ekle ile RMI BİLGİSİ (5061/controlcenter) 24.05-08:26 5 işleyici ile web sunucusunu başlat (localhost:5061) tarafından RMI BİLGİSİ 24.05-08:26 Controlcenter tarafından UZAK BİLGİ: 1. kontrol ünitesi ekle: MyUnit (xyz) …

Web sunucusu şimdi çalışıyor:-)

Adım 4: İstemcileri Ayarlayın

Kurulum İstemcileri
Kurulum İstemcileri
Kurulum İstemcileri
Kurulum İstemcileri
Kurulum İstemcileri
Kurulum İstemcileri

Akıllı telefon Android istemcisi

Akıllı ev uygulamasının git deposu aynı zamanda android istemcisinin kaynağını da içerir, böylece onu kendiniz derleyebilirsiniz. Ancak bu adım için APK'yı ekledim, bu daha kolay hale getiriyor. Uygulamayı ilk başlattığınızda, yukarıdaki ilk resimde olduğu gibi sizden bir sunucu ister. Sunucunun URL'sini ve güvenlik belirtecini girin.

Bu olmalı. Artık Raspberry Pi'nizde sunucuya erişebilir ve dairenizi kontrol edebilir, müzik dinleyebilir ve video izleyebilirsiniz. Ana ekranınıza, anahtarları ve müzik kontrolünü daha erişilebilir hale getiren widget'lar ekleyebileceğinizi unutmayın.

Smartwatch Pebble istemcisi

İki çakıl istemcisinin kaynağı github'da barındırılıyor. Bir uygulama, çalmakta olan müzik dosyasını gösterir: https://github.com/dabastynator/PebbleRemoteMusic… Bu aynı zamanda duraklatmanıza/oynatmanıza ve ses seviyesini artırmanıza/azaltmanıza olanak tanır.

İkinci uygulama üç eylemi tetikler: https://github.com/dabastynator/PebbleControl Tetikleyici adları şunlardır: mobile.come_home mobile.leaving ve mobile.go_to_bed. Bu tetikleyici için olay kurallarını yapılandırma-xml'nizde tanımlarsanız, bunları saatiniz tarafından tetiklersiniz.

Hepsi açık kaynak kodlu, ancak kendiniz derlemenize gerek yok, ayrıca çakıl uygulamalarını da ekledim. PBW'leri akıllı telefonunuzla indirin, telefonunuz bunları saatinize kurmalıdır. Çakıl uygulamalarının sunucuyla konuşmak için yapılandırmalara ihtiyacı var. Ayarlarımın nasıl göründüğüne dair bir ekran görüntüsü ekledim.

Akıllı saat Garmin istemcisi

Garmin Smartwatches için bir istemci de mevcuttur. Uygulama, garmin connect uygulama mağazasında mevcuttur ve buradan yüklenebilir:

apps.garmin.com/en-US/apps/c745527d-f2af-4…

Akıllı Ayna istemcisi

Akıllı Aynanın nasıl oluşturulacağını açıklayan bir talimat oluşturmuştum, şuna bakın https://www.instructables.com/id/Smart-Mirror-by-R…. Kaynak kodu ayrıca github'da barındırılmaktadır: https:// github.com/dabastynator/SmartMirror. Smart Mirror'ın yazılımı, git deposunun parçası olmayan smart_config.js dosyasındaki yapılandırmayı okur. Yapılandırma dosyasının içeriği şu listeye benzemelidir:

var mOpenWeatherKey = 'açık-hava-anahtarınız';

var mSecurity = 'güvenlik-tokeniniz';

Ayrıca, Smart Home sunucusunun ip adresini ve doğru hava durumunu elde etmek için konumu belirtmek için smart_mirror.js dosyasının ilk iki satırını ayarlamanız gerekir.

Daha fazla müşteri

Sunucu uygulaması basit bir web sunucusudur. Bu, basit web aramalarıyla istediğiniz herhangi bir istemciden eylemleri tetiklemenizi sağlar. Demo-videoda, AutoVoice ile birlikte android uygulama görevlisini gösteriyorum. Bu, basit sesli komutlarla olayları tetiklememi sağlıyor. Örneğin, "ok google, uyku zamanı" mobile.go_to_bed'i tetikleyebilir. Ancak örneğin IFTTT'den web aramaları da yapabilirsiniz. E-posta bildirimi için sarı yanıp sönen bir LED şeridine ne dersiniz?

Sunucudan aşağıdaki bağlantılar gibi olası web aramalarını isteyebilirsiniz (yapılandırmanız ile ip, port ve belirteci değiştirin)

localhost:5061/controlcenter/api?token=secu…

localhost:5061/action/api?token=security-to…

localhost:5061/mediaserver/api?token=securi…

localhost:5061/switch/api?token=security-to…

localhost:5061/ledstrip/api?token=security-…

Adım 5: Sonuç

Hâlâ uygulanması gereken bazı özellikler var: Sunucu yalnızca basit bir web-api sağladığından istemciler çok fazla yoklama yapar. Yoklamayı azaltmak için daha iyi bildirim için bir MQTT entegrasyonu istiyorum. Ayrıca wifi güç kaynakları, rc sadece tek yönlü bir iletişim olduğundan, rc güç kaynaklarından daha güvenilir performans göstermelidir.

Bu proje için geliştirme yapmak çok eğlenceli. Ve internet bağlantısı kopsa bile daireyi birkaç cihazla kontrol etmek oldukça güzel.

Önerilen: