Skip to content

Instantly share code, notes, and snippets.

@sstratoti
Created February 7, 2021 17:59
Embed
What would you like to do?
BabyBuddy Package
sensor:
- platform: rest
scan_interval: 15
name: BabyBuddy Feedings
resource: https://babybuddy.YOURDOMAIN.com/api/feedings/?limit=20
value_template: N/A
json_attributes:
- results
headers:
Authorization: !secret baby_buddy_token
- platform: rest
name: BabyBuddy Changings
scan_interval: 15
resource: https://babybuddy.YOURDOMAIN.com/api/changes/?limit=20
value_template: N/A
json_attributes:
- results
headers:
Authorization: !secret baby_buddy_token
- platform: rest
name: BabyBuddy Sleep
scan_interval: 15
resource: https://babybuddy.YOURDOMAIN.com/api/sleep/?limit=20
value_template: N/A
json_attributes:
- results
headers:
Authorization: !secret baby_buddy_token
- platform: rest
name: BabyBuddy Temperature
scan_interval: 600
resource: https://babybuddy.YOURDOMAIN.com/api/temperature/?limit=5
value_template: N/A
json_attributes:
- results
headers:
Authorization: !secret baby_buddy_token
- platform: rest
scan_interval: 1
name: BabyBuddy Active Timers
resource: https://babybuddy.YOURDOMAIN.com/api/timers/?limit=10&active=true
value_template: N/A
json_attributes:
- results
headers:
Authorization: !secret baby_buddy_token
- platform: rest
scan_interval: 15
name: BabyBuddy Tummy Times
resource: https://babybuddy.YOURDOMAIN.com/api/tummy-times/?limit=10
value_template: N/A
json_attributes:
- results
headers:
Authorization: !secret baby_buddy_token
- platform: template
sensors:
bb_last_diaper_change_type:
friendly_name: Last Diaper Change Type
value_template: >-
{% if state_attr('sensor.babybuddy_changings', 'results')[0]["wet"] == true and state_attr('sensor.babybuddy_changings', 'results')[0]["solid"] == true %}
Pee and Poop
{% elif state_attr('sensor.babybuddy_changings', 'results')[0]["wet"] == true %}
Pee
{% else %}
Poop
{% endif %}
bb_last_diaper_change_dow:
friendly_name: Last Diaper Change DOW
value_template: >
{{ as_timestamp(state_attr('sensor.babybuddy_changings', 'results')[0]["time"]) | timestamp_custom ("%A", True) }}
bb_last_diaper_change_time:
friendly_name: Last Diaper Change Time
value_template: >
{{ as_timestamp(state_attr('sensor.babybuddy_changings', 'results')[0]["time"]) | timestamp_custom ("%-I:%M %p", True) }}
bb_last_diaper_change_color:
friendly_name: Last Diaper Change Color
value_template: >-
{{ state_attr('sensor.babybuddy_changings', 'results')[0]["color"] }}
bb_last_feeding_time:
friendly_name: Last Feeding Time
value_template: >-
{{ as_timestamp(state_attr('sensor.babybuddy_feedings', 'results')[0]["end"]) | timestamp_custom ("%-I:%M %p", True) }}
bb_last_feeding_type:
friendly_name: Last Feeding Type
value_template: >-
{% if state_attr('sensor.babybuddy_feedings', 'results')[0]["amount"] is not none %}
{{ state_attr('sensor.babybuddy_feedings', 'results')[0]["amount"] }}oz of {{ state_attr('sensor.babybuddy_feedings', 'results')[0]["type"] }}
{% else %}
{{ state_attr('sensor.babybuddy_feedings', 'results')[0]["type"] }}
{% endif %}
bb_last_feeding_from:
friendly_name: Last Feeding From
value_template: >-
{{ state_attr('sensor.babybuddy_feedings', 'results')[0]["method"] }}
bb_last_feeding_how_long_ago:
friendly_name: Last Feeding How Long Ago
value_template: >-
{% set up_time = as_timestamp(now()) - as_timestamp(state_attr('sensor.babybuddy_feedings', 'results')[0]["end"]) %}
{% set seconds = (up_time % 60) | int %}
{% set minutes = (up_time // 60) | int %}
{% set hours = (minutes // 60) %}
{% set days = (hours // 24) %}
{% set weeks = (days // 7) %}
{% set minutes = (minutes % 60) %}
{% set hours = (hours % 24) %}
{% set days = (days % 7) %}
{% macro phrase(value, name) %}
{%- set value = value %}
{%- set end = 's' if value > 1 else '' %}
{{- '{} {}{}'.format(value, name, end) if value | int > 0 else '' }}
{%- endmacro %}
{% macro phraseSeconds(value) %}
{%- set value = value %}
{%- set end = 's' if value > 0 else '' %}
{{- '{}{}'.format(value, end) if value | int > 0 else '' }}
{%- endmacro %}
{% set text = [ phrase(weeks, 'week'), phrase(days, 'day'), phrase(hours, 'hr'), phrase(minutes, 'min') ] | select('!=','') | list | join(', ') %}
{% set last_comma = text.rfind(',') %}
{% if last_comma != -1 %}
{% set text = text[:last_comma] + ' and' + text[last_comma + 1:] %}
{% endif %}
{{ text }} ago
bb_todays_feeding_count:
friendly_name: Todays Feeding Count
value_template: >-
{% set count = namespace(value=0) %}
{% set total = namespace(value=0) %}
{% set start_of_day = as_timestamp(as_timestamp(now())|timestamp_custom ("%Y-%m-%d 00:00:00.1", True)) %}
{% set end_of_day = as_timestamp(as_timestamp(now())|timestamp_custom ("%Y-%m-%d 23:59:59.0", True)) %}
{% for row in state_attr('sensor.babybuddy_feedings', 'results') %}
{% if as_timestamp(row.get('end'))|int > start_of_day|int and as_timestamp(row.get('end'))|int < end_of_day|int %}
{% set count.value = count.value + 1 %}
{% if row.get('amount')|float > 0.0 %}
{% set total.value = total.value + row.get('amount') %}
{% endif %}
{% endif %}
{% endfor %}
{{count.value}} Feedings(s) Today{% if total.value > 0 %} for {{total.value}} total{% endif %}
bb_last_sleep_duration:
friendly_name: Last Sleep Duration
value_template: >-
{% set up_time = as_timestamp(state_attr('sensor.babybuddy_sleep', 'results')[0]["end"]) - as_timestamp(state_attr('sensor.babybuddy_sleep', 'results')[0]["start"]) %}
{% set seconds = (up_time % 60) | int %}
{% set minutes = (up_time // 60) | int %}
{% set hours = (minutes // 60) %}
{% set days = (hours // 24) %}
{% set weeks = (days // 7) %}
{% set minutes = (minutes % 60) %}
{% set hours = (hours % 24) %}
{% set days = (days % 7) %}
{% macro phrase(value, name) %}
{%- set value = value %}
{%- set end = 's' if value > 1 else '' %}
{{- '{} {}{}'.format(value, name, end) if value | int > 0 else '' }}
{%- endmacro %}
{% macro phraseSeconds(value) %}
{%- set value = value %}
{%- set end = 's' if value > 0 else '' %}
{{- '{}{}'.format(value, end) if value | int > 0 else '' }}
{%- endmacro %}
{% set text = [ phrase(weeks, 'week'), phrase(days, 'day'), phrase(hours, 'hr'), phrase(minutes, 'min') ] | select('!=','') | list | join(', ') %}
{% set last_comma = text.rfind(',') %}
{% if last_comma != -1 %}
{% set text = text[:last_comma] + ' and' + text[last_comma + 1:] %}
{% endif %}
for {{ text }}
bb_last_sleep_end_time:
friendly_name: Last Sleep Time
value_template: >-
{{ as_timestamp(state_attr('sensor.babybuddy_sleep', 'results')[0]["end"]) | timestamp_custom ("%-I:%M %p", True) }}
bb_last_sleep_how_long_ago:
friendly_name: Last Sleep How Long Ago
value_template: >-
{% set up_time = as_timestamp(now()) - as_timestamp(state_attr('sensor.babybuddy_sleep', 'results')[0]["end"]) %}
{% set seconds = (up_time % 60) | int %}
{% set minutes = (up_time // 60) | int %}
{% set hours = (minutes // 60) %}
{% set days = (hours // 24) %}
{% set weeks = (days // 7) %}
{% set minutes = (minutes % 60) %}
{% set hours = (hours % 24) %}
{% set days = (days % 7) %}
{% macro phrase(value, name) %}
{%- set value = value %}
{%- set end = 's' if value > 1 else '' %}
{{- '{} {}{}'.format(value, name, end) if value | int > 0 else '' }}
{%- endmacro %}
{% macro phraseSeconds(value) %}
{%- set value = value %}
{%- set end = 's' if value > 0 else '' %}
{{- '{}{}'.format(value, end) if value | int > 0 else '' }}
{%- endmacro %}
{% set text = [ phrase(weeks, 'week'), phrase(days, 'day'), phrase(hours, 'hr'), phrase(minutes, 'min') ] | select('!=','') | list | join(', ') %}
{% set last_comma = text.rfind(',') %}
{% if last_comma != -1 %}
{% set text = text[:last_comma] + ' and' + text[last_comma + 1:] %}
{% endif %}
{{ text }} ago
bb_last_tummytime_duration:
friendly_name: Last TummyTime Duration
value_template: >-
{% set up_time = as_timestamp(state_attr('sensor.babybuddy_tummy_times', 'results')[0]["end"]) - as_timestamp(state_attr('sensor.babybuddy_tummy_times', 'results')[0]["start"]) %}
{% set seconds = (up_time % 60) | int %}
{% set minutes = (up_time // 60) | int %}
{% set hours = (minutes // 60) %}
{% set days = (hours // 24) %}
{% set weeks = (days // 7) %}
{% set minutes = (minutes % 60) %}
{% set hours = (hours % 24) %}
{% set days = (days % 7) %}
{% macro phrase(value, name) %}
{%- set value = value %}
{%- set end = 's' if value > 1 else '' %}
{{- '{} {}{}'.format(value, name, end) if value | int > 0 else '' }}
{%- endmacro %}
{% macro phraseSeconds(value) %}
{%- set value = value %}
{%- set end = 's' if value > 0 else '' %}
{{- '{}{}'.format(value, end) if value | int > 0 else '' }}
{%- endmacro %}
{% set text = [ phrase(weeks, 'week'), phrase(days, 'day'), phrase(hours, 'hr'), phrase(minutes, 'min'), phraseSeconds(seconds) ] | select('!=','') | list | join(', ') %}
{% set last_comma = text.rfind(',') %}
{% if last_comma != -1 %}
{% set text = text[:last_comma] + ' and' + text[last_comma + 1:] %}
{% endif %}
for {{ text }}
bb_last_tummytime_dow:
friendly_name: Last TummyTime DOW
value_template: >-
{{ as_timestamp(state_attr('sensor.babybuddy_tummy_times', 'results')[0]["end"]) | timestamp_custom ("%A", True) }}
bb_last_tummytime_time:
friendly_name: Last TummyTime Time
value_template: >-
{{ as_timestamp(state_attr('sensor.babybuddy_tummy_times', 'results')[0]["end"]) | timestamp_custom ("%-I:%M %p", True) }}
bb_todays_tummytime_count:
friendly_name: Todays TummyTime Count
value_template: >-
{% set count = namespace(value=0) %}
{% set start_of_day = as_timestamp(as_timestamp(now())|timestamp_custom ("%Y-%m-%d 00:00:00.1", True)) %}
{% set end_of_day = as_timestamp(as_timestamp(now())|timestamp_custom ("%Y-%m-%d 23:59:59.0", True)) %}
{% for row in state_attr('sensor.babybuddy_tummy_times', 'results') %}
{% if as_timestamp(row.get('end'))|int > start_of_day|int and as_timestamp(row.get('end'))|int < end_of_day|int %}
{% set count.value = count.value + 1 %}
{% endif %}
{% endfor %}
{{count.value}} TummyTime(s) Today
bb_timer_status:
friendly_name: Timer Status
value_template: >-
{% if state_attr('sensor.babybuddy_active_timers', 'results')[0]["active"] == true %}
{% set up_time = as_timestamp(now()) - as_timestamp(state_attr('sensor.babybuddy_active_timers', 'results')[0]["start"]) %}
{% set seconds = (up_time % 60) | int %}
{% set minutes = (up_time // 60) | int %}
{% set hours = (minutes // 60) %}
{% set days = (hours // 24) %}
{% set weeks = (days // 7) %}
{% set minutes = (minutes % 60) %}
{% set hours = (hours % 24) %}
{% set days = (days % 7) %}
{% macro phrase(value, name) %}
{%- set value = value %}
{%- set end = 's' if value > 1 else '' %}
{{- '{} {}{}'.format(value, name, end) if value | int > 0 else '' }}
{%- endmacro %}
{% macro phraseSeconds(value) %}
{%- set value = value %}
{%- set end = 's' if value > 0 else '' %}
{{- '{}{}'.format(value, end) if value | int > 0 else '' }}
{%- endmacro %}
{% set text = [ phrase(weeks, 'week'), phrase(days, 'day'), phrase(hours, 'hr'), phrase(minutes, 'min'), phraseSeconds(seconds) ] | select('!=','') | list | join(', ') %}
{% set last_comma = text.rfind(',') %}
{% if last_comma != -1 %}
{% set text = text[:last_comma] + ' and' + text[last_comma + 1:] %}
{% endif %}
{{ text }}
{% else %}
NA
{% endif %}
input_text:
bb_command:
name: BabyBuddy Command
max: 255
input_boolean:
bb_timer_on:
name: BabyBuddy Timer
bb_log_pee:
name: BabyBuddy Log Pee
bb_log_pee_and_poop:
name: BabyBuddy Log Pee and Poop
bb_log_pee_and_green_poop:
name: BabyBuddy Log Pee and Green Poop
bb_log_pee_and_yellow_poop:
name: BabyBuddy Log Pee and Yellow Poop
bb_log_pee_and_brown_poop:
name: BabyBuddy Log Pee and Brown Poop
bb_log_pee_and_black_poop:
name: BabyBuddy Log Pee and Black Poop
bb_log_poop:
name: BabyBuddy Log Poop
bb_log_green_poop:
name: BabyBuddy Log Green Poop
bb_log_yellow_poop:
name: BabyBuddy and Yellow Poop
bb_log_brown_poop:
name: BabyBuddy Log Brown Poop
bb_log_black_poop:
name: BabyBuddy Log Black Poop
homeassistant:
customize:
input_boolean.bb_timer_on:
friendly_name: "Baby Timer"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment