diff --git a/cover_32x10A_board.yaml b/cover_32x10A_board.yaml new file mode 100644 index 0000000..6938e66 --- /dev/null +++ b/cover_32x10A_board.yaml @@ -0,0 +1,1218 @@ +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 + - °