Page 1 sur 1
Script de commande surveillance station
Posté : 30 avr. 2015, 14:16
par remy3885
Bonjour,
je débute à peine en php et je souhaite créer un script pour commander mes caméras via synology surveillance station.
Tout ça grâce au commande API de se programme. En gros je voudrais me loguer au programme grâce à une requête http, conserver le numéro d'authentification dans une variable puis lancer l'enregistrement et enfin me dé loguer du programme.
Voici le code que j'ai essayé d’écrire si quelqu'un peut m'aider

:
<?php
// Variable utilisateur
$Synology = 'http//:IP_Synology:Port_Syno';
$login = 'xxxxxx';
$password = 'yyyyyyy';
// Création session surveillance station
fopen($synology.'/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2
&account='.$login.'&passwd='.$password.'&session=SurveillanceStation&format=sid','r');
//ceci génére un n° d'authentification appelé SID (je crois qu'il faut convertir le JSON en XML)
//je voudrais enregistrer ce numéro dans la variable $SID
// Lancement enregistrement caméra
fopen($synology.'/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&version=1&method=Trigger&eventId=1&_sid='.$SID;
// Logout session surveillance station
fopen($synology.'/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&session=SurveillanceStation&_sid='.$SID;
?>
Voilà je ne sais pas si tout est claire. Si vous voulais des précisions n’hésitez pas.
Re: Script de commande surveillance station
Posté : 30 avr. 2015, 15:57
par tof73
Re: Script de commande surveillance station
Posté : 02 mai 2015, 15:55
par remy3885
Voici mon script modifié, est ce que c'est mieux comme ça?
<?php
// Variable utilisateur
$Synology = 'http//:IP_Synology:Port_Syno';
$login = 'xxxxxx';
$password = 'yyyyyyy';
// Création session surveillance station
$SID=json_decode($synology.'/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2
&account='.$login.'&passwd='.$password.'&session=SurveillanceStation&format=sid');
//ceci génére un n° d'authentification appelé SID (je crois qu'il faut convertir le JSON en XML)
//j'affecte le code à la variable $SID
// Lancement enregistrement caméra
file_get_contents($synology.'/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&version=1&method=Trigger&eventId=1&_sid='.$SID);
// Logout session surveillance station
file_get_contents($synology.'/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&session=SurveillanceStation&_sid='.$SID);
?>
Re: Script de commande surveillance station
Posté : 04 mai 2015, 15:57
par remy3885
alors j'ai repris tout mon script pour qu'il soit lisible par ma box eedomus :
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();
?>
Par contre quand j’exécute le script j'ai un 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 je doit avoir un problème avec la fonction httpQuery() mais je suis pas sure, si quelqu'un peu me donner un coup de main je suis preneur...
Re: Script de commande surveillance station
Posté : 04 mai 2015, 16:25
par tof73
http://:/webapi/auth.cgi ne me parait pas une url valide.
Re: Script de commande surveillance station
Posté : 04 mai 2015, 16:33
par Vince32
Bonjour,
dans ton message d'erreur, on voit que l'url est mal formé :
## ERROR: Querying [http://:/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=&passwd=&session=SurveillanceStation&format=sid]
"http://:/w " devrait être "
http://w"
Re: Script de commande surveillance station
Posté : 04 mai 2015, 17:44
par remy3885
en effet j'avais pas fait attention à ça, dans mon script j'ai des variables normalement entre http:// et /webapi on dirait qu'elles ne sont pas prise en compte???
il devrait ouvrir un truc du genre http://192.168.1.xx:xxxx/webapi/auth...........
Re: Script de commande surveillance station
Posté : 04 mai 2015, 17:55
par tof73
global $IPSyno, $PortSyno;
au début des fonctions, avec les autres variables nécessaires.
Re: Script de commande surveillance station
Posté : 05 mai 2015, 02:28
par remy3885
excuse moi tof pourrais tu être un peu plus explicite je débute en PHP

. Il faut que je déclare mes variable sous cette forme $GLOBALS['IPSyno'] = getValue(getArg('IPSyno')) en début de script au lieu de $IPSyno=getValue(getArg('IPSyno'))

Re: Script de commande surveillance station
Posté : 10 août 2015, 17:34
par Vince32
Salut,
Est-ce que tu a résolu ton problème?
Normalement comment est ce que tu te connecte sur ta box? via un formulaire?
Je pense que la fonction fopen n'est utilisable que pour ouvrir des fichiers pas pour exécuter leur script et en plus ces fichier doivent être sur le serveur où est exécuté php.
Je pense que CURL serait plus adapté.
Re: Script de commande surveillance station
Posté : 03 mars 2016, 15:26
par Jean Coudert
Bonjour à tous,
Est ce que quelq'un peut me dire si ce script marche ? REst ce que quelqu'un l'a essayé avec le Box Eedomus?
Merci pour les réponses