diff --git a/packages/twitch.yaml b/packages/twitch.yaml new file mode 100644 index 0000000..41e2d2f --- /dev/null +++ b/packages/twitch.yaml @@ -0,0 +1,80 @@ +group: + Twitch: + view: yes + icon: mdi:twitch + entities: + - binary_sensor.twitch_stream_active + - group.twitch_channels + twitch_channels: + name: Twitch Channels + entities: + - sensor.correlr + - sensor.onedeadgod +sensor: + - platform: twitch + client_id: !secret twitch_client_id + channels: + - correlr + - onedeadgod + - platform: template + sensors: + active_twitch_streams: + friendly_name: Active Twitch streams + value_template: >- + {% if is_state('binary_sensor.twitch_stream_active', 'on') %} + {{ states + | selectattr("entity_id", "in", + states.group.twitch_channels.attributes.entity_id) + | selectattr('state', 'eq', 'streaming') + | map(attribute='attributes.friendly_name') + | join(', ') + }} + {% endif %} + +binary_sensor: + - platform: template + sensors: + twitch_stream_active: + friendly_name: Twitch stream is active + value_template: >- + {{ is_state('sensor.correlr', 'streaming') + or is_state('sensor.onedeadgod', 'streaming') + }} +automation: + - alias: Turn on Twitch OTA indicator light + action: + - service: light.turn_on + data_template: + entity_id: light.candle + transition: 1.0 + color_name: >- + {% if is_state('sensor.correlr', 'streaming') %} + purple + {% else %} + red + {% endif %} + brightness: 255 + - service: light.turn_on + data_template: + entity_id: light.candle + flash: long + trigger: + - platform: state + entity_id: sensor.active_twitch_streams + condition: + - condition: state + entity_id: binary_sensor.twitch_stream_active + state: 'on' + - condition: state + entity_id: binary_sensor.occupied + state: 'on' + - alias: Turn off Twitch OTA indicator light + action: + - service: light.turn_off + data: + entity_id: light.candle + transition: 1.0 + trigger: + - platform: state + entity_id: binary_sensor.twitch_stream_active + to: 'off'