|
|
|
@ -15,36 +15,132 @@ api: |
|
|
|
|
ota: |
|
|
|
|
|
|
|
|
|
binary_sensor: |
|
|
|
|
|
|
|
|
|
- platform: gpio |
|
|
|
|
pin: |
|
|
|
|
number: GPIO0 |
|
|
|
|
mode: INPUT_PULLUP |
|
|
|
|
inverted: True |
|
|
|
|
name: "Lounge Touchpad 1" |
|
|
|
|
filters: |
|
|
|
|
- delayed_on: 30ms |
|
|
|
|
- delayed_off: 30ms |
|
|
|
|
internal: True |
|
|
|
|
on_multi_click: |
|
|
|
|
# Single |
|
|
|
|
- timing: |
|
|
|
|
- ON for at most 1s |
|
|
|
|
- OFF for at least 0.5s |
|
|
|
|
then: |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_1 |
|
|
|
|
state: !lambda 'return "single";' |
|
|
|
|
# Double |
|
|
|
|
- timing: |
|
|
|
|
- ON for at most 1s |
|
|
|
|
- OFF for at most 1s |
|
|
|
|
- ON for at most 1s |
|
|
|
|
- OFF for at least 0.2s |
|
|
|
|
then: |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_1 |
|
|
|
|
state: !lambda 'return "double";' |
|
|
|
|
# Hold |
|
|
|
|
- timing: |
|
|
|
|
- ON for 1s to 3s |
|
|
|
|
- OFF for at least 0.5s |
|
|
|
|
then: |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_1 |
|
|
|
|
state: !lambda 'return "hold";' |
|
|
|
|
name: "Lounge Raw Touchpad 1" |
|
|
|
|
on_press: |
|
|
|
|
then: |
|
|
|
|
- output.turn_on: blue_led |
|
|
|
|
on_release: |
|
|
|
|
then: |
|
|
|
|
- output.turn_off: blue_led |
|
|
|
|
|
|
|
|
|
- platform: gpio |
|
|
|
|
pin: |
|
|
|
|
number: GPIO9 |
|
|
|
|
mode: INPUT_PULLUP |
|
|
|
|
inverted: True |
|
|
|
|
name: "Lounge Touchpad 2" |
|
|
|
|
filters: |
|
|
|
|
- delayed_on: 30ms |
|
|
|
|
- delayed_off: 30ms |
|
|
|
|
internal: True |
|
|
|
|
on_multi_click: |
|
|
|
|
# Single |
|
|
|
|
- timing: |
|
|
|
|
- ON for at most 1s |
|
|
|
|
- OFF for at least 0.5s |
|
|
|
|
then: |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_2 |
|
|
|
|
state: !lambda 'return "single";' |
|
|
|
|
# Double |
|
|
|
|
- timing: |
|
|
|
|
- ON for at most 1s |
|
|
|
|
- OFF for at most 1s |
|
|
|
|
- ON for at most 1s |
|
|
|
|
- OFF for at least 0.2s |
|
|
|
|
then: |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_2 |
|
|
|
|
state: !lambda 'return "double";' |
|
|
|
|
# Hold |
|
|
|
|
- timing: |
|
|
|
|
- ON for 1s to 3s |
|
|
|
|
- OFF for at least 0.5s |
|
|
|
|
then: |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_2 |
|
|
|
|
state: !lambda 'return "hold";' |
|
|
|
|
name: "Lounge Raw Touchpad 2" |
|
|
|
|
on_press: |
|
|
|
|
then: |
|
|
|
|
- output.turn_on: blue_led |
|
|
|
|
on_release: |
|
|
|
|
then: |
|
|
|
|
- output.turn_off: blue_led |
|
|
|
|
|
|
|
|
|
- platform: gpio |
|
|
|
|
pin: |
|
|
|
|
number: GPIO10 |
|
|
|
|
mode: INPUT_PULLUP |
|
|
|
|
inverted: True |
|
|
|
|
name: "Lounge Touchpad 3" |
|
|
|
|
name: "Lounge Raw Touchpad 3" |
|
|
|
|
filters: |
|
|
|
|
- delayed_on: 30ms |
|
|
|
|
- delayed_off: 30ms |
|
|
|
|
internal: True |
|
|
|
|
on_multi_click: |
|
|
|
|
# Single |
|
|
|
|
- timing: |
|
|
|
|
- ON for at most 1s |
|
|
|
|
- OFF for at least 0.5s |
|
|
|
|
then: |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_3 |
|
|
|
|
state: !lambda 'return "single";' |
|
|
|
|
# Double |
|
|
|
|
- timing: |
|
|
|
|
- ON for at most 1s |
|
|
|
|
- OFF for at most 1s |
|
|
|
|
- ON for at most 1s |
|
|
|
|
- OFF for at least 0.2s |
|
|
|
|
then: |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_3 |
|
|
|
|
state: !lambda 'return "double";' |
|
|
|
|
# Hold |
|
|
|
|
- timing: |
|
|
|
|
- ON for 1s to 3s |
|
|
|
|
- OFF for at least 0.5s |
|
|
|
|
then: |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_3 |
|
|
|
|
state: !lambda 'return "hold";' |
|
|
|
|
on_press: |
|
|
|
|
then: |
|
|
|
|
- output.turn_on: blue_led |
|
|
|
@ -58,12 +154,15 @@ switch: |
|
|
|
|
- platform: gpio |
|
|
|
|
name: "Lounge Relay 1" |
|
|
|
|
pin: GPIO12 |
|
|
|
|
restore_mode: ALWAYS_OFF |
|
|
|
|
- platform: gpio |
|
|
|
|
name: "Lounge Relay 2" |
|
|
|
|
pin: GPIO5 |
|
|
|
|
restore_mode: ALWAYS_ON |
|
|
|
|
- platform: gpio |
|
|
|
|
name: "Lounge Relay 3" |
|
|
|
|
pin: GPIO4 |
|
|
|
|
restore_mode: ALWAYS_OFF |
|
|
|
|
|
|
|
|
|
output: |
|
|
|
|
# Register the blue LED as a dimmable output .... |
|
|
|
@ -72,8 +171,57 @@ output: |
|
|
|
|
pin: GPIO13 |
|
|
|
|
inverted: True |
|
|
|
|
|
|
|
|
|
#light: |
|
|
|
|
# # ... and then make a light out of it. |
|
|
|
|
# - platform: monochromatic |
|
|
|
|
# name: "Bedroom switch light" |
|
|
|
|
# output: blue_led |
|
|
|
|
# This sensor is published to homeassistant with the value: |
|
|
|
|
# * single |
|
|
|
|
# * double |
|
|
|
|
# * hold |
|
|
|
|
# This can be used to trigger automations by type "state" |
|
|
|
|
text_sensor: |
|
|
|
|
- platform: template |
|
|
|
|
name: "Lounge Touchpad 1" |
|
|
|
|
id: louge_button_1 |
|
|
|
|
icon: "mdi:toggle-switch" |
|
|
|
|
on_value: |
|
|
|
|
then: |
|
|
|
|
- if: |
|
|
|
|
condition: |
|
|
|
|
text_sensor.state: |
|
|
|
|
id: louge_button_1 |
|
|
|
|
state: "" |
|
|
|
|
else: |
|
|
|
|
- delay: 20ms |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_1 |
|
|
|
|
state: !lambda 'return "";' |
|
|
|
|
- platform: template |
|
|
|
|
name: "Lounge Touchpad 2" |
|
|
|
|
id: louge_button_2 |
|
|
|
|
icon: "mdi:toggle-switch" |
|
|
|
|
on_value: |
|
|
|
|
then: |
|
|
|
|
- if: |
|
|
|
|
condition: |
|
|
|
|
text_sensor.state: |
|
|
|
|
id: louge_button_2 |
|
|
|
|
state: "" |
|
|
|
|
else: |
|
|
|
|
- delay: 20ms |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_2 |
|
|
|
|
state: !lambda 'return "";' |
|
|
|
|
- platform: template |
|
|
|
|
name: "Lounge Touchpad 3" |
|
|
|
|
id: louge_button_3 |
|
|
|
|
icon: "mdi:toggle-switch" |
|
|
|
|
on_value: |
|
|
|
|
then: |
|
|
|
|
- if: |
|
|
|
|
condition: |
|
|
|
|
text_sensor.state: |
|
|
|
|
id: louge_button_3 |
|
|
|
|
state: "" |
|
|
|
|
else: |
|
|
|
|
- delay: 20ms |
|
|
|
|
- text_sensor.template.publish: |
|
|
|
|
id: louge_button_3 |
|
|
|
|
state: !lambda 'return "";' |
|
|
|
|