• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Работа с Lilygo T-Relay S3 В ESPHome и Home Assistant

25 декабря, 2023

Модуль Lilygo T-relay S3: https://alii.pub/6ut7mq?erid=2SDnjdn5Vmi

Дисплей ili9341: https://alii.pub/6ut83g?erid=2SDnjdAW8VN

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

Lilygo пришли наверное к логическому заключению в своей линейке модулей T-relay. Они выпускали несколько версий. сначала была плата с 4рьмя реле и gpio выходами (но без корпуса)https://alii.pub/6ut884?erid=2SDnjdrXo6g. Потом была версия с 8 реле и тоже без корпуса https://alii.pub/6ut88p?erid=2SDnjduVmfN. А вот сейчас вышла уже версия в корпусе на 6 реле, с креплением на DIN рейку. С подключением дополнительных модулей реле по цепочке. Так-же с часами реального времени, с подключением датчика температуры ds18b20. Да еще с возможностью подключения дисплея ili9341.

И такой модуль уже похож на взрослый. И его вполне себе можно уже внедрять в систему умного дома, куда-нибудь в шкаф для управления нагрузкой.

 

Распиновка довольно скудная у производителя.

Здесь не указана распиновка посадочного гнезда ds18b20. Дисплей тоже не расписан, но благо хоть шелкография есть.

По данному модулю информацию от разработчика Lilygo можно подчеркнуть на github.

К модулю T-relay S3 подключаются дополнительные модули на 6 реле, такого же формфактора (на фото видно). Подключаются они по цепочке и всего можно подключить дополнительно 3 модуля. Всего получится 24 реле.

Как это работает:

По сути очень просто. Релюшками управляет контроллер esp32s3 с помощью сдвигового регистра SN74HC595.

Такие регистры служат как расширитель gpio пинов. То-есть, используя 4 пина для управления регистром, получаем 8 выводов, для управления например реле.

Но и это еще не все плюсы такого регистра, они подключаться могут последовательно. Тоесть используя все теже 4 пина для управлением регистра, они же и управляют следующим регистром подключенным последовательно. И насколько я понимаю, таких можно подключить 256 штук.

Тогда почему всего 3 дополнительных модуля? Я думаю потому что питание больше не выдержит.

На страничке Гитхаба по этому модулю, есть пример для работы в ESPHome одним (головным модулем) реле: https://github.com/Xinyuan-LilyGO/LilyGo-T-Relay/blob/main/ESPHome/T-Relay-ESP32S3.yaml

И зная, что следующий модуль подключен последовательно. Распиновки доп модуля вообще нету… Я решил, что он управляется последовательно тоже как и подключен, по этому изменил немного код под esphome для головного модуля и дополнительного.

И выглядеть код стал следующим образом:

 




sn74hc595:
  - id: "sn74hc595_hub"
    data_pin: 7
    clock_pin: 5
    latch_pin: 6
    sr_count: 2

# Individual outputs
switch:
  - platform: gpio
    # SN74HC595 Pin #0
    name: "Switch 1"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 0
      number: 0
      inverted: false
      id: relay1

  - platform: gpio
    # SN74HC595 Pin #1
    name: "Switch 2"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 1
      number: 1
      inverted: false
      id: relay2

  - platform: gpio
    # SN74HC595 Pin #2
    name: "Switch 3"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 2
      number: 2
      inverted: false
      id: relay3

  - platform: gpio
    # SN74HC595 Pin #3
    name: "Switch 4"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 3
      number: 3
      inverted: false
      id: relay4

  - platform: gpio
    # SN74HC595 Pin #4
    name: "Switch 5"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 4
      number: 4
      inverted: false
      id: relay5

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 6"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 5
      number: 5
      inverted: false
      id: relay6

#pin светодиода
  - platform: gpio
    # SN74HC595 Pin #5
    #LED
    name: "Switch 7"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 6
      inverted: false
      id: relay7
#pin светодиода
  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 8"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 7
      inverted: false
      id: relay8

#реле второй платы расширения

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 9"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 8
      inverted: false
      id: relay9

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 10"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 9
      inverted: false
      id: relay10

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 11"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 10
      inverted: false
      id: relay11

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 12"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 11
      inverted: false
      id: relay12

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 13"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 12
      inverted: false
      id: relay13

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 14"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 13
      inverted: false
      id: relay14

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 15"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 14
      inverted: false
      id: relay15


       

 

Ну а дальше я изменил код, добавив работу с часами встроенными, так-же добавил работу датчика температуры ds18b20 и дисплея ili9341.

На дисплей вывел информацию о времени с часов реального времени, так-же взял показания мощности потребляемой моего сетевого фильтра из Home Assistant. Ну и вторыми показаниями я вывел значения с датчика ds18b20.

Такой код выглядит следующим образом:


i2c:
  scl: 17
  sda: 16

spi: 
  clk_pin: 13
  mosi_pin: 11
  miso_pin: 12
  
output:
  - platform: ledc
    pin: 9
    id: gpio_9_backlight_pwm

dallas:
  pin: 21
  update_interval: 10s

# Define a monochromatic, dimmable light for the backlight
light:
  - platform: monochromatic
    output: gpio_9_backlight_pwm
    name: "Display Backlight"
    id: back_light
    restore_mode: ALWAYS_ON

sn74hc595:
  - id: "sn74hc595_hub"
    data_pin: 7
    clock_pin: 5
    latch_pin: 6
    sr_count: 2

# Individual outputs
switch:
  - platform: gpio
    # SN74HC595 Pin #0
    name: "Switch 1"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 0
      number: 0
      inverted: false
      id: relay1

  - platform: gpio
    # SN74HC595 Pin #1
    name: "Switch 2"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 1
      number: 1
      inverted: false
      id: relay2

  - platform: gpio
    # SN74HC595 Pin #2
    name: "Switch 3"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 2
      number: 2
      inverted: false
      id: relay3

  - platform: gpio
    # SN74HC595 Pin #3
    name: "Switch 4"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 3
      number: 3
      inverted: false
      id: relay4

  - platform: gpio
    # SN74HC595 Pin #4
    name: "Switch 5"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 4
      number: 4
      inverted: false
      id: relay5

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 6"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 5
      number: 5
      inverted: false
      id: relay6


  - platform: gpio
    # SN74HC595 Pin #5
    #LED
    name: "Switch 7"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 6
      inverted: false
      id: relay7

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 8"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 7
      inverted: false
      id: relay8

###############################################

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 9"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 8
      inverted: false
      id: relay9

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 10"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 9
      inverted: false
      id: relay10

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 11"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 10
      inverted: false
      id: relay11

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 12"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 11
      inverted: false
      id: relay12

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 13"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 12
      inverted: false
      id: relay13

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 14"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 13
      inverted: false
      id: relay14

  - platform: gpio
    # SN74HC595 Pin #5
    name: "Switch 15"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 6
      number: 14
      inverted: false
      id: relay15

sensor:

  - platform: homeassistant
    id: power_plug
    entity_id: sensor.setevoi_filtr_power
  - platform: dallas
    name: "temperature_test"
    id: temperature_ds18b20
    address: "0xA104166427CCFF28"





time:
  - platform: pcf8563
    id: pcf8563_time
    address: 0x51
  - platform: homeassistant
    # instead try to synchronize via network repeatedly ...
    on_time_sync:
      then:
        # ... and update the RTC when the synchronization was successful
        pcf8563.write_time:
font:
  - file: "fonts/Roboto-Medium.ttf"
    id: font_roboto_medium22
    size: 15
    glyphs: |-
      !"%()+=,-_.:°0123456789АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧЩЬЫЪЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ абвгдеёжзийклмнопрстуфхцчщьыъэюяabcdefghijklmnopqrstuvwxyz'éèàòùç/&ôœìïöñ
  - file: "fonts/Roboto-Medium.ttf"
    id: font_roboto_medium44
    size: 44
  - file: "fonts/Roboto-Medium.ttf"
    id: font_roboto_medium27
    size: 27
  - file: "fonts/GoogleSans-Bold.ttf"
    id: font_name
    size: 18
    glyphs: |-
      !"%()+=,-_.:°0123456789АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧЩЬЫЪЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz'éèàòùç/&ôœìïöñ
  - file: "fonts/GoogleSans-Medium.ttf"
    id: font_value
    size: 36   
    glyphs: |-
      !"%()+=,-_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz'éèàòùç/&ôœìïöñ
  - file: "fonts/GoogleSans-Medium.ttf"
    id: font_footer
    size: 8    
    glyphs: |-
      !"%()+=,-_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz'éèàòùç/&ôœìïöñ
    # https://pictogrammers.github.io/@mdi/font/5.3.45/
  - file: 'fonts/materialdesignicons-webfont.ttf'
    id: font_icons
    size: 100
    glyphs:
      - "\U000F0594" # clear-night
      - "\U000F0590" # cloudy
      - "\U000F0595" # partlycloudy
      - "\U000F0591" # fog      
      - "\U000F0592" # hail
      - "\U000F0593" # lightning
      - "\U000F067E" # lightning-rainy
      - "\U000F0596" # pouring
      - "\U000F0597" # rainy
      - "\U000F0F36" # snowy
      - "\U000F067F" # snowy-rainy
      - "\U000F0599" # sunny
      - "\U000F059D" # windy
      - "\U000F059E" # windy-variant
      - "\U000F0F38" # exceptional
      
  - file: 'fonts/materialdesignicons-webfont.ttf'
    id: font_icons_small
    size: 15
    glyphs:
      - "\U000F10C2" # Temperature High
      - "\U000F10C3" # Temperature Low
      - "\U000F058E" #mdi-water-percent
      - "\U000F05A1" #mdi-weight
      - "\U000F0708" #mdi-react
      - "\U000F0438" #mdi-radiator
      - "\U000F0425" # POWER
      - "\U000F054B" # umbrella      
      - "\U000F0592" # hail
      - "\U000F0593" # lightning
      - "\U000F067E" # lightning-rainy
      - "\U000F0597" # rainy
      - "\U000F0F36" # snowy
      - "\U000F0594" # clear-night
      - "\U000F0599" # sunny
      - "\U000F07CA" # fuel
      - "\U000F024A" # flower
      - "\U000F051F" # time-remaining
      - "\U000F140B" # Energy
      - "\U000F109F" # Coffee
      - "\U000F02E3" # Bed
      - "\U000F0531" # Tree
      - "\U000F0E5B" # 3D Printer
  - file: 'fonts/materialdesignicons-webfont.ttf'
    id: font_icons_small_b
    size: 56
    glyphs:
      - "\U000F10C2" # Temperature High
      - "\U000F10C3" # Temperature Low
      - "\U000F0425" # POWER
      - "\U000F054B" # umbrella      
      - "\U000F0592" # hail
      - "\U000F0593" # lightning
      - "\U000F067E" # lightning-rainy
      - "\U000F0597" # rainy
      - "\U000F0F36" # snowy
      - "\U000F0594" # clear-night
      - "\U000F0599" # sunny
      - "\U000F07CA" # fuel
      - "\U000F024A" # flower
      - "\U000F051F" # time-remaining
      - "\U000F140B" # Energy
      - "\U000F109F" # Coffee
      - "\U000F02E3" # Bed
      - "\U000F0531" # Tree
      - "\U000F0E5B" # 3D Printer
  - file: 'fonts/materialdesignicons-webfont.ttf'
    id: font_icons_small_s
    size: 44
    glyphs:
      - "\U000F10C2" # Temperature High
      - "\U000F10C3" # Temperature Low
      - "\U000F0425" # POWER
      - "\U000F054B" # umbrella      
      - "\U000F0592" # hail
      - "\U000F0593" # lightning
      - "\U000F067E" # lightning-rainy
      - "\U000F0597" # rainy
      - "\U000F0F36" # snowy
      - "\U000F0594" # clear-night
      - "\U000F0599" # sunny
      - "\U000F07CA" # fuel
      - "\U000F024A" # flower
      - "\U000F051F" # time-remaining
      - "\U000F140B" # Energy
      - "\U000F109F" # Coffee
      - "\U000F02E3" # Bed
      - "\U000F0A61" # LTC
      - "\U000F0813" # BTC
      

color:
  - id: RED
    red: 100%
    green: 0%
    blue: 0%
  - id: BLUE
    red: 0%
    green: 0%
    blue: 100%
  - id: WHITE
    red: 100%
    green: 100%
    blue: 100%
  - id: YELLOW
    red: 100%
    green: 100%
    blue: 0%
display:
  - platform: ili9xxx
    model: TFT_2.4
    rotation: 270
    #model: ili9341
    cs_pin: 8
    dc_pin: 46
   # led_pin: 32
    reset_pin: 3
    id: my_display

    pages:
       - id: page1
         lambda: |-
           it.strftime(it.get_width() / 2, 7, id(font_roboto_medium22), TextAlign::CENTER,"%d-%m-%Y", id(pcf8563_time).now());
           it.strftime(it.get_width() / 2, 25, id(font_roboto_medium27), TextAlign::CENTER, "%X", id(pcf8563_time).now());
           

           //info
           it.print(it.get_width() / 2, 53, id(font_roboto_medium22), WHITE, TextAlign::CENTER, "ПОТРЕБЛЯЕМАЯ МОЩНОСТЬ"); 
           it.print(11,  64, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "POWER");
           it.printf(210, 64, id(font_roboto_medium22), RED, "%.1fВТ", id(power_plug).state);
           it.printf(195, 64, id(font_icons_small), YELLOW, TextAlign::LEFT, "\U000F0425");
           it.print(11,  86, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "DS18B20");
           it.printf(210, 86, id(font_roboto_medium22), RED, "%.1f°C", id(temperature_ds18b20).state);
           it.printf(195, 86, id(font_icons_small), YELLOW, TextAlign::LEFT, "\U000F10C3");
       

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·