2015-03-11 16 views
6

In un file di regole in openHAB posso eseguire postUpdate e sendCommand. Qual è la differenza?Qual è la differenza tra postUpdate e sendCommand in openHAB

Ho notato che quando uso postUpdate(zwaveLamp1, ON), viene modificato solo il suo valore, nessuna azione viene eseguita - la luce rimane scura. sendCommand(zwaveLamp1, ON) eseguirà l'azione associata e accenderà la luce e l'elemento verrà aggiornato.

Che cos'è il caso d'uso di postUpdate? Per cosa è buono?

risposta

0

Sì, corretto dal mio punto di vista. postUpdate funziona "internamente" sull'elemento, sendCommand agisce sul "comando" verso la periferica/interfaccia. marco

0

È possibile impostare un elemento di commutazione limitato a nulla; diciamo che vuoi fare un elemento di commutazione EmailToggle. Se metti l'interruttore sulla mappa del sito puoi attivare e disattivare la posta elettronica; quindi, all'avvio, è possibile postare l'aggiornamento e impostarlo da unitializzato a OFF o ON. Il commutatore può quindi essere utilizzato per determinare se si desidera che le e-mail avvengano in base a una regola.

Ho visto questo lavoro e l'ho visto non funziona. Sembra bacato.

1

I comandi sono discreti, mentre gli stati sembrano essere più fugaci. Cioè, se si esegue una regola innescata da "Comando X articolo ricevuto", è possibile utilizzare la variabile "receivedCommand" nella regola per eseguire qualcosa e la regola viene attivata per ogni comando. Tuttavia, è necessario leggere lo stato corrente dall'elemento o utilizzare previousState per lo stato precedente.

Ho trovato per un articolo che aggiorna il suo stato molto, viene attivato per una modifica, ma quando si legge lo stato dell'articolo potrebbe essere cambiato di nuovo; è sempre il valore corrente che viene restituito. Questo è esattamente come dovrebbe essere. Se, tuttavia, stai usando lo stato come coda pseudo in arrivo da MQTT o da qualche fonte esterna, perderai i messaggi. Se entrano come comandi, non lo farai.

Problemi correlati