Page 1 sur 1

[Tuto] Etat des périphériques au redémarrage

Publié : 06 avr. 2015, 18:50
par patrice
Bonjour à tous
Je vous donne ici un script python dont la tache est de passer les périphériques à un état déterminé et défini dans le script lui même.
Seuls les switches sont concernés par ce script.

La technique conseillée en Lua d'envoyer le dernier état à tous les périphériques, .

Code : Tout sélectionner

        for i, v in pairs(otherdevices) do
        print(i, v)
                commandArray[i]=v
quoique rapide et efficace, entraîne le plantage des capteurs Z-wave ( présence, inondation) qui voient arriver une trame qu'ils ne comprennent pas et le capteur décroche "2015-04-04 10:11:03.801 Error: OpenZWave: Internal Node ValueID not found! NodeID: 9 (0x09), instanceID: 0"
Une discussion à eu lieu dans le forum à ce sujet viewtopic.php?p=3394#p3331

Depuis la suppression de ce script Lua mon capteur est revenu à la vie et j'ai arrété de maudire le z_wave :lol:

J'ai donc fait un bout de script python pour passer des périphériques précis dans un état précis.
Plus de trucs à la hache, un peu de finesse quoi!.

En ce qui me concerne ayant mis en place un script de surveillance du fonctionnement de Domoticz comme celui ci

Code : Tout sélectionner

#!/bin/bash
if [[ ! "$(sudo service domoticz.sh status)" =~ "domoticz is running" ]]
then
sudo service domoticz.sh start
echo "domoticz restarted">>crash_dz.log
fi
je rajoute juste avant le fi final , un petit sleep (10) pour laisser à Domoticz le temps de démarrer puis l'appel du script ci dessous et à chaque redemarrage de Domoticz, on repart tout propre.

Code : Tout sélectionner

#!/bin/bash
if [[ ! "$(sudo service domoticz.sh status)" =~ "domoticz is running" ]]
then
sudo service domoticz.sh start
echo "domoticz restarted">>crash_dz.log
sleep(10)
/home/pi/scripts/python/clean_start.py
fi

Les prérequis :
Le script est téléchargeable ici http://easydomoticz.com/scripts/clean_start.py

Comme d'hab, python,request sont obligatoires.
Configurer :
Les Ip, port
Il y a un mode debug qui affiche des urls envoyées à Domoticz si on passe debug à 1
Les user/password éventuels
Il faut récupérer la liste des idx à piloter et l'etat souhaité et modifier le script pour vos periphériques.

En haut du script il y a un bloc qui permettra de mettre vos idx Domoticz et l'etat souhaité

Code : Tout sélectionner

############### Parametres des equipments #######################
# chaque idx des peripheriques a allumer/eteindre et l'etat voulu 
# attention aux idx et à l etat SVP

liste={'112':'On',
       '78':'Off',
      }

################################################################

Un chmod +x le nom du script
un ./lenomduscript.py pour verifier que tout fonctionne
et si c'est le cas, implantez le soit à la fin du init.d/domoticz avec un sleep(X)
soit dans le script de surveillance comme expliqué plus haut.



Voila affaire à suivre (ou pas)
Mais le "ou pas" aurait ma préférence !

Re: Etat des périphériques au redémarrage

Publié : 07 avr. 2015, 19:34
par brakc
Bonsoir Patrice,

J'ai testé ton script il fonctionne à merveille ;-) et cela va me sauver la vie.
En effet, je me vois mal après une coupure de courant avoir toutes mes lampes allumées et l'arrosage auto déclanché ...

En revanche, je ne l'ai pas encore testé sur mon script de démarrage.
J'utilise ce script pour relancer le service Domoticz car sans cela j'ai des erreurs systématiques "Segmentation fault" à chaque démarrage lors de l'initialisation des mes devices zwave. Je suis donc dans l'obligation de démarrer mon Domoticz en plusieurs fois avec ce script ... loucheeeeeeee

J'ai donc 2 questions:
- pourquoi ces erreurs lors ce chaque démarrage?
- Je ne connais pas le python et quelle est la différence avec ton script? notament la ligne

Code : Tout sélectionner

if [[ ! "$(sudo service domoticz.sh status)" =~ "domoticz is running" ]]
versus

Code : Tout sélectionner

if [ $? -eq 1 ]
?

Code : Tout sélectionner

#!/bin/bash
#Title check_domoticz_online.sh
# check domoticz
sudo service domoticz.sh status
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
sudo service domoticz.sh start
echo "Domoticz restart"
else
echo "Domoticz running - do nothing"
fi

Code : Tout sélectionner

#!/bin/bash
if [[ ! "$(sudo service domoticz.sh status)" =~ "domoticz is running" ]]
then
sudo service domoticz.sh start
echo "domoticz restarted">>crash_dz.log
sleep(10)
/home/pi/scripts/python/clean_start.py
fi
Merci à toi,

Fab.

Re: Etat des périphériques au redémarrage

Publié : 21 sept. 2015, 17:34
par deennoo
Est ce que vous avez un script qui permet de remettre les GPIO dans le même état qu'avant un reboot.

Je me sert des GPIO pour allumer et éteindre 2 leds (alarme et intrusion). Seulement après mon reboot journalier nocturne, les gpio sont tous revenu a off et mes leds sont éteintes...du coup j'ouvre pas au chat car si l'alarme est armé elle va hurler.

Re: Etat des périphériques au redémarrage

Publié : 19 juin 2018, 22:13
par vr6man
Bonsoir

je viens de voir ce post

je l'ai mis en place il fonctionne bien mais je ne comprends pas

implantez le soit à la fin du init.d/domoticz avec un sleep(X)

que faut t'il rajouter dans le fichier domoticz.sh