İçindekiler:

Wireless MQTT Yatak Başlığı Kontrolü: 5 Adımda (Resimli)
Wireless MQTT Yatak Başlığı Kontrolü: 5 Adımda (Resimli)

Video: Wireless MQTT Yatak Başlığı Kontrolü: 5 Adımda (Resimli)

Video: Wireless MQTT Yatak Başlığı Kontrolü: 5 Adımda (Resimli)
Video: Akıllı Ev Kuruyoruz-4 Home Assistant ve MQTT Kullanımı 2024, Temmuz
Anonim
Kablosuz MQTT Yatak Başlığı Kontrolü
Kablosuz MQTT Yatak Başlığı Kontrolü
Kablosuz MQTT Yatak Başlığı Kontrolü
Kablosuz MQTT Yatak Başlığı Kontrolü

Birkaç yıl önce yeni bir hafızalı köpük yatak satın aldık ve çoğu yatakta olduğu gibi, garantiyi sürdürmek için onların "onaylı tabanlarından" birini de satın almanız gerekiyordu. Bu nedenle, yatağın başını kaldırma ve indirme özelliğini de içeren en ucuz tabanı seçtik. Birkaç gün sonra yatağımız ve kablolu kumandalı American Ayarlanabilir ucuz tabanımız (yatağın her iki tarafı için bir tane) teslim edildi ve kuruldu.

Fark ettiğimiz ilk şey, showroomdaki güzel ve uzun kordonların yatağımızdaki gibi olmadığıydı! Showroomdakilerin uzantıları vardı. Bu uzantılar yatağımıza dahil DEĞİLDİ ve yeterince ilginçti, kimse bize bir çift uzatma kablosu satmakla ilgilenmedi. Bu bize yatağın tepesine zar zor ulaşan ve kullanmak için çevirmemiz gereken kontroller bıraktı.

Ödediğini alırsın

Yaklaşık 6 ay sonra, kontrollerden birinin üzerindeki gerilim azaltıcı yakaların yırtılmaya başladığını fark ettik. Birkaç ay sonra - çıplak tel. Yaklaşık bir yıl ileri sar, kontrollerden biri artık çalışmıyor ve diğeri biraz seğiriyor.

Yine, hiç kimse bize yedek parça satmakla ilgilenmedi. Sonra bana çarptı!

Dur bir dakika! Ev otomasyonu ve KONTROL sistemi yapmıyor muyum?!?

Adım 1: Keşif

keşif
keşif
keşif
keşif

Elimdekilerle ne yapabileceğimi görmek istedim, bu yüzden kusurlu kontrol cihazını aldım ve vay! orada bir sürü pislik vardı! Bütün bunlar ne içindi? Geri çekildim ve gelen ve çıkan çizgilere baktım. 12 voltluk bir besleme hattı ve bir toprak hattı olduğunu görebildim. Diğer iki satır, iki yukarı ve aşağı buton için sinyal hatlarına benziyordu. Bu yüzden bir şans verdim ve 12v beslemesini "yukarı" sinyal hattına atladım. Yatak hareket etmeye başladı! Daha sonra atlama telimi "aşağı" sinyal hattına taşıdım ve yatak çöktü!

Kutu içerisinde 4 adet daha sinyal hattı ve 4 adet daha buton için kontaklar bulunmaktadır. En iyi tahminim, bu denetleyici kartının tüm kablolu tabanlı modellerinde kullanıldığı ve gerektiğinde kartın üzerine farklı yüz plakaları yerleştirdikleridir. Yani, çalışan bir teorim vardı. Besleme hattını kullanım sırasında düşüp düşmediğini veya herhangi bir zamanda yükselip yükselmediğini görmek için test ettim - hayır. Sinyal hatları üzerinden çok az akım çekildi ancak motoru etkinleştirmek için 12 volta ihtiyaçları vardı.

2. Adım: Tasarım

Tasarım
Tasarım
Tasarım
Tasarım
Tasarım
Tasarım
Tasarım
Tasarım

Yani VCC ile sinyal pininin her biri arasında basit bir kontak bağlantısı gerekli, ancak bu benim sistemimde nasıl yapılır. Kontaklar için iki röle gerekecek ve kablosuz kontrolör için bir ESP8266 çalışacaktır. Röleler, dijital pinlerin sağlayabileceğinden daha fazla akım gerektirebileceğinden, kontrolör ve röle arasında bir optoizolatör kullanmak en iyisidir. Bu, küçük bir sinyalin daha yüksek bir akım anahtarını (bu durumda ışıkla çalışan bir transistör) açmasına ve röle bobinini güvenli bir şekilde etkinleştirmesine izin verecektir. Ayrıca, bir optoizolatör, denetleyiciyi röle bobini serbest bırakıldığında ve manyetik alan çöktüğünde oluşabilecek herhangi bir ani yükselmeden izole eder. Neyse ki, zaten tüm bu devreleri içeren ve oldukça düşük bir fiyata röle modülleri var.

Yatak, kontrolör için güç kaynağı olacak ve sağlanan 12 voltla başa çıkabilmek için değişken bir dönüştürücüye ihtiyacımız olacak. Aşağıda çok ucuz bir bağlantı verilmiştir ve güzel bir şekilde çalışmaktadır. 12V hattı ve GND hatları konvertörün giriş tarafına, regüleli 5 volt tarafı ise NodeMCU'nun VCC'sine ve röle modülü üzerindeki VCC pinine bağlanır. Konvertör üzerindeki toprak (-) üzerindeki GND pinlerine bağlanır. hem röle modülü hem de NodeMCU.

NodeMCU, D1 (GPIO5) kullanarak IN1'e ve D2 (GPIO4) kullanarak IN2'ye bağlanır. Yataktaki yukarı sinyal hattı, röle 1 için normalde açık olan vidalı terminale bağlanır ve aşağı sinyal hattı, röle 2'ye normalde açık terminal blok konektörüne bağlanır. Buck dönüştürücünün giriş tarafına bağlı olan 12v kabloyu, BOTH röle 1 ve 2 için diğer terminal bloğu bağlantısına da bağlamanız gerekecektir.

Parçalar

  • 1 - DüğümMCU
  • 1 - Akım izolasyonlu Duel Röle Modülü
  • 1 - Değişken giriş/çıkış buck Dönüştürücü
  • 1 - Breadboard PCB
  • 22 gauge çok telli bakır özlü tel
  • 2 - M3x 8 vida

3. Adım: Muhafaza

muhafaza
muhafaza

Muhafaza burada bulunabilir:

Yatak kontrol kablosunun kutu içindeki gerilim azaltma braketleri arasından kutuya girmesini sağlayan Tinkercad ile basit bir kutu tasarladım. Burada kablonun kaymasını önlemeye yardımcı olacak bir zip bağı için yuvalar var ama benim durumumda uyum çok rahattı ve buna gerek yoktu. Kapak 2 adet M3x 8 vida ile vidalanmıştır. Kodu yüklemenizi ve kutuya monte etmeden önce sistemi test etmenizi öneririm.

Levhaları yerinde tutmak için sıcak tutkal kullandım ama bu gerekli olmayabilir.

4. Adım: Kod

Kod burada bulunabilir:

NOT: Bu proje, Arduino IDE'deki Kitaplık Yöneticisine eklenebilen pubsubclient kitaplığını kullanır

Buradaki kod oldukça basittir ve Home Assistant'taki Cover MQTT türüne göre tasarlanmıştır. Buradaki fikir basittir: home assistant'ta yukarı veya aşağı düğmesine bastığınızda, uygun röle, durdurma komutu alınana kadar VEYA sistem maksimum aktivasyon süresine ulaşıp durur.

Maksimum süre, kullanıcının durdurmayı unutması veya komutun yanlışlıkla gönderilmesi ve birinin onu durdurmasının olası olmaması durumunda bir güvenlik önlemi anlamına gelir. Rölenin süresiz açık kalmasını veya uzun süreli kontak kapanması nedeniyle yatakta beklenmedik sorunlar olmasını istemiyoruz.

Kodumda bu zaman aşımı 20 saniyedir ve kodun üst kısmındaki global değişken bloğunda ayarlanabilir.

İkinci bir güvenlik önlemi, bir röleyi etkinleştirirsem, son durum zaten kapalı olsa bile, diğerinin kasıtlı olarak devre dışı bırakılmasının her zaman çağrıldığından her zaman emin olmaktı. Yatağa ne yapacağını bilmediğim için her iki sinyal hattına da 12v göndermek istemiyorum.

Bunun dışında yatak, her 60 saniyede bir müsait olduğunu yayınlıyor ve bu kadar. Burada çan veya ıslık yok. Yatakta konum geri bildirimi olmadığı için Ev Asistanına geri gönderemedim.

Adım 5: Örnek Entegrasyon

Örnek Entegrasyon
Örnek Entegrasyon
Örnek Entegrasyon
Örnek Entegrasyon

Yazdığım kod WiFi üzerinden iletişim kurmak için MQTT kullanıyor ve bu nedenle MQTT kullanan herhangi bir otomasyon hub'ı veya cihazı ile iletişim kurabilir. Yerleşik bir MQTT komisyoncusu olan Home Assistant kullanıyorum. Aşağıda HA yapılandırmamın bir örneği bulunmaktadır.

HA'da aşağıdaki tanıma sahip bir cover.yaml dosyasına sahibim:

- platform: mqtt

name: "Master Bed Headboard" command_topic: "master_bed_control/cmd"available_topic: "master_bed_control/availability" qos: 0 alıkoyma: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: " çevrimdışı" iyimser: doğru

Bu bana HA arayüzümde yukarıda açıklanan eylemle birlikte bir yukarı/durdur/aşağı düğmesi ayarlanmış bir giriş sağlar.

Ek olarak, Başucu Kontrol Panelime (Instructable / Blog Post) başlığı yükseltmek ve alçaltmak için iki düğme tanımladım. Kontrol panelindeki düğmeler MQTT sensörleri olarak tanımlanmıştır:

- platform: mqtt

state_topic: "bedside_cp1/button5" ad: "Başucu CP1 Düğmesi 5" simgesi: mdi:circle

- platform: mqtt

state_topic: "bedside_cp1/button6" ad: "Başucu CP1 Düğmesi 6" simgesi: mdi:circle

… ve her bir düğmeye ne zaman basılıp bırakılacağına ilişkin 4 otomasyon kuralı. Basıldığında, hangi butonun aktif olduğuna bağlı olarak yatağa yukarı veya aşağı komutu gönderilir, buton bırakıldığında ise stop komutu gönderilir:

- kimlik: '1548308650383'

takma ad: MBR Başucu CP Düğmesi 5a tetikleyici: - entity_id: sensor.bedside_cp1_button_5 gelen: 'Kapalı' platform: durum: 'Açık' koşul: eylem: - veri: entity_id: ' cover.master_bed_headboard' hizmeti: cover.open_cover - id: '1548308758911' diğer adı: MBR Başucu CP Düğmesi 5b tetikleyici: - entity_id: sensor.bedside_cp1_button_5 from: 'On' platform: state to: 'Off' koşul: action: - data: entity_id: ' cover.master_bed_headboard' hizmeti: cover.stop_cover - id: '1548308863495' diğer adı: MBR Hasta Başı CP Düğmesi 6a tetikleyici: - entity_id: sensor.bedside_cp1_button_6 from: 'Off' platform: state to: 'On' (Açık) durum: action: - data: entity_id: ' cover.master_bed_headboard' hizmeti: cover.close_cover - id: '1548308911467' diğer adı: MBR Başucu CP Düğmesi 6b tetikleyici: - entity_id: sensor.bedside_cp1_button_6 from: 'Açık' platform: durum: 'Kapalı' durum: eylem: - veri: entity_id: ' cover.master_bed_headboard' hizmeti: cover.stop_cover

Önerilen: