Aller au contenu

Problème avec un Script


Messages recommandés

Bonjour à tous,

Je tourne en rond pour l'installation d'un script .sh depuis une semaine et j'ai l'impression d'avoir tout essayé !!!

Donc j'ai sur mon ds214play installé Domoticz qui fonctionne bien. J'ai installé depuis peu chez moi une alarme Somfy Protexium 5000 et je cherche à mettre en place un script trouvé sur un forum dédié à Domoticz.

Sauf que ça ne fonctionne pas... J'ai l'impression que ce Script à été réalisé pour une utilisation sur Raspberry et que cela pose problème.

voici le script :

#!/bin/bash
#----------------------------------------------------------------------------------------------------------------------
# Script alarme_Somfy.sh
# Date : 11/2016
# Version : 2.0
# Par : jcjames_13009
# Description : Script de pilotage de l'alarme Somfy Protexiom 5000
# - Adapatation du script de Seb13 du forum easydomoticz.com pour Alarme Somfy Protexion 600 au modèle Protexion 5000
#   * Lecture des états du système et mise à jour dans Domoticz
#   * Mise en marche de l'alarme Zone A
#   * Mise en marche de l'alarme Zone B
#   * Mise en marche de l'alarme Zone C
#   * Mise en marche de l'alarme Zones A B C
#   * Arrêt de l'alarme Zones A B C
#   * Reset defauts piles, liaisons et alarmes
#   * Gestion liste des éléments
#----------------------------------------------------------------------------------------------------------------------
# Appel du script
# - Mise à jour des états de l'alarme toutes les 15min via le crontab :
#   */15 * * * * sudo /home/pi/domoticz/alarme_somfy.sh --Status
# - Pilotage de l'alarme à partir de DOMOTICZ :
#   Ex pour la mise en marche Zone A ajouter dans l'onglet "Action On" du capteur virtuel: 
#   script:///home/pi/domoticz/alarme_Somfy.sh --ZoneAOn 
#----------------------------------------------------------------------------------------------------------------------
# Version : 2.1
# Date : 25/11/2016
# - Ajout d'un "sleep 1" pour éviter les pertes de retour d'état entre chaque cde dans la lecture de l'état du système
#----------------------------------------------------------------------------------------------------------------------
# Version : 2.2
# Date : 27/11/2016
# - Ajout cde reset defauts piles, liaisons et alarmes
#----------------------------------------------------------------------------------------------------------------------
# Version : 2.3
# Date : 10/12/2016
#   * Gestion liste des éléments et remonté état dans Domoticz
#----------------------------------------------------------------------------------------------------------------------

#Debug=True
Debug=False

#----------------------------------------------------------------------------------------------------------------------
# PARAMETRES ALARME
#----------------------------------------------------------------------------------------------------------------------
# Carte d'authentification perso
declare -A CarteAuthentification

CarteAuthentification=( ["A1"]="xxxx" ["B1"]="xxxx" ["C1"]="xxxx" ["D1"]="xxxx" ["E1"]="xxxx" ["F1"]="xxxx" 
                  ["A2"]="xxxx" ["B2"]="xxxx" ["C2"]="xxxx" ["D2"]="xxxx" ["E2"]="xxxx" ["F2"]="xxxx" 
                  ["A3"]="xxxx" ["B3"]="xxxx" ["C3"]="xxxx" ["D3"]="xxxx" ["E3"]="xxxx" ["F3"]="xxxx" 
                  ["A4"]="xxxx" ["B4"]="xxxx" ["C4"]="xxxx" ["D4"]="xxxx" ["E4"]="xxxx" ["F4"]="xxxx" 
                  ["A5"]="xxxx" ["B5"]="xxxx" ["C5"]="xxxx" ["D5"]="xxxx" ["E5"]="xxxx" ["F5"]="xxxx" )

# Adresse IP alarme Somfy 
SrvSomfyIp="http://IP.ALARME/"

# Code Utilisateur1
CodeUtilisateur1=1234

# URLs alarme SOMFY PROTEXION 5000 GSM
UrlLogin=$SrvSomfyIp"fr/login.htm"            # Connexion à l'alarme
UrlLogout=$SrvSomfyIp"logout.htm"            # Déconnexion de l'alarme
UrlEtat=$SrvSomfyIp"status.xml"               # Etat du système
UrlPilotage=$SrvSomfyIp"fr/u_pilotage.htm"      # Pilotage alarme
UrlElements=$SrvSomfyIp"fr/u_listelmt.htm"      # Liste des éléments / Reset défauts

#----------------------------------------------------------------------------------------------------------------------
# PARAMETRES DOMOTICZ
#----------------------------------------------------------------------------------------------------------------------
# Capteurs virtuels Domoticz
AlarmeSomfyPilesIdx=xxxx
AlarmeSomfyRadioIdx=xxxx
AlarmeSomfyPorteIdx=xxxx
AlarmeSomfyAlarmeIdx=xxxx
AlarmeSomfyBoitierIdx=xxxx

AlarmeSomfyGSMIdx=xxxx
AlamreSomfySignalGSMIdx=xxxx
AlamreSomfyOperateurGSMIdx=xxxx

AlarmeSomfyCameraIdx=xxxx

AlamreSomfyZoneAIdx=xxxx
AlamreSomfyZoneBIdx=xxxx
AlamreSomfyZoneCIdx=xxxx

AlamreSomfyDOEntreeIdx=xxxx
AlamreSomfyDOAtelierIdx=xxxx

# Adresse IP et port du serveur Domoticz
SrvDomoticzIp="IP.DOMOTICZ:PORT"

#----------------------------------------------------------------------------------------------------------------------
# FONCTIONS
#----------------------------------------------------------------------------------------------------------------------
# Fonction menu d'aide
Aide() {
   echo -e "\tScript Domoticz Alarme Somfy Protexion 5000"
   echo -e "\t--help or -h  \t\tMenu d'aide"
   echo -e "\t--Status      \t\tLecture de l'état du système"
   echo -e "\t--Elements    \t\tListe des éléments"
   echo -e "\t--ZoneAOn     \t\tMise en marche de l'alarme Zones A"
   echo -e "\t--ZoneBOn     \t\tMise en marche de l'alarme Zones B"
   echo -e "\t--ZoneCOn     \t\tMise en marche de l'alarme Zones C"
   echo -e "\t--ZoneABCOn   \t\tMise en marche de l'alarme Zones A B C"
   echo -e "\t--AlarmeOff   \t\tArrêt de l'alarme Zones A B C"
   echo -e "\t--RSTPiles    \t\tReset defauts piles"
   echo -e "\t--RSTAlarmes  \t\tReset defauts alarmes"
   echo -e "\t--RSTLiaisons \t\tReset defauts liaisons"
}

# Fonction connexion à l'alarme
login_alarme () {
   # Affichage des URLs
   if [ "$Debug" = "True" ]; then
      echo " ********************************* "
      echo " Liste des URLs"
      echo " ********************************* "
      echo " UrlLogin    = "$UrlLogin
      echo " UrlLogout   = "$UrlLogout
      echo " UrlEtat     = "$UrlEtat
      echo " UrlPilotage = "$UrlPilotage
      echo " UrlElements = "$UrlElements
   fi

   # Récupération du code d'acces
   if [ "$Debug" = "True" ]; then
      echo " Récuperation du code d'accès"
      CodeAcces="$(curl $SrvSomfyIp $UrlLogin | grep -Eoi 'authentification <b>.*</b>')"
      CodeAcces="$(echo "${CodeAcces:20:2}")"
      echo " Code d'accès = "$CodeAcces
   else
      CodeAcces="$(curl -s $SrvSomfyIp $UrlLogin | grep -Eoi 'authentification <b>.*</b>')"
      CodeAcces="$(echo "${CodeAcces:20:2}")"
   fi

   # Récupération du code d'authentification à partir du code d'accès
   CodeAuthentification="${CarteAuthentification["$CodeAcces"]}"
   if [ "$Debug" = "True" ]; then
      echo " Récuperation du code d'authentification"
      echo " Code d'authentification = "$CodeAuthentification
   fi

   # Envoi du code utilisateur1 et du code d'authentification dans l'url Login pour connexion
   if [ "$Debug" = "True" ]; then
      echo " Envoi du code utilisateur1 et du code d'authentification"
      curl -L --cookie cjar --cookie-jar cjar --data "password="$CodeUtilisateur1"&key="$CodeAuthentification"&btn_login=Connexion" $UrlLogin | iconv -f iso8859-1 -t utf-8
   else
      curl -s -L --cookie cjar --cookie-jar cjar --data "password="$CodeUtilisateur1"&key="$CodeAuthentification"&btn_login=Connexion" $UrlLogin | iconv -f iso8859-1 -t utf-8 > /dev/null
   fi
}

# Fonction déconnexion de l'alarme
logout_alarme () {
   if [ "$Debug" = "True" ]; then
      echo " Déconnexion de l'alarme"
      curl -L --cookie cjar --cookie-jar cjar $UrlLogout | iconv -f iso8859-1 -t utf-8
   else
      curl -s -L --cookie cjar --cookie-jar cjar $UrlLogout | iconv -f iso8859-1 -t utf-8 > /dev/null
   fi
}

# Fonction mise à jour capteurs Domoticz
# Paramètres: $1 Nom du capteur / $2 On ou Off / $3 Idx du capteur
maj_capteur () {
   if [ "$Debug" = "True" ]; then
      echo " Etat "$1
      if [ "$2" = "On" ]; then
         curl "http://$SrvDomoticzIp/json.htm?type=command&param=switchlight&idx=$3&switchcmd=On"
      else
         curl "http://$SrvDomoticzIp/json.htm?type=command&param=switchlight&idx=$3&switchcmd=Off"
      fi
   else
      if [ "$2" = "On" ]; then
         curl -s "http://$SrvDomoticzIp/json.htm?type=command&param=switchlight&idx=$3&switchcmd=On" > /dev/null
      else
         curl -s "http://$SrvDomoticzIp/json.htm?type=command&param=switchlight&idx=$3&switchcmd=Off" > /dev/null
      fi
   fi
}

#----------------------------------------------------------------------------------------------------------------------
# Menu des options de lancement du script
#----------------------------------------------------------------------------------------------------------------------
while [[ $1 == -* ]]; do
   case "$1" in
      --help|-h) Aide; exit 0;;
      --Status) Status="1"; break;;
      --Elements) Elements="1"; break;;
      --ZoneAOn) ZoneAOn="1"; break;;
      --ZoneBOn) ZoneBOn="1"; break;;
      --ZoneCOn) ZoneCOn="1"; break;;
      --ZoneABCOn) ZoneABCOn="1"; break;;
      --AlarmeOff) AlarmeOff="1"; break;;
      --RSTPiles) RSTPiles="1"; break;;
      --RSTAlarmes) RSTAlarmes="1"; break;;
      --RSTLiaisons) RSTLiaisons="1"; break;;
      --*|-*) shift; break;;
   esac
done

#----------------------------------------------------------------------------------------------------------------------
# Lecture de l'état du système
#----------------------------------------------------------------------------------------------------------------------
if [ "$Status" = "1" ]; then
   # Connexion à l'alarme
   login_alarme
   
   # Lecture de l'état du système et récupération dans les variables
   # Envoie URL http://IPAlarme/status.xml
   # Retour:
   #   <zone0>off</zone0>               -> Zone A
   #   <zone1>off</zone1>               -> Zone B
   #   <zone2>off</zone2>               -> Zone C
   #   <defaut0>ok</defaut0>            -> Piles
   #   <defaut1>ok</defaut1>            -> Radio
   #   <defaut2>ok</defaut2>            -> Porte/Fenêtre
   #   <defaut3>ok</defaut3>            -> Alarme
   #   <defaut4>ok</defaut4>            -> Boitier
   #   <gsm>GSM connecté au réseau</gsm>    -> GSM
   #   <recgsm>4</recgsm>               -> Signal GSM
   #   <opegsm>"Orange</opegsm>         -> Opérateur GSM
   #   <camera>disabled</camera>         -> Caméra

   if [ "$Debug" = "True" ]; then
      echo " Lecture de l'état du système"
      EtatZoneA="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<zone0>.*')"
      EtatZoneA="$(echo "${EtatZoneA:7:-9}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatZoneB="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<zone1>.*')"
      EtatZoneB="$(echo "${EtatZoneB:7:-9}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatZoneC="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<zone2>.*')"
      EtatZoneC="$(echo "${EtatZoneC:7:-9}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      
      EtatPiles="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<defaut0>.*')"
      EtatPiles="$(echo "${EtatPiles:9:-11}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatRadio="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<defaut1>.*')"
      EtatRadio="$(echo "${EtatRadio:9:-11}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatPorte="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<defaut2>.*')"
      EtatPorte="$(echo "${EtatPorte:9:-11}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatAlarme="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<defaut3>.*')"
      EtatAlarme="$(echo "${EtatAlarme:9:-11}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatBoitier="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<defaut4>.*')"
      EtatBoitier="$(echo "${EtatBoitier:9:-11}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde

      EtatGSM="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<gsm>.*')"
      EtatGSM="$(echo "${EtatGSM:5:-7}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      SignalGSM="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<recgsm>.*')"
      SignalGSM="$(echo "${SignalGSM:8:-10}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      OperateurGSM="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<opegsm>.*')"
      OperateurGSM="$(echo "${OperateurGSM:9:-10}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      
      EtatCamera="$(curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<camera>.*')"
      EtatCamera="$(echo "${EtatCamera:8:-10}")"

      # Affichage des états
      echo " ******************************************* "
      echo "  Etat du système"
      echo " ******************************************* "
      echo " Zone A                   = "$EtatZoneA
      echo " Zone B                   = "$EtatZoneB
      echo " Zone C                   = "$EtatZoneC
      echo ""
      echo " Etat Piles               = "$EtatPiles
      echo " Etat Communication Radio = "$EtatRadio
      echo " Etat Porte/Fenêtre       = "$EtatPorte
      echo " Etat Alarme              = "$EtatAlarme
      echo " Etat Boitier             = "$EtatBoitier
      echo ""
      echo " Etat GSM                 = "$EtatGSM
      echo " Signal GSM               = "$SignalGSM
      echo " Opérateur GSM            = "$OperateurGSM
      echo ""
      echo " Etat caméra              = "$EtatCamera
   else
      EtatZoneA="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<zone0>.*')"
      EtatZoneA="$(echo "${EtatZoneA:7:-9}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatZoneB="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<zone1>.*')"
      EtatZoneB="$(echo "${EtatZoneB:7:-9}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatZoneC="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<zone2>.*')"
      EtatZoneC="$(echo "${EtatZoneC:7:-9}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      
      EtatPiles="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<defaut0>.*')"
      EtatPiles="$(echo "${EtatPiles:9:-11}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatRadio="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<defaut1>.*')"
      EtatRadio="$(echo "${EtatRadio:9:-11}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatPorte="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<defaut2>.*')"
      EtatPorte="$(echo "${EtatPorte:9:-11}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatAlarme="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<defaut3>.*')"
      EtatAlarme="$(echo "${EtatAlarme:9:-11}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatBoitier="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<defaut4>.*')"
      EtatBoitier="$(echo "${EtatBoitier:9:-11}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde

      EtatGSM="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<gsm>.*')"
      EtatGSM="$(echo "${EtatGSM:5:-7}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      SignalGSM="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<recgsm>.*')"
      SignalGSM="$(echo "${SignalGSM:8:-10}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      OperateurGSM="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<opegsm>.*')"
      OperateurGSM="$(echo "${OperateurGSM:9:-10}")"
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      
      EtatCamera="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi '<camera>.*')"
      EtatCamera="$(echo "${EtatCamera:8:-10}")"
   fi
   
   # Déconnexion de l'alarme
   logout_alarme
   
   # Mise à jour capteurs Domoticz
   if [ "$Debug" = "True" ]; then
      echo " Mise à jour capteurs Domoticz"
   fi

   # Zone A
   if [ "$EtatZoneA" = "off" ]; then
      maj_capteur ZoneA Off $AlamreSomfyZoneAIdx
   else
      maj_capteur ZoneA On $AlamreSomfyZoneAIdx
   fi

   # Zone B
   if [ "$EtatZoneB" = "off" ]; then
      maj_capteur ZoneB Off $AlamreSomfyZoneBIdx
   else
      maj_capteur ZoneB On $AlamreSomfyZoneBIdx
   fi

   # Zone C
   if [ "$EtatZoneC" = "off" ]; then
      maj_capteur ZoneC Off $AlamreSomfyZoneCIdx
   else
      maj_capteur ZoneC On $AlamreSomfyZoneCIdx
   fi

   # Etat Piles
   if [ "$EtatPiles" = "ok" ]; then
      maj_capteur Piles On $AlarmeSomfyPilesIdx
   else
      maj_capteur Piles Off $AlarmeSomfyPilesIdx
   fi

   # Communication Radio
   if [ "$EtatRadio" = "ok" ]; then
      maj_capteur Radio On $AlarmeSomfyRadioIdx
   else
      maj_capteur Radio Off $AlarmeSomfyRadioIdx
   fi

   # Porte/Fenêtre
   if [ "$EtatPorte" = "ok" ]; then
      maj_capteur Porte/Fenetre Off $AlarmeSomfyPorteIdx
   else
      maj_capteur Porte/Fenetre On $AlarmeSomfyPorteIdx
   fi

   # Alarme
   if [ "$EtatAlarme" = "ok" ]; then
      maj_capteur Alarme Off $AlarmeSomfyAlarmeIdx
   else
      maj_capteur Alarme On $AlarmeSomfyAlarmeIdx
   fi

   # Boitier
   if [ "$EtatBoitier" = "ok" ]; then
      maj_capteur Boitier Off $AlarmeSomfyBoitierIdx
   else
      maj_capteur Boitier On $AlarmeSomfyBoitierIdx
   fi

   # GSM
   if [ "$EtatGSM" = "GSM connecté au réseau" ]; then
      maj_capteur GSM On $AlarmeSomfyGSMIdx
   else
      maj_capteur GSM Off $AlarmeSomfyGSMIdx
   fi
   
   # Niveau Signal GSM
   if [ "$Debug" = "True" ]; then
      echo " Niveau Signal GSM"
      curl "http://$SrvDomoticzIp/json.htm?type=command&param=udevice&idx=$AlamreSomfySignalGSMIdx&nvalue=0&svalue=$SignalGSM"
   else
      curl -s "http://$SrvDomoticzIp/json.htm?type=command&param=udevice&idx=$AlamreSomfySignalGSMIdx&nvalue=0&svalue=$SignalGSM" > /dev/null
   fi
      
   # Opérateur GSM
   if [ "$Debug" = "True" ]; then
      echo " Opérateur GSM"
      curl "http://$SrvDomoticzIp/json.htm?type=command&param=udevice&idx=$AlamreSomfyOperateurGSMIdx&nvalue=0&svalue=$OperateurGSM"
   else
      curl -s "http://$SrvDomoticzIp/json.htm?type=command&param=udevice&idx=$AlamreSomfyOperateurGSMIdx&nvalue=0&svalue=$OperateurGSM" > /dev/null
   fi   

   # Caméra
   if [ "$EtatCamera" = "disabled" ]; then
      maj_capteur Camera Off $AlarmeSomfyCameraIdx
   else
      maj_capteur Camera On $AlarmeSomfyCameraIdx
   fi
   
fi   

#----------------------------------------------------------------------------------------------------------------------
# Mise en marche de l'alarme Zones A B C
#----------------------------------------------------------------------------------------------------------------------
if [ "$ZoneABCOn" = "1" ]; then
   # Connexion à l'alarme
   login_alarme

   # Mise en marche de l'alarme Zones A B C
   if [ "$Debug" = "True" ]; then
      echo "Mise en marche de l'alarme Zones A B C"
      curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_ABC=Marche A B C" $UrlPilotage | iconv -f iso8859-1 -t utf-8
   else
      curl -s -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_ABC=Marche A B C" $UrlPilotage | iconv -f iso8859-1 -t utf-8 > /dev/null
   fi

   # Déconnexion de l'alarme
   logout_alarme

   # Mise à jour capteurs Domoticz
   if [ "$Debug" = "True" ]; then
      echo " Mise à jour capteurs Domoticz"
   fi
   maj_capteur ZoneA On $AlamreSomfyZoneAIdx
   maj_capteur ZoneB On $AlamreSomfyZoneBIdx
   maj_capteur ZoneC On $AlamreSomfyZoneCIdx
fi

#----------------------------------------------------------------------------------------------------------------------
# Mise en marche de l'alarme Zone A
#----------------------------------------------------------------------------------------------------------------------
if [ "$ZoneAOn" = "1" ]; then
   # Connexion à l'alarme
   login_alarme

   # Mise en marche de l'alarme Zone A
   if [ "$Debug" = "True" ]; then
      echo "Mise en marche de l'alarme Zone A"
      curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_A=Marche A" $UrlPilotage | iconv -f iso8859-1 -t utf-8
   else
      curl -s -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_A=Marche A" $UrlPilotage | iconv -f iso8859-1 -t utf-8 > /dev/null
   fi

   # Déconnexion de l'alarme
   logout_alarme

   # Mise à jour capteurs Domoticz
   if [ "$Debug" = "True" ]; then
      echo " Mise à jour capteurs Domoticz"
   fi
   maj_capteur ZoneA On $AlamreSomfyZoneAIdx
fi

#----------------------------------------------------------------------------------------------------------------------
# Mise en marche de l'alarme Zone B
#----------------------------------------------------------------------------------------------------------------------
if [ "$ZoneBOn" = "1" ]; then
   # Connexion à l'alarme
   login_alarme

   # Mise en marche de l'alarme Zone B
   if [ "$Debug" = "True" ]; then
      echo "Mise en marche de l'alarme Zone B"
      curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_B=Marche B" $UrlPilotage | iconv -f iso8859-1 -t utf-8
   else
      curl -s -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_B=Marche B" $UrlPilotage | iconv -f iso8859-1 -t utf-8 > /dev/null
   fi

   # Déconnexion de l'alarme
   logout_alarme

   # Mise à jour capteurs Domoticz
   if [ "$Debug" = "True" ]; then
      echo " Mise à jour capteurs Domoticz"
   fi
   maj_capteur ZoneB On $AlamreSomfyZoneBIdx
fi

#----------------------------------------------------------------------------------------------------------------------
# Mise en marche de l'alarme Zone C
#----------------------------------------------------------------------------------------------------------------------
if [ "$ZoneCOn" = "1" ]; then
   # Connexion à l'alarme
   login_alarme

   # Mise en marche de l'alarme Zone C
   if [ "$Debug" = "True" ]; then
      echo "Mise en marche de l'alarme Zone C"
      curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_C=Marche C" $UrlPilotage | iconv -f iso8859-1 -t utf-8
   else
      curl -s -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_C=Marche C" $UrlPilotage | iconv -f iso8859-1 -t utf-8 > /dev/null
   fi

   # Déconnexion de l'alarme
   logout_alarme

   # Mise à jour capteurs Domoticz
   if [ "$Debug" = "True" ]; then
      echo " Mise à jour capteurs Domoticz"
   fi
   maj_capteur ZoneC On $AlamreSomfyZoneCIdx
fi

#----------------------------------------------------------------------------------------------------------------------
# Arrêt de l'alarme Zones A B C
#----------------------------------------------------------------------------------------------------------------------
if [ "$AlarmeOff" = "1" ]; then
   # Connexion à l'alarme
   login_alarme

   # Arrêt de l'alarme Zones A B C
   if [ "$Debug" = "True" ]; then
      echo "Arret de l'alarme Zones A B C"
      curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&btn_zone_off_ABC=Arrêt A B C" $UrlPilotage | iconv -f iso8859-1 -t utf-8
   else
      curl -s -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&btn_zone_off_ABC=Arrêt A B C" $UrlPilotage | iconv -f iso8859-1 -t utf-8 > /dev/null
   fi

   # Déconnexion de l'alarme
   logout_alarme
   
   # Mise à jour capteurs Domoticz
   if [ "$Debug" = "True" ]; then
      echo " Mise à jour capteurs Domoticz"
   fi
   maj_capteur ZoneA Off $AlamreSomfyZoneAIdx
   maj_capteur ZoneB Off $AlamreSomfyZoneBIdx
   maj_capteur ZoneC Off $AlamreSomfyZoneCIdx
fi

#----------------------------------------------------------------------------------------------------------------------
# Reset defauts piles
#----------------------------------------------------------------------------------------------------------------------
if [ "$RSTPiles" = "1" ]; then
   # Connexion à l'alarme
   login_alarme

   # Reset defauts piles
   if [ "$Debug" = "True" ]; then
      echo "Reset defauts piles"
      curl -L --cookie cjar --cookie-jar cjar --data "btn_del_pil=Piles" $UrlElements | iconv -f iso8859-1 -t utf-8
   else
      curl -s -L --cookie cjar --cookie-jar cjar --data "btn_del_pil=Piles" $UrlElements | iconv -f iso8859-1 -t utf-8 > /dev/null
   fi

   # Déconnexion de l'alarme
   logout_alarme
fi

#----------------------------------------------------------------------------------------------------------------------
# Reset defauts alarmes
#----------------------------------------------------------------------------------------------------------------------
if [ "$RSTAlarmes" = "1" ]; then
   # Connexion à l'alarme
   login_alarme

   # Reset defauts alarmes
   if [ "$Debug" = "True" ]; then
      echo "Reset defauts alarmes"
      curl -L --cookie cjar --cookie-jar cjar --data "btn_del_alm=Alarmes" $UrlElements | iconv -f iso8859-1 -t utf-8
   else
      curl -s -L --cookie cjar --cookie-jar cjar --data "btn_del_alm=Alarmes" $UrlElements | iconv -f iso8859-1 -t utf-8 > /dev/null
   fi

   # Déconnexion de l'alarme
   logout_alarme
fi

#----------------------------------------------------------------------------------------------------------------------
# Reset defauts liaisons
#----------------------------------------------------------------------------------------------------------------------
if [ "$RSTLiaisons" = "1" ]; then
   # Connexion à l'alarme
   login_alarme

   # Reset defauts liaisons
   if [ "$Debug" = "True" ]; then
      echo "Reset defauts liaisons"
      curl -L --cookie cjar --cookie-jar cjar --data "btn_del_lia=Liaisons" $UrlElements | iconv -f iso8859-1 -t utf-8
   else
      curl -s -L --cookie cjar --cookie-jar cjar --data "btn_del_lia=Liaisons" $UrlElements | iconv -f iso8859-1 -t utf-8 > /dev/null
   fi

   # Déconnexion de l'alarme
   logout_alarme
fi

#----------------------------------------------------------------------------------------------------------------------
# Gestion de la liste des éléments
#----------------------------------------------------------------------------------------------------------------------
if [ "$Elements" = "1" ]; then
   # Connexion à l'alarme
   login_alarme

   # Gestion de la Liste des éléments et récupération dans des tableaux
   # Envoie URL http://IPAlarme/fr/u_listelmt.htm
   # Retour:
 var item_type     = ["typetrans", "typebadgerfid", ...];
 var item_label    = ["Tr Tél", "Badge", ...];
 var item_pause    = ["running", "paused", ...];
 var elt_name      = ["Centrale", "Badge 1", ...];
 var elt_code      = ["521907", "788853", ...];
 var elt_pile      = ["itembattok", "itemhidden", ...];
 var elt_as        = ["itemboxok", "itemhidden", ...];
 var elt_maison    = ["itemhouseok", "itemhouseok", ...];
 var elt_onde      = ["itemcomok", "itemhidden", ...];
 var elt_porte     = ["itemhidden", "itemhidden", ...];
 var elt_zone      = ["SYS", "SYS", ...];

   # Script à modifier en focntion des éléments du système et des états remontés dans Domoticz

   if [ "$Debug" = "True" ]; then
      echo "Gestion liste des éléments"
      echo " Type des éléments"
      # Récup du type des éléments
      TypeElements="$(curl -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var item_label.*')"
      echo $TypeElements
      # Suppression des 21 1er caractères et 2 derniers
      TypeElements="$(echo "${TypeElements:21:-2}")"
      # Suppression des "
      TypeElements="$(echo "$TypeElements" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      TypeElements="$(echo "$TypeElements" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabTypeElements=($TypeElements)

      echo " Nom des éléments"
      # Récup des noms des éléments
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      NomElements="$(curl -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_name.*')"
      echo $NomElements
      # Suppression des 21 1er caractères et 2 derniers
      NomElements="$(echo "${NomElements:21:-2}")"
      # Suppression des "
      NomElements="$(echo "$NomElements" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      NomElements="$(echo "$NomElements" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabNomElements=($NomElements)
      
      echo " Etat des éléments"
      # Récup état des éléments
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatElements="$(curl -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var item_pause.*')"
      echo $EtatElements
      # Suppression des 21 1er caractères et 2 derniers
      EtatElements="$(echo "${EtatElements:21:-2}")"
      # Suppression des "
      EtatElements="$(echo "$EtatElements" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatElements="$(echo "$EtatElements" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatElements=($EtatElements)
      # Modification valeurs tableau
      TailleTab=${#TabEtatElements[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatElements["$i"]} = "running" ]; then TabEtatElements["$i"]="Activé"
         else
            TabEtatElements["$i"]="Désactivé"
         fi
      done

      echo " Etat des piles"
      # Récup état des piles
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatPiles="$(curl -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_pile.*')"
      echo $EtatPiles
      # Suppression des 21 1er caractères et 2 derniers
      EtatPiles="$(echo "${EtatPiles:21:-2}")"
      # Suppression des "
      EtatPiles="$(echo "$EtatPiles" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatPiles="$(echo "$EtatPiles" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatPiles=($EtatPiles)
      # Modification des valeurs du tableau
      TailleTab=${#TabEtatPiles[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatPiles["$i"]} = "itemhidden" ]; then TabEtatPiles["$i"]="NA"
         else
            if [ ${TabEtatPiles["$i"]} = "itembattok" ]; then TabEtatPiles["$i"]="OK"
            else
               TabEtatPiles["$i"]="NOK"
            fi
         fi
      done

      echo " Etat liaison radio"
      # Récup état liaison radio
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatLiaison="$(curl -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_onde.*')"
      echo $EtatLiaison
      # Suppression des 21 1er caractères et 2 derniers
      EtatLiaison="$(echo "${EtatLiaison:21:-2}")"
      # Suppression des "
      EtatLiaison="$(echo "$EtatLiaison" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatLiaison="$(echo "$EtatLiaison" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatLiaison=($EtatLiaison)
      # Modification des valeurs du tableau
      TailleTab=${#TabEtatLiaison[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatLiaison["$i"]} = "itemhidden" ]; then TabEtatLiaison["$i"]="NA"
         else
            if [ ${TabEtatLiaison["$i"]} = "itemcomok" ]; then TabEtatLiaison["$i"]="OK"
            else
               TabEtatLiaison["$i"]="NOK"
            fi
         fi
      done
      
      echo " Etat détecteurs ouverture"
      # Récup état détecteurs ouverture
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatPortes="$(curl -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_porte.*')"
      echo $EtatPortes
      # Suppression des 21 1er caractères et 2 derniers
      EtatPortes="$(echo "${EtatPortes:21:-2}")"
      # Suppression des "
      EtatPortes="$(echo "$EtatPortes" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatPortes="$(echo "$EtatPortes" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatPortes=($EtatPortes)
      # Modification des valeurs du tableau
      TailleTab=${#TabEtatPortes[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatPortes["$i"]} = "itemhidden" ]; then TabEtatPortes["$i"]="NA"
         else
            if [ ${TabEtatPortes["$i"]} = "itemdoorok" ]; then TabEtatPortes["$i"]="Fermée"
            else
               TabEtatPortes["$i"]="Ouverte"
            fi
         fi
      done
      
      echo " Etat ouverture boitiers"
      # Récup état ouverture boitiers
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatBoitiers="$(curl -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_as.*')"
      echo $EtatBoitiers
      # Suppression des 21 1er caractères et 2 derniers
      EtatBoitiers="$(echo "${EtatBoitiers:21:-2}")"
      # Suppression des "
      EtatBoitiers="$(echo "$EtatBoitiers" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatBoitiers="$(echo "$EtatBoitiers" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatBoitiers=($EtatBoitiers)
      # Modification des valeurs du tableau
      TailleTab=${#TabEtatBoitiers[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatBoitiers["$i"]} = "itemhidden" ]; then TabEtatBoitiers["$i"]="NA"
         else
            if [ ${TabEtatBoitiers["$i"]} = "itemboxok" ]; then TabEtatBoitiers["$i"]="Fermé"
            else
               TabEtatBoitiers["$i"]="Ouvert"
            fi
         fi
      done
      
      echo " Etat alarme"
      # Récup état alarme
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatAlarme="$(curl -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_maison.*')"
      echo $EtatAlarme
      # Suppression des 21 1er caractères et 2 derniers
      EtatAlarme="$(echo "${EtatAlarme:21:-2}")"
      # Suppression des "
      EtatAlarme="$(echo "$EtatAlarme" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatAlarme="$(echo "$EtatAlarme" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatAlarme=($EtatAlarme)
      # Modification des valeurs du tableau
      TailleTab=${#TabEtatAlarme[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatAlarme["$i"]} = "itemhouseok" ]; then TabEtatAlarme["$i"]="Pas d'alarme"
         else
            TabEtatAlarme["$i"]="Alarme"
         fi
      done
      
      # Affichage de la liste des éléments
      echo " Liste des éléments"
      TailleTab=${#TabNomElements[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         echo " Type : "${TabTypeElements["$i"]} "/ Nom : "${TabNomElements["$i"]} "/ Etat : "${TabEtatElements["$i"]} "/ Etat piles : "${TabEtatPiles["$i"]} "/ Etat liaison : "${TabEtatLiaison["$i"]} "/ Etat portes : "${TabEtatPortes["$i"]} "/ Etat boitiers : "${TabEtatBoitiers["$i"]} "/ Etat alarme : "${TabEtatAlarme["$i"]}
      done   
   else
      # Récup du type des éléments
      TypeElements="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var item_label.*')"
      # Suppression des 21 1er caractères et 2 derniers
      TypeElements="$(echo "${TypeElements:21:-2}")"
      # Suppression des "
      TypeElements="$(echo "$TypeElements" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      TypeElements="$(echo "$TypeElements" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabTypeElements=($TypeElements)

      # Récup des noms des éléments
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      NomElements="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_name.*')"
      # Suppression des 21 1er caractères et 2 derniers
      NomElements="$(echo "${NomElements:21:-2}")"
      # Suppression des "
      NomElements="$(echo "$NomElements" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      NomElements="$(echo "$NomElements" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabNomElements=($NomElements)
      
      # Récup état des éléments
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatElements="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var item_pause.*')"
      # Suppression des 21 1er caractères et 2 derniers
      EtatElements="$(echo "${EtatElements:21:-2}")"
      # Suppression des "
      EtatElements="$(echo "$EtatElements" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatElements="$(echo "$EtatElements" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatElements=($EtatElements)
      # Modification valeurs tableau
      TailleTab=${#TabEtatElements[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatElements["$i"]} = "running" ]; then TabEtatElements["$i"]="Activé"
         else
            TabEtatElements["$i"]="Désactivé"
         fi
      done

      # Récup état des piles
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatPiles="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_pile.*')"
      # Suppression des 21 1er caractères et 2 derniers
      EtatPiles="$(echo "${EtatPiles:21:-2}")"
      # Suppression des "
      EtatPiles="$(echo "$EtatPiles" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatPiles="$(echo "$EtatPiles" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatPiles=($EtatPiles)
      # Modification des valeurs du tableau
      TailleTab=${#TabEtatPiles[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatPiles["$i"]} = "itemhidden" ]; then TabEtatPiles["$i"]="NA"
         else
            if [ ${TabEtatPiles["$i"]} = "itembattok" ]; then TabEtatPiles["$i"]="OK"
            else
               TabEtatPiles["$i"]="NOK"
            fi
         fi
      done

      # Récup état liaison radio
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatLiaison="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_onde.*')"
      # Suppression des 21 1er caractères et 2 derniers
      EtatLiaison="$(echo "${EtatLiaison:21:-2}")"
      # Suppression des "
      EtatLiaison="$(echo "$EtatLiaison" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatLiaison="$(echo "$EtatLiaison" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatLiaison=($EtatLiaison)
      # Modification des valeurs du tableau
      TailleTab=${#TabEtatLiaison[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatLiaison["$i"]} = "itemhidden" ]; then TabEtatLiaison["$i"]="NA"
         else
            if [ ${TabEtatLiaison["$i"]} = "itemcomok" ]; then TabEtatLiaison["$i"]="OK"
            else
               TabEtatLiaison["$i"]="NOK"
            fi
         fi
      done
      
      # Récup état détecteurs ouverture
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatPortes="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_porte.*')"
      # Suppression des 21 1er caractères et 2 derniers
      EtatPortes="$(echo "${EtatPortes:21:-2}")"
      # Suppression des "
      EtatPortes="$(echo "$EtatPortes" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatPortes="$(echo "$EtatPortes" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatPortes=($EtatPortes)
      # Modification des valeurs du tableau
      TailleTab=${#TabEtatPortes[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatPortes["$i"]} = "itemhidden" ]; then TabEtatPortes["$i"]="NA"
         else
            if [ ${TabEtatPortes["$i"]} = "itemdoorok" ]; then TabEtatPortes["$i"]="Fermée"
            else
               TabEtatPortes["$i"]="Ouverte"
            fi
         fi
      done
      
      # Récup état ouverture boitiers
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatBoitiers="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_as.*')"
      # Suppression des 21 1er caractères et 2 derniers
      EtatBoitiers="$(echo "${EtatBoitiers:21:-2}")"
      # Suppression des "
      EtatBoitiers="$(echo "$EtatBoitiers" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatBoitiers="$(echo "$EtatBoitiers" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatBoitiers=($EtatBoitiers)
      # Modification des valeurs du tableau
      TailleTab=${#TabEtatBoitiers[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatBoitiers["$i"]} = "itemhidden" ]; then TabEtatBoitiers["$i"]="NA"
         else
            if [ ${TabEtatBoitiers["$i"]} = "itemboxok" ]; then TabEtatBoitiers["$i"]="Fermé"
            else
               TabEtatBoitiers["$i"]="Ouvert"
            fi
         fi
      done
      
      # Récup état alarme
      sleep 1      # Attente 1s pour éviter les pertes de retour d'état entre chaque cde
      EtatAlarme="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'var elt_maison.*')"
      # Suppression des 21 1er caractères et 2 derniers
      EtatAlarme="$(echo "${EtatAlarme:21:-2}")"
      # Suppression des "
      EtatAlarme="$(echo "$EtatAlarme" | sed s/\"//g)"
      # Suppression des espaces entre les ,
      EtatAlarme="$(echo "$EtatAlarme" | sed s/\,\ /\,/g)"
      # Déclaration , comme séparateur
      IFS=","
      # Stockage dans le tableau
      TabEtatAlarme=($EtatAlarme)
      # Modification des valeurs du tableau
      TailleTab=${#TabEtatAlarme[@]}
      for (( i=0; i<$TailleTab; i++ ))
      do
         if [ ${TabEtatAlarme["$i"]} = "itemhouseok" ]; then TabEtatAlarme["$i"]="Pas d'alarme"
         else
            TabEtatAlarme["$i"]="Alarme"
         fi
      done
   fi
   
   # Déconnexion de l'alarme
   logout_alarme

   # Mise à jour capteurs Domoticz
   if [ "$Debug" = "True" ]; then
      echo " Mise à jour capteurs Domoticz"
   fi

   # DO Entré
   TailleTab=${#TabNomElements[@]}
   for (( i=0; i<$TailleTab; i++ ))
   do
      if [ ${TabNomElements["$i"]} = "DO Entree" ]; then PosElement=$i
      fi
   done
   if [ ${TabEtatPortes["$PosElement"]} = "Fermée" ]; then
      maj_capteur DOEntrée Off $AlamreSomfyDOEntreeIdx
   else
      maj_capteur DOEntrée On $AlamreSomfyDOEntreeIdx
   fi
   
   # DO Atelier
   for (( i=0; i<$TailleTab; i++ ))
   do
      if [ ${TabNomElements["$i"]} = "DO Atelier" ]; then PosElement=$i
      fi
   done
   if [ ${TabEtatPortes["$PosElement"]} = "Fermée" ]; then
      maj_capteur DOAtelier Off $AlamreSomfyDOAtelierIdx
   else
      maj_capteur DOAtelier On $AlamreSomfyDOAtelierIdx
   fi
   
fi

exit 0

voici ce que j'ai lorsque je l'exécute : 

wil@Synology:/usr/local/domoticz/var/scripts$ ./somfyv1.sh --Status
./somfyv1.sh: line 148: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 285: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 288: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 291: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 295: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 298: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 301: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 304: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 307: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 311: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 314: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 317: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 321: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 158: iconv: command not found
(23) Failed writing body

Wil@Synology:/usr/local/domoticz/var/scripts$ ./somfyv1.sh --ZoneABCOn
./somfyv1.sh: line 137: CarteAuthentification: bad array subscript
./somfyv1.sh: line 148: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 433: iconv: command not found
(23) Failed writing body
./somfyv1.sh: line 158: iconv: command not found
(23) Failed writing body
 
J'en ai déduit qu'il y a une erreur avec iconv qui n'est pas installé sur mon syno. J'ai donc téléchargé la librairie libiconv-1.15 mais j'ai une erreur  sur le ssh lorsque je lance la commande iconv : Segmentation fault (core dumped)
 
J'ai essayé de supprimer toutes les lignes iconv du script et puis j'ai transformer le fichier avec la commande dos2unix, mais cela n'a pas l'air de fonctionner non plus
 
Bon vous l'avez compris je n'y connais rien et la je ne sais plus quoi faire...  merci pour votre aide !!
 
William
Lien vers le commentaire
Partager sur d’autres sites

Comme indiqué dans les messages d'erreur, ton script cherche la commande iconv, mais elle n'existe pas sur les syno.

Si tu te sens l'âme d'un développeur, tu peux créer un script qui fait la même chose, mais ce n'est pas trivial.

--

edit : je n’avais pas vu ton commentaire de fin

tu as bien identifié le pb

Pour le script de remplacement, je pense que tu peux le faire en php, le module iconv est présent

Modifié par Fenrir
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.