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: truesubstitutions
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-idfDefinicja 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: GPIO16Część 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: trueTo 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: 0sTutaj 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_serverCzęść odpowiedzialna za aktualizacje Over The Air. Olatforma 'web_server' umożliwia update poprzez web panel sterownika.
web_server
web_server:
port: 80
local: trueCzęść odpowiedzialna za włączenie serwera www sterownika.
time
time:
- platform: homeassistant
timezone: Europe/Warsaw
id: homeassistant_timeSekcja odpowiedzialna za wybór strefy czasowej Twojego sterownika, dostosuj ją do swojej lokalizacji.