Files
ESP32-Hub/main-hub.yaml
2026-04-14 19:58:21 +02:00

257 lines
11 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 A0A5 ustawiają adres: A0=+1, A1=+2, A2=+4, A3=+8, A4=+16, A5=+32
# Baza adresów: 0x40. Uwaga: 0x700x73 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 A0A2 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