Forum Lifedomus
Connecteur Synology Surveillance Station - Version imprimable

+- Forum Lifedomus (http://forum-lifedomus.com)
+-- Forum : Les outils de configuration et design (http://forum-lifedomus.com/forumdisplay.php?fid=7)
+--- Forum : Config Studio (CS) (http://forum-lifedomus.com/forumdisplay.php?fid=8)
+---- Forum : Connecteurs (http://forum-lifedomus.com/forumdisplay.php?fid=10)
+----- Forum : Universel (http://forum-lifedomus.com/forumdisplay.php?fid=29)
+----- Sujet : Connecteur Synology Surveillance Station (/showthread.php?tid=3629)

Pages : 1 2 3


RE: Connecteur Synology Surveillance Station - grichka - 05-06-2017

(05-06-2017, 01:45 PM)jojo a écrit : @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 ;-)

Je ne sais pas s'il est possible d'inclure des variables "Lifedomus" dans une commande JS ou s'il est possible d'écrire dans une variable d'équipement via un automate. Mais il serait, à mon avis, possible de tout passer en commande  ASCII et de passer les variables souhaitées en paramètres dans les automates comme dans le tuto de @moicphil, y compris le Idsession puisque les variables des équipements sont lisibles/exploitables dans un automate.


RE: Connecteur Synology Surveillance Station - jojo - 05-06-2017

en effet, si tu trouves le moyen d'incoporer le Idsession dans ASCII, on as gagné


RE: Connecteur Synology Surveillance Station - jojo - 05-06-2017

bon, j'ai continué mes investigations.
Et la question qui m'a taraudé l'esprit toute la journée : "Pourquoi le Enable/Disable qui fonctionnait hier soir ne fonctionnait plus ce matin, alors que le start/stop recording fonctionnait toujours ?".
De plus l'appel via l'API depuis ma HC2 fonctionnait toujours. => à n'y rien comprendre.
A la lecture de plusieurs infos, j'ai vu que la doc de l'api de Synology était bourrée de fautes, et même qu'ils n'étaient pas cohérents dans leurs exemples.
J'ai donc fait du reverse engineering du VD de @Lazer de a HC2, pour torouver les bonnes commandes et versions, ...

Donc voici ce qui fonctionne pour ma version 7.1.-4146 de Surveillance Station :


Citation :Update SID :
command = "/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=Fibaro&passwd=Camera123&session=SurveillanceStation&format=sid" ;

===========
désactiver caméra 3 :
command = "/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Disable&version=3&cameraIds=3&_sid=" + Idsession ;

===========
activer caméra 3 :
command = "/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Enable&version=3&cameraIds=3&_sid=" + Idsession ;

===========
Record Start caméra 3 :
command = "/entry.cgi?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=1&cameraId=3&action=start&_sid=" + Idsession ;

===========
Record Stop caméra 3 :
command = "/entry.cgi?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=1&cameraId=3&action=stop&_sid=" + Idsession ;

===========
Liste des caméras :
command = "/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=List&version=4&_sid=" + Idsession ;

===========
Logout :
command = "/auth.cgi?api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation&_sid=" + Idsession ;

La commande "Liste des caméras" permet d'afficher dans le débuggeur du connecteur les ID des caméras installées.


RE: Connecteur Synology Surveillance Station - grichka - 05-06-2017

Je vois que tu es à fond dessus Eek-1e6fb  ...
Effectivement, j'avais remarqué des anomalies dans les exemples de l'API. Je n'ai pas eu de problème particulier sur les commandes que j'ai utilisées.

Je te confirme qu'il est possible de passer tout ce que tu veux en paramètres.

Le principe :
Au niveau de l'équipement
Passer les commandes en ASCII, supprimer tous les éléments JS (guillemets ...)
Mettre entre des accolades {} les éléments que tu veux passer en paramètre et notamment le numéro de SID à leur emplacement normal dans la commande [exemple : {numerodecam} et {SID}]

Au niveau de l'automate :
Une fois passée la commande pour récupérer le Idsession [Update SID] tu le stockes dans une variable de ton choix de type string [Le Idsession est récupérable dans l'état de l'équipement]
Tu lances tes commandes avec les paramètres [numéro de caméra ...] de ton choix et notamment le SID où tu indiques ta variable.

Cela fonctionne très bien chez moi ...

NB : J'ai des soucis d'actualisation de l'équipement quand j'effectue des modifications. Mes modifications ne sont pas toujours répercutées et je ne les retrouve pas dans l'automate. Je suis obligé de me déconnecter/reconnecter de Lifedomus CS. Je ne sais pas si c'est un bug ou un souci de mon installation.


RE: Connecteur Synology Surveillance Station - jojo - 05-06-2017

Merci pour tes recommandations.
Je vais tester tout cela demain.
Tu vois que ton tuto, tu ne l'as pas fait pour rien ...

Pour tes soucis d'actualisation, j'expérimente le même soucis, et j'applique la même solution, c'est donc un bug ..., mais difficilement reproductible à 100%


RE: Connecteur Synology Surveillance Station - pepite - 05-09-2017

Alors là messieurs, je dis bravo.

Faut un peu de code js pas accessible à tout le monde, mais c'est super..

Faut arreter vraiment ;-)

@jojo je t'ai retrouvé !!

Merci à vous


RE: Connecteur Synology Surveillance Station - jojo - 05-09-2017

Le JavaScript est accessible, si j'y suis arrivé.
et ce n'est pas le bout du monde. Le voici d'ailleurs :

Citation :var obj = JSON.parse(trame)
if (typeof obj.data != "undefined") {
    // Update SID
    if (typeof obj.data.sid != "undefined") {
        Idsession = obj.data.sid
        ldprint ("ID : " + Idsession)
    // list of cameras
    } else if (typeof obj.data.total != "undefined") {
        ldprint ("data.total (cameras) : " + obj.data.total)
        for (i=0; i<obj.data.total; i++) {
            ldprint ("data.cameras[" + i + "].id : " + obj.data.cameras[i].id)
            ldprint ("data.cameras[" + i + "].name : " + obj.data.cameras[i].name)
            ldprint ("data.cameras[" + i + "].recStatus : " + obj.data.cameras[i].recStatus)
            ldprint ("data.cameras[" + i + "].enabled : " + obj.data.cameras[i].enabled)
        }
        // camera 0
        Cameras0_id = obj.data.cameras[0].id
        Cameras0_name = obj.data.cameras[0].name
        Cameras0_recStatus = obj.data.cameras[0].recStatus
        Cameras0_enabled = obj.data.cameras[0].enabled
        // camera 1
        Cameras1_id = obj.data.cameras[1].id
        Cameras1_name = obj.data.cameras[1].name
        Cameras1_recStatus = obj.data.cameras[1].recStatus
        Cameras1_enabled = obj.data.cameras[1].enabled
        // camera 2
        Cameras2_id = obj.data.cameras[2].id
        Cameras2_name = obj.data.cameras[2].name
        Cameras2_recStatus = obj.data.cameras[2].recStatus
        Cameras2_enabled = obj.data.cameras[3].enabled
        // camera 3
        Cameras3_id = obj.data.cameras[3].id
        Cameras3_name = obj.data.cameras[3].name
        Cameras3_recStatus = obj.data.cameras[3].recStatus
        Cameras3_enabled = obj.data.cameras[3].enabled
    }
} else {
    ldprint ("else obj.data : " + obj.success)
}

Alors voici donc ce que j'ai fait, mais je ne l'aime pas ce que j'ai du faire : j'aurais préféré remplir les variables de l'équipement par la boucle for.

Dans les variables d'équipement, elles peuvent être de 3 type : "Chaîne", "double" ou "liste".
Seules les variables de type "chaîne" sont récupérables via l'état de l'équipement.

A quoi servent (et comment sont-elles exploitables) les variables de type "double" et "liste" ?

Merci


RE: Connecteur Synology Surveillance Station - pepite - 05-09-2017

Tu ne peux pas mettre dans la boucle la recup de Idsession ?


RE: Connecteur Synology Surveillance Station - jojo - 05-09-2017

non, l'Idsession n'est récupéré que lors d'un certain API. Les info sur les caméras, avec un autre API.


L'Idsession, je n'en ai besoin qu'une seule fois au début.

Regarde le remplissage de mes variables Cameras0_id, ... c'est leur nom que je voudrais pouvoir changer dynamiquement ...


RE: Connecteur Synology Surveillance Station - grichka - 05-09-2017

A tester, mais il est possible que cela fonctionne avec la fonction eval ...


Du genre :

Code :
Eval("Cameras"+ i + "_id = obj.data.cameras["+ i + "].id ;") ;