esphome: name: cover-board-v0-1 esp32: board: esp32dev framework: type: arduino external_components: - source: github://ell249/esphome-PCT2075@master components: [ pct2075 ] ethernet: id: eth type: LAN8720 mdc_pin: GPIO23 mdio_pin: GPIO18 clk_mode: GPIO0_IN phy_addr: 1 power_pin: GPIO16 i2c: sda: GPIO14 scl: GPIO15 scan: True frequency: 100kHz logger: baud_rate: 0 api: ota: web_server: port: 80 time: - platform: ds1307 id: ds1307_tim - platform: homeassistant # instead try to synchronize via network repeatedly ... on_time_sync: then: # ... and update the RTC when the synchronization was successful ds1307.write_time: mcp23017: - id: 'mcp_1' address: 0x26 - id: 'mcp_2' address: 0x27 - id: 'mcp_3' address: 0x21 - id: 'mcp_4' address: 0x20 uart: rx_pin: GPIO3 tx_pin: GPIO1 baud_rate: 9600 stop_bits: 1 # modbus: # id: modbus1 # modbus_controller: # - id: epever # ## the Modbus device addr # address: 0x33 # modbus_id: modbus1 # setup_priority: -10 switch: - platform: gpio pin: mcp23xxx: mcp_3 number: 0 mode: OUTPUT inverted: false id: relay1 interlock: &interlock_1 [relay1, relay2] - platform: gpio pin: mcp23xxx: mcp_3 number: 1 mode: OUTPUT inverted: false id: relay2 interlock: *interlock_1 - platform: gpio pin: mcp23xxx: mcp_3 number: 2 mode: OUTPUT inverted: false id: relay3 interlock: &interlock_2 [relay3, relay4] - platform: gpio pin: mcp23xxx: mcp_3 number: 3 mode: OUTPUT inverted: false id: relay4 interlock: *interlock_2 - platform: gpio pin: mcp23xxx: mcp_3 number: 4 mode: OUTPUT inverted: false id: relay5 interlock: &interlock_3 [relay5, relay6] - platform: gpio pin: mcp23xxx: mcp_3 number: 5 mode: OUTPUT inverted: false id: relay6 interlock: *interlock_3 - platform: gpio pin: mcp23xxx: mcp_3 number: 6 mode: OUTPUT inverted: false id: relay7 interlock: &interlock_4 [relay7, relay8] - platform: gpio pin: mcp23xxx: mcp_3 number: 7 mode: OUTPUT inverted: false id: relay8 interlock: *interlock_4 - platform: gpio pin: mcp23xxx: mcp_3 number: 8 mode: OUTPUT inverted: false id: relay9 interlock: &interlock_5 [relay9, relay10] - platform: gpio pin: mcp23xxx: mcp_3 number: 9 mode: OUTPUT inverted: false id: relay10 interlock: *interlock_5 - platform: gpio pin: mcp23xxx: mcp_3 number: 10 mode: OUTPUT inverted: false id: relay11 interlock: &interlock_6 [relay11, relay12] - platform: gpio pin: mcp23xxx: mcp_3 number: 11 mode: OUTPUT inverted: false id: relay12 interlock: *interlock_6 - platform: gpio pin: mcp23xxx: mcp_3 number: 12 mode: OUTPUT inverted: false id: relay13 interlock: &interlock_7 [relay13, relay14] - platform: gpio pin: mcp23xxx: mcp_3 number: 13 mode: OUTPUT inverted: false id: relay14 interlock: *interlock_7 - platform: gpio pin: mcp23xxx: mcp_3 number: 14 mode: OUTPUT inverted: false id: relay15 interlock: &interlock_8 [relay15, relay16] - platform: gpio pin: mcp23xxx: mcp_3 number: 15 mode: OUTPUT inverted: false id: relay16 interlock: *interlock_8 - platform: gpio pin: mcp23xxx: mcp_4 number: 0 mode: OUTPUT inverted: false id: relay17 interlock: &interlock_9 [relay17, relay18] - platform: gpio pin: mcp23xxx: mcp_4 number: 1 mode: OUTPUT inverted: false id: relay18 interlock: *interlock_9 - platform: gpio pin: mcp23xxx: mcp_4 number: 2 mode: OUTPUT inverted: false id: relay19 interlock: &interlock_10 [relay19, relay20] - platform: gpio pin: mcp23xxx: mcp_4 number: 3 mode: OUTPUT inverted: false id: relay20 interlock: *interlock_10 - platform: gpio pin: mcp23xxx: mcp_4 number: 4 mode: OUTPUT inverted: false id: relay21 interlock: &interlock_11 [relay21, relay22] - platform: gpio pin: mcp23xxx: mcp_4 number: 5 mode: OUTPUT inverted: false id: relay22 interlock: *interlock_11 - platform: gpio pin: mcp23xxx: mcp_4 number: 6 mode: OUTPUT inverted: false id: relay23 interlock: &interlock_12 [relay23, relay24] - platform: gpio pin: mcp23xxx: mcp_4 number: 7 mode: OUTPUT inverted: false id: relay24 interlock: *interlock_12 - platform: gpio pin: mcp23xxx: mcp_4 number: 8 mode: OUTPUT inverted: false id: relay25 interlock: &interlock_13 [relay25, relay26] - platform: gpio pin: mcp23xxx: mcp_4 number: 9 mode: OUTPUT inverted: false id: relay26 interlock: *interlock_13 - platform: gpio pin: mcp23xxx: mcp_4 number: 10 mode: OUTPUT inverted: false id: relay27 interlock: &interlock_14 [relay27, relay28] - platform: gpio pin: mcp23xxx: mcp_4 number: 11 mode: OUTPUT inverted: false id: relay28 interlock: *interlock_14 - platform: gpio pin: mcp23xxx: mcp_4 number: 12 mode: OUTPUT inverted: false id: relay29 interlock: &interlock_15 [relay29, relay30] - platform: gpio pin: mcp23xxx: mcp_4 number: 13 mode: OUTPUT inverted: false id: relay30 interlock: *interlock_15 - platform: gpio pin: mcp23xxx: mcp_4 number: 14 mode: OUTPUT inverted: false id: relay31 interlock: &interlock_16 [relay31, relay32] - platform: gpio pin: mcp23xxx: mcp_4 number: 15 mode: OUTPUT inverted: false id: relay32 interlock: *interlock_16 cover: - platform: time_based name: "Cover_01" id: cover_01 assumed_state: false open_action: - switch.turn_on: relay1 open_duration: 30s close_action: - switch.turn_on: relay2 close_duration: 30s stop_action: - switch.turn_off: relay1 - switch.turn_off: relay2 - platform: time_based name: "Cover_02" id: cover_02 assumed_state: false open_action: - switch.turn_on: relay3 open_duration: 30s close_action: - switch.turn_on: relay4 close_duration: 30s stop_action: - switch.turn_off: relay3 - switch.turn_off: relay4 - platform: time_based name: "Cover_03" id: cover_03 assumed_state: false open_action: - switch.turn_on: relay5 open_duration: 30s close_action: - switch.turn_on: relay6 close_duration: 30s stop_action: - switch.turn_off: relay5 - switch.turn_off: relay6 - platform: time_based name: "Cover_04" id: cover_04 assumed_state: false open_action: - switch.turn_on: relay7 open_duration: 30s close_action: - switch.turn_on: relay8 close_duration: 30s stop_action: - switch.turn_off: relay7 - switch.turn_off: relay8 - platform: time_based name: "Cover_05" id: cover_05 assumed_state: false open_action: - switch.turn_on: relay9 open_duration: 30s close_action: - switch.turn_on: relay10 close_duration: 30s stop_action: - switch.turn_off: relay9 - switch.turn_off: relay10 - platform: time_based name: "Cover_06" id: cover_06 assumed_state: false open_action: - switch.turn_on: relay11 open_duration: 30s close_action: - switch.turn_on: relay12 close_duration: 30s stop_action: - switch.turn_off: relay11 - switch.turn_off: relay12 - platform: time_based name: "Cover_07" id: cover_07 assumed_state: false open_action: - switch.turn_on: relay13 open_duration: 30s close_action: - switch.turn_on: relay14 close_duration: 30s stop_action: - switch.turn_off: relay13 - switch.turn_off: relay14 - platform: time_based name: "Cover_08" id: cover_08 assumed_state: false open_action: - switch.turn_on: relay15 open_duration: 30s close_action: - switch.turn_on: relay16 close_duration: 30s stop_action: - switch.turn_off: relay15 - switch.turn_off: relay16 - platform: time_based name: "Cover_09" id: cover_09 assumed_state: false open_action: - switch.turn_on: relay17 open_duration: 30s close_action: - switch.turn_on: relay18 close_duration: 30s stop_action: - switch.turn_off: relay17 - switch.turn_off: relay18 - platform: time_based name: "Cover_10" id: cover_10 assumed_state: false open_action: - switch.turn_on: relay19 open_duration: 30s close_action: - switch.turn_on: relay20 close_duration: 30s stop_action: - switch.turn_off: relay19 - switch.turn_off: relay20 - platform: time_based name: "Cover_11" id: cover_11 assumed_state: false open_action: - switch.turn_on: relay21 open_duration: 30s close_action: - switch.turn_on: relay22 close_duration: 30s stop_action: - switch.turn_off: relay21 - switch.turn_off: relay22 - platform: time_based name: "Cover_12" id: cover_12 assumed_state: false open_action: - switch.turn_on: relay23 open_duration: 30s close_action: - switch.turn_on: relay24 close_duration: 30s stop_action: - switch.turn_off: relay23 - switch.turn_off: relay24 - platform: time_based name: "Cover_13" id: cover_13 assumed_state: false open_action: - switch.turn_on: relay25 open_duration: 30s close_action: - switch.turn_on: relay26 close_duration: 30s stop_action: - switch.turn_off: relay25 - switch.turn_off: relay26 - platform: time_based name: "Cover_14" id: cover_14 assumed_state: false open_action: - switch.turn_on: relay27 open_duration: 30s close_action: - switch.turn_on: relay28 close_duration: 30s stop_action: - switch.turn_off: relay27 - switch.turn_off: relay28 - platform: time_based name: "Cover_15" id: cover_15 assumed_state: false open_action: - switch.turn_on: relay29 open_duration: 30s close_action: - switch.turn_on: relay30 close_duration: 30s stop_action: - switch.turn_off: relay29 - switch.turn_off: relay30 - platform: time_based name: "Cover_16" id: cover_16 assumed_state: false open_action: - switch.turn_on: relay31 open_duration: 30s close_action: - switch.turn_on: relay32 close_duration: 30s stop_action: - switch.turn_off: relay31 - switch.turn_off: relay32 binary_sensor: - platform: gpio name: "IN_01" pin: mcp23xxx: mcp_1 number: 0 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_01 on_release: cover.stop: cover_01 - platform: gpio name: "IN_02" pin: mcp23xxx: mcp_1 number: 1 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_01 on_release: cover.stop: cover_01 - platform: gpio name: "IN_03" pin: mcp23xxx: mcp_1 number: 2 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_02 on_release: cover.stop: cover_02 - platform: gpio name: "IN_04" pin: mcp23xxx: mcp_1 number: 3 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_02 on_release: cover.stop: cover_02 - platform: gpio name: "IN_05" pin: mcp23xxx: mcp_1 number: 4 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_03 on_release: cover.stop: cover_03 - platform: gpio name: "IN_06" pin: mcp23xxx: mcp_1 number: 5 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_03 on_release: cover.stop: cover_03 - platform: gpio name: "IN_07" pin: mcp23xxx: mcp_1 number: 6 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_04 on_release: cover.stop: cover_04 - platform: gpio name: "IN_08" pin: mcp23xxx: mcp_1 number: 7 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_04 on_release: cover.stop: cover_04 - platform: gpio name: "IN_09" pin: mcp23xxx: mcp_1 number: 8 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_05 on_release: cover.stop: cover_05 - platform: gpio name: "IN_10" pin: mcp23xxx: mcp_1 number: 9 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_05 on_release: cover.stop: cover_05 - platform: gpio name: "IN_11" pin: mcp23xxx: mcp_1 number: 10 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_06 on_release: cover.stop: cover_06 - platform: gpio name: "IN_12" pin: mcp23xxx: mcp_1 number: 11 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_06 on_release: cover.stop: cover_06 - platform: gpio name: "IN_13" pin: mcp23xxx: mcp_1 number: 12 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_07 on_release: cover.stop: cover_07 - platform: gpio name: "IN_14" pin: mcp23xxx: mcp_1 number: 13 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_07 on_release: cover.stop: cover_07 - platform: gpio name: "IN_15" pin: mcp23xxx: mcp_1 number: 14 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_08 on_release: cover.stop: cover_08 - platform: gpio name: "IN_16" pin: mcp23xxx: mcp_1 number: 15 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_08 on_release: cover.stop: cover_08 - platform: gpio name: "IN_17" pin: mcp23xxx: mcp_2 number: 7 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_09 on_release: cover.stop: cover_09 - platform: gpio name: "IN_18" pin: mcp23xxx: mcp_2 number: 6 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_09 on_release: cover.stop: cover_09 - platform: gpio name: "IN_19" pin: mcp23xxx: mcp_2 number: 5 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_10 on_release: cover.stop: cover_10 - platform: gpio name: "IN_20" pin: mcp23xxx: mcp_2 number: 4 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_10 on_release: cover.stop: cover_10 - platform: gpio name: "IN_21" pin: mcp23xxx: mcp_2 number: 3 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_11 on_release: cover.stop: cover_11 - platform: gpio name: "IN_22" pin: mcp23xxx: mcp_2 number: 2 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_11 on_release: cover.stop: cover_11 - platform: gpio name: "IN_23" pin: mcp23xxx: mcp_2 number: 1 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_12 on_release: cover.stop: cover_12 - platform: gpio name: "IN_24" pin: mcp23xxx: mcp_2 number: 0 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_12 on_release: cover.stop: cover_12 - platform: gpio name: "IN_25" pin: mcp23xxx: mcp_2 number: 8 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_13 on_release: cover.stop: cover_13 - platform: gpio name: "IN_26" pin: mcp23xxx: mcp_2 number: 9 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_13 on_release: cover.stop: cover_13 - platform: gpio name: "IN_27" pin: mcp23xxx: mcp_2 number: 10 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_14 on_release: cover.stop: cover_14 - platform: gpio name: "IN_28" pin: mcp23xxx: mcp_2 number: 11 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_14 on_release: cover.stop: cover_14 - platform: gpio name: "IN_29" pin: mcp23xxx: mcp_2 number: 12 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_15 on_release: cover.stop: cover_15 - platform: gpio name: "IN_30" pin: mcp23xxx: mcp_2 number: 13 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_15 on_release: cover.stop: cover_15 - platform: gpio name: "IN_31" pin: mcp23xxx: mcp_2 number: 14 mode: input: true pullup: false inverted: true on_press: then: cover.open: cover_16 on_release: cover.stop: cover_16 - platform: gpio name: "IN_32" pin: mcp23xxx: mcp_2 number: 15 mode: input: true pullup: false inverted: true on_press: then: cover.close: cover_16 on_release: cover.stop: cover_16 - platform: gpio name: "IN_33" pin: number: GPIO33 mode: input: true pullup: false inverted: true - platform: gpio name: "IN_34" pin: number: GPIO17 mode: input: true pullup: false inverted: true - platform: gpio name: "IN_35" pin: number: GPIO12 mode: input: true pullup: true inverted: false - platform: gpio name: "USER_SWITCH" pin: number: GPIO4 mode: input: true pullup: true inverted: true on_press: then: - display.page.show_next: oled_display - component.update: oled_display text_sensor: - platform: template name: "IP" id: IP entity_category: diagnostic icon: "mdi:ip-network" lambda: return { id(eth).get_ip_address().str() }; update_interval: 30s dallas: - pin: GPIO32 sensor: - platform: pct2075 temperature: name: "PCT2075 Temperature" update_interval: 30s # - platform: mcp9808 # name: "MCP9808 temp" # update_interval: 60s - platform: dallas address: 0x283c01d607d4df28 name: "Dallas Sensor 1" - platform: dallas address: 0xdfe67a061e64ff28 name: "Dallas Sensor 2" - platform: dallas address: 0xa7a89f071e64ff28 name: "Dallas Sensor 3" - platform: ina219 address: 0x40 shunt_resistance: 0.1 ohm current: name: "INA219 Current" power: name: "INA219 Power" bus_voltage: name: "INA219 Bus Voltage" shunt_voltage: name: "INA219 Shunt Voltage" max_voltage: 32.0V max_current: 3.2A update_interval: 30s - platform: adc pin: GPIO36 name: "ADC_1" update_interval: 5s - platform: adc pin: GPIO39 name: "ADC_2" update_interval: 5s display: - platform: ssd1306_i2c id: oled_display model: "SH1106 128x64" address: 0x3C contrast: 0.5 pages: - id: page1 lambda: |- it.rectangle(0, 0, 126, 15); it.printf(64,12, id(font1), TextAlign::BASELINE_CENTER, "BoneiO ESP"); # it.printf(1, 27, id(font1), TextAlign::BASELINE_LEFT, "IP:"); # it.printf(125, 27, id(font1), TextAlign::BASELINE_RIGHT, "%.2s", id(IP).state); - id: page2 lambda: |- it.rectangle(0, 0, 126, 15); it.printf(64,12, id(font1), TextAlign::BASELINE_CENTER, "My Friend"); # interval: # - interval: 5s # then: # - display.page.show_next: oled_display # - component.update: oled_display font: - file: 'arial.ttf' id: font1 size: 11 glyphs: - ' ' - '/' - '!' - '"' - '%' - ( - ) - + - ',' - '-' - . - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - ':' - A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - _ - a - b - c - d - e - f - g - h - i - j - k - l - m - n - o - p - q - r - s - t - u - v - w - x - y - z - °