6

In a rules file in openHAB I can execute postUpdate and sendCommand. What is the difference?

I noticed, that when I use postUpdate(zwaveLamp1, ON), only its value is changed, no actions are performed - the light stays dark. sendCommand(zwaveLamp1, ON) will perform the bound action and switch the light on and the item is updated.

Whats the use case of postUpdate? What is it good for?

4

5 回答 5

1

命令是离散的,而状态似乎更短暂。也就是说,如果您运行由“Item X received command”触发的规则,您可以使用规则中的变量“receivedCommand”执行某些操作,并且每个命令都会触发该规则。但是,您必须从 Item 中读取当前状态或使用 previousState 获取先前状态。

我发现对于一个经常更新其状态的项目,它会因一次更改而被触发,但是当您阅读该项目的状态时,它可能已经再次更改;它始终是返回的当前值。这正是它应该的样子。但是,如果您将状态用作来自 MQTT 或某些外部源的伪传入队列,您将丢失消息。如果他们作为命令进来,你就不会。

于 2015-05-30T00:53:59.663 回答
1

如果您想更新界面或设备的任何元素的当前状态(例如温度),那么您可以使用 postUpdate() 并且如果您想执行任何操作事件(例如灯开/关),那么您可以使用 sendCommand ()。

于 2018-08-23T08:53:41.397 回答
0

是的,从我的角度来看是正确的。postUpdate 在项目“内部”工作,sendCommand 对外围设备/接口执行“命令”。马可

于 2015-03-12T12:11:33.073 回答
0

您可以将开关项绑定到任何内容;假设您要创建一个切换项 EmailToggle。如果您将切换开关放在站点地图上,则可以打开和关闭电子邮件;然后,在启动时,您可以对其进行 postUpdate 并将其从未初始化设置为 OFF 或 ON。然后可以使用切换来确定您是否希望根据规则发送电子邮件。

我看过这项工作,但我看到它不起作用。似乎有马车。

于 2015-05-16T02:12:18.603 回答
0

在此处查看更新的 openHab 文档:现在更加清晰:表格显示了操作项目的效果:

Command \ Rule Trigger    received update     received command    changed
--------------------------------------------------------------------------
postUpdate                  ⚡ rule fires        ❌               (depends)
sendCommand                   ❌              ⚡ rule fires       (depends)
Change through Binding      ⚡ rule fires      ⚡ rule fires       (depends)
于 2018-04-16T20:59:44.290 回答