diff --git a/boards/cover.yaml b/boards/cover.yaml new file mode 100755 index 0000000..a3874c6 --- /dev/null +++ b/boards/cover.yaml @@ -0,0 +1,103 @@ +cover: +- platform: time_based + name: "${node_name} Cover 01" + device_class: shutter + id: cover_01 + open_action: + - switch.turn_off: cover_close_01 + - switch.turn_on: cover_open_01 + open_duration: 60s + close_action: + - switch.turn_off: cover_open_01 + - switch.turn_on: cover_close_01 + close_duration: 60s + stop_action: + - switch.turn_off: cover_open_01 + - switch.turn_off: cover_close_01 + tilt_action: + - cover.close: this cover + - delay: 2s + - switch.turn_on: open_cover_switch + - lambda: |- wyliczenie czasu z zadanej pozycji + - delay: X + - switch.turn_off: open_cover_switch + +- platform: time_based + name: "${node_name} Cover 02" + device_class: shutter + id: cover_02 + open_action: + - switch.turn_off: cover_close_02 + - switch.turn_on: cover_open_02 + open_duration: 60s + close_action: + - switch.turn_off: cover_open_02 + - switch.turn_on: cover_close_02 + close_duration: 60s + stop_action: + - switch.turn_off: cover_open_02 + - switch.turn_off: cover_close_02 + +- platform: time_based + name: "${node_name} Cover 03" + device_class: shutter + id: cover_03 + open_action: + - switch.turn_off: cover_close_03 + - switch.turn_on: cover_open_03 + open_duration: 60s + close_action: + - switch.turn_off: cover_open_03 + - switch.turn_on: cover_close_03 + close_duration: 60s + stop_action: + - switch.turn_off: cover_open_03 + - switch.turn_off: cover_close_03 + +- platform: time_based + name: "${node_name} Cover 04" + device_class: shutter + id: cover_04 + open_action: + - switch.turn_off: cover_close_04 + - switch.turn_on: cover_open_04 + open_duration: 60s + close_action: + - switch.turn_off: cover_open_04 + - switch.turn_on: cover_close_04 + close_duration: 60s + stop_action: + - switch.turn_off: cover_open_04 + - switch.turn_off: cover_close_04 + +- platform: time_based + name: "${node_name} Cover 05" + device_class: shutter + id: cover_05 + open_action: + - switch.turn_off: cover_close_05 + - switch.turn_on: cover_open_05 + open_duration: 60s + close_action: + - switch.turn_off: cover_open_05 + - switch.turn_on: cover_close_05 + close_duration: 60s + stop_action: + - switch.turn_off: cover_open_05 + - switch.turn_off: cover_close_05 + +- platform: time_based + name: "${node_name} Cover 06" + device_class: shutter + id: cover_06 + open_action: + - switch.turn_off: cover_close_06 + - switch.turn_on: cover_open_06 + open_duration: 60s + close_action: + - switch.turn_off: cover_open_06 + - switch.turn_on: cover_close_06 + close_duration: 60s + stop_action: + - switch.turn_off: cover_open_06 + - switch.turn_off: cover_close_06 diff --git a/boards/cover16_inputs.yaml b/boards/cover16_inputs.yaml new file mode 100755 index 0000000..298dc3c --- /dev/null +++ b/boards/cover16_inputs.yaml @@ -0,0 +1,485 @@ + +binary_sensor: + - platform: gpio + name: "${node_name} IN_01" + id: in_01 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 0 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.open: cover_01 + on_release: + then: + cover.stop: cover_01 + + - platform: gpio + name: "${node_name} IN_02" + id: in_02 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 1 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.close: cover_01 + on_release: + then: + cover.stop: cover_01 + + - platform: gpio + name: "${node_name} IN_03" + id: in_03 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 2 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.open: cover_02 + on_release: + then: + cover.stop: cover_02 + + - platform: gpio + name: "${node_name} IN_04" + id: in_04 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 3 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.close: cover_02 + on_release: + then: + cover.stop: cover_02 + + - platform: gpio + name: "${node_name} IN_05" + id: in_05 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 4 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.open: cover_03 + on_release: + then: + cover.stop: cover_03 + + - platform: gpio + name: "${node_name} IN_06" + id: in_06 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 5 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.close: cover_03 + on_release: + then: + cover.stop: cover_03 + + - platform: gpio + name: "${node_name} IN_07" + id: in_07 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 6 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.open: cover_04 + on_release: + then: + cover.stop: cover_04 + + - platform: gpio + name: "${node_name} IN_08" + id: in_08 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 7 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.close: cover_04 + on_release: + then: + cover.stop: cover_04 + + - platform: gpio + name: "${node_name} IN_09" + id: in_09 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 8 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.open: cover_05 + on_release: + then: + cover.stop: cover_05 + + - platform: gpio + name: "${node_name} IN_10" + id: in_10 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 9 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.close: cover_05 + on_release: + then: + cover.stop: cover_05 + + - platform: gpio + name: "${node_name} IN_11" + id: in_11 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 10 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.open: cover_06 + on_release: + then: + cover.stop: cover_06 + + - platform: gpio + name: "${node_name} IN_12" + id: in_12 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 11 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + cover.close: cover_06 + on_release: + then: + cover.stop: cover_06 + + - platform: gpio + name: "${node_name} IN_13" + id: in_13 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 12 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_13 + + - platform: gpio + name: "${node_name} IN_14" + id: in_14 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 13 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_14 + + - platform: gpio + name: "${node_name} IN_15" + id: in_15 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 14 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_15 + + - platform: gpio + name: "${node_name} IN_16" + id: in_16 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 15 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_16 + + - platform: gpio + name: "${node_name} IN_17" + id: in_17 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 7 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_17 + + - platform: gpio + name: "${node_name} IN_18" + id: in_18 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 6 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_18 + + - platform: gpio + name: "${node_name} IN_19" + id: in_19 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 5 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_19 + + - platform: gpio + name: "${node_name} IN_20" + id: in_20 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 4 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_20 + + - platform: gpio + name: "${node_name} IN_21" + id: in_21 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 3 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_21 + + - platform: gpio + name: "${node_name} IN_22" + id: in_22 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 2 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_22 + + - platform: gpio + name: "${node_name} IN_23" + id: in_23 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 1 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_22 + + - platform: gpio + name: "${node_name} IN_24" + id: in_24 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 0 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_24 + + - platform: gpio + name: "${node_name} IN_25" + id: in_25 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 8 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_25 + + - platform: gpio + name: "${node_name} IN_26" + id: in_26 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 9 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_26 + + - platform: gpio + name: "${node_name} IN_27" + id: in_27 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 10 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_27 + + - platform: gpio + name: "${node_name} IN_28" + id: in_28 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 11 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_28 + + - platform: gpio + name: "${node_name} IN_29" + id: in_29 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 12 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_29 + + - platform: gpio + name: "${node_name} IN_30" + id: in_30 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 13 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_30 + + - platform: gpio + name: "${node_name} IN_31" + id: in_31 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 14 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_31 + + - platform: gpio + name: "${node_name} IN_32" + id: in_32 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 15 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_32 diff --git a/boards/cover16_outputs.yaml b/boards/cover16_outputs.yaml new file mode 100755 index 0000000..783e308 --- /dev/null +++ b/boards/cover16_outputs.yaml @@ -0,0 +1,297 @@ + +mcp23017: + - id: 'mcp_outputs_1to16' + address: 0x21 + - id: 'mcp_outputs_17to32' + address: 0x20 + +switch: + - platform: gpio + id: cover_open_01 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 0 + mode: OUTPUT + interlock: &cover_interlock_01 [cover_open_01, cover_close_01] + restore_mode: always off + + - platform: gpio + id: cover_close_01 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 1 + mode: OUTPUT + interlock: *cover_interlock_01 + restore_mode: always off + + - platform: gpio + id: cover_open_02 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 2 + mode: OUTPUT + interlock: &cover_interlock_02 [cover_open_02, cover_close_02] + restore_mode: always off + + - platform: gpio + id: cover_close_02 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 3 + mode: OUTPUT + interlock: *cover_interlock_02 + restore_mode: always off + + - platform: gpio + id: cover_open_03 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 4 + mode: OUTPUT + interlock: &cover_interlock_03 [cover_open_03, cover_close_03] + restore_mode: always off + + - platform: gpio + id: cover_close_03 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 5 + mode: OUTPUT + interlock: *cover_interlock_03 + restore_mode: always off + + - platform: gpio + id: cover_open_04 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 6 + mode: OUTPUT + interlock: &cover_interlock_04 [cover_open_04, cover_close_04] + restore_mode: always off + + - platform: gpio + id: cover_close_04 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 7 + mode: OUTPUT + interlock: *cover_interlock_04 + restore_mode: always off + + - platform: gpio + id: cover_open_05 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 0 + mode: OUTPUT + interlock: &cover_interlock_05 [cover_open_05, cover_close_05] + restore_mode: always off + + - platform: gpio + id: cover_close_05 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 1 + mode: OUTPUT + interlock: *cover_interlock_05 + restore_mode: always off + + - platform: gpio + id: cover_open_06 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 2 + mode: OUTPUT + interlock: &cover_interlock_06 [cover_open_06, cover_close_06] + restore_mode: always off + + - platform: gpio + id: cover_close_06 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 3 + mode: OUTPUT + interlock: *cover_interlock_06 + restore_mode: always off + + +# relay + - platform: gpio + id: relay_13 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 4 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_14 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 5 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_15 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 6 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_16 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 7 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_17 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 15 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_18 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 14 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_19 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 13 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_20 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 12 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_21 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 11 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_22 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 10 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_23 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 9 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_24 + pin: + mcp23xxx: mcp_outputs_1to16 + number: 8 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_25 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 15 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_26 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 14 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_27 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 13 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_28 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 12 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_29 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 11 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_30 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 10 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_31 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 9 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_32 + pin: + mcp23xxx: mcp_outputs_17to32 + number: 8 + mode: + output: true + inverted: false diff --git a/boards/dimmer_led8x4_inputs.yaml b/boards/dimmer_led8x4_inputs.yaml new file mode 100755 index 0000000..30eea1a --- /dev/null +++ b/boards/dimmer_led8x4_inputs.yaml @@ -0,0 +1,559 @@ +# require light configuration (monochromatic_light.yaml) +binary_sensor: + - platform: gpio + name: "${node_name} IN_01" + id: in_01 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 0 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_1 + + - platform: gpio + name: "${node_name} IN_02" + id: in_02 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 1 + mode: + input: true + pullup: false + inverted: true + on_press: + - light.toggle: + id: led_2 + + - platform: gpio + name: "${node_name} IN_03" + id: in_03 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 2 + mode: + input: true + pullup: false + inverted: true + on_press: + - light.toggle: + id: led_3 + + - platform: gpio + name: "${node_name} IN_04" + id: in_04 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 3 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_4 + + - platform: gpio + name: "${node_name} IN_05" + id: in_05 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 4 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_5 + + - platform: gpio + name: "${node_name} IN_06" + id: in_06 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 5 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_6 + + - platform: gpio + name: "${node_name} IN_07" + id: in_07 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 6 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_7 + + - platform: gpio + name: "${node_name} IN_08" + id: in_08 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 7 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_8 + + - platform: gpio + name: "${node_name} IN_09" + id: in_09 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 8 + mode: + input: true + pullup: false + inverted: true + on_press: + - while: + condition: + binary_sensor.is_on: in_09 + then: + - logger.log: "Dimm light led_4 by -5%" + - light.dim_relative: + id: led_4 + relative_brightness: -5% + transition_length: 0.2s + - delay: 0.2s + + - platform: gpio + name: "${node_name} IN_10" + id: in_10 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 9 + mode: + input: true + pullup: false + inverted: true + on_press: + - while: + condition: + binary_sensor.is_on: in_10 + then: + - logger.log: "Dimm light led_4 by -10%" + - light.dim_relative: + id: led_4 + relative_brightness: -10% + transition_length: 0.2s + - delay: 0.2s + + - platform: gpio + name: "${node_name} IN_11" + id: in_11 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 10 + mode: + input: true + pullup: false + inverted: true + on_press: + - while: + condition: + binary_sensor.is_on: in_11 + then: + - logger.log: "Dimm light led_4 by 5%" + - light.dim_relative: + id: led_4 + relative_brightness: 5% + transition_length: 0.2s + - delay: 0.2s + + - platform: gpio + name: "${node_name} IN_12" + id: in_12 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 11 + mode: + input: true + pullup: false + inverted: true + on_press: + - while: + condition: + binary_sensor.is_on: in_12 + then: + - logger.log: "Dimm light led_4 by 10%" + - light.dim_relative: + id: led_4 + relative_brightness: 10% + transition_length: 0.2s + - delay: 0.2s + + - platform: gpio + name: "${node_name} IN_13" + id: in_13 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 12 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_13 + + - platform: gpio + name: "${node_name} IN_14" + id: in_14 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 13 + mode: + input: true + pullup: false + inverted: true + on_press: + - if: + condition: + light.is_on: led_4 + then: + - while: + condition: + binary_sensor.is_on: in_14 + then: + - logger.log: "Dimm light led_4 by -10%" + - light.dim_relative: + id: led_4 + relative_brightness: -10% + transition_length: 0.2s + - delay: 0.2s + else: + - while: + condition: + binary_sensor.is_on: in_14 + then: + - logger.log: "Dimm light led_4 by 10%" + - light.dim_relative: + id: led_4 + relative_brightness: 10% + transition_length: 0.2s + - delay: 0.2s + + - platform: gpio + name: "${node_name} IN_15" + id: in_15 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 14 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_15 + + - platform: gpio + name: "${node_name} IN_16" + id: in_16 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 15 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_16 + + - platform: gpio + name: "${node_name} IN_17" + id: in_17 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 7 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_17 + + - platform: gpio + name: "${node_name} IN_18" + id: in_18 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 6 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_18 + + - platform: gpio + name: "${node_name} IN_19" + id: in_19 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 5 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_19 + + - platform: gpio + name: "${node_name} IN_20" + id: in_20 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 4 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_20 + + - platform: gpio + name: "${node_name} IN_21" + id: in_21 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 3 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_21 + + - platform: gpio + name: "${node_name} IN_22" + id: in_22 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 2 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_22 + + - platform: gpio + name: "${node_name} IN_23" + id: in_23 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 1 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_23 + + - platform: gpio + name: "${node_name} IN_24" + id: in_24 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 0 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_24 + + - platform: gpio + name: "${node_name} IN_25" + id: in_25 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 8 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_25 + + - platform: gpio + name: "${node_name} IN_26" + id: in_26 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 9 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_26 + + - platform: gpio + name: "${node_name} IN_27" + id: in_27 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 10 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_27 + + - platform: gpio + name: "${node_name} IN_28" + id: in_28 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 11 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_28 + + - platform: gpio + name: "${node_name} IN_29" + id: in_29 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 12 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_29 + + - platform: gpio + name: "${node_name} IN_30" + id: in_30 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 13 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_30 + + - platform: gpio + name: "${node_name} IN_31" + id: in_31 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 14 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_31 + + - platform: gpio + name: "${node_name} IN_32" + id: in_32 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 15 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - light.toggle: + id: led_32 + + - platform: gpio + name: "${node_name} IN_33" + id: in_33 + pin: + number: GPIO33 + mode: + input: true + pullup: false + inverted: true + + - platform: gpio + name: "${node_name} IN_34" + id: in_34 + pin: + number: GPIO17 + mode: + input: true + pullup: false + inverted: true + + - platform: gpio + name: "${node_name} IN_35" + id: in_35 + pin: + number: GPIO12 + mode: + input: true + pullup: false + inverted: false diff --git a/boards/dimmer_led8x4_outputs.yaml b/boards/dimmer_led8x4_outputs.yaml new file mode 100755 index 0000000..71ea978 --- /dev/null +++ b/boards/dimmer_led8x4_outputs.yaml @@ -0,0 +1,140 @@ +# i2c address: 0x41 output pca pwm +# i2c address: 0x42 output pca pwm + +pca9685: + - address: 0x41 + id: pca_hub_1to16 + frequency: 500 + - address: 0x42 + id: pca_hub_17to32 + frequency: 500 + +output: + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_1' + channel: 0 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_2' + channel: 1 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_3' + channel: 2 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_4' + channel: 3 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_5' + channel: 4 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_6' + channel: 5 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_7' + channel: 6 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_8' + channel: 7 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_9' + channel: 8 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_10' + channel: 9 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_11' + channel: 10 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_12' + channel: 11 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_13' + channel: 12 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_14' + channel: 13 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_15' + channel: 14 + - platform: pca9685 + pca9685_id: 'pca_hub_1to16' + id: 'pca_output_16' + channel: 15 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_17' + channel: 0 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_18' + channel: 1 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_19' + channel: 2 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_20' + channel: 3 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_21' + channel: 4 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_22' + channel: 5 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_23' + channel: 6 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_24' + channel: 7 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_25' + channel: 8 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_26' + channel: 9 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_27' + channel: 10 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_28' + channel: 11 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_29' + channel: 12 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_30' + channel: 13 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_31' + channel: 14 + - platform: pca9685 + pca9685_id: 'pca_hub_17to32' + id: 'pca_output_32' + channel: 15 diff --git a/boards/monochromatic_lights.yaml b/boards/monochromatic_lights.yaml new file mode 100755 index 0000000..5a28e53 --- /dev/null +++ b/boards/monochromatic_lights.yaml @@ -0,0 +1,161 @@ +light: + - platform: monochromatic + output: pca_output_1 + name: "${node_name} LED 01" + id: led_1 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_2 + name: "${node_name} LED 02" + id: led_2 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_3 + name: "${node_name} LED 03" + id: led_3 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_4 + name: "${node_name} LED 04" + id: led_4 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_5 + name: "${node_name} LED 05" + id: led_5 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_6 + name: "${node_name} LED 06" + id: led_6 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_7 + name: "${node_name} LED 07" + id: led_7 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_8 + name: "${node_name} LED 08" + id: led_8 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_9 + name: "${node_name} LED 09" + id: led_9 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_10 + name: "${node_name} LED 10" + id: led_10 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_11 + name: "${node_name} LED 11" + id: led_11 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_12 + name: "${node_name} LED 12" + id: led_12 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_13 + name: "${node_name} LED 13" + id: led_13 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_14 + name: "${node_name} LED 14" + id: led_14 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_15 + name: "${node_name} LED 15" + id: led_15 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_16 + name: "${node_name} LED 16" + id: led_16 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_17 + name: "${node_name} LED 17" + id: led_17 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_18 + name: "${node_name} LED 18" + id: led_18 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_19 + name: "${node_name} LED 19" + id: led_19 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_20 + name: "${node_name} LED 20" + id: led_20 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_21 + name: "${node_name} LED 21" + id: led_21 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_22 + name: "${node_name} LED 22" + id: led_22 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_23 + name: "${node_name} LED 23" + id: led_23 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_24 + name: "${node_name} LED 24" + id: led_24 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_25 + name: "${node_name} LED 25" + id: led_25 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_26 + name: "${node_name} LED 26" + id: led_26 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_27 + name: "${node_name} LED 27" + id: led_27 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_28 + name: "${node_name} LED 28" + id: led_28 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_29 + name: "${node_name} LED 29" + id: led_29 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_30 + name: "${node_name} LED 30" + id: led_30 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_31 + name: "${node_name} LED 31" + id: led_31 + default_transition_length: 2s + - platform: monochromatic + output: pca_output_32 + name: "${node_name} LED 32" + id: led_32 + default_transition_length: 2s diff --git a/boards/relay32_inputs.yaml b/boards/relay32_inputs.yaml new file mode 100755 index 0000000..9ab8d89 --- /dev/null +++ b/boards/relay32_inputs.yaml @@ -0,0 +1,455 @@ +#i2c addresses +# address: 0x26 input mcp io +# address: 0x27 input mcp io +# address: 0x3C input oled +# address: 0x40 input ina219 power +# address: 0x68 input rtc ds1307 + +binary_sensor: + - platform: gpio + name: "${node_name} IN_01" + id: in_01 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 0 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_1 + + - platform: gpio + name: "${node_name} IN_02" + id: in_02 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 1 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_2 + + - platform: gpio + name: "${node_name} IN_03" + id: in_03 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 2 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_3 + + - platform: gpio + name: "${node_name} IN_04" + id: in_04 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 3 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_4 + + - platform: gpio + name: "${node_name} IN_05" + id: in_05 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 4 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_5 + + - platform: gpio + name: "${node_name} IN_06" + id: in_06 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 5 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_6 + + - platform: gpio + name: "${node_name} IN_07" + id: in_07 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 6 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_7 + + - platform: gpio + name: "${node_name} IN_08" + id: in_08 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 7 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_8 + + - platform: gpio + name: "${node_name} IN_09" + id: in_09 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 8 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_9 + + - platform: gpio + name: "${node_name} IN_10" + id: in_10 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 9 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_10 + + - platform: gpio + name: "${node_name} IN_11" + id: in_11 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 10 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_11 + + - platform: gpio + name: "${node_name} IN_12" + id: in_12 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 11 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_12 + + - platform: gpio + name: "${node_name} IN_13" + id: in_13 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 12 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_13 + + - platform: gpio + name: "${node_name} IN_14" + id: in_14 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 13 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_14 + + - platform: gpio + name: "${node_name} IN_15" + id: in_15 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 14 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_15 + + - platform: gpio + name: "${node_name} IN_16" + id: in_16 + pin: + mcp23xxx: mcp_inputs_1to16 + number: 15 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_16 + + - platform: gpio + name: "${node_name} IN_17" + id: in_17 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 7 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_17 + + - platform: gpio + name: "${node_name} IN_18" + id: in_18 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 6 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_18 + + - platform: gpio + name: "${node_name} IN_19" + id: in_19 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 5 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_19 + + - platform: gpio + name: "${node_name} IN_20" + id: in_20 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 4 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_20 + + - platform: gpio + name: "${node_name} IN_21" + id: in_21 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 3 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_21 + + - platform: gpio + name: "${node_name} IN_22" + id: in_22 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 2 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_22 + + - platform: gpio + name: "${node_name} IN_23" + id: in_23 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 1 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_22 + + - platform: gpio + name: "${node_name} IN_24" + id: in_24 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 0 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_24 + + - platform: gpio + name: "${node_name} IN_25" + id: in_25 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 8 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_25 + + - platform: gpio + name: "${node_name} IN_26" + id: in_26 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 9 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_26 + + - platform: gpio + name: "${node_name} IN_27" + id: in_27 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 10 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_27 + + - platform: gpio + name: "${node_name} IN_28" + id: in_28 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 11 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_28 + + - platform: gpio + name: "${node_name} IN_29" + id: in_29 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 12 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_29 + + - platform: gpio + name: "${node_name} IN_30" + id: in_30 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 13 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_30 + + - platform: gpio + name: "${node_name} IN_31" + id: in_31 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 14 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_31 + + - platform: gpio + name: "${node_name} IN_32" + id: in_32 + pin: + mcp23xxx: mcp_inputs_17to32 + number: 15 + mode: + input: true + pullup: false + inverted: true + on_press: + then: + - switch.toggle: relay_32 diff --git a/boards/relay32_outputs.yaml b/boards/relay32_outputs.yaml new file mode 100755 index 0000000..3b73115 --- /dev/null +++ b/boards/relay32_outputs.yaml @@ -0,0 +1,327 @@ + +mcp23017: + - id: 'mcp_outputs_1to16' + address: 0x21 + - id: 'mcp_outputs_17to32' + address: 0x20 + +switch: + - platform: gpio + id: relay_1 + name: "${node_name} Relay 01" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 0 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_2 + name: "${node_name} Relay 02" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 1 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_3 + name: "${node_name} Relay 03" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 2 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_4 + name: "${node_name} Relay 04" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 3 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_5 + name: "${node_name} Relay 05" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 4 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_6 + name: "${node_name} Relay 06" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 5 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_7 + name: "${node_name} Relay 07" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 6 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_8 + name: "${node_name} Relay 08" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 7 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_9 + name: "${node_name} Relay 09" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 0 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_10 + name: "${node_name} Relay 10" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 1 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_11 + name: "${node_name} Relay 11" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 2 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_12 + name: "${node_name} Relay 12" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 3 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_13 + name: "${node_name} Relay 13" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 4 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_14 + name: "${node_name} Relay 14" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 5 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_15 + name: "${node_name} Relay 15" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 6 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_16 + name: "${node_name} Relay 16" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 7 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_17 + name: "${node_name} Relay 17" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 15 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_18 + name: "${node_name} Relay 18" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 14 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_19 + name: "${node_name} Relay 19" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 13 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_20 + name: "${node_name} Relay 20" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 12 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_21 + name: "${node_name} Relay 21" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 11 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_22 + name: "${node_name} Relay 22" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 10 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_23 + name: "${node_name} Relay 23" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 9 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_24 + name: "${node_name} Relay 24" + pin: + mcp23xxx: mcp_outputs_1to16 + number: 8 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_25 + name: "${node_name} Relay 25" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 15 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_26 + name: "${node_name} Relay 26" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 14 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_27 + name: "${node_name} Relay 27" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 13 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_28 + name: "${node_name} Relay 28" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 12 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_29 + name: "${node_name} Relay 29" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 11 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_30 + name: "${node_name} Relay 30" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 10 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_31 + name: "${node_name} Relay 31" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 9 + mode: + output: true + inverted: false + + - platform: gpio + id: relay_32 + name: "${node_name} Relay 32" + pin: + mcp23xxx: mcp_outputs_17to32 + number: 8 + mode: + output: true + inverted: false diff --git a/boneIOsample.yml b/boneIOsample.yml new file mode 100644 index 0000000..b188264 --- /dev/null +++ b/boneIOsample.yml @@ -0,0 +1,42 @@ +substitutions: + node_name: boneio + +packages: +# devices + core: !include devices/wt32_eth01.yaml + internals: !include devices/boneio_board.yaml + temp: !include devices/lm75b.yaml + display: !include devices/display.yaml + # uart: !include devices/uart.yaml + # one_wire: !include devices/one_wire.yaml +# relay32 + # output: !include boards/relay32_outputs.yaml + # input: !include boards/relay32_inputs.yaml +# dimmer led + # output: !include boards/dimmer_led8x4_outputs.yaml + # input: !include boards/dimmer_led8x4_inputs.yaml + # light: !include boards/monochromatic_lights.yaml +# cover + output: !include boards/cover16_outputs.yaml + # input: !include boards/cover16_inputs.yaml + cover: !include boards/cover.yaml + +logger: + baud_rate: 0 +api: +ota: + password: secret_ota_password +# disable web server - for testing only +web_server: + port: 80 + local: true + +time: + - platform: homeassistant + timezone: Europe/Warsaw + id: homeassistant_time + # instead try to synchronize via network repeatedly ... + on_time_sync: + then: + # ... and update the RTC when the synchronization was successful + ds1307.write_time: diff --git a/devices/boneio_board.yaml b/devices/boneio_board.yaml new file mode 100755 index 0000000..f7e32ab --- /dev/null +++ b/devices/boneio_board.yaml @@ -0,0 +1,34 @@ +#i2c address: 0x26 input mcp io +#i2c address: 0x27 input mcp io +#i2c address: 0x40 input ina219 power +#i2c address: 0x68 input rtc ds1307 +time: + - platform: ds1307 + id: ds1307_time + +sensor: +# Module power consmption + - platform: ina219 + address: 0x40 + shunt_resistance: 0.1 ohm + current: + id: ina_current + name: "${node_name} INA219 Current" + power: + id: ina_power + name: "${node_name} INA219 Power" + bus_voltage: + id: ina_bus_voltage + name: "${node_name} INA219 Bus Voltage" + shunt_voltage: + id: ina_shunt_voltage + name: "${node_name} INA219 Shunt Voltage" + max_voltage: 32.0V + max_current: 3.2A + update_interval: 30s + +mcp23017: + - id: 'mcp_inputs_1to16' + address: 0x26 + - id: 'mcp_inputs_17to32' + address: 0x27 diff --git a/devices/display.yaml b/devices/display.yaml new file mode 100755 index 0000000..a340de7 --- /dev/null +++ b/devices/display.yaml @@ -0,0 +1,138 @@ +#i2c address: 0x3C input oled +sensor: + - platform: uptime + id: wt32_uptime_seconds + update_interval: 60s + entity_category: diagnostic + on_raw_value: + then: + - text_sensor.template.publish: + id: wt32_uptime + state: !lambda |- + int seconds = round(id(wt32_uptime_seconds).raw_state); + int days = seconds / (24 * 3600); + seconds = seconds % (24 * 3600); + int hours = seconds / 3600; + seconds = seconds % 3600; + int minutes = seconds / 60; + return ( + (days ? to_string(days) + "d " : "") + + (hours ? to_string(hours) + "h " : "") + + (to_string(minutes) + "m") + ).c_str(); + +text_sensor: + - platform: template + name: ${node_name} Uptime + id: wt32_uptime + entity_category: diagnostic + icon: mdi:clock-start + +script: + - id: screensaver_script + # screensaver script, turn on screensaver after 30 seconds, restart counter each time when invoked + mode: restart + then: + # set the time after which the screensaver will be activated + - delay: 30s + - display.page.show: screensaver + - component.update: oled_display + +esphome: + on_boot: + # by default display show the first page defined in display (which is the logo page) until full initialization + # after that we show the first_page and start the screensaver script + priority: 0 + then: + - display.page.show: first_page + - component.update: oled_display + - script.execute: screensaver_script + +binary_sensor: + - platform: gpio + entity_category: config + id: boneIO_button + pin: + number: GPIO4 + mode: + input: true + pullup: true + inverted: true + on_press: + then: + # woke up when on the screensaver, as well do not include the logo page and screensaver in a loop when pushing a button + - if: + condition: + # on the last page go to the first page skipping the screensaver and logo page + display.is_displaying_page: last_page + then: + - display.page.show: first_page + - component.update: oled_display + else: + - if: + condition: + # on the screensaver, show the logo for a while and display the first page + display.is_displaying_page: screensaver + then: + - display.page.show: logo_page + - component.update: oled_display + - delay: 500ms + - display.page.show: first_page + - component.update: oled_display + else: + # not the last page and screensaver go to the next page + - display.page.show_next: oled_display + - component.update: oled_display + # restart screensaver script + - script.execute: screensaver_script + +display: + - platform: ssd1306_i2c + id: oled_display + model: "SH1106 128x64" + address: 0x3C + contrast: 0.5 + pages: + - id: logo_page + lambda: |- + it.printf(64,25, id(danubeBig), TextAlign::BASELINE_CENTER, "BoneIO"); + it.printf(64,40, id(dejaVuSmall), TextAlign::BASELINE_CENTER, "take control"); + it.printf(64,50, id(dejaVuSmall), TextAlign::BASELINE_CENTER, "of your home"); + - id: first_page + lambda: |- + it.rectangle(0, 0, 126, 15); + it.printf(64,11, id(danubeSmall), TextAlign::BASELINE_CENTER, "BoneIO"); + it.strftime(64, 25, id(dejaVuSmall), TextAlign::BASELINE_CENTER ,"%c", id(ds1307_time).now()); + it.printf(4, 37, id(dejaVuSmall), TextAlign::BASELINE_LEFT ,"IP addr:"); + it.printf(124, 37, id(dejaVuSmall), TextAlign::BASELINE_RIGHT ,"%s", id(eth).get_ip_address().str().c_str()); + it.printf(4, 49, id(dejaVuSmall), TextAlign::BASELINE_LEFT ,"Uptime:"); + it.printf(124, 49, id(dejaVuSmall), TextAlign::BASELINE_RIGHT ,"%s", id(wt32_uptime).state.c_str()); + it.printf(4, 61, id(dejaVuSmall), TextAlign::BASELINE_LEFT ,"Temperature:"); + it.printf(124, 61, id(dejaVuSmall), TextAlign::BASELINE_RIGHT ,"%.2f°C", id(boneIO_temp).state); + # additional pages should be defined between the first and last page + - id: last_page + lambda: |- + it.rectangle(0, 0, 126, 15); + it.printf(64,11, id(danubeSmall), TextAlign::BASELINE_CENTER, "BoneIO"); + it.printf(4, 25, id(dejaVuSmall), TextAlign::BASELINE_LEFT ,"Current:"); + it.printf(124, 25, id(dejaVuSmall), TextAlign::BASELINE_RIGHT ,"%.3fA", id(ina_current).state); + it.printf(4, 37, id(dejaVuSmall), TextAlign::BASELINE_LEFT ,"Power:"); + it.printf(124, 37, id(dejaVuSmall), TextAlign::BASELINE_RIGHT ,"%.2fW", id(ina_power).state); + it.printf(4, 49, id(dejaVuSmall), TextAlign::BASELINE_LEFT ,"Bus Volt:"); + it.printf(124, 49, id(dejaVuSmall), TextAlign::BASELINE_RIGHT ,"%.2fV", id(ina_bus_voltage).state); + it.printf(4, 61, id(dejaVuSmall), TextAlign::BASELINE_LEFT ,"Shunt Volt:"); + it.printf(124, 61, id(dejaVuSmall), TextAlign::BASELINE_RIGHT ,"%.2fV", id(ina_shunt_voltage).state); + - id: screensaver + lambda: |- + it.fill(COLOR_OFF); + +font: + - file: "fonts/DejaVuSans.ttf" + id: dejaVuSmall + size: 9 + - file: "fonts/danube__.ttf" + id: danubeBig + size: 20 + - file: "fonts/danube__.ttf" + id: danubeSmall + size: 9 diff --git a/devices/lm75b.yaml b/devices/lm75b.yaml new file mode 100644 index 0000000..6fe5063 --- /dev/null +++ b/devices/lm75b.yaml @@ -0,0 +1,12 @@ +#i2c address: 0x48 output lm75b temp +#LM75B +external_components: + - source: github://btomala/esphome-LM75@v1.0 + components: [ lm75 ] + +sensor: +# Lower board temperature + - platform: lm75 + id: boneIO_temp + name: "${node_name} LM75B Temperature" + update_interval: 30s diff --git a/devices/one_wire.yaml b/devices/one_wire.yaml new file mode 100755 index 0000000..9aff7a6 --- /dev/null +++ b/devices/one_wire.yaml @@ -0,0 +1,15 @@ +dallas: +- pin: GPIO32 + +# sensor: +# - platform: dallas +# address: 0x283c01d607d4df28 +# name: "Dallas Sensor 1" +# +# - platform: dallas +# address: 0xdfe67a061e64ff28 +# name: "Dallas Sensor 2" +# +# - platform: dallas +# address: 0xa7a89f071e64ff28 +# name: "Dallas Sensor 3" diff --git a/devices/uart.yaml b/devices/uart.yaml new file mode 100755 index 0000000..bd87a53 --- /dev/null +++ b/devices/uart.yaml @@ -0,0 +1,6 @@ +uart: + id: uart + rx_pin: GPIO3 + tx_pin: GPIO1 + baud_rate: 9600 + stop_bits: 1 diff --git a/devices/wt32_eth01.yaml b/devices/wt32_eth01.yaml new file mode 100755 index 0000000..ff05abf --- /dev/null +++ b/devices/wt32_eth01.yaml @@ -0,0 +1,19 @@ +esphome: + name: ${node_name} + platform: ESP32 + board: nodemcu-32s + +i2c: + sda: GPIO14 + scl: GPIO15 + scan: True + frequency: 100kHz + +ethernet: + id: eth + type: LAN8720 + mdc_pin: GPIO23 + mdio_pin: GPIO18 + clk_mode: GPIO0_IN + phy_addr: 1 + power_pin: GPIO16