Tuto : Gestion du mode veille sur une Caméra Foscam

Bonjour,

Je vous propose ici une petite contribution pour gérer le mode veille des caméras Foscam depuis Jeedom ainsi que son retour d’état.

Prérequis : Avoir une caméra Foscam qui propose le mode veille (ou vie privée) ET qui fonctionne de manière nominale avec via le plugin Caméra.

Pour ma part j’ai une R2M intérieure et une SD4 extérieure.
Les 2 ont été intégrées plus ou moins sans difficulté en mode R2MP / R2MEP.

Etape 1 : Création des commandes dans l’objet caméra dans le plugin Caméra, onglet « Commandes »

Mise en veille de la caméra
Créer une commande Action « SLEEP ON » avec la commande :
/cgi-bin/CGIProxy.fcgi?cmd=alexaSleep&usr=#username#&pwd=#password#

Sortie de veille de la caméra
Créer une commande Action « SLEEP OFF » avec la commande :
/cgi-bin/CGIProxy.fcgi?cmd=alexaWakeUp&usr=#username#&pwd=#password#

Etat de la veille de la caméra :
Créer une commande Info « Mode Veille » avec la commande : AlexaState de type « Binaire ».

A cette étape, il est possible de mettre et enlever la veille de la caméra avec les 2 actions.

Etape 2 : Création du scénario permettant d’aller chercher l’info sur l’état du mode veille de la caméra.
Attention, ce n’est pas un push, le scénario doit être exécuté pour avoir l’info !

Créer un nouveau scénario (Outils-> scénario → Nouveau).
Dans l’onglet Scénario, cliquer sur « Ajouter bloc » et choisir « Code ».

Voila le code à insérer, il vous suffira de remplir les variables avec votre configuration :

//début config, ajouter les paramètres issus de votre caméra
$ip =  "XXX.XXX.X.XX";  
$port = "XX"; // Pas le port rtsp
$username = "XXXX"; 
$pwd = "XXXX";
$commande_info = "XXXXXXXXX"; /*exemple '#[Pièce de vie][Caméra intérieure][Mode Veille]#';*/
//fin config

$AlexaStateOn = 1;
$AlexaStateOff = array(2,0);



$url = "http://".$ip.":".$port."/cgi-bin/CGIProxy.fcgi?cmd=getAlexaState&usr=".$username."&pwd=".$pwd."";
$scenario->setLog($url);

$ch = curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_TIMEOUT,10);
$output = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if($httpcode == "200"){

$html = new DOMDocument();
$html->loadHTML($output);
$AlexaState = $html->getElementsByTagName('state')->item(0)->nodeValue;

//$scenario->setLog($AlexaState);
  
//résultat   
  // mode veille ON
  if($AlexaState == $AlexaStateOn) $etat = 1;
  // mode veille OFF
  else if (in_array($AlexaState, $AlexaStateOff)) $etat = 0;
  
  
//$scenario->setLog($etat); 
  
//info poussée sur la commande     
cmd::byString($commande_info)->event($etat);

}else{
  $scenario->setLog($httpcode);
}

Maintenant, à chaque exécution du scénario, votre commande info prendra la valeur 0 si le mode veille est désactivé, 1 si le mode veille est activé.

Etape 3 : Ajout de l’exécution du scénario lors de l’activation ou désactivation du mode veille.

Dans chacune des 2 commandes de votre caméra créées précédemment (VEILLE ON et VEILLE OFF), en cliquant sur la roue crantée de la commande, onglet « Configuration » ajouter APRES l’exécution de la commande, le lancement du scénario précédemment créé:

Maintenant, à chaque clic sur l’une ou l’autre commande, Jeedom vérifiera et mettra à jour l’info du mode veille dans la commande info « Mode veille »

Etape 4 : Scénario programmé
Si le mode veille peut-être modifié à l’extérieur de Jeedom (via l’appli Foscam par exemple), il peut être judicieux de mettre le scénario en mode programmé (Toutes les 10mn par exemple) pour avoir la remontée d’info.

Etape 5 : Application possible avec Jeedom Connect
Vous pouvez maintenant vous créer un joli widget Action dans Jeedom Connect qui vous permettra d’avoir l’info sous les yeux et d’activer ou désactiver la veille de votre caméra !

Pour ce faire, voici les 2 actions à saisir dans le widget Action :

On ajoute l’accès à l’info de l’état dans le paragraphe « Ajouter des infos » :

On peut donc afficher l’état sous la forme d’Images sous conditions :

Et depuis combien de temps via le champ « Sous Titre » :

On sauvegarde, puis on affecte le widget à un appareil mobile pour avoir quelque chose comme ça :
image
image

Enjoy !