O NasBlogKontakt
ProduktyESP DimmerDimmer Gen1Konfiguracja Oprogramowania

Edycja pliku konfiguracyjnego

Wszystko co powinieneś wiedzieć o pliku konfiguracyjnym

Plik konfiguracyjny

Plik konfiguracyjny wygląda na bardzo duży i skomplikowany, ale w rzeczywistości taki nie jest. Sam plik jest podzielony na sekcje. Opiszemy je poniżej. Za nasz przykład posłuży plik boneio-dimmer_8ch-v03.yaml

A więc zaczynajmy, oto cały plik konfiguracyjny:

substitutions:
  name: boneio-dr-8ch-03
  friendly_name: 'BoneIO Dimmer LED'
  serial_prefix: 'dim' #Don't change it.

esphome:
  name: '${name}'
  friendly_name: '${friendly_name}'
  name_add_mac_suffix: true
  project:
    name: boneio.dimmer-led
    version: '0.3'

esp32:
  board: esp32dev
  framework:                                                                            
    type: esp-idf

external_components:
  - source: github://boneIO-eu/esphome-LM75@main #Original source and thank you note for BTomala https://github.com/boneIO-eu/esphome-lm75
    components: [lm75]

packages:
  internals_packages:
    url: https://github.com/boneIO-eu/esphome
    ref: v1.7.1
    files:
      [
        'devices/serial_no.yaml',
        'devices/dimmer_i2c.yaml',
        'devices/dimmer_ina219.yaml',
        'boards/dimmer_output.yaml',
      ]

ethernet:
  id: eth
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk:
    pin: GPIO0
    mode: CLK_EXT_IN
  phy_addr: 1
  power_pin: GPIO16

dashboard_import:
  package_import_url: github://boneIO-eu/esphome/boneio-dimmer_8ch-v0_3.yaml@latest
  import_full_config: true

pcf8574:
  - id: 'pcf_inputs'
    address: 0x38

logger:
api:
  reboot_timeout: 0s
ota:
  - platform: esphome
  - platform: web_server

web_server:
  port: 80
  local: true

text_sensor:
  - platform: version
    name: 'boneio-dimmer- Version'
    icon: mdi:cube-outline
    entity_category: diagnostic
  - platform: ethernet_info
    ip_address:
      entity_category: diagnostic
      name: boneio-dimmer IP
  - platform: template
    name: 'Hostname'
    id: hostname
    entity_category: diagnostic
    lambda: |-
      return id(eth).get_use_address();
    update_interval: 5min

binary_sensor:
  - platform: gpio
    name: 'IN_01'
    id: in_01
    pin:
      pcf8574: pcf_inputs
      number: 1
      mode:
        input: true
      inverted: true
    on_multi_click:
      - timing:
          - ON for at least 0.7s
        then:
          - while:
              condition:
                binary_sensor.is_on: in_01
              then:
                - if:
                    condition:
                      lambda: 'return id(chl_01).current_values.get_brightness() >= 0.90f;'
                    then:
                      - light.turn_on:
                          id: chl_01
                          brightness: 5%
                          transition_length: 0.2s
                    else:
                      - light.dim_relative:
                          id: chl_01
                          relative_brightness: 5%
                          transition_length: 0.2s
                - delay: 200ms
        invalid_cooldown: 0.5s
      - timing: #single click
          - ON for at most 0.4s
          - OFF for at least 0.1s
        then:
          light.toggle: chl_01
        invalid_cooldown: 0.5s
  - platform: gpio
    name: 'IN_02'
    id: in_02
    pin:
      pcf8574: pcf_inputs
      number: 2
      mode:
        input: true
      inverted: true
    on_multi_click:
      - timing:
          - ON for at least 0.7s
        then:
          - while:
              condition:
                binary_sensor.is_on: in_02
              then:
                - if:
                    condition:
                      lambda: 'return id(chl_02).current_values.get_brightness() >= 0.90f;'
                    then:
                      - light.turn_on:
                          id: chl_02
                          brightness: 5%
                          transition_length: 0.2s
                    else:
                      - light.dim_relative:
                          id: chl_02
                          relative_brightness: 5%
                          transition_length: 0.2s
                - delay: 200ms
        invalid_cooldown: 0.5s
      - timing: #single click
          - ON for at most 0.4s
          - OFF for at least 0.1s
        then:
          light.toggle: chl_02
        invalid_cooldown: 0.5s
  - platform: gpio
    name: 'IN_03'
    id: in_03
    pin:
      pcf8574: pcf_inputs
      number: 3
      mode:
        input: true
      inverted: true
    on_multi_click:
      - timing:
          - ON for at least 0.7s
        then:
          - while:
              condition:
                binary_sensor.is_on: in_03
              then:
                - if:
                    condition:
                      lambda: 'return id(chl_03).current_values.get_brightness() >= 0.90f;'
                    then:
                      - light.turn_on:
                          id: chl_03
                          brightness: 5%
                          transition_length: 0.2s
                    else:
                      - light.dim_relative:
                          id: chl_03
                          relative_brightness: 5%
                          transition_length: 0.2s
                - delay: 200ms
        invalid_cooldown: 0.5s
      - timing: #single click
          - ON for at most 0.4s
          - OFF for at least 0.1s
        then:
          light.toggle: chl_03
        invalid_cooldown: 0.5s
  - platform: gpio
    name: 'IN_04'
    id: in_04
    pin:
      pcf8574: pcf_inputs
      number: 4
      mode:
        input: true
      inverted: true
    on_multi_click:
      - timing:
          - ON for at least 0.7s
        then:
          - while:
              condition:
                binary_sensor.is_on: in_04
              then:
                - if:
                    condition:
                      lambda: 'return id(chl_04).current_values.get_brightness() >= 0.90f;'
                    then:
                      - light.turn_on:
                          id: chl_04
                          brightness: 5%
                          transition_length: 0.2s
                    else:
                      - light.dim_relative:
                          id: chl_04
                          relative_brightness: 5%
                          transition_length: 0.2s
                - delay: 200ms
        invalid_cooldown: 0.5s
      - timing: #single click
          - ON for at most 0.4s
          - OFF for at least 0.1s
        then:
          light.toggle: chl_04
        invalid_cooldown: 0.5s
  - platform: gpio
    name: 'IN_05'
    id: in_05
    pin:
      number: 36
      mode:
        input: true
      inverted: true
    on_multi_click:
      - timing:
          - ON for at least 0.7s
        then:
          - while:
              condition:
                binary_sensor.is_on: in_05
              then:
                - if:
                    condition:
                      lambda: 'return id(chr_01).current_values.get_brightness() >= 0.90f;'
                    then:
                      - light.turn_on:
                          id: chr_01
                          brightness: 5%
                          transition_length: 0.2s
                    else:
                      - light.dim_relative:
                          id: chr_01
                          relative_brightness: 5%
                          transition_length: 0.2s
                - delay: 200ms
        invalid_cooldown: 0.5s
      - timing: #single click
          - ON for at most 0.4s
          - OFF for at least 0.1s
        then:
          light.toggle: chr_01
        invalid_cooldown: 0.5s
  - platform: gpio
    name: 'IN_06'
    id: in_06
    pin:
      number: 39
      mode:
        input: true
      inverted: true
    on_multi_click:
      - timing:
          - ON for at least 0.7s
        then:
          - while:
              condition:
                binary_sensor.is_on: in_06
              then:
                - if:
                    condition:
                      lambda: 'return id(chr_02).current_values.get_brightness() >= 0.90f;'
                    then:
                      - light.turn_on:
                          id: chr_02
                          brightness: 5%
                          transition_length: 0.2s
                    else:
                      - light.dim_relative:
                          id: chr_02
                          relative_brightness: 5%
                          transition_length: 0.2s
                - delay: 200ms
        invalid_cooldown: 0.5s
      - timing: #single click
          - ON for at most 0.4s
          - OFF for at least 0.1s
        then:
          light.toggle: chr_02
        invalid_cooldown: 0.5s
  - platform: gpio
    name: 'IN_07'
    id: in_07
    pin:
      number: 34
      mode:
        input: true
      inverted: true
    on_multi_click:
      - timing:
          - ON for at least 0.7s
        then:
          - while:
              condition:
                binary_sensor.is_on: in_07
              then:
                - if:
                    condition:
                      lambda: 'return id(chr_03).current_values.get_brightness() >= 0.90f;'
                    then:
                      - light.turn_on:
                          id: chr_03
                          brightness: 5%
                          transition_length: 0.2s
                    else:
                      - light.dim_relative:
                          id: chr_03
                          relative_brightness: 5%
                          transition_length: 0.2s
                - delay: 200ms
        invalid_cooldown: 0.5s
      - timing: #single click
          - ON for at most 0.4s
          - OFF for at least 0.1s
        then:
          light.toggle: chr_03
        invalid_cooldown: 0.5s
  - platform: gpio
    name: 'IN_08'
    id: in_08
    pin:
      number: 35
      mode:
        input: true
      inverted: true
    on_multi_click:
      - timing:
          - ON for at least 0.7s
        then:
          - while:
              condition:
                binary_sensor.is_on: in_08
              then:
                - if:
                    condition:
                      lambda: 'return id(chr_04).current_values.get_brightness() >= 0.90f;'
                    then:
                      - light.turn_on:
                          id: chr_04
                          brightness: 5%
                          transition_length: 0.2s
                    else:
                      - light.dim_relative:
                          id: chr_04
                          relative_brightness: 5%
                          transition_length: 0.2s
                - delay: 200ms
        invalid_cooldown: 0.5s
      - timing: #single click
          - ON for at most 0.4s
          - OFF for at least 0.1s
        then:
          light.toggle: chr_04
        invalid_cooldown: 0.5s

light:
  - platform: monochromatic
    output: chl01
    name: 'CHL 01'
    id: chl_01
    default_transition_length: 2s
    gamma_correct: 0
  - platform: monochromatic
    output: chl02
    name: 'CHL 02'
    id: chl_02
    default_transition_length: 2s
    gamma_correct: 0
  - platform: monochromatic
    output: chl03
    name: 'CHL 03'
    id: chl_03
    default_transition_length: 2s
    gamma_correct: 0
  - platform: monochromatic
    output: chl04
    name: 'CHL 04'
    id: chl_04
    default_transition_length: 2s
    gamma_correct: 0

  - platform: monochromatic
    output: chr01
    name: 'CHR 01'
    id: chr_01
    default_transition_length: 2s
    gamma_correct: 0
  - platform: monochromatic
    output: chr02
    name: 'CHR 02'
    id: chr_02
    default_transition_length: 2s
    gamma_correct: 0
  - platform: monochromatic
    output: chr03
    name: 'CHR 03'
    id: chr_03
    default_transition_length: 2s
    gamma_correct: 0
  - platform: monochromatic
    output: chr04
    name: 'CHR 04'
    id: chr_04
    default_transition_length: 2s
    gamma_correct: 0

sensor:
  - platform: lm75
    id: boneIO_temp
    name: 'Temperature'
    update_interval: 30s
    entity_category: diagnostic
    on_value_range:
      - above: 70.0
        then:
          - switch.turn_on: buzzer
      - below: 70.0
        then:
          - switch.turn_off: buzzer

switch:
  - platform: gpio
    id: buzzer
    name: 'Buzzer'
    pin:
      pcf8574: pcf_inputs
      number: 0
      mode:
        output: true
      inverted: true

substitutions

substitutions:
  name: boneio-dr-8ch-03
  friendly_name: 'BoneIO Dimmer LED'
  serial_prefix: 'dim' #Don't change it.

Ta część jest głównie odpowiedzialna za nazwę Twojego sterownika.
Powinieneś skupić się na friendly_name:. Należy tam wpisać nazwę swojego boneIO.
Nazwa zależy od Ciebie, może to być 'boneIO Dimmer-G1', jeśli masz jeden sterownik, lub na przykład 'boneIO Dimmer-G1 Parter'.

esphome

esphome:
  name: '${name}'
  friendly_name: '${friendly_name}'
  name_add_mac_suffix: true
  project:
    name: boneio.dimmer-led
    version: '0.3'

Tutaj znajdują się definicje Twojego sterownika. Nie powinieneś zmieniać name: ani friendly_name.
Linia name_add_mac_suffix: doda do nazwy sterownika jego adres MAC, co jest przydatne do identyfikacji urządzenia.
project: to miejsce, w którym definiujesz typ i wersję swojego sterownika.

esp32

esp32:
  board: esp32dev
  framework:                                                                            
    type: esp-idf

Definicja mikrokontrolera ESP32 i wymaganego frameworku.

Ethernet

ethernet:
  id: eth
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk:
    pin: GPIO0
    mode: CLK_EXT_IN
  phy_addr: 1
  power_pin: GPIO16

Część odpowiedzialna za opis portu Ethernet Twojego sterownika - nie powinieneś niczego tutaj zmieniać.

dashboard_import

dashboard_import:
  package_import_url: github://boneIO-eu/esphome/boneio-dimmer_8ch-v0_3.yaml@latest
  import_full_config: true

To jest miejsce, w którym zdefiniowany jest adres do naszego repozytorium na GitHub. Stamtąd pobierana jest konfiguracja i wszystkie dodatkowe pakiety. Niczego tutaj nie zmieniaj.

packages

packages:
  internals_packages:
    url: https://github.com/boneIO-eu/esphome
    ref: v1.7.1
    files:
      [
        'devices/serial_no.yaml',
        'devices/dimmer_i2c.yaml',
        'devices/dimmer_ina219.yaml',
        'boards/dimmer_output.yaml',
      ]

Tutaj znajdują się definicje wszystkich pakietów używanych przez boneIO, wraz z adresem do naszego GitHuba. Możesz tu również odnaleźć definicje urządzęń modbus.

logger

logger:

W przypadku rozwiązywania problemów możesz zwiększyć poziom logowania do INFO lub WARNING lub DEBUG. W niektórych przypadkach może to być bardzo przydatne.

api

api:
  reboot_timeout: 0s

Tutaj definiowany jest czas do ponownego uruchomienia, jeśli sterownik utraci połączenie z HA. Jeżeli chcesz aby Twoje boneIO zrestartowało się po utracie połączenia z Home Assistant, powinieneś wpisać tutaj wartość, która Ci odpowiada. W przypadku połączeń WiFi wartość nie powinna wynosić zero. W przypadku połączeń LAN brak ponownego uruchamiania nie wpływa negatywnie na połaczeń z Home Assistant w większości przypadków.

ota

ota:
  - platform: esphome
  - platform: web_server

Część odpowiedzialna za aktualizacje Over The Air. Olatforma 'web_server' umożliwia update poprzez web panel sterownika.

web_server

web_server:
  port: 80
  local: true

Część odpowiedzialna za włączenie serwera www sterownika.

time

time:
  - platform: homeassistant
    timezone: Europe/Warsaw
    id: homeassistant_time

Sekcja odpowiedzialna za wybór strefy czasowej Twojego sterownika, dostosuj ją do swojej lokalizacji.