openHAB中postUpdate和sendCommand之间有什么区别

时间:2015-03-11 08:45:00

标签: openhab

在openHAB的规则文件中,我可以执行postUpdatesendCommand。有什么区别?

我注意到,当我使用postUpdate(zwaveLamp1, ON)时,只更改其值,不执行任何操作 - 灯光保持黑暗。 sendCommand(zwaveLamp1, ON)将执行绑定操作并打开指示灯并更新项目。

什么是postUpdate的用例?有什么好处?

5 个答案:

答案 0 :(得分:1)

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

我找到了一个项目,它会更新其状态,一次更改会触发,但是当您读取该项目的状态时,它可能会再次发生变化;它始终是返回的当前值。这正是应该如何。但是,如果您将状态用作MQTT或某些外部源的伪传入队列,则会丢失消息。如果他们作为命令进入,你就不会。

答案 1 :(得分:1)

如果要更新接口或设备任何元素的当前状态(例如,温度),则可以使用postUpdate();如果要执行任何动作事件(例如,灯亮/灭),则可以可以使用sendCommand()。

答案 2 :(得分:0)

是的,从我的观点来看是正确的。 postUpdate在Item上“内部”工作,sendCommand对外设/接口执行'命令'。 马可

答案 3 :(得分:0)

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

我已经看过这项工作,但我发现它不起作用。似乎有错误。

答案 4 :(得分:0)

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

Command \ Rule Trigger    received update     received command    changed
--------------------------------------------------------------------------
postUpdate                  ⚡ rule fires        ❌               (depends)
sendCommand                   ❌              ⚡ rule fires       (depends)
Change through Binding      ⚡ rule fires      ⚡ rule fires       (depends)