0

我正在尝试比较两个时间戳,但出现类型错误:

"TypeError: '<' not supported between instances of 'float' and 'str'

模板代码使用 'as_timestamp' 并且文档建议在比较时使用 float()。

我正在尝试获取日期值最接近 now() 的传感器的名称和日期(在 Home Assistant 中)。所以我正在尝试执行以下操作:

    {%- set list = ['sensor.1','sensor.2','sensor.3','sensor.4'] -%}
    {%- set data = namespace(min_date=float(as_timestamp(now() + timedelta(days = 360))), min_name = '') -%}
    {%- for i in list %}
    {%- set value = states(i) %}
    {%- if float(as_timestamp(value)) < float(data.min_date) %}
    {%- set data.min_date = value -%}
    {%- set data.min_name = state_attr(i, 'friendly_name') -%}
    {% endif %}
    {%- endfor %}
    {{ data.min_name + ' (' + data.min_date | timestamp_custom('%Y-%m-%dT%H:%M:%S%z') + ')' }}

尽管值是用 float() 和 as_timestamp() 定义的,但为什么 data.min_date 在比较中是一个 str 的任何想法?

4

1 回答 1

0

必须从初始值分配中删除“as_timestamp”并将其添加到 if 语句中。解决了它。

于 2021-09-30T10:39:23.757 回答