Lors de mes tests de configurations il m'est arrivé plusieurs fois d'avoir un besoin d'exécution de traitements (scripts) ou simplement de passer des commandes system sur mon Raspberry pour relancer openHAB, voir rebooter.
Ce petit tutoriel vous explique comment procéder.
Exécuter des commandes system via openHAB
Documentation
Il existe un binding qui gère cela évidement :o)
La documentation est là : https://www.openhab.org/addons/bindings/exec/
Un exemple d'application des RULES au binding peut être trouvé ici : https://guiott.com/?page_id=2664
1. Installer le binding "Exec binding"
Comme d'habitude, le binding se trouve dans "Add-ons" de votre menu PaperUI puis "Bindings". Cliquer sur INSTALL sur votre droite.
Mon exemple montre la version binding-exec-2.5.2
2. Création des fichiers de configuration
Via PUTTY donc en mode console, connectez-vous sur votre Raspberry.
Il vous faut à présent faut créer le répertoire 'misc' s'il n'existe pas :
On va dans le répertoire des fichiers de configurations (correspond au répertoire $OPENHAB_CONF) :
cd /etc/openhab2 mkdir misc |
Puis on édite le fichier exec.whitelist :
sudo vi exec.whitelist |
Dans ce fichier nous allons mettre les commandes COMPLETES qui sont autorisées.
Exemple :
/usr/bin/sudo /sbin/reboot /usr/bin/sudo /bin/systemctl restart openhab2.service |
Ensuite il ne faut pas oublier de donner les bons droits aux fichiers/repertoires que l'on vient de créer sinon openHAB ne saura pas y accéder :
chown -R openhab:openhab /etc/openhab2/misc |
3. Définition des objets "Things" dans openHAB
Il nous faut définir à présent la configuration du fichier Things qui doit se trouver dans /etc/openhab2/things que l'on peut appeler par exemple : exec.things (Vous pouvez aussi créer votre objet via PaperUI aussi !)
Voici un exemple de contenu :
Thing exec:command:Reboot "Reboot" [command="/usr/bin/sudo /sbin/reboot", interval=0, autorun=false] Thing exec:command:RestartOpenHAB "RESTART openHAB" [command="/usr/bin/sudo /bin/systemctl restart openhab2.service", interval=0, autorun=false] |
4. Définition des objets "Items" dans openHAB
Ce fichier doit se situer dans /etc/openhab2/items que l'on peut nommer par exemple : exec.items (Vous pouvez aussi créer votre objet via PaperUI aussi !)
Voici un exemple de contenu :
Switch Do_Reboot "Reboot" (gCommandesSystem) { channel="exec:command:Reboot:run" } Switch Do_RestartopenHAB "Restart openHAB" (gCommandesSystem) { channel="exec:command:RestartOpenHAB:run" } |
5. Autorisations sudo au user openhab
Il faut à présent donner l'autorisation au user openhab d'executer les commandes passées par un sudo.
Pour cela il faut editer le fichier sudoers via OBLIGATOIREMENT la commande :
sudo visudo |
et y ajouter la ligne :
openhab ALL=NOPASSWD: ALL |
6. Mettre à jour le fichier de sitemap
Le fichier de type sitemap permet l'action à distance via votre smartphone par exemple.
ATTENTION !!!!!!! Le type d'action est un switch. Dans la console paperUI via le menu "Control" LE BOUTON EST GRISE ET C'EST NORMAL (l'action ne peut se faire via cette méthode)
Donc accédez à votre/vos boutons d'actions par sitemap !
Dans mon exemple, j'ai un groupe défini dans un fichier item lié aux commandes qui s'appelle gCommandesSystem (que j'avais défini ainsi dans un groups.items : Group gCommandesSystem "Commandes système Raspberry" <shield>)
Donc dans le fichier sitemap que j'ai appelé maison.sitemap situé dans le répertoire /etc/openhab2/sitemaps je fais appel au groupe :
Frame label="System" { Group item=gCommandesSystem } |
Voici un petit aperçu :
puis
7. FINI
Voilà !
Evidement d'autres choses uper sympa peuvent être faites, notement des appels à des scripts shell ou perl qui pourront faire des actions techniques et automatisées par un simple déclenchement de switch sur votre application smartphone openHAB !
Génial non ?
Have fun !