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