在openHAB的规则文件中,我可以执行postUpdate
和sendCommand
。有什么区别?
我注意到,当我使用postUpdate(zwaveLamp1, ON)
时,只更改其值,不执行任何操作 - 灯光保持黑暗。 sendCommand(zwaveLamp1, ON)
将执行绑定操作并打开指示灯并更新项目。
什么是postUpdate
的用例?有什么好处?
答案 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)