Domoticz est vraiment très ouvert pour nous laisser le piloter au travers de son API JSON moyennant que on lui envoie une url bien construite, on peut alors lire l’état de capteurs, envoyer des ordres …
Intérêt des scripts
Les scripts dans Domoticz sont utilisés la plupart du temps,pour lire telle valeur, écrire telle autre, interroger un service web , envoyer un sms…
Quels langages utiliser ?
Lua
Le langage natif de Domoticz pour le scripting est LUA avec des fonctionnalités assez puissantes puisque Domoticz déclenche automatiquement ces scripts sur les changements d’états, en fonction du temps…
Il faut apprendre un peu de Lua
Les autres langages
Tous les langages que vous avez installés.sur votre Raspberry sont utilisables nous allons détailler comment ci-dessous.
Oui mais j’utilise Windows ?
Euh, comment dire , c’est pareil mais en plus compliqué.
L’essentiel est que vous connaissiez le chemin d’accès à l’interpréteur de votre langage (Ex: c:\dev\python\python27\bin\python.exe) ou que celui ci soit dans le PATH de votre système. Votre script devra prendre en compte ce chemin.
Et pour le Raspberry Pi
C’est la solution que je vais détailler ici.
Ou placer les scripts ?
Il n’y a pas d’emplacement privilégié du moment que domoticz puisse aller lire à cet endroit.
Toutefois les développeurs de Domoticz ont crée domoticz/scripts, domoticz/scripts/lua cela serait quand même logique de les utiliser.
Quitte à créer domoticz/scripts/python, domoticz/scripts/sh, domoticz/scripts/php pour faciliter la gestion des scripts.
Ce qui suit ne s’applique pas aux scripts LUA de domoticz/scripts/lua qui sont entièrement géres par Domoticz et à ce titre doivent correspondre à des « nommages » précis (script_time, script_device…)
Comment écrire un script ?
Je ne vais pas faire un cours de python, perl, shell bash ici? C’est à vous de construire votre outil.
- Nommez votre script d’un nom explicite et pas toto.py mais clignotement_lampe_exterieur.sh
- Utilisez les .py,.sh à la fin du fichier, cela n’est pas obligatoire mais pour les pauvres êtres humains que nous sommes c’est mieux.
LA chose qu’il faut savoir c’est que votre script doit commencer par un shebang approprié, j’aime bien le mot shebang. http://fr.wikipedia.org/wiki/Shebang
En effet les scripts sont des fichiers texte dont la première ligne devra être le shebang qui indique au système dans quel langage est rédigé le script et le chemin vers ce langage.
Ainsi
#!/bin/bash
indique qu’il faut utiliser pour ce script le programme bash situé dans /bin
Il en existe d’autres moins sexy:
- #!/usr/bin/php pour les scripts php
- #!/usr/bin/python
Après cette ligne de shebang vous codez votre programme.
N.B : Cas du php :
- Il faut installer php5-cli par un sudo apt-get install php5-cli
- Après le shebang on met <?php puis on code
Sinon jetez un œil au forum il y un endroit pour en trouver des tout faits.
Comment tester mon script ?
Suivant le langage que vous utilisez mettez des echo, print, aux endroits stratégiques.
Rendez votre script exécutable par un chmod +x lenomquivabien.xx (merci b.folliot)
Vérifiiez que tout ce comporte bien en lançant votre programme par un ./lenomquivabien.xx
Déboguez, jusqu’à obtention du résultat voulu
Ca marche et maintenant ?
Pilotage via Domoticz
On peut appeler un script derrière un interrupteur ou un scenario Domoticz sur un « Action on » ou « Action off » de la façon suivante script:///home/pi/domoticz/script/monscript.php
N.B : il y a 3 / apres script:
Un article détaillé est ici
Ainsi l’appui sur le bouton en question déclenche les actions prévues lorsque le bouton passe à On ou Off
N’oubliez pas que pour déclencher une cascade de périphériques à l’appui il y a aussi les dispositifs esclaves Domoticz.
Pilotage en fonction de l’heure
On à parfois besoin de déclencher un script que une fois par jour/par heure…
Exemple récupération du tarif EDF bleu,blanc rouge pour remplir un widget.
Dans ce cas la on utilise le programme crontab Linux
crontab -e permet de programmer l’exécution régulière de tâches
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
3 4 * * * root /domotioz/scripts/shell/backupftp.sh
Cette ligne déclenche la procédure backupftp.sh tous les jours à 4H03
*/2 * * * * root /domoticz/scripts/check_domoticz.sh
celle ci le script toutes les 2 minutes (*/2)
Le mémo qui va bien : https://fr.wikipedia.org/wiki/Cron
P.S N’oubliez pas de sauvegarder tout cela de temps en temps. 🙂