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
#2
Merci, je regarde à cela ce soir ou ce WE
Répondre
#3
Merci pour le partage @grichka ;)

Envoyé de mon HUAWEI NXT-L29 en utilisant Tapatalk
Admin du Forum

Z-wave:  4 x RGBW - 8 x FGS211 - 2 x FGS221 - 1 x FGFS-101 - 17 x FGK101 - 4 x WallPlug - 1 x  FGSS-001 - 1 X FGBS.321 - 2 X FGD211 - 4 X FGSS-002 - 2 X FGMS-001
3 x SM103 - 1x HSM02 - 4 x AN157 - 4 x ST814 - 1 x ZG8101 , 2 x ZM1602 . 2 x Power Node 6
2 x Minimote - 1 X Smart Energy DSC06106 - 1 x Keyfob - 2 x FGPB.001 - 1x Octan remote

Divers : 1 x EcoDevices - 1 x IPX800 - 1 x Sirène Elkron - 3 x Foscam - 1 x Zmodo - 1 x Tablette Surface- 1 x Ipad2 - 1 x Qnap 453a- 1 x SMS Gateway - Sonos: 1xPlaybar , 1xSub, 2xPlay3 , 4xPlay1 , 2 x Thermostat NetAtmo + Station, Nuc, Karotz, Philips Hue , Roomba 620. Doorbird, Jeedom en esclave

Répondre
#4
@grichka , super ta mise en oeuvre. Merci de nous en avoir fait profité.
http://www.homesweetdom.lu
Boutique en ligne avec identification des produits testés compatibles Lifedomus
www.homesweetshop.eu
Répondre
#5
Merci pour le partage !
J'ai utilisé une solution moins "délicate" mais qui ne dépend pas de LD ; lors du désarmement l'alarme, une de ses sorties commute une entrée binaire KNX et une sortie TOR KNX coupe l’alimentation du switch PoE des caméra intérieures !
Répondre
#6
C'est GGEENNIIAALL ton tuto !  Amen-1fb6 Amen-1fb6 Amen-1fb6 Amen-1fb6
Je vais m'empresser de chercher les commandes pour démarrer et arrêter les enregistrements.
Et pourquoi pas pour essayer de récupérer le statut de la caméra.

Le premier test que j'ai fait confirme que les wait ne sont pas nécessaires (en tout cas chez moi)
Répondre
#7
Et donc voici les commandes pour

Démarrer l'enregistrement
var command = "/entry.cgi?cameraId=4&api=SYNO.SurveillanceStation.ExternalRecording&version=2&method=Record&action=start&_sid=" + Idsession ;

Arrêter l'enregistrement
var command = "/entry.cgi?cameraId=4&api=SYNO.SurveillanceStation.ExternalRecording&version=2&method=Record&action=stop&_sid=" + Idsession ;

PS1 : les %22 peuvent être supprimés, ça fonctionne très bien sans et ça rend le code plus lisible
PS2 : ce n'est pas une errer, pour activer / désactiver une caméra on dit &cameraIds; mais pour démarrer / arrêter l'enregistrement, c'est &cameraId
Likes Received: 179 in 132 posts
Likes Given: 150
Répondre
#8
(05-05-2017, 11:06 PM)jojo a écrit : Et donc voici les commandes pour

Démarrer l'enregistrement
var command = "/entry.cgi?cameraId=4&api=SYNO.SurveillanceStation.ExternalRecording&version=2&method=Record&action=start&_sid=" + Idsession ;

Arrêter l'enregistrement
var command = "/entry.cgi?cameraId=4&api=SYNO.SurveillanceStation.ExternalRecording&version=2&method=Record&action=stop&_sid=" + Idsession ;

PS1 : les %22 peuvent être supprimés, ça fonctionne très bien sans et ça rend le code plus lisible
PS2 : ce n'est pas une errer, pour activer / désactiver une caméra on dit &cameraIds; mais pour démarrer / arrêter l'enregistrement, c'est &cameraId

Merci pour ton retour et je suis heureux que cela te convienne.

Les "%22" sont apparus lors d'un copier coller de l'adresse d'un navigateur vers la commande LD. Je les ai laissé sans chercher à comprendre et affiner.
Les possibilités de l'API sont importantes, et une fois qu'on a compris le principe des SID, on peut faire plein de choses, comme ta proposition d'activer/désactiver l'enregistrement  (que je vais rapidement inclure). Je vais par ailleurs essayer de faire passer l'Idcaméra en variable pour optimiser les automates.
Pour les wait, j'ai anticipé un éventuel problème de temps réponse du Synology qui n'existe peut être même pas ...

Lifedomus Vision
Interface graphique : Windows Seven, Smartphone/Tablette Androïd
Domotique : KNX, ZWave [wallplug Fibaro, Keyfob], Multiroom Sonos, Ecodevice, Alarme Paradox
Répondre
#9
Bravo Grichka,
Merci pour ce partage, très bien décrit, facile à comprendre.
C'est le type de post qui nous fait tous avancer et qui donne des idées !
A+
Phil
Répondre
#10
@grichka,
@moicphil dans son tuto pushover avait montré comment on pouvait inclure des variables (celles des automates) dans les commandes.
Mais c'était pour des commandes ASCII, pas du JS.
Et donc sa méthode ne fonctionne pas. Comme tu t'y connais plus que moi, j'espère que tu vas trouver.
Mais si tu trouves la solution, c'est génial.
Je verrais 2 variables : SS_Camera_id, SS_Camera_action (start/stop/enable/disable).
et Il y aurait un automate pour gérer les "actions" des caméras en fonction des valeurs de ces variables.
et dans l'équipement, on limiterait les commandes : Update sid / Logout / Enable or Disable / Start or stop recording

Pour récupérer le statut d'une caméra, je suppose qu'il faut modifier le petit code JS du connecteur. Mais il "pousse" les données dans la variable de l'équipement. Sais-tu comment on pourrait récupérer cette valeur dans une variable d'automate ? (on pourrait déjà faire le test avec le Idsession)

et là, on aurait un Roll-Royce ;-)
Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Demande d'aide Paramétrage connecteur HTTP / json / commandes linux Popovitch 15 15,146 05-11-2020, 11:51 AM
Dernier message: Popovitch
  Connecteur API Deezer fransiouz 19 25,323 04-30-2020, 12:47 PM
Dernier message: Jlr
  parser le retour d'une commande initiale connecteur HTTP sud-domotique-expert 2 4,090 01-20-2020, 11:42 PM
Dernier message: sud-domotique-expert
  connecteur bluetooth Domo-TIC 0 2,594 10-29-2018, 03:58 PM
Dernier message: Domo-TIC
  Configuration du connecteur Hsd 0 3,385 01-15-2017, 09:54 PM
Dernier message: Hsd
  connecteur ping 889laurent 3 6,301 12-09-2016, 05:46 PM
Dernier message: AucuneID
  Erreur sur connecteur HTTP JT28_vbulletin4_import503 1 4,715 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 8,946 01-08-2016, 11:27 PM
Dernier message: zozotte
  Synology Surveillance Station -> Lifedomus Gnol86 20 23,336 01-06-2016, 02:54 PM
Dernier message: Ives
  Connecteur TV connecté vneil 4 6,882 12-24-2015, 04:23 PM
Dernier message: vneil



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