type: custom:layout-card
layout_type: custom:grid-layout
cards:
- type: vertical-stack
cards:
- type: markdown
content: >-
NASA
Data
Data for the next {{state_attr("sensor.neo_watcher_stats","Weeks
ahead")}} weeks - from {{state_attr("sensor.neo_watcher_stats","From
date")| as_timestamp | timestamp_custom('%-d %B %Y')}} to
{{state_attr("sensor.neo_watcher_stats","To date")| as_timestamp |
timestamp_custom('%-d %B %Y')}}
Total Near Earth Objects found:
{{state_attr("sensor.neo_watcher_stats","Total Near Earth Objects
found")}}
Total potentially hazardous Near Earth Ojects found:
{{state_attr("sensor.neo_watcher_stats","Total potentially hazardous
Near Earth Ojects found")}}
- type: horizontal-stack
cards:
- type: markdown
content: >+
{%set object_number="1st"%}
{%- if states("sensor.neo_watcher_potentially_hazardous_" +
object_number) != "unavailable" and
states("sensor.neo_watcher_potentially_hazardous_" +
object_number) != "unknown"-%}
{{object_number |
regex_findall_index("[0-9]")}}{{object_number |
regex_findall_index("[^0-9]+")}} closest potentially
hazardous object
Closest date:
{{as_timestamp(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"close_approach_date"))| timestamp_custom('%-d %B
%Y')}} at {{state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"close_approach_date_full").split(' ')[1]}}
Closest distance:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"miss_distance_mi") | int)}} Miles from Earth
Speed:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"relative_velocity_mi_per_h") | int)}} Miles per
hour
Size:
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"estimated_diameter_min_mi") | float)}} Miles -
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"estimated_diameter_max_mi") | float)}} Miles
across
Link to full detail
{{state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"nasa_jpl_url")}}
Link to orbital detail
{%set x = state_attr("sensor.neo_watcher_potentially_hazardous_" +
object_number,"Neo_Watcher_Orbit_Viewer_URL")-%}
{{ x[:80]
}}...
{%- else-%}
Unavailable, please check the Neo Watcher integration for more
details
{%- endif-%}
- type: markdown
content: >
{%set object_number="2nd"%}
{%- if states("sensor.neo_watcher_potentially_hazardous_" +
object_number) != "unavailable" and
states("sensor.neo_watcher_potentially_hazardous_" +
object_number) != "unknown"-%}
{{object_number |
regex_findall_index("[0-9]")}}{{object_number |
regex_findall_index("[^0-9]+")}} closest potentially
hazardous object
Closest date:
{{as_timestamp(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"close_approach_date"))| timestamp_custom('%-d %B
%Y')}} at {{state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"close_approach_date_full").split(' ')[1]}}
Closest distance:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"miss_distance_mi") | int)}} Miles from Earth
Speed:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"relative_velocity_mi_per_h") | int)}} Miles per
hour
Size:
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"estimated_diameter_min_mi") | float)}} Miles -
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"estimated_diameter_max_mi") | float)}} Miles
across
Link to full detail
{{state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"nasa_jpl_url")}}
Link to orbital detail
{%set x = state_attr("sensor.neo_watcher_potentially_hazardous_" +
object_number,"Neo_Watcher_Orbit_Viewer_URL")-%}
{{ x[:80]
}}...
{%- else-%}
Unavailable, please check the Neo Watcher integration for more
details
{%- endif-%}
- type: markdown
content: >
{%set object_number="3rd"%}
{%- if states("sensor.neo_watcher_potentially_hazardous_" +
object_number) != "unavailable" and
states("sensor.neo_watcher_potentially_hazardous_" +
object_number) != "unknown"-%}
{{object_number |
regex_findall_index("[0-9]")}}{{object_number |
regex_findall_index("[^0-9]+")}} closest potentially
hazardous object
Closest date:
{{as_timestamp(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"close_approach_date"))| timestamp_custom('%-d %B
%Y')}} at {{state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"close_approach_date_full").split(' ')[1]}}
Closest distance:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"miss_distance_mi") | int)}} Miles from Earth
Speed:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"relative_velocity_mi_per_h") | int)}} Miles per
hour
Size:
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"estimated_diameter_min_mi") | float)}} Miles -
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"estimated_diameter_max_mi") | float)}} Miles
across
Link to full detail
{{state_attr("sensor.neo_watcher_potentially_hazardous_"
+ object_number,"nasa_jpl_url")}}
Link to orbital detail
{%set x = state_attr("sensor.neo_watcher_potentially_hazardous_" +
object_number,"Neo_Watcher_Orbit_Viewer_URL")-%}
{{ x[:80]
}}...
{%- else-%}
Unavailable, please check the Neo Watcher integration for more
details
{%- endif-%}
- type: horizontal-stack
cards:
- type: markdown
content: >-
{%set object_number="1st"%}
{%- if states("sensor.neo_watcher_non_hazardous_" + object_number)
!= "unavailable" and states("sensor.neo_watcher_non_hazardous_" +
object_number) != "unknown"-%}
{{object_number |
regex_findall_index("[0-9]")}}{{object_number |
regex_findall_index("[^0-9]+")}} closest non hazardous
object
Closest date:
{{as_timestamp(state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"close_approach_date"))| timestamp_custom('%-d %B
%Y')}} at {{state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"close_approach_date_full").split(' ')[1]}}
Closest distance:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"miss_distance_mi") | int)}} Miles from Earth
Speed:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"relative_velocity_mi_per_h") | int)}} Miles per
hour
Size:
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"estimated_diameter_min_mi") | float)}} Miles -
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"estimated_diameter_max_mi") | float)}} Miles
across
Link to full detail
{{state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"nasa_jpl_url")}}
{%set x = state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"Neo_Watcher_Orbit_Viewer_URL")-%}
{%-if x != none -%}
Link to orbital detail
{%-if x |
length() > 80-%}{{ x[:80]
}}...{%-else-%}{{state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"Neo_Watcher_Orbit_Viewer_URL")}}{%-endif-%}
{%- endif-%}
{%- else-%}
Unavailable, please check the Neo Watcher integration for more
details
{%- endif-%}
- type: markdown
content: >-
{%set object_number="2nd"%}
{%- if states("sensor.neo_watcher_non_hazardous_" + object_number)
!= "unavailable" and states("sensor.neo_watcher_non_hazardous_" +
object_number) != "unknown"-%}
{{object_number |
regex_findall_index("[0-9]")}}{{object_number |
regex_findall_index("[^0-9]+")}} closest non hazardous
object
Closest date:
{{as_timestamp(state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"close_approach_date"))| timestamp_custom('%-d %B
%Y')}} at {{state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"close_approach_date_full").split(' ')[1]}}
Closest distance:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"miss_distance_mi") | int)}} Miles from Earth
Speed:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"relative_velocity_mi_per_h") | int)}} Miles per
hour
Size:
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"estimated_diameter_min_mi") | float)}} Miles -
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"estimated_diameter_max_mi") | float)}} Miles
across
Link to full detail
{{state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"nasa_jpl_url")}}
{%set x = state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"Neo_Watcher_Orbit_Viewer_URL")-%}
{%-if x != none -%}
Link to orbital detail
{%-if x |
length() > 80-%}{{ x[:80]
}}...{%-else-%}{{state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"Neo_Watcher_Orbit_Viewer_URL")}}{%-endif-%}
{%- endif-%}
{%- else-%}
Unavailable, please check the Neo Watcher integration for more
details
{%- endif-%}
- type: markdown
content: >-
{%set object_number="3rd"%}
{%- if states("sensor.neo_watcher_non_hazardous_" + object_number)
!= "unavailable" and states("sensor.neo_watcher_non_hazardous_" +
object_number) != "unknown"-%}
{{object_number |
regex_findall_index("[0-9]")}}{{object_number |
regex_findall_index("[^0-9]+")}} closest non hazardous
object
Closest date:
{{as_timestamp(state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"close_approach_date"))| timestamp_custom('%-d %B
%Y')}} at {{state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"close_approach_date_full").split(' ')[1]}}
Closest distance:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"miss_distance_mi") | int)}} Miles from Earth
Speed:
{{"{:,.0f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"relative_velocity_mi_per_h") | int)}} Miles per
hour
Size:
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"estimated_diameter_min_mi") | float)}} Miles -
{{"{:,.1f}".format(state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"estimated_diameter_max_mi") | float)}} Miles
across
Link to full detail
{{state_attr("sensor.neo_watcher_non_hazardous_"
+ object_number,"nasa_jpl_url")}}
{%set x = state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"Neo_Watcher_Orbit_Viewer_URL")-%}
{%-if x != none -%}
Link to orbital detail
{%-if x |
length() > 80-%}{{ x[:80]
}}...{%-else-%}{{state_attr("sensor.neo_watcher_non_hazardous_" +
object_number,"Neo_Watcher_Orbit_Viewer_URL")}}{%-endif-%}
{%- endif-%}
{%- else-%}
Unavailable, please check the Neo Watcher integration for more
details
{%- endif-%}
- type: markdown
content: >-
(Data acquisition took {% if
timedelta(seconds=(as_timestamp(state_attr("sensor.neo_watcher_stats","Last
Update Time"))) -
as_timestamp(state_attr("sensor.neo_watcher_stats","Process Start
Time"))).total_seconds() | round(0) | int > 120-%}
{{timedelta(seconds=(as_timestamp(state_attr("sensor.neo_watcher_stats","Last
Update Time"))) -
as_timestamp(state_attr("sensor.neo_watcher_stats","Process Start
Time"))).total_seconds() | round(0) | int | timestamp_custom('%-M
minutes %S seconds',false)}}
{%-elif
timedelta(seconds=(as_timestamp(state_attr("sensor.neo_watcher_stats","Last
Update Time"))) -
as_timestamp(state_attr("sensor.neo_watcher_stats","Process Start
Time"))).total_seconds() | round(0) | int > 60-%}
{{timedelta(seconds=(as_timestamp(state_attr("sensor.neo_watcher_stats","Last
Update Time"))) -
as_timestamp(state_attr("sensor.neo_watcher_stats","Process Start
Time"))).total_seconds() | round(0) | int | timestamp_custom('%-M
minute %S seconds',false)}}
{%-else-%}
{{timedelta(seconds=(as_timestamp(state_attr("sensor.neo_watcher_stats","Last
Update Time"))) -
as_timestamp(state_attr("sensor.neo_watcher_stats","Process Start
Time"))).total_seconds() | round(0) | int | timestamp_custom('%S
seconds',false)}}
{%-endif-%}
)
layout:
width: 100%