Przeróbka transceiver IR Zigbee ZS06 na esphome

Cześć!

Postanowiłem pochwalić się nie pierwszym mini projektem, który sobie drutuje w domowym zaciszu, ale na tyle ciekawym, że zdecydowanie (przynajmniej moim zdaniem) wartym udokumentowania.

Cała historia ma swój początek jeszcze trochę zanim zacząłem zabawę z HA a mianowicie kiedy poruszałem się w środowisku TUYA i tam próbowałem dorobić sobie sterowanie okapem kuchennym, który komunikuje się z płytą indukcyjną przez podczerwień (hob2hood - na przykład Electrolux). Znalazłem na githubie kody do pilota, na smartfonie z nadajnikiem IR napisałem sobie na szybko pilot który taki kod wysyła i voila - okap zagadał. Pozostało więc zamówić uniwersalny pilot, skopiować (nauczyć) go posługowania się kodami, które wygenerowałem dla okapu i mam fajne uzupełnienie oświetlenia w kuchni.

Zamówiony został taki oto sprzęcior:

Po szybkim dodaniu go do systemu, okazało się że niestety nie działa… dość głęboka analiza wykazała, że uszkodzony był mikrokontroler który w nim się znajdował (oryginalnie siedział tam ZS3L), jedyna opcja naprawy to wymiana modułu na nowy ale bez wsadu było to niemożliwe… sprzedawca nie chciał wykonać zwrotu bez odesłania towaru (a mi nie chciało jechać 10minut w jedną stronę żeby nadać paczkę do miejsca z którego ja odebrałem bo oczywiście przyszła do złego punktu) i tym oto pięknym sposobem, ja zostałem lżejszy o kilkadziesiąt złotych ale za to miałem nie działający pilot.

Po pewnym czasie po przerzucaniu go z kąta w kąt (bo oczywiście nie uległ złomowaniu, gdyż dumnie dzierżył miano SUROWCA, który zostanie kiedyś MOŻE odzyskany do innego projektu) aż do teraz. Do brzegu:

Okazuje się, że ZS3L posiada bardzo zbliżony layout do ESP12F:

Zasilanie i dwa użyteczne GPIO są w tym samym miejscu, mało tego, wymiary i raster jest identyczny… więc w mojej głowie mógł powstać w tym momencie tylko jeden w miare sensowny pomysł :smiley:

Jako dawca ESP12F posłużył jeden z wielu zapomnianych wemos D1 mini, który został zaprogramowany na szybko do esphome, tylko tak żeby obsługiwał OTA a następnie został przelutowany do pilota:

Strzałkami zaznaczone zostały trzy miejsca, w których należy dokonać modyfikacji:

  1. Rezystor podciągający pin EN do 3v3
  2. Rezystor ściągający GPIO15 do masy
  3. Profilaktycznie wylutowany kondensator, który teraz nie jest już w tym miejscu potrzebny

W efekcie końcowym wyszło coś co obsługuje komponent remote z biblioteki w esphome. Bez problemu dodałem przyciski do sterowania okapem oraz udało mi się odczytać kody z pilota do telewizora i klimatyzacji, które po działają zwrotnie.

Żałuję tylko że zeskrapowałem obudowe do niego jakiś czas temu przy okazji sprzątania niepotrzebnych plastików… no szkoda.

Poniżej macie na szybko yamla z wpisanymi kodami, które używam :wink:

esphome:
  name: irremote
  friendly_name: IR Remote

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: !secret api_key

ota:
  platform: esphome
  password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Ir-Remote Fallback Hotspot"
    password: "M0vuyiOM1hwC"

remote_transmitter:
  pin: GPIO13
  carrier_duty_percent: 50%

remote_receiver:
  pin:
    number: GPIO12
    inverted: true
  dump: all

button:
  - platform: template
    name: "Okap swiatlo OFF"
    on_press:
      - remote_transmitter.transmit_raw:
          code: [684, -1488, 658, -778, 684, -758, 686, -2278, 660, -788, 628, -1532, 688, -1504, 686, -786, 658]
          carrier_frequency: 38000

  - platform: template
    name: "Okap swiatlo ON"
    on_press:
      - remote_transmitter.transmit_raw:
          code: [718, -1472, 720, -726, 1388, -752, 718, -1472, 694, -750, 1390, -2994, 720, -724, 720, -726, 1386]
          carrier_frequency: 38000

  - platform: template
    name: "Okap fan OFF"
    on_press:
      - remote_transmitter.transmit_raw:
          code: [720, -1468, 722, -1470, 2114, -1472, 722, -1470, 1416, -2218, 724, -1470, 724, -720, 698]
          carrier_frequency: 38000 

  - platform: template
    name: "Okap fan 1"
    on_press:
      - remote_transmitter.transmit_raw:
          code: [1416, -1494, 722, -1570, 1974, -1510, 722, -1468, 726, -718, 724, -1468, 724, -2216, 696]
          carrier_frequency: 38000

  - platform: template
    name: "Okap fan 2"
    on_press:
      - remote_transmitter.transmit_raw:
          code: [1440, -1472, 724, -2936, 752, -2190, 3530, -2224, 2114]
          carrier_frequency: 38000

  - platform: template
    name: "Okap fan 3"
    on_press:
      - remote_transmitter.transmit_raw:
          code: [696, -2240, 2784, -2968, 2116, -750, 724, -2216, 2114]
          carrier_frequency: 38000 

  - platform: template
    name: "Okap fan 4"
    on_press:
      - remote_transmitter.transmit_raw:
          code: [1416, -2244, 1418, -722, 1418, -2216, 1418, -1470, 724, -2216, 722, -722, 1392]
          carrier_frequency: 38000
7 polubień