Home-AssistantConfig/config/shell_scripts/basketball.yaml

324 lines
8.0 KiB
YAML
Raw Normal View History

#-------------------------------------------
# @CCOSTAN
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
# ESPHome YAML by Jeremy Shephard
#-------------------------------------------
######################################################################
## https://www.vcloudinfo.com/2020/09/home-assistant-smart-diy-basketball-backboard-project.html
######################################################################
esphome:
name: bb_node
platform: ESP8266
board: d1_mini
wifi:
ssid: "********"
password: "********"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Bb Node Fallback Hotspot"
password: "*******"
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
sensor:
- platform: template
name: Baskets
id: basket
icon: mdi:basketball-hoop-outline
- platform: template
name: Swish
id: swish
icon: mdi:basketball
- platform: template
name: Backboards
id: backboard
icon: mdi:basketball-hoop
- platform: template
name: Previous Baskets
id: last_basket
icon: mdi:basketball-hoop-outline
- platform: template
name: Previous Swishes
id: last_swish
icon: mdi:basketball
- platform: template
name: Previous Backboards
id: last_backboard
icon: mdi:basketball-hoop
binary_sensor:
- platform: gpio
pin: D0
name: "Vibration Sensor"
id: bs
filters:
- delayed_on: 50ms
- delayed_off: 2s
on_press:
- lambda: |-
id(backboard_gbl) += 1;
id(backboard).publish_state(id(backboard_gbl));
- if:
condition:
switch.is_on: bb_on_lights_off
then:
- light.turn_on:
id: bb_light
brightness: 100%
red: 100%
green: 0%
blue: 0%
- delay: 3s
- light.turn_off: bb_light
- platform: gpio
pin:
number: D5
inverted: True
name: "Distance Sensor"
id: ds
filters:
- delayed_off: 500ms
on_press:
- if:
condition:
switch.is_on: bb_on
then:
- if:
condition:
binary_sensor.is_off: bs
then:
- lambda: |-
id(swish_gbl) += 1;
id(swish).publish_state(id(swish_gbl));
auto call = id(bb_light).turn_on();
call.set_brightness(1.0);
call.set_effect("Strobe Effect With Custom Values");
call.perform();
- delay: 5s
- light.turn_off: bb_light
- light.turn_on:
id: bb_light
brightness: 60%
red: 100%
green: 0%
blue: 0%
- if:
condition:
binary_sensor.is_on: bs
then:
- lambda: |-
id(basket_gbl) += 1;
id(backboard_gbl) -= 1;
id(basket).publish_state(id(basket_gbl));
- light.turn_on:
id: bb_light
brightness: 100%
red: 25%
green: 100%
blue: 0%
- delay: 3s
- light.turn_off: bb_light
- light.turn_on:
id: bb_light
brightness: 60%
red: 100%
green: 0%
blue: 0%
- if:
condition:
switch.is_on: bb_on_lights_off
then:
- if:
condition:
binary_sensor.is_off: bs
then:
- lambda: |-
id(swish_gbl) += 1;
id(swish).publish_state(id(swish_gbl));
auto call = id(bb_light).turn_on();
call.set_brightness(1.0);
call.set_effect("Strobe Effect With Custom Values");
call.perform();
- delay: 5s
- light.turn_off: bb_light
- if:
condition:
binary_sensor.is_on: bs
then:
- lambda: |-
id(basket_gbl) += 1;
id(backboard_gbl) -= 1;
id(basket).publish_state(id(basket_gbl));
- light.turn_on:
id: bb_light
brightness: 100%
red: 0%
green: 100%
blue: 10%
- delay: 3s
- light.turn_off: bb_light
light:
- platform: fastled_clockless
chipset: WS2812
name: "FastLED WS2811 Light"
pin: D2
num_leds: 150
rgb_order: GRB
id: bb_light
effects:
- addressable_scan:
- addressable_scan:
name: Scan Effect With Custom Values
move_interval: 30ms
scan_width: 20
- strobe:
- strobe:
name: Strobe Effect With Custom Values
colors:
- state: True
brightness: 100%
red: 0%
green: 0%
blue: 100%
duration: 500ms
- state: False
duration: 250ms
- state: True
brightness: 100%
red: 50%
green: 0%
blue: 100%
duration: 500ms
- addressable_color_wipe:
- addressable_color_wipe:
name: Color Wipe Effect With Custom Values
colors:
- red: 0%
green: 0%
blue: 100%
num_leds: 10
- red: 0%
green: 0%
blue: 0%
num_leds: 10
- red: 0%
green: 0%
blue: 100%
num_leds: 20
- red: 0%
green: 0%
blue: 0%
num_leds: 10
- red: 0%
green: 0%
blue: 100%
num_leds: 40
- red: 0%
green: 0%
blue: 0%
num_leds: 10
add_led_interval: 32ms
reverse: False
- addressable_fireworks:
name: Fireworks Effect With Custom Values
update_interval: 10ms
spark_probability: 80%
use_random_color: true
fade_out_rate: 50
switch:
- platform: template
name: Basketball Status Lights
id: bb_on_lights_off
icon: mdi:handball
turn_on_action:
- switch.template.publish:
id: bb_on_lights_off
state: ON
turn_off_action:
- switch.template.publish:
id: bb_on_lights_off
state: OFF
- lambda: |-
id(last_backboard).publish_state(id(backboard_gbl));
id(last_basket).publish_state(id(basket_gbl));
id(last_swish).publish_state(id(swish_gbl));
id(backboard_gbl) = 0;
id(basket_gbl) = 0;
id(swish_gbl) = 0;
id(backboard).publish_state(id(backboard_gbl));
id(basket).publish_state(id(basket_gbl));
id(swish).publish_state(id(swish_gbl));
- platform: template
name: Basketball Always Lights
id: bb_on
icon: mdi:handball
turn_on_action:
- switch.template.publish:
id: bb_on
state: ON
- light.turn_on:
id: bb_light
brightness: 60%
red: 100%
green: 0%
blue: 0%
turn_off_action:
- switch.template.publish:
id: bb_on
state: OFF
- light.turn_off: bb_light
- lambda: |-
id(last_backboard).publish_state(id(backboard_gbl));
id(last_basket).publish_state(id(basket_gbl));
id(last_swish).publish_state(id(swish_gbl));
id(backboard_gbl) = 0;
id(basket_gbl) = 0;
id(swish_gbl) = 0;
id(backboard).publish_state(id(backboard_gbl));
id(basket).publish_state(id(basket_gbl));
id(swish).publish_state(id(swish_gbl));
globals:
- id: backboard_gbl
type: int
restore_value: no
initial_value: '0'
- id: basket_gbl
type: int
restore_value: no
initial_value: '0'
- id: swish_gbl
type: int
restore_value: no
initial_value: '0'