Re: RE: Re: Script alarme Somfy Protexiom 600
Publié : 17 nov. 2016, 09:56
Pareil.thom@s a écrit :Personnellement je n'utilise pas (ou très peu) les zones.
Reprenez le contrôle de votre domotique
https://easydomoticz.com/forum/
Pareil.thom@s a écrit :Personnellement je n'utilise pas (ou très peu) les zones.
Code : Tout sélectionner
#----------------------------------------------------------------------------------------------------------------------------------
# Date : XX/11/2016
# Version : 1.X?
# Description : Script Domoticz pour récupérer les états des alarmes SOMFY PROTEXIUM 600 et Alarme ON/OFF
# Auteur : Seb13
#
# il faut créer une interface interrupteur dans Domoticz et dans la configuration il faut mettre pour Action ON ou OFF
# script:///home/pi/domoticz/scripts/xxxxx/xxxxxxx.sh --AlarmeON
# script:///home/pi/domoticz/scripts/xxxx/xxxxxx.sh --AlarmeOFF
#
# crontab -e
# */10 * * * * sudo /home/pi/domoticz/scripts/shell/EtatSomfy.sh -v
#----------------------------------------------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------------------------------
# ZONE DE MODIFICATION
#----------------------------------------------------------------------------------------------------------------------------------
declare -A CarteAuthentification
#Mettre IDX des boutons virtuels de domoticz
AlarmeSomfyPilesIDX=xxx
AlarmeSomfyBoitierIDX=xxx
AlarmeSomfyRadioIDX=xxx
AlarmeSomfyEtatIDX=xxx
AlarmeSomfyPorteIDX=xxx
Debug=False
# Carte d'authentification perso
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 du serveur Somfy
SrvSomfyIp="http://192.168.0.XXX/"
SrvDomoticzIp="192.168.0.XXX:XXXX"
# Code Utilisateur1
CodeUtilisateur1=XXXX
#---------------------------------------------------------------------------------------------------------------------------------
# Menu Aide
Aide() {
echo -e "\tScript Domoticz Somfy Protexion 600"
echo -e "\t--help or -h\t\tMenu Aide"
echo -e "\t--view or -v\t\tVerification des etats"
echo -e "\t--AlarmeON \t\tMise en route de l'alarme sur Zone A B C"
echo -e "\t--AlarmeOFF \t\tArret de l'alarme sur Zone A B C"
}
# Menu des options du script
while [[ $1 == -* ]]; do
case "$1" in
--help|-h) Aide; exit 0;;
--view|-v) VerifEtat="1"; break;;
--AlarmeON) AlarmeON="1"; break;;
--AlarmeOFF) AlarmeOFF="1"; break;;
--*|-*) shift; break;;
esac
done
# Exection si option -v activee
if [ "$VerifEtat" = "1" ]; then
# Declaration des URLs du site Somfy Mobile
UrlMLogin=$SrvSomfyIp"m_login.htm"
UrlMuEtat=$SrvSomfyIp"mu_etat.htm"
UrlMLogout=$SrvSomfyIp"m_logout.htm"
UrlMuPilotage=$SrvSomfyIp"mu_pilotage.htm"
# Affichage des URLs
if [ "$Debug" = "True" ]; then
echo ""
echo " ********************************* "
echo " Liste des URLs"
echo " ********************************* "
echo " UrlMLogin = "$UrlMLogin
echo " UrlMuEtat = "$UrlMuEtat
echo " UrlMLogout = "$UrlMLogout
echo " UrlMuPilotage = "$UrlMuPilotage
echo ""
fi
# Recuperation du code d'acces apres lecture sur la page MLogin
if [ "$Debug" = "True" ]; then
echo ""
CodeAcces="$(curl $SrvSomfyIp $UrlMLogin | grep -Eoi 'authentification <b>.*</b>')"
CodeAcces="$(echo "${CodeAcces:20:2}")"
echo "Code Acces = "$CodeAcces
echo ""
else
CodeAcces="$(curl -s $SrvSomfyIp $UrlMLogin | grep -Eoi 'authentification <b>.*</b>')"
CodeAcces="$(echo "${CodeAcces:20:2}")"
fi
# Recuperation du code d'authentification avec le code d'acces
CodeAuthentification="${CarteAuthentification["$CodeAcces"]}"
if [ "$Debug" = "True" ]; then
echo ""
echo "Code Authentification = "$CodeAuthentification
echo ""
fi
# Envoi du code utilisateur1 et du code d'authentification dans l'url MLogin pour connexion
if [ "$Debug" = "True" ]; then
echo ""
curl -L --cookie cjar --cookie-jar cjar --data "password="$CodeUtilisateur1"&key="$CodeAuthentification"&action=Connexion" $UrlMLogin | iconv -f iso8859-1 -t utf-8
echo ""
else
curl -s -L --cookie cjar --cookie-jar cjar --data "password="$CodeUtilisateur1"&key="$CodeAuthentification"&action=Connexion" $UrlMLogin | iconv -f iso8859-1 -t utf-8 > /dev/null
fi
# Lecture de la page MuEtat pour recuperer les etats de l alarme
if [ "$Debug" = "True" ]; then
echo ""
curl -L --cookie cjar --cookie-jar cjar $UrlMuEtat | iconv -f iso8859-1 -t utf-8
curl -L --cookie cjar --cookie-jar cjar $UrlMuEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'Porte.*fermée'
curl -L --cookie cjar --cookie-jar cjar $UrlMuEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'Porte.*ouverte'
curl -L --cookie cjar --cookie-jar cjar $UrlMuEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'Pile.*OK'
curl -L --cookie cjar --cookie-jar cjar $UrlMuEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'Pile.*</td>'
echo ""
fi
# Recuperation des etats dans les variables
EtatPorte="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlMuEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'Porte.*</td>')"
EtatPorte="$(echo "${EtatPorte:0:24}" | sed s/\<//g)"
EtatPiles="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlMuEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'Pile.*</td>')"
EtatPiles="$(echo "${EtatPiles:0:8}")"
EtatRadio="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlMuEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'Communication.*</td>')"
EtatRadio="$(echo "${EtatRadio:0:22}")"
EtatAlarme="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlMuEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'Pas.*</td>')"
EtatAlarme="$(echo "${EtatAlarme:0:12}")"
EtatBoitier="$(curl -s -L --cookie cjar --cookie-jar cjar $UrlMuEtat | iconv -f iso8859-1 -t utf-8 | grep -Eoi 'Boîtier.*</td>')"
EtatBoitier="$(echo "${EtatBoitier:0:10}")"
# Affichage des etats
echo "Etat Porte = "$EtatPorte
echo "Etat Piles = "$EtatPiles
echo "Etat Communication Radio = "$EtatRadio
echo "Etat Alarme = "$EtatAlarme
echo "Etat Boitier = "$EtatBoitier
# Envoi des etats a Domoticz
# Etat des piles
if [ "$Debug" = "True" ]; then
if [ "$EtatPiles" = "Piles OK" ]; then
curl "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyPilesIDX&switchcmd=On"
else
curl "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyPilesIDX&switchcmd=Off"
fi
else
if [ "$EtatPiles" = "Piles OK" ]; then
curl -s "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyPilesIDX&switchcmd=On" > /dev/null
else
curl -s "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyPilesIDX&switchcmd=Off" > /dev/null
fi
fi
# Etat Boitier
if [ "$Debug" = "True" ]; then
if [ "$EtatBoitier" = "Boîtier OK" ]; then
curl "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyBoitierIDX&switchcmd=On"
else
curl "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyBoitierIDX&switchcmd=Off"
fi
else
if [ "$EtatBoitier" = "Boîtier OK" ]; then
curl -s "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyBoitierIDX&switchcmd=On" > /dev/null
else
curl -s "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyBoitierIDX&switchcmd=Off" > /dev/null
fi
fi
# Etat Communication Radio
if [ "$Debug" = "True" ]; then
if [ "$EtatRadio" = "Communication radio OK" ]; then
curl "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyRadioIDX&switchcmd=On"
else
curl "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyRadioIDX&switchcmd=Off"
fi
else
if [ "$EtatRadio" = "Communication radio OK" ]; then
curl -s "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyRadioIDX&switchcmd=On" > /dev/null
else
curl -s "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyRadioIDX&switchcmd=Off" > /dev/null
fi
fi
# Etat Alarme Somfy
if [ "$Debug" = "True" ]; then
if [ "$EtatAlarme" = "Pas d'alarme" ]; then
curl "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyEtatIDX&switchcmd=Off"
else
curl "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyEtatIDX&switchcmd=On"
fi
else
if [ "$EtatAlarme" = "Pas d'alarme" ]; then
curl -s "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyEtatIDX&switchcmd=Off" > /dev/null
else
curl -s "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyEtatIDX&switchcmd=On" > /dev/null
fi
fi
# Etat Porte
if [ "$Debug" = "True" ]; then
if [ "$EtatPorte" = "Porte ou fenêtre fermée" ]; then
curl "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyPorteIDX&switchcmd=Off"
else
curl "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyPorteIDX&switchcmd=On"
fi
else
if [ "$EtatPorte" = "Porte ou fenêtre fermée" ]; then
curl -s "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyPorteIDX&switchcmd=Off" > /dev/null
else
curl -s "http://$SrvDomoticzIp/json.htm?type=command¶m=switchlight&idx=$AlarmeSomfyPorteIDX&switchcmd=On" > /dev/null
fi
fi
# Logout du site Somfy
if [ "$Debug" = "True" ]; then
echo ""
curl -L --cookie cjar --cookie-jar cjar $UrlMLogout | iconv -f iso8859-1 -t utf-8
echo ""
else
echo ""
curl -s -L --cookie cjar --cookie-jar cjar $UrlMLogout | iconv -f iso8859-1 -t utf-8 > /dev/null
echo ""
fi
fi
if [ "$AlarmeON" = "1" ]; then
echo "Alarme en fonction"
curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&zone=Marche%20A%20B%20C" $UrlMuPilotage | iconv -f iso8859-1 -t utf-8
fi
if [ "$AlarmeOFF" = "1" ]; then
echo "Alarme en arrêt"
curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&zone=Arr%EAt%20A%20B%20C" $UrlMuPilotage | iconv -f iso8859-1 -t utf-8
fiCode : Tout sélectionner
pi@Domoticz:~/scripts$ ./EtatSomfy.sh -v
./EtatSomfy.sh: ligne 98: CarteAuthentification: mauvais indice de tableau
Etat Porte =
Etat Piles =
Etat Communication Radio =
Etat Alarme =
Etat Boitier =
Code : Tout sélectionner
# Alarme SOMFY PROTEXION 5000 GSM
UrlMLogin=$SrvSomfyIp"fr/login.htm"
UrlMuEtat=$SrvSomfyIp"??????.htm"
UrlMLogout=$SrvSomfyIp"logout.htm"
UrlMuPilotage=$SrvSomfyIp"fr/u_pilotage.htm"Code : Tout sélectionner
curl -L --cookie cjar --cookie-jar cjar --data "password="$CodeUtilisateur1"&key="$CodeAuthentification"&btn_login=Connexion" $UrlMLogin | iconv -f iso8859-1 -t utf-8