Envoi d'un capture campatrol via JPI (+RETEX Dlink)

Edit 12/01/25 : après avoir trouvé une solution au problème d’origine, j’ai ajouté un RETEX sur les caméras Dlink

Salut la commu, j’ai bien réussi à installer CamPatrol et à configurer mes IPcam, mais je ne trouve pas le moyen d’envoyer les alertes par MMS via JPI.

Dans la doc CamPatrol, l’exemple est pour telegram, mais je préfère rester sur JPI.

J’ai essayé d’adapter un code qui fonctionne avec la commande alert, sans succès :

$jpi = $sc->load('jpi', 'http://192.168.86.37:8080');
$files = $sc->load('files');

$imagePath = $sc->getcmd('#[Entree][Cam alert][Alert]#');

$url = $files->makeDownloadUrl($imagePath,'192.168.86.236', 30);
$jpi->sendMms('{MY NUMBER}', $url, 'Intrusion détectée à l entrée');

En question subsidiaire, je voudrait savoir si qqn utilise des IPcam Wanscam, j’ai l’impression qu’il n’existe pas de détection de mouvement :

en l’occurrence, des alertes sont envoyées toutes les 10 secondes (pour cet exemple) :

Sous couvert d’un modo, je vais peut être faire un sujet distinct.

Pour info, ma santé :

merci de m’avoir lu

Salut, je ne sais pas repondre pour JPI.
Mais pour ton IPcam Wanscam, c’est peut etre dans le menu: « Alarm Service Settings »
Si ce n’est pas là, ce ne sera pas possible avec cette caméra.

et merde…je pensais que c’était un réglage de base sur toutes les cams. du coup j’ai la moitié de mes cams qui ne pourra pas servir…

Une fois de plus, mes tâtons ont fini par payer :muscle:

N’y connaissant rien, j’ai tenté getcmd, getstring, file_get_contents…

J’ai compilé plusieurs extraits de plusieurs forums, eEt voici le code qui fonctionne pour que la détection de mouvement envoie la capture par MMS via JPI :

$jpi = $sc->load('jpi', 'http://192.168.86.37:8080');
$files = $sc->load('files');

$trigger = cmd::cmdToHumanReadable($scenario->getRealTrigger()) ;
$imagePath = cmd::byString($trigger)->execCmd(); 

$scenario->setLog($imagePath);
    
$url = $files->makeDownloadUrl($imagePath,'192.168.86.236', 30);
$jpi->sendMms('0675052388', $url, 'Intrusion détectée dans le salon');

C’est le bloc code dans le scenario déclenché par une alerte campatrol

Sachant que la commande #[Labo][5020L camalert][Alert]# est une commande info qui contient l’adresse de la photo capturée.

Il ne reste plus qu’à faire un bloc code par caméra. A moins que je ne trouve le moyen d’extraire en code l’objet et/ou l’équipement du trigger, mais ça ce sera pour un autre topic.
Bref, ça marche.

J’ai tout remplacé par des Dlink, dont le portail en ligne est complet et relativement convivial, et dont la désactivation de mouvement est facilement désactivable (même pour les cam bas de gamme), contrairement aux wanscam que j’ai.

PS hors sujet : connecter les Dlink qui n’ont que le WPS, dans un environnement qui n’en a pas comme chez moi, nécessite de les connecter via le portail en ligne de la cam. Pour les plus anciens modèles, ce portail n’est accessible que depuis internet explorer.
Sous W11, internet explorer n’est plus installable, mais Edge permet d’ouvrir des « onglets IE » :+1:

Suite à mes investigations pour utiliser CaPatrol avec JPI, je fais un petit retour d’expérience sur les caméras Dlink, pour ceux que ça peut intéresser, + d’autres astuces découvertes pour l’occasion.

C’est le point qui sert à concaténer texte et variable. Dans mon cas, avec ce seul bloc code, j’ai un MMS quel que soit l’objet d’où vient l’alerte :

$jpi = $sc->load('jpi', 'http://192.168.86.37:8080');
$files = $sc->load('files');

$trigger = cmd::cmdToHumanReadable($scenario->getRealTrigger()) ;
$imagePath = cmd::byString($trigger)->execCmd(); 

$cmd = cmd::byString($trigger);
$eqLogic = eqLogic::byId($cmd->getEqLogic()->getId());
$object = $eqLogic->getObject()->getName();
    
$url = $files->makeDownloadUrl($imagePath,'192.168.86.236', 30);
$jpi->sendMms('{MY NUMBER}', $url, 'Intrusion activée, mouvement dans '.$object);

:exclamation: :exclamation: :exclamation: En fait l’interface graphique n’est disponible QUE sur les anciens modèles ! En l’occurrence les modèle terminant par L.
Ceux terminant par LH ne sont accessible que via l’appli et via NVR.
Dommage, les LH ont une belle image, mais je n’ai pas réussi à paramétrer FTP, requêtes pour activation détection mouvement, …

Plus précisément, ouvrir Edge, cliquer sur les 3 petits point / paramètres / navigateur par défaut, ajouter les IP (fixes) des caméras et choisir Autoriser :

Pour les requêtes HTTP, c’est la galère, impossible de trouver un receuil des commandes Dlink, même avec l’assistance Dlink, et les URL par défaut dans le plugin camera sont fausses.

Exemples de requêtes trouvées :

Pour 5020L :

Infra rouge : daynight.cgi?user=#username#&pwd=#password#&DayNightMode=X&ConfigReboot=no
X =0 pour Auto
X=2 pour IR OFF => Mode Jour forcé
X=3 pour IR ON => . Mode Nuit Forcé

Désactiver détection : motion.cgi/?MotionDetectionEnable=0&ConfigReboot=no

Mouvement caméra :
pantiltcontrol.cgi?PanSingleMoveDegree=5&TiltSingleMoveDegree=5&PanTiltSingleMove=3
avec 1 = haut, 3 = gauche, 5 = droite, 7 = bas, 4 = home

5222L :
pantilt : cgi/ptdc.cgi?command=set_relative_pos&posX=-10&posY=0 (varier X et Y selon mouvement souhaité)
détection : config/motion.cgi?enable=no (yes/no)

2136L :
détection : config/motion.cgi?enable= no (yes/no)

Pour FTP, certaines caméras permettent d’en créer plusieurs.
C’est parfait, j’ai donc un serveur FTP campatrol pour les alertes et les captures par MMS, et j’ai ajouté un FTP sur NAS pour l’enregistrement des vidéos en car d’intrusion :


(ici enregistrement SD est pour l’enregistrement en continu, détection de présence activée ou non).

Plusieurs formats de vidéo sont disponibles. Pour les vidéos exportées (comme dans mon cas sur NAS), elles sont limitées à 5M. Il faut donc éviter le format JPEG. Voici des tests pour des vidéos de 15 secondes, en 15 ou 25 images par seconde :
image

Voilà pour le moment, j’ajouterai d’autres astuces pertinentes si j’en trouve.

1 « J'aime »