Re: Kein Zugriff über SSH - openHAB 3.2 (openHabian)
Verfasst: 18. Mai 2024 12:48
Dir ist der Unterschied zwischen sendCommand() und postUpdate() klar?
postUpdate() setzt den Status eines Items (und nur diesen). Außerdem sorgt es für ein Update Ereignis und gegebenenfalls (nämlich wenn sich der Status des Items durch das postUpdate() ändert) für ein Changed Ereignis.
sendCommand() sendet einen Befehl an ein Item. Dieser Befehl wird vom Item automatisch weitergeleitet, und zwar an alle verlinkten Channel, Der Befehl wird also auch an alle verlinkten Channel gesendet. Außerdem führt sendCommand() zu einem Command Ereignis.
Wenn man es nicht anders konfiguriert (in den Item Metadaten autoupdate="false"), wird openHAB bei jedem sendCommand() zusätzlich "erraten", welchen Status das Item nach dem Befehl mutmaßlich annehmen wird. openHAB setzt dann das Item "in vorauseilendem Gehorsam" auf diesen Status, und zwar mit einem postUpdate().
Du kannst also nicht einfach ein sendCommand() mit einem postUpdate() ersetzen (und auch nicht umgekehrt), sondern musst von Fall zu Fall den korrekten Befehl verwenden. Wenn beide Befehle scheinbar zum identischen Ergebnis führen, ist in den allermeisten Fällen postUpdate() die korrekte Variante.
Weiterhin ist es meist eine gute Idee, die Funktion autoupdate soweit möglich zu deaktivieren. Aus Gründen der Bequemlichkeit (...) ist autoupdate per Default eingeschaltet, aus Systemsicht wäre es aber sinnvoller, diese Funktion nur bei Bedarf zu aktivieren (wahlweise auch: nur bei ungebundenen Items grundsätzlich zu aktivieren).
postUpdate() setzt den Status eines Items (und nur diesen). Außerdem sorgt es für ein Update Ereignis und gegebenenfalls (nämlich wenn sich der Status des Items durch das postUpdate() ändert) für ein Changed Ereignis.
sendCommand() sendet einen Befehl an ein Item. Dieser Befehl wird vom Item automatisch weitergeleitet, und zwar an alle verlinkten Channel, Der Befehl wird also auch an alle verlinkten Channel gesendet. Außerdem führt sendCommand() zu einem Command Ereignis.
Wenn man es nicht anders konfiguriert (in den Item Metadaten autoupdate="false"), wird openHAB bei jedem sendCommand() zusätzlich "erraten", welchen Status das Item nach dem Befehl mutmaßlich annehmen wird. openHAB setzt dann das Item "in vorauseilendem Gehorsam" auf diesen Status, und zwar mit einem postUpdate().
Du kannst also nicht einfach ein sendCommand() mit einem postUpdate() ersetzen (und auch nicht umgekehrt), sondern musst von Fall zu Fall den korrekten Befehl verwenden. Wenn beide Befehle scheinbar zum identischen Ergebnis führen, ist in den allermeisten Fällen postUpdate() die korrekte Variante.
Weiterhin ist es meist eine gute Idee, die Funktion autoupdate soweit möglich zu deaktivieren. Aus Gründen der Bequemlichkeit (...) ist autoupdate per Default eingeschaltet, aus Systemsicht wäre es aber sinnvoller, diese Funktion nur bei Bedarf zu aktivieren (wahlweise auch: nur bei ungebundenen Items grundsätzlich zu aktivieren).