Les avertissements suivants se sont produits :
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 864 - File: showthread.php PHP 7.3.33 (Linux)
File Line Function
/showthread.php 864 errorHandler->error




Connecteur Synology Surveillance Station
#1
Bonjour,

Je souhaitais désactiver les caméras intérieures en ma présence et, inversement, les activer en mon absence [mise en route de l'alarme].
Toutes mes caméras sont reliées à mon NAS Synology et j'utilise le logiciel/licence Synology Surveillance Station [SSS].
Il existe une API, bien documentée [pdf de 370 pages] qui offre des perspectives beaucoup plus vastes en domotique que ma simple problématique.
A la demande de Jojo, je vous décris la procédure qui m'a permit d'aboutir à mes fins : un automate pour activer les caméras, un autre pour les désactiver.
Je n'ai quasi aucune connaissance en JS et je maitrise mal les concepts de connecteur universels de la lifedomus donc n'hésitez pas à me corriger ...

Principe du connecteur :
Le login se fait via une requête http [identifiant et mot de passe], qui renvoie un fichier JSON dans lequel apparait un numéro de session (SID). Ce numéro doit apparaitre dans toutes les autres requêtes/action que l'on souhaite réaliser. Une fois nos opérations effectuées, il faut faire un logout

Etape 1: Créer un nouveau connecteur : Universel>TCP/IP Universel>Universel HTTP
Etape 2: Paramétrer le nouveau connecteur

2.1 Saisir : IP ou nom de domaine : 192.168.X.X:5000/webapi        (Indiquer l'adresse IP de son NAS)
2.2 Créer et sauvegarder un fichier javascript (fichier texte sauvegardé en *.js avec le Blocnote par exemple) : 


  var obj = JSON.parse(trame);
       if(typeof obj.data != "undefined") {
       ldprint(typeof obj.data.sid);
        if(typeof obj.data.sid != "undefined") {
                 ldprint("Sid présent");
                 Idsession = obj.data.sid ;
    }}
    ldprint("ID :"+Idsession) ;


Note : le fichier Javascript vise à parser le JSON et de récupérer le SID. Vous verrez qu'il y beaucoup de paramètres qui sont retournés et qu'il est probable que certains utilisateurs soient intéressés pour les exploiter. Il faudra alors modifier le fichier JS en conséquence. Les conditions If avec le Typeof  vise à éviter d'écraser la variable Idsession si elle n'est pas présente dans le JSON. Les ldprint ne sont pas indispensables, elles ont participé au débogage de l'ensemble.

2.3 Charger le fichier JS sur le connecteur (icône en bas, flêche entrante vers le carré avec JS)
2.4 Valider/sauvegarder le connecteur

Etape 3: Créer un nouvel équipement : Equipement>Universel>Equipement Générique
Etape 4: Paramétrer ce nouvel équipement

4.1 Sélectionner le connecteur préalablement créé [connecteur universel]
4.2 Créer une variable
  • Onglet en haut à droit variable
  • Icone + en bas
  • Label : Idsession
  • Type : String
4.3 Créer les commandes
4.3.1 Commande "update SID"
  • Onglet commande
  • Icone + en bas
  • Modifier la commande (icône crayon sur la ligne commande)
  • Label : Update SID
  • Type : JS
  • Commande :
var command = "/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=XXXX&passwd=YYYY&session=SurveillanceStation&format=sid" ;

Note : XXXX correspond à votre Login, YYYY correspond à votre mot de passe en clair. Au lancement de la commande, le NAS renverra un JSON avec un SID qui sera récupéré dans la variable Idsession.

4.3.2 Commande : désactiver une caméra
  • Onglet commande
  • Icone + en bas
  • Modifier la commande (icône crayon sur la ligne commande)
  • Label : "Désactiver la caméra"
  • Type : JS
  • Commande :
var command = "/entry.cgi?cameraIds=%224%22&api=%22SYNO.SurveillanceStation.Camera%22&version=%228%22&method=%22Disable%22&_sid=" + Idsession ;

Note : le chiffre en bleu (4) correspond à l'ID de la caméra, il doit être adapté à votre configuration, et peut probablement passer en variable en concaténant. On peut par ailleurs sélectionner plusieurs caméras en même temps.

4.3.3 Commande Activer une caméra
  • Onglet commande
  • Icone + en bas
  • Modifier la commande (icône crayon sur la ligne commande)
  • Label : "Activer la caméra"
  • Type : JS
  • Commande :
var command = "/entry.cgi?cameraIds=%224%22&api=%22SYNO.SurveillanceStation.Camera%22&version=%228%22&method=%22Enable%22&_sid=" + Idsession ;

Note : le chiffre en bleu (4) correspond à l'ID de la caméra, il doit être adapté à votre configuration, et peut probablement passer en variable en concaténant convenablement. On peut par ailleurs sélectionner plusieurs caméras en même temps.

4.3.4 Autres commandes
L'API regorge de commandes. Il est possible de récupérer beaucoup d'info et de modifier beaucoup de paramètres. Il faut se référer à l'API et adapter les variables et le parsing pour récupérer les infos souhaitées. Vous pouvez donc créer autant de commande que vous souhaitez.


4.3.5 Commande logout
  • Onglet commande
  • Icone + en bas
  • Modifier la commande (icône crayon sur la ligne commande)
  • Label : "Logout"
  • Type : JS
  • Commande :
var command="/auth.cgi?api=SYNO.API.Auth&method=Logout&version=1&session=SurveillanceStation" ;

Note : Une fois la commande logout passée. Aucune commande ne pourra être passée. Il faudra relancer une commande authentification (commande Update SID) pour obtenir un SID

Etape 5 : Créer un automate
  • Créer un nouvel automate
  • Créér une action, sélectionner l'équipement, sélectionner la commande "Update SID"
  • Insérer un wait de 2 secondes (valeur arbitraire, je ne suis pas sûr que cela soit utile ...)
  • Créér une action, sélectionner l'équipement, sélectionner la commande que vous souhaiter réaliser par l'automate (activer, désactiver ...)
  • Insérer un wait de 2 secondes (je ne suis pas sûr que cela soit utile)
  • Créér une action, sélectionner l'équipement, sélectionner la commande "Logout"
Note : Vous pouvez insérer autant de commande que vous souhaitez dans l'automate, vous pouvez créer autant d'automate que vous souhaitez. L'automate récupère un SID, exécute les actions et se logout.

Source :
http://blog.rexave.net/utilisation-lapi-...e-station/
http://blog.rexave.net/wp-content/upload...I_v1.3.pdf

L'ensemble fonctionne sur la dernière mise à jour de SSS
[url=http://blog.rexave.net/][/url] Voilà, je reste à votre disposition pour répondre à vos questions dans la limite de mes compétences ... Lol-161b

Lifedomus Vision
Interface graphique : Windows Seven, Smartphone/Tablette Androïd
Domotique : KNX, ZWave [wallplug Fibaro, Keyfob], Multiroom Sonos, Ecodevice, Alarme Paradox
Likes Received: 20 in 10 posts
Likes Given: 1
Répondre


Messages dans ce sujet
Connecteur Synology Surveillance Station - par grichka - 05-05-2017, 12:16 PM

Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Demande d'aide Paramétrage connecteur HTTP / json / commandes linux Popovitch 15 15,586 05-11-2020, 11:51 AM
Dernier message: Popovitch
  Connecteur API Deezer fransiouz 19 25,774 04-30-2020, 12:47 PM
Dernier message: Jlr
  parser le retour d'une commande initiale connecteur HTTP sud-domotique-expert 2 4,181 01-20-2020, 11:42 PM
Dernier message: sud-domotique-expert
  connecteur bluetooth Domo-TIC 0 2,633 10-29-2018, 03:58 PM
Dernier message: Domo-TIC
  Configuration du connecteur Hsd 0 3,424 01-15-2017, 09:54 PM
Dernier message: Hsd
  connecteur ping 889laurent 3 6,399 12-09-2016, 05:46 PM
Dernier message: AucuneID
  Erreur sur connecteur HTTP JT28_vbulletin4_import503 1 4,773 09-09-2016, 03:48 PM
Dernier message: JT28_vbulletin4_import503
  Connecteur IP Denon et message d'erreur "la littérale de la chaine n'a pas de limite" zozotte 6 9,064 01-08-2016, 11:27 PM
Dernier message: zozotte
  Synology Surveillance Station -> Lifedomus Gnol86 20 23,821 01-06-2016, 02:54 PM
Dernier message: Ives
  Connecteur TV connecté vneil 4 6,981 12-24-2015, 04:23 PM
Dernier message: vneil



Utilisateur(s) parcourant ce sujet : 1 visiteur(s)