Forum eedomus
http://forum.eedomus.fr/

Enregistrement camera sur surveillance station
http://forum.eedomus.fr/viewtopic.php?f=50&t=2711
Page 1 sur 1
Auteur:  remy3885 [ 20 Avr 2015 18:25 ]
Sujet du message:  Enregistrement camera sur surveillance station

Salut à tous je suis en train de mettre en place un enregistrement de mes cameras lors du lancement de mon alarme et pour ça je voudrais lancer un script à l'activation de l'alarme. Le problème c'est que je suis nul en script php :D , j'en ai écrit un mais je voudrai l'avis de quelqu'un qui s'y connait. Voilà mon script :

<?php
// User configurable variables
$Synology = Net.FHttp("adresse IP", Port)
$login = "xxxxxx"
$password = "xxxxxxxx"
$event = {1, 2, 3, 4, 5, 6}

// Login session
$payload = "/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=".$login."&passwd=".$password."&session=SurveillanceStation&format=sid"
response, status, errorCode = Synology:GET(payload)
if tonumber(status) == 200 then
$jsonTable = json.decode(response);
if jsonTable.success == true then
$SID = jsonTable.data.sid

for i = 1, #event do
// Lance l'enregistrement
$payload = "/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&version=1&method=Trigger&eventId=".$event[i]."&_sid=".$SID

// Logout session
payload = "/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&session=SurveillanceStation&_sid=".$SID

?>
Auteur:  Orel' [ 23 Avr 2015 11:44 ]
Sujet du message:  Re: Enregistrement camera sur surveillance station

Salut,

Pourquoi tu n'utilises pas' l'API de surveillance station ?

viewtopic.php?f=15&t=1769
Auteur:  remy3885 [ 24 Avr 2015 12:06 ]
Sujet du message:  Re: Enregistrement camera sur surveillance station

Je l'utilise justement je souhaite juste le faire par le biais d'un script plutôt qu'avec des actionneur HTTP car la gestion du SID serait alors plus simple
Auteur:  remy3885 [ 03 Mai 2015 15:30 ]
Sujet du message:  Re: Enregistrement camera sur surveillance station

j'ai vu, après avoir lu pas mal de script pour la eedomus, que le format est inspiré du php mais pas du php 100%. Du coup j'ai écris un autre script. Je le poste si quelqu'un veut jeter un coup d’œil et faire des remarques.
Code : Tout sélectionner
<?
//Déclaration des variables
$IPSyno=getValue(getArg('IPSyno'));//Variable à specifier lors du lancement du script(http://192.168.1.XX/script/?exec=script_XXXXX.php&IPSyno=XXX.XXX.X.XX&PortSyno=XXXX&...)
$PortSyno=getValue(getArg('PortSyno'));//Idem
$event=getValue(getArg('event'));//Idem ('event' étant le n° d'évenement externe dans les régles d'action de surveillance station)
$event2=getValue(getArg('event2'));//Idem
$login=getValue(getArg('loginSyno'));//Idem
$password=getValue(getArg('passwordSyno'));//Idem
$seconde=getValue(getArg('seconde'));//Idem(tempo entre les deux commandes caméra)

//Login on génère un SID
function sdk_session(){
  $url='http://'.$IPSyno.':'.$PortSyno.'/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account='.$login.'&passwd='.$password.'&session=SurveillanceStation&format=sid';
  $reponse=httpQuery($url, 'GET');
}

//logout destruction du SID
function sdk_logout(){
  $SID=loadVariable('new_SID');//charge la SID
  $url='http://'.$IPSyno.':'.$PortSyno.'/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&session=SurveillanceStation&_sid='.$SID;
  $reponse=httpQuery($url,'GET');
  $json=sdk_decode($reponse);
  if($json['sucess']!=true){
    httpQuery($url,'GET');
  }
  else{
    echo'vous êtes délogué';
  }
}

//test de la session
function sdk_test(){
  $json=sdk_json_decode($reponse);
  if($json['sucess']!=true){
    sdk_logout();
    sdk_session();
  }
  else{
    $SID=$json['result']['SID'];
    saveVariable('new_SID',$SID);//Enregistrement valeur de la SID dans une variable
  }
}

//Commande de la caméra
function sdk_commande1Cam(){
  $SID=loadVariable('new_SID');//charge la SID
  $url='http://'.$IPSyno.':'.$PortSyno'/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&version=1&method=Trigger&eventId='.$event.'&_sid='.$SID;
  $reponse=httpQuery($url,'GET');
  $json=sdk_decode($reponse);
  if($json['sucess']!=true){
    //on réessaye en cas de 'success' false
    $reponse=httpQuery($url,'GET');
    $json=sdk_decode($reponse);
  }
}

//Commande de la caméra
function sdk_commande2Cam(){
  $SID=loadVariable('new_SID');//charge la SID
  $url='http://'.$IPSyno.':'.$PortSyno'/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&version=1&method=Trigger&eventId='.$event2.'&_sid='.$SID;
  $reponse=httpQuery($url,'GET');
  $json=sdk_decode($reponse);
  if($json['sucess']!=true){
    //on réessaye en cas de 'success' false
    $reponse=httpQuery($url,'GET');
    $json=sdk_decode($reponse);
  }
}

//execution
sdk_session();
sdk_test();
sdk_commande1Cam();
sleep($seconde);//on temporise entre les deux commandes si ces commandes sont sur la même caméra
sdk_commande2Cam();
sdk_logout();

?>
Auteur:  remy3885 [ 04 Mai 2015 14:48 ]
Sujet du message:  Re: Enregistrement camera sur surveillance station

Je viens de faire encore quelques petites corrections sur mon script pour qu'il soit accepté par l'eedomus. Entre autre la fonction sleep n'est pas supporté par la box... le voici corrigé :
Code : Tout sélectionner
<?
//Déclaration des variables
$IPSyno=getValue(getArg('IPSyno'));//Variable à specifier lors du lancement du script(http://192.168.1.XX/script/?exec=script_XXXXX.php&IPSyno=XXX.XXX.X.XX&PortSyno=XXXX&...)
$PortSyno=getValue(getArg('PortSyno'));//Idem
$event=getValue(getArg('event'));//Idem ('event' étant le n° d'évenement externe dans les régles d'action de surveillance station)
$event2=getValue(getArg('event2'));//Idem
$login=getValue(getArg('loginSyno'));//Idem
$password=getValue(getArg('passwordSyno'));//Idem
$seconde=getValue(getArg('seconde'));//Idem(tempo entre les deux commandes caméra)

//Login, on génère un SID
function sdk_session(){
  $url='http://'.$IPSyno.':'.$PortSyno.'/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account='.$login.'&passwd='.$password.'&session=SurveillanceStation&format=sid';
  $reponse=httpQuery($url, 'GET');
}

//logout destruction du SID
function sdk_logout(){
  $SID=loadVariable('new_SID');//charge la SID
  $url='http://'.$IPSyno.':'.$PortSyno.'/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&session=SurveillanceStation&_sid='.$SID;
  $reponse=httpQuery($url,'GET');
  $json=sdk_json_decode($reponse);
  if($json['sucess']!=true){
    httpQuery($url,'GET');
  }
  else{
    echo'vous êtes délogué';
  }
}

//test de la session
function sdk_test(){
  $json=sdk_json_decode($reponse);
  if($json['sucess']!=true){
    sdk_logout();
    sdk_session();
  }
  else{
    $SID=$json['result']['SID'];
    saveVariable('new_SID',$SID);//Enregistrement valeur de la SID dans une variable
  }
}

//Commande de la caméra
function sdk_commande1Cam(){
  $SID=loadVariable('new_SID');//charge la SID
  $url='http://'.$IPSyno.':'.$PortSyno.'/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&version=1&method=Trigger&eventId='.$event.'&_sid='.$SID;
  $reponse=httpQuery($url,'GET');
  $json=sdk_json_decode($reponse);
  if($json['sucess']!=true){
    //on réessaye en cas de 'success' false
    $reponse=httpQuery($url,'GET');
    $json=sdk_json_decode($reponse);
  }
}

//Commande de la caméra
function sdk_commande2Cam(){
  $SID=loadVariable('new_SID');//charge la SID
  $url='http://'.$IPSyno.':'.$PortSyno.'/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&version=1&method=Trigger&eventId='.$event2.'&_sid='.$SID;
  $reponse=httpQuery($url,'GET');
  $json=sdk_json_decode($reponse);
  if($json['sucess']!=true){
    //on réessaye en cas de 'success' false
    $reponse=httpQuery($url,'GET');
    $json=sdk_json_decode($reponse);
  }
}

//execution
sdk_session();
sdk_test();
sdk_commande1Cam();
sdk_commande2Cam();
sdk_logout();

?>


après un test d’exécution j'ai ce message d'erreur :

## ERROR: Querying [http://:/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=&passwd=&session=SurveillanceStation&format=sid] Error 6: Couldn't resolve host '' ## ERROR: Querying [http://:/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&session=SurveillanceStation&_sid=] Error 6: Couldn't resolve host '' ## ERROR: Querying [http://:/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&session=SurveillanceStation&_sid=] Error 6: Couldn't resolve host '' ## ERROR: Querying [http://:/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=&passwd=&session=SurveillanceStation&format=sid] Error 6: Couldn't resolve host '' ## ERROR: Querying [http://:/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&version=1&method=Trigger&eventId=&_sid=] Error 6: Couldn't resolve host '' ## ERROR: Querying [http://:/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&version=1&method=Trigger&eventId=&_sid=] Error 6: Couldn't resolve host '' ## ERROR: Querying [http://:/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&version=1&method=Trigger&eventId=&_sid=] Error 6: Couldn't resolve host '' ## ERROR: Querying [http://:/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&version=1&method=Trigger&eventId=&_sid=] Error 6: Couldn't resolve host '' ## ERROR: Querying [http://:/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&session=SurveillanceStation&_sid=] Error 6: Couldn't resolve host '' ## ERROR: Querying [http://:/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&session=SurveillanceStation&_sid=] Error 6: Couldn't resolve host ''


Je suppose que ma fonction httpquery() ne fonctionne pas... si quelqu'un a une idée ça m'interresse :D
Auteur:  remy3885 [ 11 Mai 2015 12:29 ]
Sujet du message:  Re: Enregistrement camera sur surveillance station

Personne ne peut me donner un coup de main?
Auteur:  kalinar [ 09 Fév 2016 19:45 ]
Sujet du message:  Re: Enregistrement camera sur surveillance station

Je pose toujours la question mais depuis le temps tu as reçu une réponse? si oui et que ton script marche tu peux montrer comment il fonctionne stp?
Auteur:  Novastreet [ 09 Août 2016 10:35 ]
Sujet du message:  Re: Enregistrement camera sur surveillance station

Bonjour,

Quelqu'un aurait il trouvé finalement un moyen de mettre en place ce script ?
Page 1 sur 1 Le fuseau horaire est UTC+1 heure