Domoticz et scripts : les bases

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 indique qu’il faut aller chercher le programme girl dans /usr/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 :

P.S N’oubliez pas de sauvegarder tout cela de temps en temps. 🙂

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Savez vous que …

Oui, donc saviez vous que on peut lancer un ./domoticz depuis le dossier pi/domoticz ?

  • il faut avoir arrêté le service par un /etc/init.d/domoticz.sh stop
  • puis on lance donc ./domoticz
  • et on voit les logs directement ici, plutôt que dans l’interface
pi@domoticzpi ~/domoticz $ ./domoticz
2014-11-27 12:07:24 Domoticz V2.2139 (c)2012-2014 GizMoCuz
2014-11-27 12:07:24 System: Raspberry Pi
2014-11-27 12:07:24 Startup Path: /home/pi/domoticz/
2014-11-27 12:07:24 Sunrise: 08:13:00 SunSet:17:22:00
2014-11-27 12:07:24 1-Wire support available (By Kernel)...
2014-11-27 12:07:24 1-Wire: Using Kernel...
2014-11-27 12:07:24 Error: 1Wire: Device not yet supported in Kernel mode (Please report!) ID:not found., family: 00
2014-11-27 12:07:24 AppCache: Check starting...
2014-11-27 12:07:24 AppCache: Image 'images/floorplans/Maison%202.jpg' found in cache file.
2014-11-27 12:07:24 AppCache: Check complete.
2014-11-27 12:07:24 Webserver started on port: 8080
2014-11-27 12:07:24 Camera: settings (re)loaded
2014-11-27 12:07:26 Teleinfo: Using serial port: /dev/ttyAMA0
2014-11-27 12:07:26 GPIO: WiringPi is now initialized
2014-11-27 12:07:26 GPIO: Worker started...
2014-11-27 12:07:26 OpenZWave: Starting...
2014-11-27 12:07:26 OpenZWave: using config in: /home/pi/domoticz/Config/
Could Not Open OZW Log File.
2014-11-27 12:07:26.795 Always, OpenZwave Version 1.1.825 Starting Up
2014-11-27 12:07:27 RFXCOM: Using serial port: /dev/ttyUSB10
2014-11-27 12:07:27 OpenZWave: Driver Ready
2014-11-27 12:07:27 OpenZWave: New Node added. HomeID: 25481459, NodeID: 1 (0x01)
2014-11-27 12:07:27 OpenZWave: New Node added. HomeID: 2548

Bien sur un CTRL C pour arrêter

L’intérêt principal est de pouvoir rediriger tout cela dans un fichier txt pour une lecture plus facile ./domoticz > mon_log_.txt

 Évidement relancer le service normal ensuite /etc/init.d/domoticz.sh start

J’imagine que tout le monde le sait mais ce fut une révélation pour moi

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Ajoutez vos propres icônes interrupteur à Domoticz

Les versions  de Domoticz apportent leur propres icônes, toutefois nous avons tous eu envie de pouvoir ajouter nos propres icônes.

LibDocument Recycle Bin (full)LibMusicLibPictures

Cet article (repris depuis le wiki de Domoticz http://www.domoticz.com/wiki/Custom_icons_for_webinterfac) va nous expliquer comment embellir notre plateforme domotique préférée.

Seules sont concernées les icônes des interrupteurs On/Off.

ATTENTION: LORS DES MISES A JOUR DU LOGICIEL, les fichier txt et probablement vos images vont être remplacés, SA UVEGARDEZ donc AVANT de faire une mise à jour de DOMOTICZ.

Lire la suite

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Comment créer un widget « Alerte »

Cocorico , la version 2134 contient, à l’initiative d’un de nos membres du forum, une nouvelle fonctionnalité : un widget spécial ALERTE.

Merci à Jackslayter pour l’idée et à Gizmocuz pour la réalisation dans la version 2134. Le thread originel est ici http://www.domoticz.com/forum/viewtopic.php?f=31&t=3972&p=26412#p26391

 

widget_vertwidget_jaune widget_gris

 Rôle

Ce composant affiche un texte et apparaît dans une couleur parmi 5 qui seront tous deux précisés via l’API JSON.

Il n’y a pas de notifications pour l’instant liée à ce composant.

 Configuration

Il faut dans le menu « Matériel », créer un virtual sensor et choisir le type « Alert ».

 

Config widget Alerte

Il apparaît dans les dispositifs, et il faut le « pousser » dans l’onglet « Mesures » par la flèche verte.

Dans l’onglet « Mesures » , renommez le à votre convenance.

Utilisation

Tout d’abord notez l’idx de ce composant (116) ici, 2eme colonne

domoticz IdxLa liste des couleurs disponibles est :

0 – gris
1 – vert
2 – jaune caca d’oie
3 – orange
4 – rouge

L’url à envoyer est de la forme :

http://IP:port/json.htm?type=command&param=udevice&idx=VOTRE-IDX&nvalue=VOTRE-COULEUR-DE-0-A-4&svalue=VOTRE-TEXTE-SANS-ESPACE

ainsi dans un navigateur

http://192.168.1.81:8080/json.htm?type=command&param=udevice&idx=116&nvalue=4&svalue="AMalibu"

affiche cela

Widget_alert

Edit du 30/11/2015 : Indéniablement le widget affiche maintenant (versions 2.3) le niveau de couleur en tant que level en plus du texte.

Alerte

N.B la commande curl lancée en ligne de commande ou dans un script shell  à BESOIN des \ avant chaque &

curl http://192.168.1.81:8080/json.htm?type=command\&param=udevice\&idx=116\&nvalue=4\&svalue="AMalibu"

 

Une commentaire de José indique que le texte de svalue peut contenir des espaces sous la forme %20

curl http://192.168.1.81:8080/json.htm?type=command\&param=udevice\&idx=116\&nvalue=4\&svalue="A%20Malibu"

Merci de l’info

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Supprimer des points dans une courbe

C’est facile mais je l’oublie toujours : pour supprimer un point de courbe il suffit de faire Shift et clic gauche sur ce point.

Domoticz suppression de points

Après confirmation la courbe se remet à jour.

Je n’ai pas trouvé de moyen d’en supprimer plusieurs d’un seul coup, et vous ?

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/