Après des heures de recherche
J'arrive à me connecter et à recupérer les états (Porte/Fenêtre ouverte, état des piles etc... etc...)
Tout ça dans un script Shell. Il faudrait mettre tout ça dans Domoticz avec ajout dans la crontab.
Salut, il te faut un interpreteur PHP oui, car c'est un langage interprété. Comme Python par exemple.Seb13 a écrit :Bon... j'ai lu les retours, merci à tous... cependant, je ne suis pas dev Web![]()
Donc, je n'ai pas les bases pour lancer le script... et je pense ne pas être le seul![]()
Pour lire un fichier PHP, il faut un serveur PHP ?
Si quelqu'un peut nous expliquer comment il lance le script.
Copie du fichier dans un répertoire ?
Des modifications à faire ?
etc... etc...
Merci d'avance
Hello,thom@s a écrit :Génial Seb13 ! Arrives tu également à activer / désactiver l'alarme ?
Je ne serais pas contre un petit partage et mode d'emploi
Merci pour le retour, maintenant que j'ai trouvé un petit truc avec Shell+Curl+Grep+SedS1eepy a écrit :Salut, il te faut un interpreteur PHP oui, car c'est un langage interprété. Comme Python par exemple.Seb13 a écrit :Bon... j'ai lu les retours, merci à tous... cependant, je ne suis pas dev Web![]()
Donc, je n'ai pas les bases pour lancer le script... et je pense ne pas être le seul![]()
Pour lire un fichier PHP, il faut un serveur PHP ?
Si quelqu'un peut nous expliquer comment il lance le script.
Copie du fichier dans un répertoire ?
Des modifications à faire ?
etc... etc...
Merci d'avance
Je lance le script en faisant "php somfy.php" où somfy.php est le fichier que j'ai créé.
Le fichier pour le moment renvoie certaines valeurs qu'il faudrait mettre à jour dans domoticz, je n'ai pas encore attaqué ce point là.
Code : Tout sélectionner
./Somfy_check.sh -v Code : Tout sélectionner
#----------------------------------------------------------------------------------------------------------------------------------
# Date : 13/11/2016
# Version : 1.5
# Description : Script Domoticz pour recuperer les etats des alarmes SOMFY PROTEXIUM 600 et Alarme ON/OFF
# Auteur : Seb13
# Merci au forum easydomoticz
#----------------------------------------------------------------------------------------------------------------------------------
declare -A CarteAuthentification
Debug=False
#----------------------------------------------------------------------------------------------------------------------------------
# ZONE DE MODIFICATION
#----------------------------------------------------------------------------------------------------------------------------------
# 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://xxx.xxx.xxx.xxx/"
# 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
# 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 - script à faire"
fi
if [ "$AlarmeOFF" = "1" ]; then
echo "Alarme en arrêt - script à faire"
fi
Code : Tout sélectionner
declare -A CarteAuthentification
AlarmeSomfyPilesIDX=xxx
AlarmeSomfyBoitierIDX=xxx
AlarmeSomfyRadioIDX=xxx
AlarmeSomfyEtatIDX=xxx
AlarmeSomfyPorteIDX=xxx
Debug=False
Code : Tout sélectionner
# Adresse IP du serveur Somfy
SrvSomfyIp="http://192.168.0.xxx/"
SrvDomoticzIp="192.168.0.xxx:xxxx"
# Code Utilisateur1
CodeUtilisateur1=xxxx
Code : Tout sélectionner
# 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
Code : Tout sélectionner
crontab -e (pour editer)
*/10 * * * * sudo /home/pi/domoticz/scripts/shell/EtatSomfy.sh -v
Je peux t'aider si tu me donnes le message d'erreur...thom@s a écrit :Je n'ai pas eu beaucoup de temps, et comme je ne suis pas très douéje n'ai pas réussi à faire tourner ton script pour le moment.J'essayerai avec la v2 un soir de la semaine. Merci pour le partage !!!