Forum eedomus
https://forum.eedomus.com/

[Store] uCam : Plugin de caméra universel (Snapshot)
https://forum.eedomus.com/viewtopic.php?f=50&t=6210
Page 1 sur 3  Suivant »
Auteur:  Nikya63 [ 30 Nov 2017 14:28 ]
Sujet du message:  [Store] uCam : Plugin de caméra universel (Snapshot)

Bonjour,

Je vous propose un plugin caméra universel, qui permet de piloter certaines caméras IP.

Dans un premier temps, seul la fonctionnalité snapshot est disponible.
(Fonctionnalité preset à venir ultérieurement si plébiscite)

  • Ce plug-in se veut universel, car il peut fonctionner avec toutes les caméras IP qui fournissent des URL de pilotage.
  • En contre-partie, c'est à vous de trouver et fournir à ce plugin les URL nécessaires. Il est possible de la trouver :
    • Dans la documentation de votre caméra
    • Sur le site suivant iSpyConnect
    • Sur le forum de ce plugin : forum eedomus

Son utilité peut être par exemple d'enregistrer une série de photo

  • Lorsque quelqu'un sonne chez vous
  • Quand une intrusion est détectée


Toute la documentation détaillée et le code du plugin est disponible ici : Github/Nikya/uCam


Mises à jours

  • 1.0 : Version initiale
  • 1.1 : 11/02/2018 : Correction de photo qui s'écrasent
Auteur:  lecalvezmikael [ 05 Déc 2017 20:52 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Salut ! Merci pour ce script. J'ai réussi à le paramétrer mais ça ne me remonte pas l'image dans le FTP d'Eedomus alors que mes tests sont conclues via l'API HTTP depuis un navigateur et que ma commande fonctionne voir capture. As tu une piste pour moi ?

Pièces jointes:
Capture d’écran 2017-12-05 à 20.51.10.png
capture
Capture d’écran 2017-12-05 à 20.51.10.png (81.49 Kio) Consulté 18615 fois
Auteur:  Nikya63 [ 05 Déc 2017 21:16 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Bonjour,

Je rencontre un problème similaire avec une caméra en particulier, il se pourrait que cela vienne de l'URL de snap qui comporte un PORT spécifique. Dans mon cas j'ai :

Code : Tout sélectionner
http://camera999:Xxxxx@192.168.1.2:1024/shot.jpg

Dans mon cas, j'ai un port spécifique de précisé : 1024.

La fonction mise à disposition par la box eedomus httpQuery ne permet pas de faire cette demande d'image avec un autre port que celui par défaut (80). Alors qu'un navigateur, lui le prendra en compte.

A confirmer, mais si cela sévère, j'ai peur qu'il n'y est pas de correctif possible pour ces cas là :(
Auteur:  LaFrite72 [ 25 Jan 2018 10:38 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Merci pour ce super script, je vais pouvoir totalement repenser le fonctionnent de mes cameras.

J'ai eu quelque soucis lorsque je voulait des snapshot trop rapproché (1s), le serveur FTP ne me prenais qu'une image sur 5 (le temps que le serveur ftp supprimer l'image).

J'ai donc modifier un peu ton script pour incrémenter le nom du fichier envoyer sur le serveur et la plus de soucis.

Lignes que j'ai modifiées:

$r = sdk_ftpUpload($aFtpTarget, $content, $i);

'time_fetch_box_'.$i.'.jpg'



Code : Tout sélectionner
<?php
/*******************************************************************************
* Nikya eedomus Script uCam
********************************************************************************
* Plugin version : 1.0
* Author : Nikya
* Origine : https://github.com/Nikya/eedomusScript_ucam
*******************************************************************************/

/** Utile en cours de dev uniquement */
//$eedomusScriptsEmulatorDatasetPath = "eedomusScriptsEmulator_dataset.json";
//require_once ("eedomusScriptsEmulator.php");

/** Initialisation de la réponse */
$result = array();

/*******************************************************************************
* Lecture des variables
*/

/** [Optionnel] Nombre de photo à prendre */
$snapCount = getArg('snapcount', false, 1);

/** [Optionnel] Temps d'attente en seconde entre les photos */
$snapInterval = getArg('snapinterval', false, 1);

/** [VAR1] Url pour obtenir un snap (URL à enconder)*/
$urlSnap = getArg('urlsnap');

/** [VAR2] Informations de FTP : User : Password @ server FTP */
$ftpTarget = getArg('ftptarget');

/*******************************************************************************
* Procéder
*/
sdk_main();
function sdk_main() {
   global $snapCount;
   global $snapInterval;
   global $urlSnap;
   global $ftpTarget;
   $r = null;


   $aFtpTarget = sdk_readFtpTarget($ftpTarget);
   if ($aFtpTarget == null) {
      sdk_finish(array('success'=>false, 'msg' => 'Incorrecte ftpTarget '.$ftpTarget));
   }
   else {
      $i=0;
      for ( ; $i<$snapCount; $i++) {
         $content = httpQuery($urlSnap);
         $res['snapshot'][$i]['snap']['success'] = $content != null;
         $res['snapshot'][$i]['snap']['content'] = substr($content, 0, 50) . '...';
         $r = sdk_ftpUpload($aFtpTarget, $content, $i);
         $res['snapshot'][$i]['ftpupload']['success'] = $r != null;
         $res['snapshot'][$i]['ftpupload']['content'] = $r;
         usleep($snapInterval*1000*1000);
      }

      $res['success'] = true;
      $res['msg'] = "A total of $i snaps processed (Interval={$snapInterval}s)";
      sdk_finish($res);
   }
}

/*******************************************************************************
* Lecture des informations du FTP
*/
function sdk_readFtpTarget($ftpTarget) {
   $patern = '#(.+):(.+)@(.+)#'; // user:mdp@www.site.fr

   $matches = null;
   if (preg_match_all($patern, $ftpTarget, $matches)===false or count($matches[0])==0)
      return null;
   else
      return array(
         'user' => $matches[1][0],
         'pwd' => $matches[2][0],
         'server' => $matches[3][0]
      );
}

/*******************************************************************************
* Appeler le preset
*/
function sdk_preset($urlPreset, $presetId) {
   $patern = '#presetid#';
   $urlPreseted = str_replace ($patern, $presetId, $urlPreset);
   $return = httpQuery($urlPreseted);
}

/*******************************************************************************
* Envoie du contenue par FTP
*/
function sdk_ftpUpload($aFtpTarget, $content, $i) {
   return ftpUpload(
         $aFtpTarget['server'],
         $aFtpTarget['user'],
         $aFtpTarget['pwd'],
         $content,
         'time_fetch_box_'.$i.'.jpg'
      );
}

/*******************************************************************************
* Fin du script affichage du résultat
*/
function sdk_finish($res) {
   echo '<pre>';
   var_dump($res);
   echo '</pre>';
   exit;
}
Auteur:  Nikya63 [ 25 Jan 2018 15:11 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

@LaFrite72, j'ai intégré ta proposition pour une prochaine mise à jour :

https://github.com/Nikya/eedomusScript_ ... ll/1/files

ça explique surement certains comportements que j'avais constatés, mais jamais investigué donc merci pour ta contribution :)
Auteur:  Anthony86 [ 06 Fév 2018 21:25 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Bonsoir

juste une question

je possede une camera Samsung (avec application smartcam) SNH-E6440BN

j'ai bien trouver le lien sur Ispyconnect

par contre pour FTP je met quoi, j'ai un NAs syno ??

merci d'avance
Auteur:  Nikya63 [ 11 Mars 2018 15:19 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Anthony86 a écrit:Bonsoir

juste une question

je possede une camera Samsung (avec application smartcam) SNH-E6440BN

j'ai bien trouver le lien sur Ispyconnect

par contre pour FTP je met quoi, j'ai un NAs syno ??

merci d'avance


Bonjour Anthony86,

Ce plugin est fait pour fonctionner avec les FTP fournis par eedomus.

Tout l’intérêt du FTP eedomus et de pouvoir ensuite consulter la dernière image et l'historique des images directement dans l'interface de la box.
Avec un FTP externe la box ne peut pas proposer cette fonctionnalité.

Mais ce script devrait pouvoir fonctionner avec un autre FTP en renseignant l’information voulue
Code : Tout sélectionner
login:passe@serveur
.
Mais je ne le garantit pas, je n'ai pas testé.
Auteur:  Nikya63 [ 11 Mars 2018 16:04 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Nouvelle version mineur : v1.1

Correction d'un bug qui fesait que pour une rafale photo trop rapide, les photos s’écrasaient l'une l'autre avant d’être correctement uploadées : Seul la dernière photo était finalement enregistrée.

Merci à @LaFrite72 pour la remonté du bug et la proposition de correctif !

Plus d'information : https://github.com/Nikya/eedomusScript_ ... ses/latest
Auteur:  wirless [ 26 Mars 2018 17:50 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Bonsoir.
Merci pour ce script .Un peu d'aide serait le bienvenue .
Je reçois bien les 3 snapshots mais vide ,image blanche.
Merci par avance pour votre aide
Auteur:  Nikya63 [ 27 Mars 2018 12:56 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Bonjour @wirless,

- Si vous appelez directement l'URL de snapshot avec le navigateur Web, l'image est-elle aussi blanche
?
- Quelle est cette URL ?
- Quelle est la marque et le modèle de la cam ?
- Si le script est appelé en mode test coté eedomus, le compte rendu d’exécution affiche t'il des erreurs ?
Auteur:  wirless [ 28 Mars 2018 12:03 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Nikya63 a écrit:Bonjour @wirless,

- Si vous appelez directement l'URL de snapshot avec le navigateur Web, l'image est-elle aussi blanche
?
- Quelle est cette URL ?
- Quelle est la marque et le modèle de la cam ?
- Si le script est appelé en mode test coté eedomus, le compte rendu d’exécution affiche t'il des erreurs ?


Bonjour Nikya63
Merci pour ta réponse.
_Url du snapshot fonctionne bien avec le navigateur
_ URL http://Ip cam:4343/snapshot.cgi?&user=loginCam&pwd=pass cam
_Cam Foscam FI9804
Le scipt en mode test :
array(3) {
["snapshot"]=>
array(3) {
[0]=>
array(2) {
["snap"]=>
array(2) {
["success"]=>
bool(true)
["content"]=>
string(53) "..."
}
["ftpupload"]=>
array(2) {
["success"]=>
bool(true)
["content"]=>
string(78) "{ "error": false, "msg": "Content uploaded to camera.eedomus.com at 12:51:14"}"
}
}
[1]=>
array(2) {
["snap"]=>
array(2) {
["success"]=>
bool(true)
["content"]=>
string(53) "..."
}
["ftpupload"]=>
array(2) {
["success"]=>
bool(true)
["content"]=>
string(78) "{ "error": false, "msg": "Content uploaded to camera.eedomus.com at 12:51:16"}"
}
}
[2]=>
array(2) {
["snap"]=>
array(2) {
["success"]=>
bool(true)
["content"]=>
string(53) "..."
}
["ftpupload"]=>
array(2) {
["success"]=>
bool(true)
["content"]=>
string(78) "{ "error": false, "msg": "Content uploaded to camera.eedomus.com at 12:51:18"}"
}
}
}
["success"]=>
bool(true)
["msg"]=>
string(42) "A total of 3 snaps processed (Interval=2s)"
}
Merci et bonne journée
Auteur:  Nikya63 [ 28 Mars 2018 13:25 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

De ce que je peux constater, c'est qu'il n'y a pas de soucis avec l'URL de snap, car si elle fonctionne dans le navigateur c'est déjà un bon point, la différence aurait pu être au niveau authentification, mais un User et mot de passe est passé dans l'URL.

Le script fonctionne parfaitement car il obtient bien du contenue et l'envoie bien les 3 fois sans erreur.

Par contre ce qui m'étonne un peu c'est le string(53) "..." qui devrait avoir des choses en plus que les ... (Mais je suis pas sur).

Il se pourrais que ce soit la fonction eedomus httpQuery qui ne fonctionne pas avec cette cam.

A essayer en créant un nouveau script PHP pour test, avec juste comme code :

Code : Tout sélectionner

var_dump
( httpQuery( 'http://Ip cam:4343/snapshot.cgi?&user=loginCam&pwd=pass cam') );
 


Qui devrai renvoyer un grand contenue illisible et pas une page blanche.
Auteur:  wirless [ 28 Mars 2018 14:36 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Merci pour ta réponse rapide.
Effectivement ça me renvoi une page illisible.
Auteur:  Nikya63 [ 29 Mars 2018 13:36 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

La page illisible renvoyée lors du dernier test commence par quoi ? String(??)

L'URL de snap renseignée dans VRA1 est bien URLencodée et non pas en cratères brutes ?
Auteur:  wirless [ 29 Mars 2018 14:35 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Nikya63 a écrit:La page illisible renvoyée lors du dernier test commence par quoi ? String(??)

L'URL de snap renseignée dans VRA1 est bien URLencodée et non pas en cratères brutes ?

Bonjour.
La page comence par string(29709)
L'URL de snap j'ai mis http://ipcam: port/snapshot.cgi?&user=.....&pwd.....

Merci
Auteur:  Nikya63 [ 30 Mars 2018 11:36 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

wirless a écrit:
Nikya63 a écrit:La page illisible renvoyée lors du dernier test commence par quoi ? String(??)

L'URL de snap renseignée dans VRA1 est bien URLencodée et non pas en cratères brutes ?

Bonjour.
La page comence par string(29709)
L'URL de snap j'ai mis http://ipcam: port/snapshot.cgi?&user=.....&pwd.....

Merci


L'URL de Snap mise dans VAR1 dois être encodée, se qui ne semble pas être le cas ici.
Auteur:  wirless [ 30 Mars 2018 14:54 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Bonjour,
C’est bien ça !!!
Toutes mes excuses …. Je suis passé à côté de cette étape
Merci beaucoup pour votre aide et votre patience
Auteur:  Nikya63 [ 31 Mars 2018 21:11 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

OK, c'est cool si c'est que ça !
Dans une prochaine mise à jour je ferais en sorte que se soit le script qui s'occupe de l'encodage comme c'est possible.
Auteur:  danardf [ 19 Août 2018 09:41 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

Bonjour.

Comment puis-je exécuter le script toute les X minutes.?
Actuellement, j'upload bien l'image sur un serveur FTP sur le WAN.
Je souhaiterais juste qu'il pousse l'image toutes les minutes par exemple.

Merci de votre aide.
Auteur:  danardf [ 19 Août 2018 15:10 ]
Sujet du message:  Re: [Store] uCam : Plugin de caméra universel (Snapshot)

danardf a écrit:Bonjour.

Comment puis-je exécuter le script toute les X minutes.?
Actuellement, j'upload bien l'image sur un serveur FTP sur le WAN.
Je souhaiterais juste qu'il pousse l'image toutes les minutes par exemple.

Merci de votre aide.


C'est bon j'ai trouvé.
Juste créer une règle avec horaires (toutes les minutes) + actions (4) donc la première lance une snapshot et les autres une macro toutes décalées de 15 secondes.
Les caméras se rafraichissent ainsi toutes les minutes à 15 secondes de différence.
Page 1 sur 3 Le fuseau horaire est UTC+1 heure