İçindekiler:

Güçlü Bağımsız Ev Otomasyon Sistemi - Pi, Sonoff, ESP8266 ve Node-Red: 9 Adım (Resimlerle)
Güçlü Bağımsız Ev Otomasyon Sistemi - Pi, Sonoff, ESP8266 ve Node-Red: 9 Adım (Resimlerle)

Video: Güçlü Bağımsız Ev Otomasyon Sistemi - Pi, Sonoff, ESP8266 ve Node-Red: 9 Adım (Resimlerle)

Video: Güçlü Bağımsız Ev Otomasyon Sistemi - Pi, Sonoff, ESP8266 ve Node-Red: 9 Adım (Resimlerle)
Video: WIFI MI? ZIGBEE Mİ? Daha İyi? Akıllı Ev Sistemlerinde Hangisini Almalıyız? 2024, Kasım
Anonim
Güçlü Bağımsız Ev Otomasyon Sistemi - Pi, Sonoff, ESP8266 ve Node-Red
Güçlü Bağımsız Ev Otomasyon Sistemi - Pi, Sonoff, ESP8266 ve Node-Red

Bu kılavuz, yerel ağınıza bağlanabilen herhangi bir cihaz ve harika bir özelleştirilebilir web arayüzü ile bir ışığı veya bir cihazı açıp kapatabileceğiniz ilk temele götürecektir. E-posta gönderme, twitter mesajları, okuma sensörleri (örn. sıcaklık) dahil olmak üzere genişletme/ekleme özelliklerinin kapsamı çok geniştir. Kuralları kolayca ayarlayabilirsiniz; – saat 11'de sıcaklık 15C'nin altındaysa, elektrikli battaniyeyi 30 dakika boyunca açın. Sistem, bazı ticari ev otomasyon cihazları tarafından şaşırtıcı bir şekilde kullanılan UDP'den çok daha güvenilir olan TCP ile MQTT protokolünü kullanır. Burada anlatılan sistemi kurmanın zor işi bittiğinde eğlence başlayabilir. Node Red, sezgisel, hızlı ve kurulumu kolay harika bir kullanıcı arabirimi sağlar ve inanılmaz yetenekler sağlar.

Sonuç, tamamen kişinin kendi kontrolünde olan ve tamamen yerel bir ağ üzerinde olan güçlü bir ev otomasyon sistemidir. Instructables'ta gösterilen sistemlerin çoğu bulut tabanlı sunucularla çalışır ve bu nedenle bir güvenlik riski taşır ve abonelik gerektirebilir. Bunların kurulumu daha kolaydır, ancak daha yüksek bir güvenlik riskine ve potansiyel olarak daha yüksek maliyete sahiptir. Dışarıdan erişim faydalı olacaksa, ev ağına/sisteme güvenli bağlantı sağlamak için Pi'ye bir VPN (sanal özel ağ) kurulabileceğini eklemeliyim (talimatlar için Google Pi OpenVPN).

Bu sistem, Sonoff cihazlarının Sonoff-Tasmoda adlı harika bir açık kaynak sistemiyle yeniden programlanmasını gerektirir. Bu, özel bir Arduino kurulumu ve bir USB'den seriye dönüştürücü kullanılarak yapılabilir. Sonoff cihazları, ESP8266 Wi-Fi çipini kullanır, böylece ESP8266 modüllerini kullanarak kendi cihazlarınızı yapabilir veya kablosuz bağlantı sağlamak için bunları diğer öğelere sığdırabilirsiniz.

En büyük görev, hub olarak bir Raspberry Pi kurmaktır. Bu, bağlı cihazlarla iletişimi yöneten MQTT aracısını (veya sunucusunu) çalıştırır. Pi ayrıca, elektrikli battaniyenin ne zaman açılacağı gibi mesajları ve verileri ve çıktı komutlarını engelleyebilen Düğüm-Kırmızı adlı bir sistemi de çalıştırır. Node-Red ayrıca, akıllı telefon/tablet/PC/Dizüstü bilgisayar aracılığıyla oturum açabileceğiniz, neler olup bittiğini görmek ve ışıkların manuel olarak açılmasını vb. etkinleştirmek için web sayfasına hizmet veren bir arayüz sağlar.

Bu talimatla amacım, her adımı bir aceminin sistemi çalıştırabileceği kadar ayrıntılı olarak vermektir.

Adımlar:

  • Rasbian Stretch ile Pi yükleyin
  • Node-Red'i güncelleyin ve özellikler ekleyin
  • Mosquitto MQTT aracısını kurun
  • Sonoff-Tasmota ürün yazılımını yüklemek için Arduino ortamını kurun
  • Bir Sonoff anahtarını yeniden programlayın
  • Node-Red arayüzünü kurun
  • Test edin hepsi işe yarıyor.

İhtiyacınız olacak donanım:

  • Raspberry Pi ve güç kaynağı (ve ilk kurulum için klavye ve monitör) (burada kullanılan model B)
  • Sonoff Anahtarı
  • USB Seri dönüştürücü
  • İsteğe bağlı – NodeMCU gibi ESP geliştirme kartı.

Raspberry Pi ile olan deneyimim, herhangi bir şeyi ayarlamanın, hiçbir şeyin çalışmadığı veya açıklamanın daha iyi olabileceği önemsiz bir adımda takılıp kaldığı düşünüldüğünden çok daha fazla acı içerdiği görülüyor. Forumlar her zaman işe yarayan tavsiyeler almaz! Bir nedenden ötürü işe yaramayan birkaç yol buldum. Bu maliyet 3 gün! Daha sonra her şeyi sildim ve yeniden başladım ve (uzun) bir günden daha kısa sürede tamamladım. Ancak bu, eski Raspian Jessie'yi kullandı. Bundan sonra, mevcut ve yakın zamanda piyasaya sürülen sürümü (Stretch) kullanmanın bir yolunu buldum ve hepsini tekrar yaptım. Bu kılavuz, talimatların kopyalanıp Pi'ye yapıştırılmasını sağlar. Bu yüzden birkaç saat içinde bitirmelisiniz. Her neyse, umarım bu sizi öğrenme eğrisinde daha hızlı ve çok daha az acıyla yukarı taşır. İnanın bana sonuç için buna değer.

Adım 1: Rasbian Stretch ile Pi Yükleyin

Bu oldukça basit olmalı. 8Gb veya 16Gb SD kartla başlayın. En son sürümü şuradan indirin:

www.raspberrypi.org/downloads/

Buradaki ana iş parçacığı, tam sürümün yüklendiğini varsayar. Ancak yerden tasarruf etmek için lite sürümünü kullanabilirsiniz. Raspbian Stretch Lite kullanıyorsanız bu adıma ilerleyin ve ardından sondaki Adım 9'a gidin.

İndirilen dosyanın sıkıştırılması,.img dosyasının bulunduğu bir klasör verir. Windows (ve The Unarchiver Mac) için 7Zip önerilir. Görüntünün SD karta yazdırılması gerekiyor - ancak dosya sistemi Windows ile uyumlu olmadığı için özel bir program kullanılması gerekiyor. Önerilen yazılımın adı Etcher'dir ve şuradan indirilebilir:

etcher.io/

Etcher için talimatlar web sitelerinde bulunur ve bundan daha basit olamazdı. Görüntüyü ve sürücüyü seçin ve Flash'a tıklayın.

Şimdi flaşlı SD kartımız ile Pi'yi çalıştırabilirsiniz.

Pi'nizin kullandığı IP adresini biliyorsanız veya yönlendiricinizde oturum açarak bulmaktan memnunsanız, klavye ve monitör ihtiyacını ortadan kaldırabilir ve hemen SSH'yi kullanabilirsiniz. Sadece SD karta SSH adında boş bir dosya ekleyin, takın, Ethernet'e bağlayın ve açın. Aksi takdirde aşağıdaki kılavuzu izleyin.

Pi'yi internete, ekrana, fareye ve klavyeye bağlayın ve güce bağlayın. Yapacağımız ilk şey SSH'yi etkinleştirmektir, böylece kurulumun çoğunu bir PC'deki rahatlıktan yapabiliriz. Elbette doğrudan yapılabilir, ancak bu kılavuzu Pi'yi kullanan kişiyle aynı cihazda takip edebilmek ve talimatların çoğu için kopyala ve yapıştır özelliğini kullanabilmek büyük ölçüde yardımcı olur. Ayrıca benim durumumda PC iş istasyonum güzel ve rahat ama bir pi için yeterince büyük değil.

Bir YouTube videosundaki çalışmaların büyük bir kısmı için bir rehber var. İşte burada başladım. Bu talimatları izleyerek videoyu birlikte çalıştırabilirsiniz. Ancak bunu yazarken süreci tekrar gözden geçirdiğimde, buradaki talimatları izlemeyi daha kolay buldum. Bazı önemli sapmalar var. Adımları burada sıralamak yerine videoyu izlemeyi önerdiğim bazı bölümler de var. Bununla birlikte, MQTT, Node-Red ve geniş kurulum sürecini anlamak için ona bakmanızı tavsiye ederim. Video 38 dakikadır, rahatınıza bakın. Video, Node Red'in neler yapabileceğini göstermekle başlar ve ardından Pi kurulumunu ve kurulumunu, ardından Node Red'i yükseltmeyi ve son olarak Mosquitto'yu kurmayı kapsar. Bir bölüme geri dönmek istemeniz durumunda önemli zamanlamalar:

00:00 Videoya Giriş

03:00 Düğüm Kırmızı gösterimi

14:14 Pano öğelerini Node Red'e aktarma

21:05 Pi başlangıç kurulumu, SSH dahil

23:35 Node Red destek kodunun kurulumu

27:00 MQTT'ye Giriş

29:12 Sivrisinek (MQTT) kurulumu (Not sadece Raspian Jessie için geçerlidir)

33:00 Düğüm Kırmızı örnekleri

Komutları kalın italik olarak listeleyeceğim (“” kullanmak yerine). Bunları kopyalayıp Pi'ye yapıştırdığınızda bu biçimlendirme yok sayılır.

Node Red'e giriş, size sistemin neler yapabileceği hakkında bir fikir verecek ve nereye varacağımızın bir resmini sağlayacaktır.

YouTube videosu şu adreste:

21:05 ile 23:35 arasındaki kurulum prosedürünü takip edin. Varsayılan girişin user: pi ve şifre: ahududu olduğunu unutmayın. Yeniden başlatmadan önce pi'nin IP adresini bulun. Masaüstü üst çubuğundaki 'yukarı+aşağı ok' simgesini tıklayın veya terminal/terminal penceresinde aşağıdaki talimatı girin:

sudo ifconfig adresi

Ardından IP adresini not edin: inet addr:. 192.168.x.y şeklinde olacaktır.

Bu adresi not edin ve yeniden başlatın (girin: sudo kapatma –r şimdi)

Bu noktada kilit nokta, SSH'nin etkinleştirilmesi ve bir PC'den Pi'ye bir bağlantı kurulabilmesidir (Mac ve Linux, SSH arabirimlerini içerir). Bunu yapmak için iyi bir program PuTTY adlı ücretsiz bir indirme programıdır ve seri arabirim olarak da kullanılabilir ve Telnet yapabilir. Macun şuradan temin edilebilir:

www.chiark.greenend.org.uk/~sgtatham/putty…

PuTTY'yi indirin ve yükleyin.

Şimdi, Pi yeniden başlatıldığında, PuTTY'yi başlatın ve daha önce belirtilen IP adresini girin. Aşağıdaki örneğe bakın:

Şimdi Aç'ı tıklayın

Giriş yaptıktan sonra: pi girin

Ardından şifrenizi girin.

Şimdi buradaki talimatları izleyin ve isteğe bağlı olarak videoyu 23:35'ten itibaren başlatın. Çoğu durumda kopyalayıp yapıştırabilirsiniz. Metni vurgulayın ve kopyalamak için ctrl+C tuşlarını kullanın. Ardından yapıştırmak için PuTTY'ye sağ tıklayın. Bazen metin hemen görünmez, bu nedenle birkaç saniye bekleyin. İki kez girerseniz, ikinci girişi silmek için geri al tuşunu kullanın. Her komutu yürütmek için enter tuşuna basın.

sudo raspi güncellemesi

Bir komut bulunamadı ve bunu ve aşağıdaki kapatma/yeniden başlatma talimatını görmezden geldim:

sudo kapatma -r şimdi

sudo apt-get -y güncellemesi

sudo apt-get -y yükseltme

Bu biraz zaman alır…..

sudo apt-get otomatik kaldırma

sudo apt-get -y güncellemesi

sudo kapatma -r şimdi

Bu noktada, bir sonraki adım için hazır olan Pi işletim sistemini yüklemiş ve güncellemiş durumdayız.

2. Adım: Node-Red'e Özellik Güncelleyin ve Ekleyin

PuTTY bağlantısı, önceki adımın sonunda yeniden başlatıldığında kaybolacaktır. PuTTY'yi kapatın ve Pi'nin açılmasını bekledikten sonra, eskisi gibi tekrar oturum açın.

nodered.org/docs/hardware/raspberrypi adresindeki yaklaşımı izleyerek Node-Red'i yüklemek için daha basit ve daha güvenilir bir yönteme geçtim. Bu, bir komut dosyası kullanır ve Node-Red'i kurar veya yükseltir - bu nedenle yaklaşım, Raspbian Stretch'in tam veya lite sürümlerinde çalışanla aynıdır. Öyleyse girin:

bash <(curl -sL

İstendiğinde Y girin (iki kez). Bu komut dosyası ayrıca Node-Red'in otomatik olarak başlatılmasını etkinleştirmek için gereken dosyaları da yükler.

Bu noktada, pi'mizi yükledik ve güncelledik ve Node Red için gerekli güncellemeleri yaptık. Bir sonraki aşamadan önce yeniden başlatmanın zararı yoktur.

sudo kapatma -r şimdi

Adım 3: Sivrisinek MQTT Kurulumu

Henüz yapmadıysanız, MQTT'ye giriş videosunu 27:00'den itibaren videoda izlemeye değer.

İşte bu noktada farklı bir yol izlememiz gerekiyor. Videoda özetlenen prosedür, yalnızca Raspian'ın eski Jessie versiyonu için çalışır. Sivrisinek sitesinde bir tartışma var ancak net bir sonuç gösterilmedi ve bu nedenle daha basit ve daha güvenli bir rotaya bağlı kalacak.

PuTTY kullanarak oturum açın ve aşağıdakileri girin:

sudo apt-get güncellemesi

sudo apt-get install mosquitto sivrisinek istemcileri

Y

sudo /etc/init.d/sivrisinek durdurma

sudo /etc/init.d/mosquitto başlat

Son iki talimat, mosquitto'yu durdurur ve başlatır ve MQTT brokerimizin çalıştığını gösterir.

Hızlı bir test için iki PuTTY oturumu daha açın ve her birinde oturum açın.

Artık MQTT'nin bir 'konuya' abone olan ihtiyaç verilerinin cihaz tarafından çalıştığını bileceksiniz. Aracı, aynı 'konu' ile herhangi bir veri gönderir. Daha sonra veri/talimat göndermek isteyen cihaz, aynı 'konu'yu kullanarak bunu aracıya yayınlar.

Yani bir PuTTY oturumunda şunu girin:

mosquitto_sub -d -t merhaba/dünya

Bu konuya abone olmak için bir talimattır: merhaba/dünya.

Diğerinde şunu girin:

mosquitto_pub -d -t merhaba/world -m "Terminal penceresi 2'den merhaba!"

Bu, bir mesajla aynı konuya sahip bir yayınlama talimatıdır. Metin: "Terminal penceresi 2'den merhaba!" şimdi diğer terminalde görünmelidir.

Buraya kadar gelmen iyi oldu. Artık Pi'yi Node-Red için gerekli güncellemelerle ve sivrisinek MQTT komisyoncusu kurulu ve test edilmiş olarak yükledik ve güncelledik. Bundan sonra hayat biraz daha eğlenceli hale geliyor. MQTT testi için kullanılan iki PuTTY oturumunu kapatın.

Adım 4: Düğüm Kırmızı Arayüzünü Ayarlama

İlk önce Node Red'i başlatmamız gerekiyor. Talimatı girin:

düğüm-kırmızı-pi --max-eski-alan-boyutu=256

Çalışmasını bekleyin ve 'Başladı akışlar' metnini görürsünüz.

Şimdi bir tarayıcı açın, Chrome kullanıyorum ve daha önce not edilen pi IP adresini ve ardından:1880, yani 192.168.0.8:1880 gibi bir şey giriyorum.

Şimdi, Node Red programlama sayfasını aşağıdaki gibi görüntüleyebilirsiniz:

Şimdi 33:00'den başlayarak Kırmızı Düğüm örneklerini takip edebilir veya doğrudan küçük bir ek kuruluma geçebilir ve MQTT bağlantısını gösterecek ilk akışı yükleyebilir ve anahtarımızı kullanmaya hazır olabilirsiniz.

Gereken ek kurulum, bir web arayüzünü etkinleştiren pano öğelerini eklemektir.

Bunlar videoda 14:14'te gösteriliyor.

Düğüm-kırmızı-gösterge tablosunu yüklemek için talimatları izleyin.

Şimdi biraz oynayabilir ve MQTT'nin Node-Red tarafından çalıştığını ve yönlendirildiğini gösterebiliriz. Bu videoda yok ama bu projenin anahtarı. Talimatlarımı takip edebilir ve/veya ekteki NRtest1.txt dosyasından akışları içe aktarabilirsiniz.

Önce bir giriş enjekte düğümü ve bir çıkış mqtt düğümü ekleyin ve bunları birbirine bağlayın.

Enjekte etme düğümüne (başlangıçta zaman damgası olarak etiketlenen) çift tıklayın. Yük bölümünde, dizeye geçmek için twiddly'yi kullanın ve şunu girin: Hello from me. Bunu MQTT düğümüne girebileceğimiz için konuyu boş bırakın. Bitti'yi tıklayın

Şimdi MQTT düğümüne çift tıklayın. Sunucu bölümünün sağındaki kalem simgesini tıklayın. Bu, yeni bir iletişim kutusu açar. Sunucu bölümünde localhost'u girin. Ekle'yi tıklayın. Şimdi, mqtt çıkışını düzenle düğümüne geri dönün, Konu bölümüne konumuzu girin: merhaba/dünya. QoS'yi 1 olarak ayarlayın. Bitti'yi tıklayın. Şimdi Dağıt'ı tıklayın. Yeşil bir blob ve mqtt düğümünün altında 'bağlı' görmelisiniz.

Şimdi iki düğüm daha ekleyin – giriş mqtt ve çıkış hata ayıklama ve bunları birbirine bağlayın. Şimdi giriş mqtt düğümüne çift tıklayın ve konu bölümüne merhaba/dünya girin. Sunucu zaten localhost:1883'ü göstermelidir. QoS'yi 1 olarak ayarlayın. Bitti'yi tıklayın. Ardından Dağıt'a tıklayın ve sağdaki bölmede hata ayıklama sekmesine tıklayın. Şimdi "Benden Merhaba" enjeksiyon düğümünün solundaki gri kareye tıklayın. Bu, metin yükünü merhaba/dünya konusuyla MQTT aracısına gönderir. Aracı, mqtt girdi düğümünün aynı konuya abone olduğunu bilir ve böylece yükü iletir. mqtt giriş düğümü daha sonra bunu hata ayıklama sekmesine (RHS) gönderir ve 'Benden merhaba' metni görünmelidir.

Bu, MQTT aracımızla konuşan Kırmızı Düğümümüz olduğu için başka bir kutuyu işaretler. Node Red'in, daha sonra bağlayacağımız Sonoff cihazları gibi, aracının yalnızca bir istemcisi olduğunu unutmayın. Ancak gelişmiş otomasyona olanak tanır ve harika bir kullanıcı arabirimi sağlar.

Şimdi birkaç küçük değişiklik yapabilir ve Sonoff anahtarımız için akışları ayarlayabiliriz.

Bu nedenle giriş enjeksiyon düğümünü silin (vurgulamak için tıklayın ve sil tuşuna basın). Şimdi pano bölümünden bir anahtar ekleyin ve mqtt çıkışına bağlayın. Çift tıklama anahtarı. Grubun sağındaki kaleme tıklayın. Name: Light kısmına giriniz. Ardından, Sekmenin sağındaki kalemi tıklayın ve Ad bölümüne girin: Lounge. Ekle/Güncelle'ye ve tekrar Ekle/Güncelle'ye tıklayın. Şimdi, Düzenle anahtarı düğümüne geri dönün, Yükleri açık ve kapalı olarak ayarlayın. Dize seçmek için twidly'leri kullanın ve Açık yük için AÇIK ve KAPALI yük için KAPALI girin. Bitti'yi tıklayın

Şimdi mqtt düğümlerinin her birine gidin ve Konuyu cmnd/sonoff/POWER olarak değiştirin. Kopyalayıp yapıştırıyorsanız, sonuna boşluk bırakmadığınızı kontrol edin. Bu farklı bir konudur ve Sonoff ile çalışmayacaktır. Başıboş bir yer bulmak bir saat kadar sürebilir - inan bana! Ayrıca pano> Tema'ya gittim ve şunları seçtim: Koyu. Dağıt'a tıklayın ve hata ayıklama sekmesini seçin.

Şimdi yeni bir pencerede yeni bir tarayıcı oturumu açın ve Node Red oturumu üzerinden bir cep telefonu gibi boyutlandırın. Adresi girin: Pi IP adresiniz:1880/ui/#/0 yani 192.168.0.8:1880/ui/#/0 gibi bir şey. Lounge ve Light ile bir ekran görmeli ve değiştirmelisiniz. Anahtarı açın ve ardından kapatın. Hata ayıklama penceresi, AÇIK ve KAPALI yüklerini göstermelidir. Şimdi dilerseniz cep telefonundan da giriş yapın. Anahtar konumunun senkronize olduğunu unutmayın. Sonoff'umuzun henüz bağlı olmaması önemli değil. Olduğu zaman Konuya abone olarak mesajı/yükü alır ve ona göre hareket eder.

Son küçük adım, Pi başlatıldıktan sonra Node Red'in otomatik olarak başlamasını sağlamaktır.

Node Red'in bir kılavuzu var:

Ancak gerekli dosyalar zaten yüklenmiştir, bu nedenle kurulum gerekmez.

Daha sonra Node-RED'in her önyüklemede ve kilitlenme durumunda otomatik olarak çalışmasını sağlamak için (PuTTY oturumunu açın):

sudo systemctl nodered.service'i etkinleştir

Bu girişi devre dışı bırakmanız gerekirse:

sudo systemctl nodered.service'i devre dışı bırak

Şimdi pi'yi sudo kapatma ile kapatın ve gücü kesin.

Bu şimdi Pi'mizi kilitledi ve eyleme hazır olarak yüklendi. Node Red'e bağlanan PC/cep telefonumuz var ve bu MQTT sunucumuzla konuşuyor. Bu uzun bir mesafe oldu ve sırtına büyük bir darbe değdi. Tebrikler. Bir sonraki Arduino bitini çok daha kolay buldum!

Adım 5: Sonoff Cihazlarını Yeniden Programlamak için Arduino Sistemini Ayarlama

Bunu yapmak için tüm bilgiler Sonoff-Tasmota GitHub'da. Zorlandığım tek kısım Konu metniydi - ama bunu zaten girmeniz için sizi kurnazca ikna ettim!

github.com/arendst/Sonoff-Tasmota adresine gidin

Kurulum talimatlarını Yükleme araçları bölümündeki Wiki sekmesinde bulacaksınız:

Her adımdan geçmek yerine, önemli olduğunu hissettiğim veya takılıp kaldığım kilit noktaları not edeceğim.

Talimatlar iyi ancak ayrıntılara dikkat edilmesi gerekiyor. ESP8266 adlı başka bir klasörde bulunan bir klasörde bir ESP8266 klasörüne ihtiyaç duyulduğundan takıldım ve bu nedenle iki seviyeyi kaçırdım.

Tamamen ayrı bir Arduino kurulumu tavsiyesine uydum. Mevcut Arduino klasörümden ayrı olan 'ArduinoSonoff' adında yeni bir klasör oluşturdum. Kurulum oldukça gelişmiş ve bu nedenle onu ayrı tutmak çok iyi bir fikir. Bu ilk Arduino kurulumunuzsa, ESP8266'larda çalışmak da dahil olmak üzere diğer Arduino çalışmaları için bir 'Arduino' veya başka bir klasöre ikinci kez kurduğunuzdan emin olun.

En son Arduino IDE'yi https://www.arduino.cc/en/Main/Software adresinden indirin. Dosyayı yeni klasörünüze açın.

Talimatlar, Sonoff-Tasmoda sistemini https://github.com/arendst/Sonoff-Tasmota ana sayfasından şu yollarla indirmeyi içerir: Clone veya Download>Download ZIP. Dosyayı yeni klasörünüze açın.

Talimatları dikkatlice izleyin. İsteğe Bağlı: OTA yüklemesine hazırlanın bölümünü yapmadım. Bunu başka bir güne bırakacağız.

Şimdi Arduino IDE'yi başlatın (arduino.exe'ye çift tıklayın). Sonoff-Tasmota taslağını File>Sketchbook>sonoff aracılığıyla yükleyin. Herhangi bir düzenleme yapmanıza gerek yoktur. Firmware yüklendikten sonra tüm ayarlar seri bağlantı üzerinden yapılır. Bunlar EEPROM'da saklanır. Böylece bellenim güncellenebilir ve tüm ayarlar korunabilir. Bu oldukça akıllıca bir şey. Bununla birlikte, user-config.h dosyasına gidip wifi SSID'nizi ve şifrenizi ve MQTT_HOST'u girerek ('domus1' - ikinci referansı Pi IP adresinizle değiştirin) girerek burada birkaç adıma ihtiyaç duymadan kurtulabilirsiniz. Daha sonra bir MQTT kullanıcı ve şifresi de girmek isteyebilirsiniz. İndirmeden önce Araçlar altındaki pano ayarlarını kontrol edin. Bunlar, Wiki'de belirtilen gereksinimlere uyması için birkaç değişikliğe ihtiyaç duyacaktır. Şimdi derlemeye tıklayın (onay simgesi). Tamam derlenmelidir. Olmazsa veya gerekli pano ayarları mevcut değilse, geri dönün ve kurulumun her adımını kontrol edin.

Adım 6: Bir Sonoff Anahtarını Yeniden Programlama

Artık indirmeye hazırız. Bu aşamada, kişi ya dümdüz ilerleyip bir Sonoff anahtarını yakabilir ya da önce bir ESP8266 modülünü yakabilir. İkincisini yaptım, kısmen anahtarlarım henüz gelmediği için (bunu yazarken yeni geldi!) ama aynı zamanda bir önlem olarak Sonoff anahtarının yanıp sönmesi tek yönlü bir adımdır, çünkü orijinal bellenim herkese açık değildir. Farkındayım. Birkaç NodeMCU kartım var. Yerleşik USB'den seri dönüştürücüye sahip olduklarından bunların bağlanması kolaydır. Ancak nodemcu sıfırlama yöntemi bu sistemle çalışmaz. Bu yüzden Araçlar>Sıfırlama Yöntemini “ck” olarak ayarlayın. Sıfırla (Toprağa Sıfırla) düğmesine basıp bırakırken Flaş düğmesini (GPIO 0'dan toprağa) basılı tutarak normal manuel flaş kurulumunu yapın. Bunun bir zaman aşımı olup olmadığından emin değilim veya belki de GPIO 0'ı yeterince uzun süre düşük tutmadım ama Arduino IDE derlenirken bunu yapmak da dahil olmak üzere birkaç denemeye ihtiyacım vardı!

Yanıtları kontrol etmek istiyorsanız - NodeMCU kartlarında röle çıkışı D6'dır. ESP12'lerde bu GPIO 12'dir. LED çıkışı D7 (NodeMCU) veya GPIO 13'tür (ESP12'ler).

Sonoff anahtarı.

UYARI: Kasa açıkken hiçbir şekilde şebekeye bağlamayın demeliyim. PCB'nin (en azından Sonoff Basic'te (hat içi anahtar) üzerinde), düşük voltaj bölümü ile şebeke arasında yalnızca 'tek izolasyon' mesafeleri olduğunu unutmayın. Bu nedenle, Sonoff devresinin herhangi bir bölümünü şebeke voltajı olarak ele almalısınız. Tasmota GitHub, bir Sonoff S20'ye bir sıcaklık ve nem sensörünün bağlantısını gösteriyor. İzolasyon endişeleri nedeniyle bunu yapmazdım. – bu yüzden bunu yapmak istiyorsanız bir ESP12 veya NodeMCU modülü alın ve bunu uygun bir çift yalıtımla ayrı olarak kurun veya topraklı güç kaynağı.

Sonoff S20 geçmeli anahtar, herhangi bir elektrik kablosuna ihtiyaç duymadığından iyi bir başlangıç noktasıdır. Bu, bir vidayı (güvenlik mührünün altında) çıkararak ve kasayı açarak açılabilir. Aşağıdaki fotoğraf, etiketlerin nerede olduğunu gösterir. Davayı bu noktalarda sıkmak yardımcı olur.

USB seri dönüştürücü

En sevdiğim dönüştürücü FTDI sürümüdür. Ancak bu, Sonoff 3.3v ihtiyaçlarını karşılamak için yeterli kapasiteye sahip değildir. FTDI spesifikasyonu maksimum 50ma diyor. Bir sonraki en iyi alternatif, CP2102 yongasını kullanan alternatiftir. Ancak bunun hala yeterli olmayan 100ma sınırı vardır. Açıkça birçok kişi bu dönüştürücüyü doğrudan kullanıyor, ancak yüklemenin başarısız olduğuna dair raporlar da var. Yük altında ısınacağı için bağlı olduğu süreyi sınırlandırırdım. Bunu kendi sorumluluğunuzda yapın. İdeal çözüm, aynı zamanda bir 3.3v regülatöre sahip olmaktır, örn. bir AMS1117 3.3. Bunu etkinleştirmek için küçük bir PCB yaptım. Sonoff cihazları için Programlayıcı'ya bakın.

Programlama sıram aşağıdaki gibidir:

Arduino IDE'yi açın.

Araçlar altında, ayarların Wiki'deki gibi olup olmadığını kontrol edin.

user_config.h için gerekli düzenlemeleri yapın. Wifi SSID ve parolasını ve MQTT broker adresini ve saat dilimini/yaz saati ayrıntılarını ayarladım.

Tamam derlendiğini kontrol etmek için 'doğrula'yı tıklayın.

USB seri dönüştürücüyü (kendi başına) PC'ye takın. Bağlantı noktası numarasını not edin.

Şimdi USB seri kablosunu PC'den ayırın ve Sonoff anahtarına bağlayın. Toprağı ve 3v3 bağlantılarının doğru olduğunu kontrol edin (toprak, Sonoff PCB'deki yer düzlemine bağlıdır).

Programlayıcıyı, kontaklar sağlam olacak ve aynı zamanda düğmeye basacak şekilde tutun.

Şimdi USB kablosunu PC'ye takın, bağlantı noktası numarasının doğru olduğunu kontrol edin (Araçlar'da), ardından indir'i tıklayın.

Bağlantıları bozmak istemediğim için program boyunca düğmeyi basılı tutmaya devam ediyorum.

Bittiğinde aşağıdaki gibi bir ekran görmelisiniz:

resim
resim

Sonoff, sistemimize bağlanmak için birkaç bit bilgiye ihtiyaç duyar: yerel ağ wifi SSID'si ve şifresi ve Pi IP adresi. Bunu yapmanın birkaç yolu vardır, bunlardan biri daha önce belirtildiği gibi config.ino dosyasını değiştirmektir. Akıllı telefonunuz varsa (düğmeyi yeniden monte ettikten sonra), bir web sunucusu moduna geçirmek için Sonoff düğmesine 4 kez oldukça hızlı bir şekilde basabilirsiniz. LED yanıp sönecektir. Bunun işe yaraması için birkaç kez denemek zorunda kaldım. Ardından akıllı telefonunuzda yeni Sonoff ağını arayın ve bağlanın. Gerekli verileri ayarlayabileceğiniz bir web sayfası görünecektir. Pi IP adresi ana bilgisayar adına gider. Ayrıca ikinci SSID'yi ve şifreyi uzun ve temelde kullanılamaz bir şeyle değiştirdim.

Alternatif olarak, yüklemeden hemen sonra seri bağlantı yoluyla da kurulabilir. Arduino Seri Monitörünü açın (Araçlar altında).

Girilecek komutlar:

WiFiSSID'nizi SSI'leyin

WiFiŞifrenizi şifreleyin

MqttHost 192.168.x.y (PI IP adresi)

Bunu etkin bir şekilde devre dışı bırakmak için SSId1 ve Password1'i ve ardından uzun ve kullanılamaz bir şey de girebilirsiniz.

Artık Sonoff anahtarını kutulayabilir, Düğüm-Kırmızı ve Düğüm-kırmızı panosunu açabilir ve geçiş düğmesine tıklayabilir ve şimdi Sonoff'tan gelen yanıtları içermesi gereken hata ayıklama sekmesine bakabilirsiniz. Böylece başka bir önemli adıma ulaştık - ilk anahtarımız bir PC/akıllı telefondan çalıştırılıyor.

Şimdiye kadar güvenlikten bahsetmedik. Şifreli iletişim kullanma imkanı vardır. Bu, kurulumu oldukça karmaşıktır ve muhtemelen bulut tabanlı bir aracının kullanıldığı durumlarda daha uygundur. Ayrıca, bağlı tüm cihazlar için kullanıcı adları ve şifreler ekleme ve anonim kullanıcılara izin vermeme seçeneği de vardır. Bunu kurmak oldukça basittir. Ve şimdi Güvenlik'e.

7. Adım: Güvenlik

MQTT, her istemci için kullanıcı adlarına ve parolalara izin verir. Bu kurulumu kolaydır. Her cihazı önce yeniden adlandırmak ve ardından kullanıcı adlarını ve şifrelerini ayarlamak muhtemelen daha kolaydır. Bu, MQTT komutları aracılığıyla yapılabilir ve Node-Red, muhtemelen bunları göndermenin en kolay yoludur. İlk önce bir adlandırma kuralına karar verin. Bir seçenek, isimleri konum ve işleve dayandırmaktır. Ardından, geri dönüş konusuyla birlikte adı (Konu) kullanıcı adı ve şifreyi kaydetmek isteyeceksiniz. Ayrıca, Sonoff ayarlarını orijinal indirmeye sıfırlamak için bir "sıfırlama seçeneği" olduğunu unutmayın (bkz. Wiki Kullanımı>Düğme İşlevselliği).

Pi'yi açın ve birkaç saniye sonra bir tarayıcıyı Node-Red'e açın (IP adresi: 1880).

Node-Red'de bir enjekte düğümü kurun ve bunu bir mqtt çıktısına bağlayın ve mqtt sunucusunu localhost olarak ayarlayın. Konuyu, kullanıcıyı ve şifreyi boş bırakın, çünkü bunları enjekte düğümünde ayarlayacağız. Ayrıca bir mqtt giriş düğümü kurun ve yanıtları görebilmemiz için bunu bir hata ayıklama düğümüne bağlayın. mqtt giriş notunu localhost olarak ayarlayın (zaten ayarlanmış olmalıdır) ve tüm trafiği yakalaması için konu için +/+/+ girin.

Enjeksiyon düğümüne aşağıdaki ayar sırasını girin.

İlk önce bağlantıyı kontrol edin

Konu: cmnd/sonoff/Durum

Mesaj: 6

'Başlangıçta bir kez enjekte et'i tıklayın. Dağıtmak. stat/sonoff/STATUS6'dan 7 satır veri içeren hata ayıklamayı görmeliyiz

Konu Girin: cmnd/sonoff/Konu veMesaj: salon ışığı. Dağıtmak. Bu, anahtar adını sonoff'tan loungelight'a değiştirir

Hata ayıklama sekmesi, cihazın yeni adı/konu ile yeniden başladığını göstermelidir.

Konu: cmnd/loungelight/MqttUser

mesaj: salon ışığı

Dağıt'ı tıklayın. stat/loungelight/RESULT'den {“MtqqUser”:”loungelight”} ile bir hata ayıklama görülmelidir.

Konu: cmnd/loungelight/MqttPassword

Mesaj: loungelightPW (bundan daha yaratıcı olun!)

Hata ayıklama sekmesini temizleyin ve Dağıt.

stat/loungelight/RESULT'den {"MqttPassword":"loungelightPW"} ile bir yanıt görülmelidir.

Şimdi mqtt çıkış düğümüne kullanıcı adı ve şifre olarak NodeRed ve NodeRedPW girin. Bu, açılan penceredeki Sunucu kalem simgesi ve güvenlik sekmesi aracılığıyla yapılır. Bu, otomatik olarak diğer MQTT düğümlerine kopyalanır.

ile tekrar kontrol edin

Konu: cmnd/loungelight/Durum ve Mesaj: 6. Dağıtmak.

Ve yanıtın gönderildiğini.

Bu noktada, cmnd/loungelight/…… konularını dinleyecek ve kullanıcı adı loungelight ve parola loungelightPW ile MQTT sunucusunda oturum açacak şekilde Sonof cihazımızı yeniden adlandırdık. Ayrıca Node-Red için bir kullanıcı adı ve şifre belirledik.

Daha sonra, sivrisinek MQTT sunucusuna yalnızca kullanıcı adlarına sahip müşterileri kabul etmesini ve kabul edilecek kullanıcı adlarını ve şifreleri listelemesini söylemeliyiz.

Prosedür:

  • Sivrisinek durdurmak
  • Kendi yapılandırma dosyasını oluşturun
  • Yapılandırma dosyasını düzenle
  • Şifre dosyası oluştur
  • Kullanıcıları/şifreleri ekleyin.

Bu yüzden yeni bir PuTTY oturumu ile oturum açın ve aşağıdaki komutları çalıştırın:

sudo /etc/init.d/sivrisinek durdurma

cd /etc/mosquitto/conf.d/

sudo nano mosquitto.conf Bu, düzenleyiciyi başlatır.

Satır ekle:

allow_anonymous yanlış

password_file /etc/mosquitto/conf.d/passwd

require_certificate yanlış

Kaydedin ve çıkın (Ctrl+X), Y, girin.

sudo touch passwd Bu, bir parola dosyası oluşturur ve aşağıdaki yönergeler adlar ve parolalar ekler.

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd loungelight loungelightPW

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd NodeRed NodeRedPW

sudo /etc/init.d/mosquitto yeniden başlat

Yeni bir cihaz eklerken, seri port üzerinden kullanıcı ve şifreyi girmeniz ve bunları şifre dosyasına eklemeniz veya mosquitto yapılandırma dosyasını geçici olarak değiştirmeniz ve "allow_anonymous false" satırlarını yorumlamanız (satırın başına # ekleyin) gerekeceğini unutmayın. " ve "password_file /etc/mosquitto/conf.d/passwd" ve ardından ayrıntılar cihaza gönderildiğinde bunları sıfırlayın ve yukarıdaki gibi şifre dosyasına ekleyin.

Sonoff adını loungelight olarak değiştirdik ve bu nedenle mqtt çıkış düğümünü (anahtara bağlı) cmnd/loungelight/POWER konusunu kullanacak şekilde güncelledik.

Dağıt'a tıklayın ve mqtt düğümlerinin 'bağlı' olduğunu kontrol edin.

Ardından geçiş düğmesini deneyin ve Sonoff anahtarının yanıt verdiğini gösteren hata ayıklamayı arayın. Cihazın değişikliği bir konu ile gösterdiğini fark edeceksiniz: stat/loungelight/POWER. Şimdi cmnd/sonoff/POWER olarak ayarlanan giriş düğümünü stat/loungelight/POWER olarak değiştirin. Bu kapağı işlevselliğimizde bir boşluk kullanabiliriz. Sistem, ilk kurulduğu şekliyle, oturum açmış tüm kullanıcılarla senkronize edilecektir, ancak Sonoff anahtarındaki düğmeye basılarak yapılan anahtar değişiklikleriyle senkronize edilmeyecektir. Şimdi stat/loungelight/POWER mqtt giriş düğümünün çıkışını anahtar girişine (LHS) bağlayın. Şimdi anahtara çift tıklayın ve "girişte mesaj gelirse, çıkışa geç" seçeneğinin işaretini kaldırın. Bu, bazı yeni seçenekler getirir - 'anahtar simgesi girişin durumunu gösterir' seçeneğini seçin. Dağıtmak. Şimdi iyi bir geri bildirim döngüsüne sahibiz. Gösterge paneli anahtarı konumu, değişikliğin nerede başlatıldığına bakılmaksızın Sonoff anahtarı değiştiğinde her zaman değişecektir.

Artık güvenli, bağımsız bir ev otomasyon sistemimiz var ve çalışır durumda ve istediğiniz her şeyi genişletmeye hazır. Bir sonraki bölümde, şimdiye kadar yaptığım bazı deneyleri ve üstesinden gelmeyi planladığım zorlukları ele alacağım.

8. Adım: Genişletme İçin İlk Adımlar

Sonoff-Tasmota üretici yazılımının bazı diğer özelliklerini gösteren başka bir Eğitilebilir Ev Otomasyonu Sonoff-Tasmota Sensörleri LED Geliştirme Panosuna sahibim:

Sıcaklık ve Nem ölçümü

Davetsiz misafir algılama (anahtar girişi)

IR uzaktan kumanda (TV'ler vb. için)

LED dizileri - hem RGB hem de NeoPixel (ayrı ayrı adreslenebilir)

I2C sensörleri

Yukarıdakiler için bir ESP12F ve özel bir PCB kullanıyorum. Bir NodeMCU ve devre tahtası eşit olarak kullanılabilir. Bu, bir Sonoff cihazına kablolama olmadan bu ek işlevleri mümkün kılar ve bu nedenle çok daha güvenli bir yaklaşımdır. Sıcaklık girişi ile elektrikli battaniye otomasyonumu tamamlayabildim.

Müzik ve İnternet Radyosu kolayca eklenebilir. Bu, belirli istasyonların veya albümlerin belirli saatlerde veya algılanan bir ziyaretçiye (telefona) yanıt olarak açılmasına yönelik seçenekleri açar. Bu ilgili talimat, Akıllı Telefon Kontrollü Yüksek Kaliteli Müzik Çalar ve İnternet Radyosundadır. Bu da Node-RED tarafından çalıştırıldığından, birden fazla ses sistemine sahip olmak ve bunları sürmek için MQTT iletişimini kullanmak bile mümkün olmalıdır.

Ayrıca e-posta göndermek ve sesli uyarılar yapmak da dahil olmak üzere Node-Red'i araştırıyorum. Ayrıca sistemin, cep telefonunuzun IP adresini pingleyerek, giriş/çıkış yaptığınızı algılama potansiyeli de vardır. Node-Red ayrıca hava durumu ve haberlere de erişebilir - böylece otomasyonun yanı sıra bilgi de ekleyebilir.

Öğrenilecek birkaç numara var - ancak bunlar ikinci kez çok kolay hale geliyor.

Başka bir yol, gösterge tablosunu göstermek için pi'ye bir ekran eklemektir. Bu 'devam eden çalışma' - ya da başka bir deyişle çok mutlu değilim. Aldığım ekranı portre moduna döndürmek zor ve Chromium tarayıcısı çok yavaş. Bir alternatif, ebay'den eski bir tablet alıp onu kullanmak olabilir. Bir Pi 2 ile deneyebilir ve bunun yeterli bir gelişme sağlayıp sağlamadığını görebilirim (bu geliştirme için kullanılan B modeli).

Umarım bu sizi başlatır ve hayal gücünüzü harekete geçirir. Potansiyel kapsam çok büyük. Hatta gerekirse diğer sensörler için Sonoff kodu değiştirilebilir.

Genel olarak, bu sistemin neler yapabileceğine şaşırdım. Asıl amacım, bağımsız bir sistem aracılığıyla bir akıllı telefondan güvenilir bir şekilde geçiş yapmaktı. Sunucuları ve istemcileri yönetmeye ve bir kullanıcı arayüzü için html yazmaya ihtiyaç duyduğumu hayal etmiştim. Bunun sona erdiği yer, daha fazla güvenlik, mükemmel güvenilirlik, harika kullanıcı arayüzü, sürükle ve bırak programlama ve büyük genişleme potansiyeli ile bundan çok daha ileride. Ve tüm bunlar çok daha az çabayla.

Mike

Adım 9: Ek - Raspbian Stretch Lite'dan Yükleme

Bu seçenek, tam Raspbian Stretch sürümüyle birlikte gelen bloatware'i önler. Ev otomasyonu için bir Pi kullanırken bunların çoğuna ihtiyaç duyulmayacaktır. Ancak Node-Red'in yüklenmesi gerekir.

1. Adımdaki gibi ilerleyin, ancak Raspbian Stretch yerine Raspbian Stretch Lite kullanın.

Adım 2 yerine aşağıdakileri yapın:

sudo apt -y npm'yi kurun

npm -v şunu döndürmelidir: 1.4.21 veya üstü

sudo npm kurulum -g n

sudo n 8.9.0

Artık Node-Red'i yüklemek için düğüm paket yöneticisini kullanabiliriz:

sudo npm kurulum düğümü-red --global --unsafe-perm

Bu, yanlış bir adres nedeniyle birkaç hata mesajı verecektir. Ancak sistem, bu sorunu düzeltmek için bir "kaynak derlemesi" yapar. Yukarıdaki talimatı tekrarlarsanız (gerekli değildir) hatalar oluşmaz.

Artık Node-Red ve destekleyici paketlerini kurduk ve sivrisinek yükleme adım 3'e geçebiliriz.

Kablosuz Yarışma
Kablosuz Yarışma
Kablosuz Yarışma
Kablosuz Yarışma

Kablosuz Yarışmasında İkincilik

Önerilen: