Created
February 7, 2021 17:59
-
-
Save sstratoti/14417d2c3882d2415f31b4d949e48643 to your computer and use it in GitHub Desktop.
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
Thanks for this as it's been very helpful in displaying some of the data from BabyBuddy.
Could you help figure out how to extract total naps for today? I'm struggling as the json data is an hour timeperiod rather than a number such as
"duration":"01:12:00"
. I think the template processes this as a string and therefore can sum multiple strings. I'd like to display the value astotal hours of naps today
as#.#