CM3-home - OpenHAB executeCommandLine

Come lanciare comandi di sistema, shell script, programmi e altro tramite azioni di OpenHAB

E' un'azione che può essere eseguita all'interno di una regola. Il parametro dell'azione è il comando.

Azione "executeCommandLine"

Esempio:

rule "AirHorn"
when
    Item AirHorn changed
then
    val results = executeCommandLine("sudo@@/usr/bin/omxplayer@@-o@@local@@/etc/openhab2/sounds/AirHorn.mp3",5000)
    logInfo("Exec",results)
end

Altro esempio:

var HSBType hsb
var red = 0
var green = 0
var blue = 0
var Cmd="/home/openhabian/dali.py"

rule "HSBtoRGB"
    when
        Item DaliColor changed
    then
        hsb = DaliColor.state as HSBType
        red   = (hsb.red * 2.55).intValue
        green = (hsb.green * 2.55).intValue
        blue  = (hsb.blue * 2.55).intValue
        
        val results = executeCommandLine(Cmd+"@@"+red+"@@"+green+"@@"+blue,5000)
        logInfo("Exec",results)
end

Alcune regole da seguire

  • Usando l'azione come negli esempi (definendo il valore ritornato in una variabile) è possibile visualizzare la risposta del sistema nel log di openHAB (http://cm3home.local:9001/) per un debug più semplice.
  • il timeout è indispensabile per dare tempo al comando di essere preso in carico dal sistema operativo.
  • Attenzione alla sostituzione degli spazi tra il comando e i suoi parametri con il carattere @
  • Dal momento che il comando non è eseguito all'interno di una console e quindi non ha alcuna variabile di ambiente, bisogna specificare il path completo sia per il comando che per tutti i parametri.
  • Il comando è lanciato dall'utente openhabian, questo deve essere inserito quindi in tutti i gruppi abilitati ad eseguire lo specifico comando.
  • Per poter lanciare il comando tramite sudo, l'utente openhabian deve essere aggiundo ai sudoers tramite il comando 'sudo visudo', aggiungendo alla fine del file dei sudoers:
openhab ALL=NOPASSWD: ALL

Guido Ottaviani (Autore/Progettista elettronico-firmware-robotica)
Si occupa della progettazione elettronica e del firmware di sistemi embedded per la Robotica e applicazioni industriali e civili oltre che di divulgazione tecnica su internet.
http://www.guiott.com - https://github.com/guiott - guido@guiott.com



Le attività del TanzoLab si svolgono ogni mercoledi sera, salvo casi speciali, dalle ore 18:30 presso i locali della Acme Systems srl e consistono in:

  • Talk monotematici a cura di professionisti in vari settori tecnologici
  • Workshop pratici su elettronica embedded, produzione e informatica
  • Progettazione e realizzazione di nuovi prodotti embedded per l'IT

Le attività vengono coordinate tramite questo sito, in cui vengono pubblicati tutti i lavori svolti o in via di sviluppo, e tramite un gruppo Telegram con cui per interagire direttamente via chat con gli altri membri.