嗨,大家好

我不知道为什么,但是我有以下不同的方法来比较属性的价值,而最高的方法给了我真实的方式,而底部都给了我错误。有人知道原因吗?
IS_STATE不是为了我正在做的事情吗?

服务:notify.mobile_app_mi_mix_3_3_5g data_template:消息:> {{trigger.to_state.attributes [“电池” = = 100}}  - >>给我true {is_State({“ trigger.to_state.to_state.attributes [tattributes [''''''''''','','','','','','','','','','','','','','','','','',”100)}}}  - >给我false {{is_state_attr('trigger.to_state','电池',100)}}  - >给我false

您缺少的模板的方面是类型,您似乎正在将事物更改为字符串,而不理解为什么错误。有7种主要对象类型,这是对所有物体的淡化描述。

int

一个没有小数位的数字。

1

漂浮

一个有十进制位置的数字。

1.234234

细绳

一系列字符。用单个引号或双引号包裹的字符表示。

'324dalkfsdjlk234'“ 32342FSDKJ32L4K2J3; 523423442KJA”

布尔

是的,错误,1或0

true false 1 0

元组

项目的集合。它无法改变形状,一旦定义它始终保持如此尺寸。IE。如果我有4个项目,则无法删除或添加一个项目。每个项目都通过将其放入集合中的顺序标识。

(1,2,3,'a','b','c')

访问项目:

my_tuple [0]#返回1(元组中的第一个项目)my_tuple [1]#返回2(tuple中的第二个项目)my_tuple [n]#返回?(元组中的n+1个项目)my_tuple [-1]#返回'c'(tuple中的lastItem)

列表

项目的集合。您可以从中添加或删除项目。您可以将其过滤。还有其他一些操作。每个人都通过将其放入集合中的顺序识别。

[1,2,3,'a','b','c']

访问项目:

my_list [0]#返回1(列表中的第一个项目)my_list [1]#返回2(列表中的第二个项目)my_list [n]#返回?(列表中的n+1个项目)my_list [-1]#返回'c'(列表中的最后一项)

字典

项目的集合。每个都通过唯一标识符(通常为字符串)来识别。

{'foo':1,'bar':2,'blah':3,'状态':'my_state'}

访问项目:

my_dict ['foo']#returns 1 my_dict.foo#returns 1 my_dict.get('foo')#returns 1 my_dict.get('junk',74)#如果存在,如果它不返回,则返回'垃圾的值74

扳机

触发对象是一堆嵌套词典。这不是字符串。通过文档


您的代码

因此,这一切都在说,您拥有的唯一有效的代码是

{{trigger.to_state.attributes [“电池”] == 100}}

其余的似乎有效,但您会犯一些小错误。因此,让我们看看它们。

{{is_state(“ trigger.to_state.attributes ['电池']”,100)}}}}

IS_STATE()接受Entity_ID作为第一个参数,而状态为第二个参数。状态始终是字符串,除非它来自属性。在属性的情况下,它可以是任何对象类型。

错误:

  1. 您正在喂绳子“ trigger.to_state.attributes ['电池']”作为第一个论点。这是一个entity_id吗?否。触发甚至应该是字符串吗?不。
  2. 所有州都是字符串。是100字符串?不,周围没有报价。

但是,即使您要纠正这些错误,它仍然不会得到正确的答案,因为您正在尝试获得属性的结果。IS_STATE仅比较状态,而不是属性。


{{is_state_attr('trigger.to_state','电池',100)}}}

IS_STATE_ATTR获取与结果比较的属性。第一个参数是entity_id,第二个是属性名称,第三个是您要比较的值。

错误:

  1. 您正在喂绳子'trigger.to_state'作为第一个论点。这是一个entity_id吗?不。
  2. 即使您要纠正错误1并删除报价,也您正在访问错误的信息。您正在抓住触发器。而不是Entity_id。

将所有这些放在一起

{{is_state_attr(trigger.to_state.entity_id,'Battery',100)}}} {{state_attr(trigger.to_state.tatate.entity_id,'cowteral''''}}}}}}}}} {{} {{触发['to_state'] ['属性'] ['电池'] == 100}} ...等...
2个喜欢

嗨,彼得

感谢您的详细说明!似乎有很多我误解或不知道的事情。

我不避免整数/float和字符串之间的差异,所以我尝试了两者,但是我不知道状态总是字符串,我认为IS_STATE也接受属性的值,或者如果我使用的话,则将其视为状态

trigger.to_state.Attributes ['电池']

我以为触发器。

{{is_state_attr('Sensor.0x00178801080b5988_Action’,“电池”,100)}}}

我刚刚用触发器替换了实体。

因此,最好的方法是使用这两者之一,因为我想要触发自动化时的值。当我使用entity_id时,我会看到当前状态,而不是触发自动化时的状态

{{{trigger.to_state.attributes.battery == 100}}
{{触发['to_state’] ['属性’] ['电池'] == 100}}}