Il est temps de revenir aux plannings ajoutées à certaines lampes dans la section Timers and Notification du dernier billet de la série X10 with Domoticz on Raspberry Pi (Domespic). Les plannings n'y étaient pas activées, car j'affirmais qu'ils seraient activés manuellement avant de m'absenter de la maison. Je stipulais alors qu'il devait y avoir une meilleure façon de faire.
Ce que je suis sur le point de décrire représente une amélioration. Quant à savoir si c'est la meilleure façon ...
Les chronométreurs en eux-mêmes sont une bonne façon de fixé les périodes pendant lesquelles les lampes et autres appareils fonctionneront. Ce peut être utile si vous voulez qu'un éclairage extérieur soit allumé au crépuscule et éteint à minuit en tout temps. Ce n'est pas ce dont j'avais besoin. Je veux que les lumières s'allument et s'éteignent à des heures "habituelles" quand personne n'est à la maison pour simuler une maison habitée. J'estime qu'il s'agit du coté prévention d'un système de sécurité à domicile. L'autre aspect utiliserait des capteurs de détection et sonnerait une alarme quelconque si un intrus devait être détecté. Je reviendrai sur ce sujet plus tard, ... beaucoup plus tard.
Essentiellement, ce que je veux, c'est un planning conditionnel, c'est-à-dire des temporisateurs qui ne fonctionneront que lorsqu'ils seront déclenchés en activant un interrupteur virtuel. La première étape pour atteindre cet objectif est de voir comment activer et désactiver les plannings de Domoticz. La deuxième étape consiste à configurer un déclencheur.
Activer le planning d'un dispositif
Pour commencer, il faut qu'initialement, tous les plannings soient désactivés.
Cliquez sur l'onglet Interrupteurs et cliquez
sur le bouton du dispositif
Dressser lamp
.
On peut voir que toutes les commandes "On" et "Off" sont désactivés (
il n'y a que des Non dans la colonne "Activé").
Il est possible d'activer ou de désactiver un événement planifié, mais
son numéro d'index doit être connu. Pour autant que je sache, la seule
façon d'obtenir ces numéros est à travers l'API JSON. Vous pouvez
afficher tous les horaires dans un navigateur Web à l'adresse suivante
http://192.168.0.22:8080/json.htm?type=schedules
.
Une autre possibilité, avec un ordinateur Linux branché sur le même réseau que
le Raspberry Pi, est d'ouvrir un terminal (Alt-Ctrl-T dans Ubuntu) et
d'utiliser le programme curl
. Si votre bureau est un
système Windows, vous pouvez ouvrir une sesssion SSH avec le Raspberry Pi
et utiliser son programme curl
.
Nous allons maintenant activer l'événement programmé pour '00:52' ayant
le numéro d'identification 'TimerId=9'. Dans un navigateur Web, entrez
l'adresse suivante
http://192.168.0.22:8080/json.htm?type=command¶m=enabletimer&idx=9
Autre façon : entrer le commandement suivant dans un terminal.
Retournez à l'onglet Interrupteurs et cliquez sur le
bouton du dispositif Dressser
lamp
et vérifiez que l'événement programmé à '00:52' est activé.
Vous pouvez à nouveau vérifier en entrant l'adresse suivant
http://192.168.0.22:8080/json.htm?type=schedules
dans le champ d'adresse d'un navigateur Web.
Pour désactivé un commandement programmé on remplace enabletimer
par disabletimer
comme dans
http://192.168.0.22:8080/json.htm?type=command¶m=disabletimer&idx=9
Déclenchement des plannings
Nous allons créer un interrupteur virtuel sur le matériel virtuel (Dummy) qui sera utilisé pour activer ou désactiver les plannings. Nous avons déjà configuré un interrupteur factice sur le matériel virtuel en ajoutant le pont Heyu. Voici qu'un bref rappel des étapes.
- Clicker sur l'onglet Réglages.
- Clicker sur le choix de menu Matériel.
- Remplir les champs
Non =Virtuel
, et
Type =Dummy (Does nothing...
qu'on retrouve dans la liste déroulante. - Clicker sur le boutton .
- Clicker sur
Virtuel
.
dans
le matériel - Nommer le capteur virtuel
Alleurs
et fixer son type àinterrupteur
. - Clicker sur le bouton
OK pour compléter la création de l'interrupteur. - Clicker sur l'onglet Interrupteurs.
- Clicker sur le bouton
Ailleurs
et changer l'icône àGeneric On/Off switch
(démarche optionnelle)
de l'interrupteur
- Entrer dans le champ On Action
http://192.168.0.22:8080/json.htm?type=command¶m=enabletimer&idx=9
- Entrer dans le champ Off Action
http://192.168.0.22:8080/json.htm?type=command¶m=disabletimer&idx=9
Il est temps de tester si cela fonctionne. Cliquez sur l'icône du
commutateur Ailleurs
dans l'onglet
Interrupteurs pour
activer et désactiver le périphérique virtuel. Après chaque clic,
vérifiez l'état de l'événement programmé à '00:52' comme expliqué ci-dessus.
Il devrait être activé et désactivé en synchronisation avec le commutateur virtuel.
Si le principe est trouvé, il n'en reste pas moins qu'il faut changer quelque chose parce qu'il est fort probable que ce sera de nombreuses actions planifiées qui devront être activées ou désactivées. Un script devrait être capable de gérer la tâche au complet.
Script Ailleurs
Le script Lua suivant prend en charge la mise à jour des quatre plannings associés à la lampe. Notez comment le script appelle cURL pour envoyer la chaîne JSON au serveur Domoticz.
Alors que le script fonctionne, il suscite le message d'erreur
(ou est-ce un avertissement) suivant :
Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_device_away.lua
has been running for more than 10 seconds
.
Un délai de 10 secondes peut être acceptable pour un script exécuté rarement. Toutefois, j'aime éviter les avertissements quand c'est possible. En lisant le forum, j'ai vu que certains utilisent un script bash pour activer ou désactiver les plannings. J'ai essayé et ça marche.
J'ai décidé d'écrire un seul script bash qui permet soit d'activer ou de désactiver les plannings en fonction de la valeur d'un paramètre donné sur la ligne de commande. Il doit être "1" (sans guillemets) pour activer les plannings et "0" (encore sans guillemets) pour les désactiver. Si une autre valeur est spécifiée, un message "Invalid parameter" est placé sur le journal Domoticz et le script s'arrête et retourne le code d'erreur 1. Voici le script nommé enable_timers.sh :
J'ai créé le script sur mon ordinateur de bureau et l'ai enregistré
dans un nouveau sous-répertoire appelé bash
dans le répertoire
scripts
. Ensuite, en utilisant FileZilla,
j'ai créé un sous-répertoire bash
dans scripts
du
Raspberry Pi et copié le script dans ce nouveau répertoire. Puis j'ai cliqué
avec le bouton droit de la souris sur le nom du fichier copié et j'ai choisi
l'élément de menu Droits d'accès au fichier...
pour cocher Exécuter
dans les Permissions du propriétaire
.
Enfin, j'ai cliqué sur le bouton Valider
.
Maintenant, le serveur Domoticz doit être
invité à invoquer ce script lorsque le bouton Ailleurs
est cliqué. Cliquez sur le bouton
du dispositif virtuel.
Le champs Action On doit contenir le lien
suivant script:///home/pi/domoticz/scripts/bash/enable_timers.sh 1
alors que le champs Action Off doit
contenir le lien script:///home/pi/domoticz/scripts/bash/enable_timers.sh 0
Vacances
Plusieurs on suggéré une autre façon de faire dans un
forum
de Domoticz. Il s'avère qu'il y a deux jeux de planning
indépendants. On passe d'un jeu à l'autre en cliquant sur l'onglet
Réglagles, en sélectionnant le choix de menu
Paramètres et, enfin, en cliquant sur l'onglet
Autre. Trouver Calendrier
dans la page Autres paramètres. On peut
choisir soit le plan Par défaut
ou Vacances
. Il
ne faut pas oublier de cliquer sur le bouton Appliquer les paramètres à droite dans le coin supérieur.
Ce serait bien s'il y avait une façon de faire ce choix de plan en vigueur
à l'aide d'un interrupteur virtuel. Ce serait beaucoup mieux si les notifications
étaient aussi dédoublées. Alors, il n'y aurait ni planning ni notifications
par défaut, alors qu'avec le plan Vacances
planning et notifications
seraient fonctionnels.
Panneau de sécurité
Le panneau de sécurité de Domoticz constitue un déclencheur des plannings plus approprié qu'un interrupteur virtuel. Cliquer sur l'onglet Réglages, sélectionner Plus d'options dans le menu puis Panneau de sécurité pour qu'il surgisse.
Cliquer sur les boutons Disarm, Arm Home etc. C'est amusant à voir et on n'a pas à s'en faire, aucune alarme ne réveillera les voisins si rien n'est encore branché.
J'ai l'intention d'examiner l'utilisation de panneau de sécurité comme déclencheur des planning quand j'aurais des moyens de détecter les intrus.
Mise à jour du 10 février 2017
Il sera nécessaire de modifier la section #update timers
du script enable_timers.sh
à chaque addition ou élimination
d'un événement programmé. Un utilisateur du forum Domoticz,
philchillbill, a écrit un
script Perl qui récupère les numéros d'identité des
plannings pour ensuite engendrer le script. C'est quelque chose à essayer
éventuellement, à mesure que je reconstruirai mon système domotique en
éliminant le matériel X10.