[Bash] Script alarme Somfy Protexiom 5000

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Répondre
jcjames_13009
Messages : 105
Inscription : 23 févr. 2015, 15:27
Localisation : Marseille
Contact :

[Bash] Script alarme Somfy Protexiom 5000

Message par jcjames_13009 »

Salut

A patir du post pour la Protexiom 600

viewtopic.php?f=10&t=363

j'ai adapté le script de Seb13 pour la Protexiom 5000

Ce script permet :
* Lecture de l'état du système
* 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 défauts piles, alarmes et liaisons
* Gestion de la liste des éléments

à partir des option de lancement suivantes :
--help ou -h -> Menu d'aide
--Status -> Lecture de l'état du système
--ZoneAOn -> Mise en marche de l'alarme Zones A
--ZoneBOn -> Mise en marche de l'alarme Zones B
--ZoneCOn -> Mise en marche de l'alarme Zones C
--ZoneABCOn -> Mise en marche de l'alarme Zones A B C
--AlarmeOff -> Arrêt de l'alarme Zones A B C
--RSTPiles -> Reset defauts piles"
--RSTAlarmes -> Reset defauts alarmes"
--RSTLiaisons -> Reset defauts liaisons"
--Elements -> Liste des éléments

Il faut créer les capteurs virtuels suivants dans Domoticz pour piloter l'alarme et afficher les états du système

ON/OFF:
Capture.JPG
Capture.JPG (110.66 Kio) Consulté 14600 fois
Capture 8.JPG
Capture 8.JPG (37.98 Kio) Consulté 14488 fois
Capture 9.JPG
Capture 9.JPG (27.89 Kio) Consulté 14488 fois
Capture 7.JPG
Capture 7.JPG (41.66 Kio) Consulté 14488 fois
Capture 11.JPG
Capture 11.JPG (24.69 Kio) Consulté 14460 fois
Texte:
Capture2.JPG
Capture2.JPG (25.95 Kio) Consulté 14600 fois
et renseigner dans le script :
* La table des codes d'authentification de l'alarme
* Le code utilisateur1
* L'adresse IP de l'alarme
* L'adresse IP et le port du serveur Domoticz
* Les Idx des capteurs Domoticz

Il y plus d'info dans le post de Seb13
viewtopic.php?f=10&t=363&start=70#p25513

Voici donc la dernière version du script shell que je ferais évoluer
Version 2.5 du 21/12/2017 Adaptation du script à Domoticz sur NAS Synology
Note pour le faire tourner ailleurs il faut dé-commenter les lignes où il y a "iconv" et supprimer les lignes où il y a "uconv"

Code : Tout sélectionner

#!/bin/bash
#----------------------------------------------------------------------------------------------------------------------
# Script alarme_Somfy.sh
# Date : 11/2016
# Version : 2.0
# Par : jcjames_13009 <jcjames_13009 at yahoo.fr>
# Description : Script de pilotage de l'alarme Somfy Protexiom 5000 via Domoticz sur Raspberry Pi
# - 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 et mise à jour dans Domoticz
#----------------------------------------------------------------------------------------------------------------------
# Appel du script
# - Mise à jour des états de l'alarme toutes les 15min via le crontab :
#   */15 * * * * sudo /home/pi/domoticz/scripts/shell/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/scripts/shell/alarme_somfy.sh --ZoneAOn 
#----------------------------------------------------------------------------------------------------------------------
# Version : 2.1
# Date : 25/11/2016
# - Ajout d'un "sleep 1" pour éviter les pertes de retour d'état de l'alarme entre chaque cde dans la lecture de l'état 
#	du système et de la liste des éléments
#----------------------------------------------------------------------------------------------------------------------
# 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 mise à jour dans Domoticz
#----------------------------------------------------------------------------------------------------------------------
# Version : 2.4
# Date : 04/01/2017
# - Envoie d'une seule commande pour éviter les pertes de retour d'état de l'alarme entre chaque cde dans la lecture de
#	l'état du système et de la liste des éléments
#----------------------------------------------------------------------------------------------------------------------
# Version 2.5
# Date : 21/12/2017
# - Adaptation du script à Domoticz sur NAS Synology
#   Remplacement de iconv qui n'existe pas sur Synology par uconv
#----------------------------------------------------------------------------------------------------------------------

#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=xxx
AlarmeSomfyRadioIdx=xxx
AlarmeSomfyPorteIdx=xxx
AlarmeSomfyAlarmeIdx=xxx
AlarmeSomfyBoitierIdx=xxx

AlarmeSomfyGSMIdx=xxx
AlamreSomfySignalGSMIdx=xxx
AlamreSomfyOperateurGSMIdx=xxx

AlarmeSomfyCameraIdx=xxx

AlamreSomfyZoneAIdx=xxx
AlamreSomfyZoneBIdx=xxx
AlamreSomfyZoneCIdx=xxx

AlamreSomfyDOEntreeIdx=xxx
AlamreSomfyDOAtelierIdx=xxx

# 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 Zone A"
	echo -e "\t--ZoneBOn     \t\tMise en marche de l'alarme Zone B"
	echo -e "\t--ZoneCOn     \t\tMise en marche de l'alarme Zone C"
	echo -e "\t--ZonesABCOn  \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
		curl -L --cookie cjar --cookie-jar cjar --data "password="$CodeUtilisateur1"&key="$CodeAuthentification"&btn_login=Connexion" $UrlLogin | uconv -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
		curl -s -L --cookie cjar --cookie-jar cjar --data "password="$CodeUtilisateur1"&key="$CodeAuthentification"&btn_login=Connexion" $UrlLogin  | uconv -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
		curl -L --cookie cjar --cookie-jar cjar $UrlLogout | uconv -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
		curl -s -L --cookie cjar --cookie-jar cjar $UrlLogout | uconv -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;;
		--ZonesABCOn) ZonesABCOn="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

	# Lecture de l'état du système et stockage dans fichier temporaire
	if [ "$Debug" = "True" ]; then
		echo " Lecture de l'état du système"
		#curl -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 > status
		curl -L --cookie cjar --cookie-jar cjar $UrlEtat | uconv -f iso8859-1 -t utf-8 > status
	else
		#curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | iconv -f iso8859-1 -t utf-8 > status
		curl -s -L --cookie cjar --cookie-jar cjar $UrlEtat | uconv -f iso8859-1 -t utf-8 > status
	fi

	# Déconnexion de l'alarme
	logout_alarme
	
	# Récupération dans les variables
	EtatZoneA="$(grep -Eoi '<zone0>.*' status)"
	EtatZoneA="$(echo "${EtatZoneA:7:-9}")"
	EtatZoneB="$(grep -Eoi '<zone1>.*' status)"
	EtatZoneB="$(echo "${EtatZoneB:7:-9}")"
	EtatZoneC="$(grep -Eoi '<zone2>.*' status)"
	EtatZoneC="$(echo "${EtatZoneC:7:-9}")"

	EtatPiles="$(grep -Eoi '<defaut0>.*' status)"
	EtatPiles="$(echo "${EtatPiles:9:-11}")"
	EtatRadio="$(grep -Eoi '<defaut1>.*' status)"
	EtatRadio="$(echo "${EtatRadio:9:-11}")"
	EtatPorte="$(grep -Eoi '<defaut2>.*' status)"
	EtatPorte="$(echo "${EtatPorte:9:-11}")"
	EtatAlarme="$(grep -Eoi '<defaut3>.*' status)"
	EtatAlarme="$(echo "${EtatAlarme:9:-11}")"
	EtatBoitier="$(grep -Eoi '<defaut4>.*' status)"
	EtatBoitier="$(echo "${EtatBoitier:9:-11}")"

	EtatGSM="$(grep -Eoi '<gsm>.*' status)"
	EtatGSM="$(echo "${EtatGSM:5:-7}")"
	SignalGSM="$(grep -Eoi '<recgsm>.*' status)"
	SignalGSM="$(echo "${SignalGSM:8:-10}")"
	OperateurGSM="$(grep -Eoi '<opegsm>.*' status)"
	OperateurGSM="$(echo "${OperateurGSM:9:-10}")"
		
	EtatCamera="$(grep -Eoi '<camera>.*' status)"
	EtatCamera="$(echo "${EtatCamera:8:-10}")"
	
	if [ "$Debug" = "True" ]; then
		# 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
	fi
	
	# 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 [ "$ZonesABCOn" = "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
		curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_ABC=Marche A B C" $UrlPilotage | uconv -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
		curl -s -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_ABC=Marche A B C" $UrlPilotage | uconv -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
		curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_A=Marche A" $UrlPilotage | uconv -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
		curl -s -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_A=Marche A" $UrlPilotage | uconv -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
		curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_B=Marche B" $UrlPilotage | uconv -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
		curl -s -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_B=Marche B" $UrlPilotage | uconv -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
		curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_C=Marche C" $UrlPilotage | uconv -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
		curl -s -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&hidden=hidden&btn_zone_on_C=Marche C" $UrlPilotage | uconv -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
		curl -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&btn_zone_off_ABC=Arrêt A B C" $UrlPilotage | uconv -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
		curl -s -L --cookie cjar --cookie-jar cjar --data "hidden=hidden&btn_zone_off_ABC=Arrêt A B C" $UrlPilotage | uconv -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
		curl -L --cookie cjar --cookie-jar cjar --data "btn_del_pil=Piles" $UrlElements | uconv -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
		curl -s -L --cookie cjar --cookie-jar cjar --data "btn_del_pil=Piles" $UrlElements | uconv -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
		curl -L --cookie cjar --cookie-jar cjar --data "btn_del_alm=Alarmes" $UrlElements | uconv -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
		curl -s -L --cookie cjar --cookie-jar cjar --data "btn_del_alm=Alarmes" $UrlElements | uconv -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
		curl -L --cookie cjar --cookie-jar cjar --data "btn_del_lia=Liaisons" $UrlElements | uconv -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
		curl -s -L --cookie cjar --cookie-jar cjar --data "btn_del_lia=Liaisons" $UrlElements | uconv -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

	# Lecture de la liste des éléments et stockage dans fichier temporaire
	if [ "$Debug" = "True" ]; then
		echo "Gestion liste des éléments"
		#curl -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 > elements
		curl -L --cookie cjar --cookie-jar cjar $UrlElements | uconv -f iso8859-1 -t utf-8 > elements
	else
		#curl -s -L --cookie cjar --cookie-jar cjar $UrlElements | iconv -f iso8859-1 -t utf-8 > elements
		curl -s -L --cookie cjar --cookie-jar cjar $UrlElements | uconv -f iso8859-1 -t utf-8 > elements
	fi

	# Déconnexion de l'alarme
	logout_alarme
	
	# Récupération dans les variables
	TypeElements="$(grep -Eoi 'var item_label.*' elements)"
	NomElements="$(grep -Eoi 'var elt_name.*' elements)"
	EtatElements="$(grep -Eoi 'var item_pause.*' elements)"
	EtatPiles="$(grep -Eoi 'var elt_pile.*' elements)"
	EtatLiaison="$(grep -Eoi 'var elt_onde.*' elements)"
	EtatPortes="$(grep -Eoi 'var elt_porte.*' elements)"
	EtatBoitiers="$(grep -Eoi 'var elt_as.*' elements)"
	EtatAlarme="$(grep -Eoi 'var elt_maison.*' elements)"

	# Affichage des éléments
	if [ "$Debug" = "True" ]; then
		echo " Type des éléments"
		echo $TypeElements
		echo " Nom des éléments"
		echo $NomElements
		echo " Etat des éléments"
		echo $EtatElements
		echo " Etat des piles"
		echo $EtatPiles
		echo " Etat liaison radio"
		echo $EtatLiaison
		echo " Etat détecteurs ouverture"
		echo $EtatPortes
		echo " Etat ouverture boitiers"
		echo $EtatBoitiers
		echo " Etat alarme"
		echo $EtatAlarme
	fi
		
	# Formatage du type des éléments	
	# 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)

	# Formatage des noms des éléments
	# 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)
		
	# Formatage état des éléments
	# 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

	# Formatage état des piles
	# 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

	# Formatage état liaison radio
	# 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
	# 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
	# 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
	# 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
	if [ "$Debug" = "True" ]; then
		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	
	fi
	
	# 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 Couloir
	for (( i=0; i<$TailleTab; i++ ))
	do
		if [ ${TabNomElements["$i"]} = "DO Couloir" ]; 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
A venir :
* Gestion des erreurs renvoyés par l'alarme (erreur connexion, etc...)

@+

JC
Dernière modification par jcjames_13009 le 12 janv. 2018, 12:15, modifié 20 fois.
n1c0l45
Messages : 180
Inscription : 15 avr. 2016, 09:12

Re: Script alarme Somfy Protexiom 5000

Message par n1c0l45 »

Super, je teste des que je peux
n1c0l45
Messages : 180
Inscription : 15 avr. 2016, 09:12

Re: Script alarme Somfy Protexiom 5000

Message par n1c0l45 »

Je viens de tester et cela ne fonctionne pas.... je trouve pas pourquoi!

voila ce que j'ai

Code : Tout sélectionner

pi@Domoticz:~/scripts$ ./Somfy.sh --help
        Script Domoticz Alarme Somfy Protexion 5000
        --help or -h            Menu d'aide
        --Status                Lecture de l'état du système
        --Elements              Liste des éléments
        --ZoneAOn               Mise en marche de l'alarme Zones A
        --ZoneBOn               Mise en marche de l'alarme Zones B
        --ZoneCOn               Mise en marche de l'alarme Zones C
        --ZoneABCOn             Mise en marche de l'alarme Zones A B C
        --AlarmeOff             Arrêt de l'alarme Zones A B C
pi@Domoticz:~/scripts$ ./Somfy.sh --Status
pi@Domoticz:~/scripts$ ./Somfy.sh --Elements
pi@Domoticz:~/scripts$
rien ne s'affiche avec status ni elements, mais je pense que c'est parce que tu as tester ton script qu'en mode debug

et si j'active le debug pour en savoir plus ...

Code : Tout sélectionner

pi@Domoticz:~/scripts$ ./Somfy.sh --Status
 *********************************
 Liste des URLs
 *********************************
 UrlLogin    = http://192.168.0.150/fr/login.htm
 UrlLogout   = http://192.168.0.150/logout.htm
 UrlEtat     = http://192.168.0.150/status.xml
 UrlPilotage = http://192.168.0.150/fr/u_pilotage.htm
 UrlElements = http://192.168.0.150/fr/u_listelmt.htm
 Récuperation du code d'accès
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    34    0    34    0     0   2951      0 --:--:-- --:--:-- --:--:--  3400
100  2096    0  2096    0     0   8418      0 --:--:-- --:--:-- --:--:-- 44595
 Code d'accès = E3
 Récuperation du code d'authentification
 Code d'authentification = XXXX
 Envoi du code utilisateur1 et du code d'authentification
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    42    0     0  100    42      0     17  0:00:02  0:00:02 --:--:--    17
100  2810    0  2810    0     0   1006      0 --:--:--  0:00:02 --:--:-- 97280
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <meta http-equiv="content-style-type" content="text/css" />
    <title>Centrale &nbsp;:&nbsp;Utilisateur</title>
    <link rel="shortcut icon" href="/domis.ico" type="image/x-icon"/>
    <meta name="language" content="fr" />
    <meta http-equiv="expires" content="0">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache, must-revalidate">
<link href="/domis_user.css" rel="stylesheet" type="text/css" /><script type="text/javascript" src="/js/ajax.js"></script>   </head>
  <body onLoad="allowAJAX=true;" onUnload="allowAJAX=false;">
    <div id="page">
      <div id="fond">
        <div id="menu">
          <div class="logohmb">&nbsp;</div>
          <div id="filler">&nbsp;</div>
          <a class="menuvoid" href="u_pilotage.htm">PILOTAGE ALARME/AUTOMATISMES</a>
          <a class="menuvoid" href="u_regqck.htm">REGLAGES RAPIDES</a>
          <a class="menuvoid" href="u_listelmt.htm">LISTE DES ELEMENTS</a>
          <a class="menuvoid" href="journal.htm">JOURNAL DES EVENEMENTS</a>
          <a class="menuvoid" href="regalm.htm">REGLAGES DE LA MISE SOUS ALARME</a>
          <a class="menuvoid" href="u_regvol.htm">REGLAGES DES VOLETS ROULANTS</a>
          <a class="menuvoid" href="u_reglum.htm">REGLAGES DES LUMIERES</a>
          <a class="menuvoid" href="u_regcam.htm" >MES IMAGES</a>
          <a class="menuvoid" href="u_challenge.htm">CARTE D'AUTHENTIFICATION</a>
        </div>
        <div id="navbar">
          <div id="mode">Utilisateur</div>
          <div id="disconnect"><a href="/logout.htm">Deconnexion</a></div>
          <div id="refresh"><a href="javascript:location.reload(true)">Actualiser</a></div>
        </div>
<div id="titlebar"><div class="widetitlevoid">Accueil</div><div class="titlecorner"></div></div><div id="content" class="contenthome"><div id="infobox">Bienvenue sur l'interface de consultation et de configuration de votre alarme domestique SOMFY. <br /> <br /> Cette interface vous permet d'accéder à diverses fonctionnalités. <br /> Pour cela, veuillez sélectionner l'action désirée à l'aide du menu situé sur la gauche de la page. <br /> <br /> Bonne navigation</div><div id="content_footer" class="noborder">&nbsp;</div></div>         <!--content -->
        <div id="spacer">
          <!-- -->
          <!--[if IE]>&nbsp;
          <![endif]-->
        </div>
        <div id="menu_footer">
          Copyright &copy;2013 Somfy
        </div>
      </div>
      <!-- fond -->
    </div>
    <!-- page -->
  </body>
  </html>
  Lecture de l'état du système
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    373      0 --:--:-- --:--:-- --:--:--   373
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    335      0 --:--:--  0:00:01 --:--:--   335
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    328      0 --:--:--  0:00:01 --:--:--   328
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    339      0 --:--:--  0:00:01 --:--:--   339
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    342      0 --:--:--  0:00:01 --:--:--   342
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    343      0 --:--:--  0:00:01 --:--:--   343
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    321      0 --:--:--  0:00:01 --:--:--   322
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    290      0 --:--:--  0:00:01 --:--:--   290
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    316      0 --:--:--  0:00:01 --:--:--   316
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    291      0 --:--:--  0:00:01 --:--:--   291
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    332      0 --:--:--  0:00:01 --:--:--   333
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   353    0   353    0     0    348      0 --:--:--  0:00:01 --:--:--   349
 *******************************************
  Etat du système
 *******************************************
 Zone A                   = on
 Zone B                   = on
 Zone C                   = on

 Etat Piles               = ok
 Etat Communication Radio = ok
 Etat Porte/Fenêtre       = ok
 Etat Alarme              = ok
 Etat Boitier             = ok

 Etat GSM                 = GSM connecté au réseau
 Signal GSM               = 5
 Opérateur GSM            = Orange

 Etat caméra              = disabled
 Déconnexion de l'alarme
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  2096    0  2096    0     0   2632      0 --:--:-- --:--:-- --:--:--  2632
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <meta http-equiv="content-style-type" content="text/css" />
    <title>Centrale</title>
    <link rel="shortcut icon" href="/domis.ico" type="image/x-icon"/>
    <meta name="language" content="fr" />
    <meta http-equiv="expires" content="0">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache, must-revalidate">
<link href="/domis_welcome.css" rel="stylesheet" type="text/css" /><style type="text/css">img{border:none;};#menu a{border-bottom:none;}</style></head><body><div id="page"><div id="fond"><div id="menu"><div class="logohmb">&nbsp;</div><div id="filler"></div></div><div id="titlebar"><div class="widetitlevoid">Bienvenue</div><div class="titlecorner"></div></div><div id="content"><div class="loginhouse">Mon système d'alarme Somfy</div><form id="form_id" method="post" action="login.htm"><table><col width="165px"><tr><td>Compte</td><td><select name="login" class="skinnedselectinput"> <option value="u">Utilisateur1 </option><option value="i">Installateur </option><option value="t">Télésurveilleur </option></select></td></tr><tr><td>Code d'accès</td><td><input type="password" name="password" value="" class="skinnedtextinput" maxlength="12" size="16"/></td></tr><tr><td>Code d'authentification <b>E5</b></td><td><input type="password" name="key" value="" class="skinnedtextinput" maxlength="6" size="16"/></td></tr></table><div id="content_footer"><input type="submit" name="btn_login" value="Connexion" class="arrowdark"/></div></form></div>        <!--content -->
        <div id="spacer">
          <!-- -->
          <!--[if IE]>&nbsp;
          <![endif]-->
        </div>
        <div id="menu_footerflag">
<br>
          Copyright &copy;2013 Somfy
        </div>
      </div>
      <!-- fond -->
    </div>
    <!-- page -->
  </body>
  </html>
  Mise à jour capteurs Domoticz
 Etat ZoneA
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html> Etat ZoneB
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html> Etat ZoneC
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html> Etat Piles
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html> Etat Radio
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html> Etat Porte/Fenetre
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html> Etat Alarme
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html> Etat Boitier
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html> Etat GSM
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html> Niveau Signal GSM
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html> Opérateur GSM
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html> Etat Camera
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html>
Donc dans le debug, on voit qu'il se connecte bien, il recupere les infos mais ne les mets pas a jours dans domoticz?
aussi, pourquoi tant de code HTML, c'est normal?
Merci de ton aide
n1c0l45
Messages : 180
Inscription : 15 avr. 2016, 09:12

Re: Script alarme Somfy Protexiom 5000

Message par n1c0l45 »

a propos de la mise a jours de domoticz

si je teste de mon pc

Code : Tout sélectionner

http://IP_domoticz:8080/json.htm?type=command&param=udevice&idx=254&nvalue=0&svalue=pouf
ca marche
{

"status": "OK",
"title": "Update Device"

}
si je teste directement du PI

Code : Tout sélectionner

curl http://IP_domoticz:8080/json.htm?type=command&param=udevice&idx=254&nvalue=0&svalue=pouf
j'ai cette erreur
[1] 4653
[2] 4654
[3] 4655
[4] 4656
[2] Fini param=udevice
[3] Fini idx=254
pi@Domoticz:~$
pi@Domoticz:~$ {
"status" : "ERR"
}
autre chose que je comprends pas, il a fallut que je rajoute l'ip de domoticz dans les IP a exclure de la demande de connexion par mot de passe alors que j'avais deja mis 127.0.0.1 sinon je pouvais pas me connnecter ?
jcjames_13009
Messages : 105
Inscription : 23 févr. 2015, 15:27
Localisation : Marseille
Contact :

Re: Script alarme Somfy Protexiom 5000

Message par jcjames_13009 »

Salut n1c0l45

Bon le côté positif est que le script arrive à se connecter à l'alarme et récupérer les états.

A savoir, si tu lance le script sans l'option de "debug" c'est normal qu'il n'affiche rien. Car l'affichage n'est actif que si le mode "debug " est activé comme tu as pu le tester par la suite.

Pour la mise à jour des capteurs dans Domoticz, il semble que le pb vienne de l’autorisation d'accès.

Pour les accès, j'ai configuré Domoticz pour ne pas demander de mot de passe pour toutes les IP de mon réseau local --> 192.168.0.*
Capture3.JPG
Capture3.JPG (19.18 Kio) Consulté 14578 fois
Je pense que ton pb vient de là. Dans ton post tu as exclu les IP en 127.0.0.1 alors que dans ton fichier log l'alarme est sur 198.168.0.150

Vérifie également que tes capteurs Domoticz ne sont pas "protégés". Dans ce cas la cde json ne pourra pas les mettre à jour et tu auras un message d'erreur dans les log
Capture 4.JPG
Capture 4.JPG (41.24 Kio) Consulté 14491 fois
Je n'ai rien fait de particulier pour que ça fonctionne

@+

JC
Dernière modification par jcjames_13009 le 03 janv. 2017, 20:59, modifié 4 fois.
n1c0l45
Messages : 180
Inscription : 15 avr. 2016, 09:12

Re: Script alarme Somfy Protexiom 5000

Message par n1c0l45 »

Je viens de rajouter l'ip de la centrale et c'est bon!

Par contre je comprends pas pourquoi sont en ON et pas d'autres? tu sembles avoir pareil
du style:
Pile => ON
Boitier (ouverture boitier?) =>OFF
etc?
Merci
jcjames_13009
Messages : 105
Inscription : 23 févr. 2015, 15:27
Localisation : Marseille
Contact :

Re: Script alarme Somfy Protexiom 5000

Message par jcjames_13009 »

Salut

Cool que le script fonctionne maintenant :)

Pour l'état des capteurs ils ne sont pas tous à "On" même si "Ok" dans les états renvoyés car j'ai appliqué la logique suivante:

Code : Tout sélectionner

 *******************************************
 Etat du système
 *******************************************
 Zone A                   = off		-> Capteur sur Off
 Zone B                   = off		-> Capteur sur Off
 Zone C                   = off		-> Capteur sur Off

 Etat Piles               = ok		-> Capteur sur On
 Etat Communication Radio = ok		-> Capteur sur On
 Etat Porte/Fenêtre       = ok		-> Capteur sur Off (Porte/Fenêtre fermée)
 Etat Alarme              = ok		-> Capteur sur Off (Pas d'alarme)
 Etat Boitier             = ok		-> Capteur sur Off (Boitier fermé)

 Etat GSM                 = GSM connecté au réseau	-> Capteur sur On
 Signal GSM               = 4
 Opérateur GSM            = Orange

 Etat caméra              = disabled	-> Capteur sur Off (Pas de caméra)
Si tu veux changer cette logique il faut intervertir "On" et "Off" dans le script sur la cde json envoyée à Domoticz pour chaque capteur concerné.

@+

JC
Dernière modification par jcjames_13009 le 22 nov. 2016, 20:06, modifié 1 fois.
n1c0l45
Messages : 180
Inscription : 15 avr. 2016, 09:12

Re: Script alarme Somfy Protexiom 5000

Message par n1c0l45 »

les etats qui sont remontés ne sont pas toujours les bon, des fois ils sont marqué activés alors qu'ils n'ont pas changés ?
en fait il semble que des fois le script ne recupere pas toutes les infos? je vais voir pour choper un log de l'erreur
jcjames_13009
Messages : 105
Inscription : 23 févr. 2015, 15:27
Localisation : Marseille
Contact :

Re: Script alarme Somfy Protexiom 5000

Message par jcjames_13009 »

Là c'est un autre pb

La remonté et le traitement des erreurs fait partie des améliorations à apporter à ce script. J'y ai pensé et suis à la recherche des codes d'erreurs possibles renvoyés par l'alarme pour les gérer dans le script

@+

JC
Dernière modification par jcjames_13009 le 27 nov. 2016, 22:48, modifié 1 fois.
n1c0l45
Messages : 180
Inscription : 15 avr. 2016, 09:12

Re: Script alarme Somfy Protexiom 5000

Message par n1c0l45 »

test 1

Code : Tout sélectionner

 *******************************************
  Etat du système
 *******************************************
 Zone A                   = off
 Zone B                   = off
 Zone C                   = off

 Etat Piles               = ok
 Etat Communication Radio = ok
 Etat Porte/Fenêtre       = ok
 Etat Alarme              = ok
 Etat Boitier             = ok

 Etat GSM                 =
 Signal GSM               =
 Opérateur GSM            =

 Etat caméra              =
 Déconnexion de l'alarme
essai 2

Code : Tout sélectionner

 *******************************************
  Etat du système
 *******************************************
 Zone A                   = off
 Zone B                   = off
 Zone C                   = off

 Etat Piles               = ok
 Etat Communication Radio = ok
 Etat Porte/Fenêtre       = ok
 Etat Alarme              = ok
 Etat Boitier             = ok

 Etat GSM                 = GSM connecté au réseau
 Signal GSM               = 2
 Opérateur GSM            = Orange

 Etat caméra              = disabled
 Déconnexion de l'alarme
Donc le soucis est que des fois il recupere pas toutes les infos et affiche des erreurs? une idée?
Répondre