Hello @S1eepy,
@fdp1nm confirmera ou completera mes réponses, mais voici les éléments que je peux apporter :
S1eepy a écrit :
- lorsque le script se connecte, la centrale émet un BIP. Je pense qu'il est possible de le désactiver, car lorsque j'utilise l'appli android, il n'y a pas de bip. Est-ce que tu sais comment faire?
Je n'ai pas ce BIP chez moi, et je n'ai encore entendu aucun autre utilisateur en parler. Je ne vois pas ce que la classe pourrait faire qui soit différent de l'appli. Vérifie à tout hazard dans les logs de ton alarme que ce BIP ne vient pas d'une commande (par exemple alarme OFF) qui serait envoyée par ton script par erreur. Sinon je ne vois pas. @Fdp1nm ?
S1eepy a écrit :
- je ne suis pas expert, mais je me demande comment afficher le statut des éléments. Je vois la fonction "echo $mySP->pullStatus();" dans ton exemple de code, celle-ci s'execute, mais ne renvoie rien. Dans la classe, j'ai essayé d'activer certains "print", mais pas de changement. Une idée? Exemple, comment afficher le status de l'élément "239195" (détecteur PIR)
L'exemple de @fdp1nm est en fait incomplet.
La methode pullStatus permet d'interroger l'alarme, et de stocker les infos de status dans un attribut privé de la classe. Tu dois ensuite appeler la methode getStatus() pour récupérer ces valeurs. Cette methode te retourne un tableau avec toutes les infos de status ed l'alarme. Tu ne retrouve ici QUE les infos globales, et pas les éléments. Ces infos varient selon la version detectée de ton alarme.
Tu as au minimum l'état des zones A, B, C, ainsi que les status porte ouvert, etat des liaisons, defaut batterie, et la présence d'une alarme (alarme intrusion, ou domestique si fumée ou inondation).
apres avoir executer le pull, un code du genre ci-dessous devrait te permettre de retrouver les infos :
Code : Tout sélectionner
$status=$mySP->getStatus();
foreach($status as $key => $val){
echo ($key." : ".$val);
}
La liste exaustive des infos de status que l'onpeut obtenir (selon le type d'alarme) est :
ZONE_A : ON/OFF
ZONE_B : ON/OFF
ZONE_C : ON/OFF
BATTERY : Battery default OK/NOK
LINK : Communication default OK/NOK
DOOR : Open door or window OK/NOK
ALARM : Alarm triggered OK/NOK_INT/NOK_DOM
TAMPERED : Opened device box OK/NOK
GSM_LINK : "GSM connecté au réseau" or ?
GSM_SIGNAL : Reception level (Interger, 1, 2, 3, 4)
GSM_OPERATOR : Orange, ...
CAMERA : Web cam connected (disabled or ?)
Pour retrouver l'état de touts tes éléments (capteurs) tu retrouve le même principe avec les methodes pullElements() et getElements()
Pour chaque élément, tu accède à :
Name : Nom de l'élément
Id : UID de l'élément
Battery : Etat des piles (itembattok | itembattnok | itemhidden)
Tampered :Etat de l'autopotection (itemboxok | itemboxnok | itemhidden)
Alarm : Alarme déclenchée (itemhouseok | itemhousedomestic | itemhouseintrusion)
Link : Etat liaison radio (itemcomok | itemcomnok | itemhidden)
Door : Porte ouverte / fermée (itemdoorok | itemdoornok | itemhidden)
Zone : Zone de l'élément (SYS | AT | A | B | C | TEC | AT (f)| A (f) | B (f) | C (f))
S1eepy a écrit :
- dernière question: le but du script est de récupérer le status des éléments de façon récurrente. Est-ce que tu peux expliquer comment c'est géré dans Jeedom? Il faut j'imagine faire un "pull" toutes les minutes? voir plus souvent? Le but pour moi est d'avoir un statut à jour des détecteurs de présence
En effet, dans les systèmes ou cette solution a été intégrée, nous faisons un pull / get à interval de temps régulier. C'est paramétrable par l'utilisateur, mais personellement, je le fais toutes les 10 secondes.
Dans notre solution, nous ne fermont pas la session sur l'alarme. On augmente le timeout au maximum (99 minutes) sur l'alarme pour maintenir une session ouverte, et on fait ensuite des pull sans avoir besoin de se reconnecté. On fait ça parce que la connexion à l'alarme est tres longue. C'est bien plus réactif si la session reste ouverte.
La contrainte de ce système est que l'alarme ne permet d'ouvrir qu'une session à la fois. La session est donc monopolisée par ta solution domotique qui devient le point de controle. Tu ne peux plus utiliser l'application mobile. De toute façon le polling échourais si ta domotique tente de se connecter alors que tu as une session en cours dans l'application mobile.
Il faut égallement savoir que ce polling régulier ne permet pas la mise en veille de l'alarme et augment considérablement la conso des piles sur le transmetteur
Enfin, tu obtiendra l'état de tes capteurs de porte (ouvert /fermé) même si l'alarme n'est pas activée, ce qu ipermet de l'es utiliser dans ta solution domotique.
En revanche les autres capteur (mouvement) ne remontent leur état qu'en cas de déclenchement de l'alarme. (la limitte viens de l'alarme, pas de la classe. Tu ne peut rien obtenir par cette classe qui ne soit disponible via l'interface web de l'alarme).