BabyBuddy Package
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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