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

#!/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. 🙂

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

Le Waf, le phpMyDomo et Nginx

bbtUn titre à la Sergio Leone, pour parler ici de l’installation de phpMydomo avec le serveur web Nginx, inclus dans l’image Domoticz par exemple.

Toutefois l’auteur de phpMyDomo nous précise sur son site :

For experts only: Using the Apache webserver is the recommended way to install phpMyDomo, but if you prefer to use Nginx instead of Apache, you might try the following unsupported method.

Pour ceux qui n’ont pas fait anglais, on traduirait ça par :

Pour experts seulement:Apache est la meilleure méthode pour phpMydomo, mais si vous préférez utiliser Nginx que Apache, vous pouvez essayer la méthode non supportée ci-dessous.

Allez y mais c’est casse gueule (non ça c’est moi qui rajoute)

Pour les tétus qui envisagent de poursuive, une grande partie de l’article initial basé sur Apache est valable et sera donc repris tel quel ici.

Allons y : <citation>

Dans notre quête désespérée d’augmenter notre WAF face à nos outils de geek, je vous propose aujourd’hui un logiciel d’interface de pilotage relié à Domoticz.

Pour rappel : Le Wife Acceptance Factor ou Woman Acceptance Factor (WAF) désigne le niveau de conflit potentiel engendré par un objet, auprès des non-utilisateurs cohabitant avec les utilisateurs dudit objet: source wikipedia.

Il s’agit d’une surcouche visuelle permettant de piloter Domoticz.

PhpMydomo  : les fonctionnalités

  • Les interrupteurs, les scènes et Dim (experimental) sont supportés.
  • Visualisation des sensors sur la même page ou sur une page personnalisée.
  • Visu des caméras  IP sur un page unique.
  • Affichage d’une galerie photo.
  • Lancement d’action depuis une URL.
  • Support de Responsive design :Affichage optimisé sur Android/IOS tablet, smartphone et web browser
  • Peu de puissance demandée : un serveur php suffit.
  • Free and Open Source.

Le résultat à obtenir est quelque chose comme cela :

01 03

</citation>

Cet outil peut être installé soit :

Comment savoir si on a Nginx ou apache installé ?

Dans un navigateur, tapez votre ip du raspberryNginx

Si vous avez  un message « It works » c’est Apache, direction ici

Bien ces préalables évacués , au boulot !

Lire la suite

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

Complément pour phpMyDomo

Suite à l’article sur la mise en place de l’interface phpMyDomo plusieurs lecteurs m’ont signalé des difficultés liées au démarrage du serveur Apache lié à phpMyDomo sur des configurations ou Ngnix était déjà activé par défaut.

L’article ici détaille la configuration nécessaire pour éviter ces conflits entre les 2 serveurs web et le port 80.

Pour les courageux qui désirent installer phpMyDomo sous Nginx un article est disponible à cette adresse : https://easydomoticz.com/le-waf-le-phpmydomo-et-nginx

L’article initial à été lui aussi mis à jour avec ces compléments.

Les faits :

Dans le tuto initial l’incident se produit lorsque on tente de redémarrer Apache par un sudo apache2ctl restart

Aie : une erreur !!

Suite au restart vous avez « Adress already in use….. to adresss 0.0.0.0:80 »

erreur_apache2

Il s’agit d’un conflit entre le Nginx installé par défaut et le Apache que l’on tente de lancer sur le même port 80.

Changeons le port Apache2

  • Éditer le fichier /etc/apache2/ports.conf, on y trouve :
NameVirtualHost *:80
Listen 80

que l’on remplace par :

NameVirtualHost *:81
Listen 81

si je veux utiliser le port 81 pour PhpMyDomo, sinon mettez le port que vous souhaitez.

  • Toutefois cela ne suffit pas, il faut aussi changer le port du Vhost

Éditer /etc/apache2/sites-available/default et changer la ligne du haut par un :

<VirtualHost *:81>

Relançons avec un sudo apache2ctl restart, les messages d’erreur précédents doivent avoir disparu.

Donc maintenant sur le port 80 j’ai Nginx

Nginxet sur le port 81 :

Apache2N.B : Souvenez vous que phpMyDomo utilise le port 81, votre navigateur doit pointer sur votre_adresse_ip_raspberry:81 et que si vous avez installé phpMyDomo dans un sous répertoire comme moi, l’adresse complète sera : votre_adresse_ip_raspberry:81/pmd

Voila ,et maintenant ça marche. 😆

Merci aux commentateurs du blog qui ont permis de compléter ce document.

testeapprouve

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

Préserver la SD Card: Episode I, les faits et les logs

Notre Raspberry fonctionne 24h/24h, 7 jours sur 7 durant 365 jours de l’année sur une carte SD, subit des reboot, des coupures de courant…

Les carte SD équipant les Raspberry ont un nombre limité de cycles d’écritures (entre 10 000 et 100 000 pour un même emplacement (bloc) sur la carte) lien http://fr.wikipedia.org/wiki/M%C3%A9moire_flash#Dur.C3.A9e_de_vie

Et votre OS ne travaille QUE sur cette carte. Même si les constructeurs ont intégré des mécanismes de répartition d’écriture pour limiter les écritures répétées au même endroit nous voyons vite que un problème va se poser

Nous allons voir ici les moyens dont nous disposons pour allonger la durée de vie de notre carte SD.

Plusieurs techniques sont utilisables :

  1. Diminuer la quantité d’écritures sur la SD.
  2. Ne se servir de la carte SD que pour booter, un disque USB sera utilisé pour tout le reste
  3. Les options 1 et 2 peuvent être cumulées

Voyons ici le point 1, d’autres articles suivront concernant le point 2 et 3.

Lire la suite

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

Mes motherboard sensors ne marchent plus

Depuis la version Beta 2127 les capteurs de température, RAM, de disque dur , etc du Raspberry ne fonctionnent plus correctement, ils apparaissent en rouge dans le menu « Mesures » car ils ne sont plus interrogés par Domoticz.

La version Beta 2139 retrouve un fonctionnement correct vis à vis des capteurs du Raspi.

Voyons pourquoi et comment faire pour les remettre en route.

Sur le site domoticz.com on peut lire

The hardware monitor (motherboard sensors) has been rebuild, and now working like all normal devices.
this means:
- normal id's
- can be shared
- can be used everywhere
- onboard temperature sensor is now also part of this
but, you will get all new devices for this, but this was needed

Ce qui signifie que tous les capteurs internes du Raspberry sont maintenant considérés comme tous les autres périphériques, a savoir :

  • – ils ont un Idx comme le reste (cool pour les scripts)
  • – ils peuvent être partagés
  • – ils sont utilisables partout (blocky,scripts)

C’est vraiment une bonne initiative que de les rendre homogène avec tout le reste.

MAIS IL FAUT DETRUIRE les périphériques dans « Configuration » et « Dispositifs ».

peripheriques

et le « Motherboard sensor »  de l’onglet matériel aussi.

materiel

Puis on installe une version 2139 ou supérieure capable de les recréer correctement.

N.B : la mise à jour qui suit cette destruction est EXTREMENENT LONGUE, le temps de la création, patientez…

 

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