ESPHome - конфигурация JetHub E1-CPU

Конфигурация процессорного модуля JetHub E1-CPU (без материнской платы) для ESPHome.

Конфигурация

В данной конфигурации реализованы:
  • Настройка Ethernet с автоматическим определением IP-адреса.

  • Интеграция с Home Assistant.

  • Настройка светодиодов STAT (красный и зеленый).

  • Настройка кнопки FN.

  • Настройка интерфейсов: I2C, UART, SPI, CAN.

Примечание

После загрузки контроллера и получения IP-адреса контроллер будет автоматически доступен в Home Assistant, работающем в этой же сети.

jethub_e1_cpu.yaml
  1esphome:
  2  name: e1-cpu-basic
  3  platform: ESP32
  4  board: nodemcu-32s
  5  name_add_mac_suffix: true # This option adds MAC address to the end of the device name
  6
  7## WARNING: Disable WiFi and captive_portal if Ethernet enabled
  8#wifi:
  9#  ssid: "***"
 10#  password: "***"
 11#
 12#  # Enable fallback hotspot (captive portal) in case wifi connection fails
 13#  ap:
 14#    ssid: "JetHub E1 Fallback Hotspot"
 15#    password: "***"
 16#
 17#captive_portal:
 18
 19# Enable Ethernet
 20ethernet:
 21  type: LAN8720
 22  mdc_pin: GPIO23
 23  mdio_pin: GPIO18
 24  clk_mode: GPIO17_OUT
 25  phy_addr: 1
 26
 27# Enable logging
 28logger:
 29
 30# Enable Home Assistant API
 31api:
 32
 33# Enable OTA firmware update
 34ota:
 35
 36# Enable I2C bus
 37i2c:
 38  sda: 5
 39  scl: 4
 40  frequency: 400kHz
 41  scan: true
 42  id: i2c1
 43
 44# Enable UART1, UART2
 45uart:
 46  - tx_pin: 33
 47    rx_pin: 34
 48    baud_rate: 115200
 49    id: uart_1
 50  - tx_pin: 2
 51    rx_pin: 39
 52    baud_rate: 115200
 53    id: uart_2
 54
 55# Enable SPI bus
 56spi:
 57  clk_pin: 14
 58  mosi_pin: 13
 59  miso_pin: 12
 60  id: spi1
 61
 62# Enable CAN bus
 63canbus:
 64  - platform: esp32_can
 65    id: can1
 66    tx_pin: 32
 67    rx_pin: 15
 68    can_id: 1
 69    bit_rate: 125KBPS
 70
 71# Enable I2C GPIO expanders
 72pcf8574:
 73  - id: cpu_gpio_exp
 74    address: 0x20
 75    pcf8575: true
 76
 77# Enable LEDs
 78switch:
 79  - platform: gpio
 80    name: "Red LED"
 81    id: red_led
 82    pin:
 83      pcf8574: cpu_gpio_exp
 84      number: 0
 85      mode: OUTPUT
 86      inverted: true
 87  - platform: gpio
 88    name: "Green LED"
 89    id: green_led
 90    pin:
 91      pcf8574: cpu_gpio_exp
 92      number: 1
 93      mode: OUTPUT
 94      inverted: true
 95
 96# Enable button
 97binary_sensor:
 98  - platform: gpio
 99    name: "FN button"
100    pin:
101      number: 0
102      inverted: true
103  - platform: gpio
104    name: "USER button"
105    pin:
106      pcf8574: cpu_gpio_exp
107      number: 2
108      inverted: true

Разъяснения

Базовые настройки

Задают имя контроллера, тип аппаратной платформы:

esphome:
  name: e1-cpu-basic
  platform: ESP32
  board: nodemcu-32s

Автоматический суффикс имени

Предупреждение

В одной сети не должно быть двух устройств с одинаковым именем.

Опция добавляет в имя устройства суффикс на основе MAC-адреса:

  name_add_mac_suffix: true # This option adds MAC address to the end of the device name

Сетевые настройки

Предупреждение

Из-за ограничений ESPHome Ethernet и Wi-Fi не могут работать одновременно.

Поэтому при задействовании порта Ethernet необходимо отключить в конфигурационном файле секции wifi и captive_portal.

Ethernet

# Enable Ethernet
ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO17_OUT
  phy_addr: 1

Wi-Fi

Примечание

ssid и password необходимо заменить на свои.

wifi:
  ssid: "***"
  password: "***"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "JetHub E1 Fallback Hotspot"
    password: "***"

Интеграция с Home Assistant

Для интеграции контроллера в систему Home Assistant достаточно включить в файле конфигурации секцию api:

# Enable Home Assistant API
api:

Порты UART

Два порта UART, подключены к разъему расширения:

# Enable UART1, UART2
uart:
  - tx_pin: 33
    rx_pin: 34
    baud_rate: 115200
    id: uart_1
  - tx_pin: 2
    rx_pin: 39
    baud_rate: 115200
    id: uart_2

Шина I2C

1# Enable I2C bus
2i2c:
3  sda: 5
4  scl: 4
5  frequency: 400kHz
6  scan: true
7  id: i2c1

К данной шине подключены:

  • Расширитель портов GPIO:

    # Enable I2C GPIO expanders
    pcf8574:
      - id: cpu_gpio_exp
        address: 0x20
        pcf8575: true
    
  • EEPROM:

    План

    Добавить описание

  • RTC:

    План

    Добавить описание

Шина SPI

Шина SPI подключена к разъему расширения:

# Enable SPI bus
spi:
  clk_pin: 14
  mosi_pin: 13
  miso_pin: 12
  id: spi1

Шина CAN

Предусмотрена возможность вывести шину CAN на разъем расширения, для этого рекомендуется использовать выводы 32 и 15 ESP32:

# Enable CAN bus
canbus:
  - platform: esp32_can
    id: can1
    tx_pin: 32
    rx_pin: 15
    can_id: 1
    bit_rate: 125KBPS

Расширитель портов GPIO

Примечание

Часть периферии подключена к расширителю портов GPIO, установленному на процессорной плате. Поэтому, предварительно должен быть настроен расширитель GPIO PCF8575 (адрес на шине I2C - 0x20).

# Enable I2C GPIO expanders
pcf8574:
  - id: cpu_gpio_exp
    address: 0x20
    pcf8575: true

Светодиоды

Для управления светодиодами используется инверсная логика:

# Enable LEDs
switch:
  - platform: gpio
    name: "Red LED"
    id: red_led
    pin:
      pcf8574: cpu_gpio_exp
      number: 0
      mode: OUTPUT
      inverted: true
  - platform: gpio
    name: "Green LED"
    id: green_led
    pin:
      pcf8574: cpu_gpio_exp
      number: 1
      mode: OUTPUT
      inverted: true

Примечание

При изменении состояния выходов, через некоторое время (~40 сек) ESPHome по-умолчанию автоматически сохраняет их состояние и после перезагрузки восстанавливает состояния выходов на сохраненные ранее.

Если данный функционал не нужен, то необходимо изменить эту функцию, задав состояние выхода при загрузке с помощью опции restore_mode, например:

switch:
  - platform: gpio
    ...
    restore_mode: ALWAYS_OFF
    ...

Кнопки

Кнопки FN (подключена к выводам ESP32) и USER (подключена через расширитель GPIO).

# Enable button
binary_sensor:
  - platform: gpio
    name: "FN button"
    pin:
      number: 0
      inverted: true
  - platform: gpio
    name: "USER button"
    pin:
      pcf8574: cpu_gpio_exp
      number: 2
      inverted: true

В следующем примере при нажатие кнопки FN будет приводить к включению/отключению зеленого светодиода:

binary_sensor:
  - platform: gpio
    name: "FN button"
    pin:
      number: 0
      inverted: true
    on_press:
      then:
        - switch.toggle: green_led