Etat d'interrupteur qui reste en off suite coupure edf

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
heartblood
Messages : 189
Inscription : 13 août 2015, 09:50

Re: Etat d'interrupteur qui reste en off suite coupure edf

Message par heartblood »

Essaye de suivre ce tuto : http://easydomoticz.com/manipuler-les-d ... -en-shell/

Ca te permettra d'installer les programmes pour curl et de tester ton premier script en bash ;-)

Dès que ton script sera fonctionnel, on s'attaquera à le faire toutes les minutes.

N hesite pas à poster ton script, et à poser des questions.
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Re: Etat d'interrupteur qui reste en off suite coupure edf

Message par Gaz »

Voila mon script :

Code : Tout sélectionner

#!/bin/bash

result=$(curl -s "http://192.168.1.XX:XXXX/json.htm?type=devices&rid=1"| jq -r .result[].Status)


echo $result

if [ $result = "on" ]
    then
     curl 'http://192.168.1.XX:XXXX/json.htm?type=command&param=switchlight&idx=1&switchcmd=On&level=0'

elif [ $result = "off" ]
    then 
          curl 'http://192.168.1.XX:XXXX/json.htm?type=command&param=switchlight&idx=1&switchcmd=Off&level=0'

fi
Par contre je capte pas le coup de l'intégration dans un script Lua Domoticz :?:
heartblood
Messages : 189
Inscription : 13 août 2015, 09:50

Re: Etat d'interrupteur qui reste en off suite coupure edf

Message par heartblood »

Très bien maintenant, on va corriger ensemble les petites erreurs.

Code : Tout sélectionner

result=$(curl -s "http://192.168.1.XX:XXXX/json.htm?type=devices&rid=1"| jq -r .result[].Status)
Cette commande si tu l'as testé te renvoi la valeur de "Status"

En gros, quand tu as tapé la commande sur ton navigateur, tu as ça :

Code : Tout sélectionner

{
   "ActTime" : 1445355555,
   "ServerTime" : "2015-10-20 17:39:15",
   "Sunrise" : "08:19",
   "Sunset" : "18:51",
   "result" : [
      {
         "AddjMulti" : 1.0,
         "AddjMulti2" : 1.0,
         "AddjValue" : 0.0,
         "AddjValue2" : 0.0,
         "BatteryLevel" : 255,
         "CustomImage" : 10,
         "Data" : "On",
         "Description" : "",
         "Favorite" : 1,
         "HardwareID" : 1,
         "HardwareName" : "Dongle",
         "HardwareType" : "OpenZWave USB",
         "HardwareTypeVal" : 21,
         "HaveDimmer" : true,
         "HaveGroupCmd" : false,
         "HaveTimeout" : false,
         "ID" : "0000201",
         "Image" : "Fireplace",
         "IsSubDevice" : false,
         "LastUpdate" : "2015-10-20 16:37:02",
         "Level" : 0,
         "LevelInt" : 0,
         "MaxDimLevel" : 100,
         "Name" : "Poêle",
         "Notifications" : "false",
         "PlanID" : "0",
         "PlanIDs" : [ 0 ],
         "Protected" : false,
         "ShowNotifications" : true,
         "SignalLevel" : 7,
         "Status" : "On",
         "StrParam1" : "",
         "StrParam2" : "",
         "SubType" : "ZWave",
         "SwitchType" : "On/Off",
         "SwitchTypeVal" : 0,
         "Timers" : "true",
         "Type" : "Lighting 2",
         "TypeImg" : "lightbulb",
         "Unit" : 1,
         "Used" : 1,
         "UsedByCamera" : false,
         "XOffset" : "0",
         "YOffset" : "0",
         "idx" : "1"
      }
   ],
   "status" : "OK",
   "title" : "Devices"
}
Tu peux constater que tout en bas, tu as le sous paramètre Status, et, celui qui nous interesse c'est : "HaveTimeout".
Il va falloir changer Status en HaveTimeout

Tu peux tester cette commande directement sur ta RPI pour voir si ça fonctionne : curl -s "http://192.168.1.XX:XXXX/json.htm?type=devices&rid=1"| jq -r .result[].HaveTimeout

echo $result --> Te permet d'afficher si "HaveTimeout" est "On" ou "Off". En soit il n'a pas trop d'interet (enfin c est mon opinion). Il te permet de voir le resultat dans le cadre d'un debug.

Ensuite en fonction du résultat tu envoies cette commande :

Code : Tout sélectionner

http://192.168.1.XX:XXXX/json.htm?type=command&param=switchlight&idx=1&switchcmd=Off&level=0
En gros, tu renvoies au module qu'il doit être allumé (switchcmd=On) ou éteint (switchcmd=Off) avec un dimmer à 0 (level=0) donc éteint . Mais toi, comme tu as pu le constater, ton module est En Ligne ou Hors Ligne. Tu ne peux lui renvoyer ta commande quand il est Hors Ligne.

Ce que tu devrais faire :
s'il est en ligne --> je ne fais rien
s'il est Hors Ligne --> Soit tu décides de redemarrer ta RPI soit tu envoies la commande "service domoticz restart". Qui permettra de redemarrer domoticz sans redemarrer la RPI. Pour envoyer cette commande, il n'y a pas besoin de curl, tu as juste à l'écrire dans ton bash.

Si je t ai perdu, n'hésite pas.
J'attends ton script 2e version ;-)
heartblood
Messages : 189
Inscription : 13 août 2015, 09:50

Re: Etat d'interrupteur qui reste en off suite coupure edf

Message par heartblood »

Gaz a écrit :
Par contre je capte pas le coup de l'intégration dans un script Lua Domoticz :?:
On va faire ton script en bash et non en lua. C'est pour ça que tu ne vois pas l'intégration dans un script Lua.
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Re: Etat d'interrupteur qui reste en off suite coupure edf

Message par Gaz »

2eme copie :

Code : Tout sélectionner

#!/bin/bash

result=$(curl -s "http://192.168.1.XX:XXXX/json.htm?type=devices&rid=1"| jq -r .result[].HaveTimeout)


echo $result

if [ $result = "true " ]
    then
     curl 'http://192.168.1.XX:XXXX/json.htm?type=command&param=switchlight&idx=1&switchcmd=On&level=0'

elif [ $result = "false ]
    then 
          service domoticz restart

fi
J'ai changer les on/off en true/false car c'est les valeurs qui sont dans le résultat :
http://192.168.1.xx:xxxx/json.htm?type=devices&rid=2

Code : Tout sélectionner

{
   "ActTime" : 1445367279,
   "ServerTime" : "2015-10-20 20:54:39",
   "Sunrise" : "08:19",
   "Sunset" : "18:51",
   "result" : [
      {
         "AddjMulti" : 1.0,
         "AddjMulti2" : 1.0,
         "AddjValue" : 0.0,
         "AddjValue2" : 0.0,
         "BatteryLevel" : 255,
         "CustomImage" : 0,
         "Data" : "Off",
         "Description" : "",
         "Favorite" : 0,
         "HardwareID" : 1,
         "HardwareName" : "Dongle",
         "HardwareType" : "OpenZWave USB",
         "HardwareTypeVal" : 21,
         "HaveDimmer" : true,
         "HaveGroupCmd" : false,
         "HaveTimeout" :[color=#FF0000] false[/color],
         "ID" : "0000202",
         "Image" : "Light",
         "IsSubDevice" : false,
         "LastUpdate" : "2015-10-20 11:48:10",
         "Level" : 0,
         "LevelInt" : 0,
         "MaxDimLevel" : 100,
         "Name" : "Switch Poêle 2 \"off\"",
         "Notifications" : "false",
         "PlanID" : "0",
         "PlanIDs" : [ 0 ],
         "Protected" : false,
         "ShowNotifications" : true,
         "SignalLevel" : "-",
         "Status" : "Off",
         "StrParam1" : "",
         "StrParam2" : "",
         "SubType" : "ZWave",
         "SwitchType" : "On/Off",
         "SwitchTypeVal" : 0,
         "Timers" : "false",
         "Type" : "Lighting 2",
         "TypeImg" : "lightbulb",
         "Unit" : 1,
         "Used" : 1,
         "UsedByCamera" : false,
         "XOffset" : "0",
         "YOffset" : "0",
         "idx" : "2"
      }
   ],
   "status" : "OK",
   "title" : "Devices"
}
heartblood
Messages : 189
Inscription : 13 août 2015, 09:50

Re: Etat d'interrupteur qui reste en off suite coupure edf

Message par heartblood »

Gaz a écrit :2eme copie :

Code : Tout sélectionner

#!/bin/bash

result=$(curl -s "http://192.168.1.XX:XXXX/json.htm?type=devices&rid=1"| jq -r .result[].HaveTimeout)


echo $result

if [ $result = "true " ]
    then
     curl 'http://192.168.1.XX:XXXX/json.htm?type=command&param=switchlight&idx=1&switchcmd=On&level=0'

elif [ $result = "false ]
    then 
          service domoticz restart

fi
J'ai changer les on/off en true/false car c'est les valeurs qui sont dans le résultat :
http://192.168.1.xx:xxxx/json.htm?type=devices&rid=2
Pourquoi tu envoies ce curl : " curl 'http://192.168.1.XX:XXXX/json.htm?type=command&param=switchlight&idx=1&switchcmd=On&level=0' " ? Il ne te sert à rien, moi je verrais ça (j'ai rajouter les guillemets manquants)

Code : Tout sélectionner

#!/bin/bash

result=$(curl -s "http://192.168.1.XX:XXXX/json.htm?type=devices&rid=1"| jq -r .result[].HaveTimeout)


echo $result

if [ $result = "true" ]
    then 
          sudo service domoticz.sh restart

fi
PS : je test actuellement ce code sur ma RPI
PS 2 : le script fonctionne, j'ai juste fait une erreur sur le restart domoticz, je viens de la corriger.
Dernière modification par heartblood le 20 oct. 2015, 21:25, modifié 1 fois.
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Re: Etat d'interrupteur qui reste en off suite coupure edf

Message par Gaz »

Pourquoi tu envoies ce curl : " curl 'http://192.168.1.XX:XXXX/json.htm?type=command&param=switchlight&idx=1&switchcmd=On&level=0' " ? Il ne te sert à rien, moi je verrais ça (j'ai rajouter les guillemets manquants)

=> Erreur copier/coller

Bon je suis ok je comprend je ce que nous avons fait, la suite chef :D
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Re: Etat d'interrupteur qui reste en off suite coupure edf

Message par Gaz »

Pour info RPI=????
heartblood
Messages : 189
Inscription : 13 août 2015, 09:50

Re: Etat d'interrupteur qui reste en off suite coupure edf

Message par heartblood »

As tu créer le script sur ta RPI ?
Sais tu comment faire ?

Si la réponse est non :
Tu vas sur ta RPI, tu vas dans domoticz/scripts
Perso j'ai créé un dossier bash pour que ça soit moins le bordel. (sudo mkdir bash/)
Ensuite tu crée ton script --> nano XXXXX.sh (XXXX étant le nom de ton script)
Et tu colles à l'intérieur le script
Tu mets à jour les droits --> chmod u+x XXXX.sh

Ensuite, le but c'est que ton script s execute toutes les X minutes (j'opterais pour 5-10 pour ne pas surcharger ta RPI)

Tu tapes sudo crontab -e ( voir https://openclassrooms.com/courses/repr ... e-differee)

Et tu ajoutes la ligne que je suis entrain de tester :
10 * * * * bash /home/pi/domoticz/scripts/bash/test.sh > /dev/null 2>&1


Ce qui veut dire que ton script sera executé toutes les 10 minutes et que le resultat de cette opération (erreur ou resultat +) sera envoyé "à la poubelle"
heartblood
Messages : 189
Inscription : 13 août 2015, 09:50

Re: Etat d'interrupteur qui reste en off suite coupure edf

Message par heartblood »

Gaz a écrit :Pour info RPI=????
RPI = Raspberry Pi

Et je viens de voir que tu étais sur NAS XD
Donc change RPI par NAS, et, ne prend pas en compte les commandes linuxienne, j'espère que tu arriveras à traduire XD
Dernière modification par heartblood le 20 oct. 2015, 21:27, modifié 1 fois.
Répondre