257 lines
11 KiB
YAML
257 lines
11 KiB
YAML
substitutions:
|
||
name: main-hub
|
||
friendly_name: 'Main Hub'
|
||
project_version: '1.0'
|
||
|
||
esphome:
|
||
name: '${name}'
|
||
friendly_name: '${friendly_name}'
|
||
name_add_mac_suffix: true
|
||
project:
|
||
name: peakcontrol.main-hub
|
||
version: '${project_version}'
|
||
on_boot:
|
||
- priority: 1001
|
||
then:
|
||
- lambda: |-
|
||
gpio_reset_pin((gpio_num_t)5);
|
||
gpio_reset_pin((gpio_num_t)14);
|
||
gpio_reset_pin((gpio_num_t)15);
|
||
|
||
esp32:
|
||
board: esp32-poe
|
||
framework:
|
||
type: esp-idf
|
||
|
||
ethernet:
|
||
type: LAN8720
|
||
mdc_pin: GPIO23
|
||
mdio_pin: GPIO18
|
||
clk_mode: GPIO17_OUT
|
||
phy_addr: 0
|
||
power_pin: GPIO12
|
||
|
||
logger:
|
||
|
||
api:
|
||
reboot_timeout: 0s
|
||
encryption:
|
||
key: "" # TODO: wygeneruj nowy klucz: esphome generate-api-key
|
||
|
||
ota:
|
||
- platform: esphome
|
||
password: "" # TODO: ustaw hasło OTA
|
||
- platform: web_server
|
||
|
||
web_server:
|
||
port: 80
|
||
local: true
|
||
|
||
#wifi:
|
||
# ssid: !secret wifi_ssid
|
||
# password: !secret wifi_password
|
||
#
|
||
# ap:
|
||
# ssid: '${friendly_name} Fallback'
|
||
# password: ""
|
||
|
||
#captive_portal:
|
||
|
||
time:
|
||
- platform: homeassistant
|
||
timezone: Europe/Warsaw
|
||
id: homeassistant_time
|
||
|
||
button:
|
||
- platform: restart
|
||
name: '${friendly_name} Restart'
|
||
|
||
packages:
|
||
main_hub_packages:
|
||
url: https://gitea.domowyasystent.com/jkocon/ESP32-Hub
|
||
ref: main
|
||
files: [
|
||
|
||
# ── Zawsze aktywne ────────────────────────────────────────────────────
|
||
'packages/main_hub/i2c.yaml',
|
||
'packages/main_hub/status_led.yaml',
|
||
'packages/main_hub/scripts.yaml',
|
||
|
||
# ── PCA9685 PWM ───────────────────────────────────────────────────────
|
||
# Zworki A0–A5 ustawiają adres: A0=+1, A1=+2, A2=+4, A3=+8, A4=+16, A5=+32
|
||
# Baza adresów: 0x40. Uwaga: 0x70–0x73 zarezerwowane przez protokół.
|
||
# Odkomentuj linię zgodną z fizycznym adresem modułu.
|
||
#
|
||
# 'packages/main_hub/pca9685/0x40.yaml', # A0=0 A1=0 A2=0 A3=0 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x41.yaml', # A0=1 A1=0 A2=0 A3=0 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x42.yaml', # A0=0 A1=1 A2=0 A3=0 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x43.yaml', # A0=1 A1=1 A2=0 A3=0 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x44.yaml', # A0=0 A1=0 A2=1 A3=0 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x45.yaml', # A0=1 A1=0 A2=1 A3=0 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x46.yaml', # A0=0 A1=1 A2=1 A3=0 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x47.yaml', # A0=1 A1=1 A2=1 A3=0 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x48.yaml', # A0=0 A1=0 A2=0 A3=1 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x49.yaml', # A0=1 A1=0 A2=0 A3=1 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x4a.yaml', # A0=0 A1=1 A2=0 A3=1 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x4b.yaml', # A0=1 A1=1 A2=0 A3=1 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x4c.yaml', # A0=0 A1=0 A2=1 A3=1 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x4d.yaml', # A0=1 A1=0 A2=1 A3=1 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x4e.yaml', # A0=0 A1=1 A2=1 A3=1 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x4f.yaml', # A0=1 A1=1 A2=1 A3=1 A4=0 A5=0
|
||
# 'packages/main_hub/pca9685/0x50.yaml', # A0=0 A1=0 A2=0 A3=0 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x51.yaml', # A0=1 A1=0 A2=0 A3=0 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x52.yaml', # A0=0 A1=1 A2=0 A3=0 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x53.yaml', # A0=1 A1=1 A2=0 A3=0 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x54.yaml', # A0=0 A1=0 A2=1 A3=0 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x55.yaml', # A0=1 A1=0 A2=1 A3=0 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x56.yaml', # A0=0 A1=1 A2=1 A3=0 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x57.yaml', # A0=1 A1=1 A2=1 A3=0 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x58.yaml', # A0=0 A1=0 A2=0 A3=1 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x59.yaml', # A0=1 A1=0 A2=0 A3=1 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x5a.yaml', # A0=0 A1=1 A2=0 A3=1 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x5b.yaml', # A0=1 A1=1 A2=0 A3=1 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x5c.yaml', # A0=0 A1=0 A2=1 A3=1 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x5d.yaml', # A0=1 A1=0 A2=1 A3=1 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x5e.yaml', # A0=0 A1=1 A2=1 A3=1 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x5f.yaml', # A0=1 A1=1 A2=1 A3=1 A4=1 A5=0
|
||
# 'packages/main_hub/pca9685/0x60.yaml', # A0=0 A1=0 A2=0 A3=0 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x61.yaml', # A0=1 A1=0 A2=0 A3=0 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x62.yaml', # A0=0 A1=1 A2=0 A3=0 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x63.yaml', # A0=1 A1=1 A2=0 A3=0 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x64.yaml', # A0=0 A1=0 A2=1 A3=0 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x65.yaml', # A0=1 A1=0 A2=1 A3=0 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x66.yaml', # A0=0 A1=1 A2=1 A3=0 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x67.yaml', # A0=1 A1=1 A2=1 A3=0 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x68.yaml', # A0=0 A1=0 A2=0 A3=1 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x69.yaml', # A0=1 A1=0 A2=0 A3=1 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x6a.yaml', # A0=0 A1=1 A2=0 A3=1 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x6b.yaml', # A0=1 A1=1 A2=0 A3=1 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x6c.yaml', # A0=0 A1=0 A2=1 A3=1 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x6d.yaml', # A0=1 A1=0 A2=1 A3=1 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x6e.yaml', # A0=0 A1=1 A2=1 A3=1 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x6f.yaml', # A0=1 A1=1 A2=1 A3=1 A4=0 A5=1
|
||
# 'packages/main_hub/pca9685/0x74.yaml', # A0=0 A1=0 A2=1 A3=0 A4=1 A5=1
|
||
# 'packages/main_hub/pca9685/0x75.yaml', # A0=1 A1=0 A2=1 A3=0 A4=1 A5=1
|
||
# 'packages/main_hub/pca9685/0x76.yaml', # A0=0 A1=1 A2=1 A3=0 A4=1 A5=1
|
||
# 'packages/main_hub/pca9685/0x77.yaml', # A0=1 A1=1 A2=1 A3=0 A4=1 A5=1
|
||
# 'packages/main_hub/pca9685/0x78.yaml', # A0=0 A1=0 A2=0 A3=1 A4=1 A5=1
|
||
# 'packages/main_hub/pca9685/0x79.yaml', # A0=1 A1=0 A2=0 A3=1 A4=1 A5=1
|
||
# 'packages/main_hub/pca9685/0x7a.yaml', # A0=0 A1=1 A2=0 A3=1 A4=1 A5=1
|
||
# 'packages/main_hub/pca9685/0x7b.yaml', # A0=1 A1=1 A2=0 A3=1 A4=1 A5=1
|
||
# 'packages/main_hub/pca9685/0x7c.yaml', # A0=0 A1=0 A2=1 A3=1 A4=1 A5=1
|
||
# 'packages/main_hub/pca9685/0x7d.yaml', # A0=1 A1=0 A2=1 A3=1 A4=1 A5=1
|
||
# 'packages/main_hub/pca9685/0x7e.yaml', # A0=0 A1=1 A2=1 A3=1 A4=1 A5=1
|
||
# 'packages/main_hub/pca9685/0x7f.yaml', # A0=1 A1=1 A2=1 A3=1 A4=1 A5=1
|
||
|
||
# ── MCP23017 OUTPUTS ──────────────────────────────────────────────────
|
||
# Zworki A0–A2 ustawiają adres: A0=+1, A1=+2, A2=+4. Baza: 0x20.
|
||
# Odkomentuj linię zgodną z fizycznym adresem modułu skonfigurowanego jako OUTPUT.
|
||
#
|
||
# 'packages/main_hub/mcp23017/outputs/0x20.yaml', # A2=0 A1=0 A0=0
|
||
# 'packages/main_hub/mcp23017/outputs/0x21.yaml', # A2=0 A1=0 A0=1
|
||
# 'packages/main_hub/mcp23017/outputs/0x22.yaml', # A2=0 A1=1 A0=0
|
||
# 'packages/main_hub/mcp23017/outputs/0x23.yaml', # A2=0 A1=1 A0=1
|
||
# 'packages/main_hub/mcp23017/outputs/0x24.yaml', # A2=1 A1=0 A0=0
|
||
# 'packages/main_hub/mcp23017/outputs/0x25.yaml', # A2=1 A1=0 A0=1
|
||
# 'packages/main_hub/mcp23017/outputs/0x26.yaml', # A2=1 A1=1 A0=0
|
||
# 'packages/main_hub/mcp23017/outputs/0x27.yaml', # A2=1 A1=1 A0=1
|
||
|
||
# ── MCP23017 INPUTS ───────────────────────────────────────────────────
|
||
# Odkomentuj linię zgodną z fizycznym adresem modułu skonfigurowanego jako INPUT.
|
||
#
|
||
# 'packages/main_hub/mcp23017/inputs/0x20.yaml', # A2=0 A1=0 A0=0
|
||
# 'packages/main_hub/mcp23017/inputs/0x21.yaml', # A2=0 A1=0 A0=1
|
||
# 'packages/main_hub/mcp23017/inputs/0x22.yaml', # A2=0 A1=1 A0=0
|
||
# 'packages/main_hub/mcp23017/inputs/0x23.yaml', # A2=0 A1=1 A0=1
|
||
# 'packages/main_hub/mcp23017/inputs/0x24.yaml', # A2=1 A1=0 A0=0
|
||
# 'packages/main_hub/mcp23017/inputs/0x25.yaml', # A2=1 A1=0 A0=1
|
||
# 'packages/main_hub/mcp23017/inputs/0x26.yaml', # A2=1 A1=1 A0=0
|
||
# 'packages/main_hub/mcp23017/inputs/0x27.yaml', # A2=1 A1=1 A0=1
|
||
|
||
]
|
||
|
||
# ── Nazwane oświetlenie LED PWM (PCA9685) ────────────────────────────────────
|
||
# Zdefiniuj tu nazwane światła mapujące kanały PCA9685 na logiczne ID.
|
||
# Platformy: monochromatic (1 kanał), cwww (2), rgb (3), rgbww (5).
|
||
# Odkomentuj i uzupełnij wg okablowania.
|
||
#
|
||
# light:
|
||
# - platform: monochromatic
|
||
# name: "Nazwa Światła"
|
||
# id: nazwa_swiatla
|
||
# output: pca_0x40_ch0 # kanał PCA9685
|
||
#
|
||
# - platform: cwww
|
||
# name: "Nazwa Światła CW"
|
||
# id: nazwa_swiatla_cw
|
||
# cold_white: pca_0x40_ch1
|
||
# warm_white: pca_0x40_ch2
|
||
# cold_white_color_temperature: 6000K
|
||
# warm_white_color_temperature: 2700K
|
||
|
||
# ── Wejścia cyfrowe (MCP23017 INPUTS) ────────────────────────────────────────
|
||
# Zdefiniuj tu sensory mapujące piny MCP23017 na logiczne przyciski.
|
||
# Dla pojedynczego kliknięcia użyj on_click, dla wielu gestów on_multi_click.
|
||
#
|
||
# binary_sensor:
|
||
# - platform: gpio
|
||
# name: "Nazwa Przycisku"
|
||
# id: przycisk_id
|
||
# pin:
|
||
# mcp23xxx: mcp23xxx_0x20 # ID chipu z packages/main_hub/mcp23017/inputs/
|
||
# number: 0
|
||
# mode: INPUT
|
||
# inverted: True
|
||
# on_click:
|
||
# then:
|
||
# - light.toggle: nazwa_swiatla
|
||
#
|
||
# - platform: gpio
|
||
# name: "Przycisk Multi"
|
||
# id: przycisk_multi_id
|
||
# pin:
|
||
# mcp23xxx: mcp23xxx_0x20
|
||
# number: 1
|
||
# mode: INPUT
|
||
# inverted: True
|
||
# on_multi_click:
|
||
# - timing: # single click
|
||
# - ON for at most 350ms
|
||
# - OFF for at least 350ms
|
||
# then:
|
||
# - light.toggle: nazwa_swiatla
|
||
# - timing: # double click
|
||
# - ON for at most 350ms
|
||
# - OFF for at most 350ms
|
||
# - ON for at most 350ms
|
||
# - OFF for at least 350ms
|
||
# then:
|
||
# - script.execute: off_all_lights
|
||
# - timing: # long press
|
||
# - ON for at least 350ms
|
||
# then:
|
||
# - script.execute: off_all_fans
|
||
|
||
# ── Czujniki BLE ATC MiThermometer ───────────────────────────────────────────
|
||
# Odkomentuj esp32_ble_tracker oraz sensory jeśli używasz czujników BLE.
|
||
#
|
||
# esp32_ble_tracker:
|
||
#
|
||
# sensor:
|
||
# - platform: uptime
|
||
# type: seconds
|
||
# name: Uptime Sensor
|
||
# - platform: atc_mithermometer
|
||
# mac_address: "AA:BB:CC:DD:EE:FF" # TODO: wpisz MAC z etykiety czujnika
|
||
# temperature:
|
||
# name: "Pokój Temperatura"
|
||
# humidity:
|
||
# name: "Pokój Nawilzenie"
|
||
# battery_level:
|
||
# name: "Pokój Bateria"
|
||
|
||
sensor:
|
||
- platform: uptime
|
||
type: seconds
|
||
name: Uptime Sensor
|