Sylar Posté(e) le 15 février 2014 Partager Posté(e) le 15 février 2014 (modifié) J'ai fait un script qui permet d'activer/désactiver automatique Surveillance Station quand je quitte ou rentre de chez moi. Je l'ai posté sur le forum Synology, mais je me suis dis que ça pourrait intéresser la communauté française de NAS-forum (que je consulte régulièrement pour bidouiller mon NAS ), aussi je me permets de vous en avertir. Voici un lien vers le sujet, que je compléterai plus tard avec la partie "téléphone". http://forum.synology.com/enu/viewtopic.php?f=82&t=81181&p=304567#p304567 Je suis sûr que ce que j'ai fait est largement améliorable, donc n'hésitez pas ! EDIT : en voici une traduction pour les non anglophones. ------------------------------------------------------------------------------------------------------------------------ J’ai écrit un script qui fonction avec Tasker (sur Android) pour démarrer et stopper automatiquement Surveillance Station (SS) quand je pars ou reviens de chez moi. J’ai cherché longtemps comment faire, et après quelques tests, la solution ci-dessous marche plutôt bien. Evidemment, je suis certain que tout ça peut être largement amélioré, donc n’hésitez pas ! Pré-recquis : - un ordinateur pour générer les clés SSH. C’est facile à faire sous Linux et OSX, et probablement sous Windows aussi - sur le NAS : SSH doit être actif et fonctionnel, de même pour SS. L’accès à l’utilisateur root doit être possible depuis un autre utilisateur (non administrateur) avec la commande su. - sur le téléphone : Tasker doit être installé, ainsi qu’un plugin SSH (j’ai mis des liens en bas du post). Ces 2 applications sont payantes, pour un total de 5 euros environ seulement. Il y a peut être moyen de passer par d’autres applications gratuites, donc si c’est le cas, dites le moi ! Evidemment, un téléphone Android est nécessaire, mais il y a probablement moyen de coder une application pour iOS qui ferait ce que je propose (mais je ne sais pas faire !) Aller, en route !1/ Adapter la configuration du serveur SSH Idéalement, SS doit être démarré et stoppé par l’utilisateur root. Ce n’est pas un problème en soit, puisque la commande sudo est justement faite pour ça. Seulement, le script de démarrage de SS est passablement complexe, lance de nombreux binaires, etc., tant et si bien que la solution sudo n’est pas si évidente à utiliser. A la place, l’idée est de gérer SS justement par l’utilisateur root. Mais ceci nécessite que root est accès au NAS par SSH, ce qui n’est PAS DU TOUT une bonne idée. La solution consiste à utiliser les « commandes forcées » (forced commands), c’est à dire que l’accès root ne sera possible que pour lancer une commande spécifique.1.1/ Modifier la configuration du serveur SSH Pour permettre les commandes forcées, ajouter la ligne PermitRootLogin forced-commands-only au fichier /etc/ssh/sshd_config, et rebooter le NAS (j’ai stoppé et redémarré le serveur SSH, les modifications dans le fichier ne semblent prises en compte qu’au reboot … bizarre !) Maintenant, l’utilisateur root peut accéder au NAAS, mais seulement pour lancer une commande spécifique précisée dans la clé SSH que nous allons générer maintenant.1.2/ Génération des clés SSH Sur l’ordinateur (ou sur le NAS, mais celui-ci étant moins puissant, la génération des clés sera plus longue), ouvrir un terminal, et lancer % ssh-keygen -t rsa -b 8192 -C « yourname@yourphone » Je génère ici une clé de 8192 octets et le paramètre -C permet d’ajoute un commentaire (on peut y mettre n’importe quoi). A noter que ceci est assez direct sous OSX ou Linux, il y’a probablement moyen de faire ça sous Windows, mais n’ayant pas de PC sous Windows je ne pourrai être plus précis ici. L’utilitaire demande éventuellement une « passphrase » (un mot de passe protégeant la clé). Autant en mettre une, elle pourra être saisie plus tard dans Tasker une fois pour toute. Une fois terminé (selon la longueur de la clé, ça peut être long, même sur une machine récente !), on dispose de 2 fichiers : - id_rsa : c’est la clé privée, qui sera à transférer sur le téléphone plus tard (pour l’instant, laissons la où elle est !) - id_rsa.pub : c’est la clé publique, que nous allons transférer sur le NAS. Ces 2 fichiers sont normalement situés dans le répertoire « caché » .ssh/ de votre répertoire utilisateur.1.3/ Connexion au NAS Se connecter maintenant au NAS par SSH depuis un utilisateur standard, puis passer root à l’aide de la commande su. Puis : % cd /root % mkdir .ssh (si le dossier .ssh/ existe déjà, sauter cette dernière commande) Puis on va éditer le fichier « authorized_keys ». Si ce fichier n’existe pas, il faut le créer. Il faut ensuite copier la clé publique à l’intérieur de ce fichier (le contenu du fichier id_rsa.pub créé précédemment). authorized_keys doit alors ressembler à ceci (c'est une clé que j'ai générer pour ce tuto. Evidemment, votre clé étant différente, le fichier le sera aussi) : ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCds3+RK4zfG7L5JmNkaSVBPufUPQMJUIxYfesFAEuetHoD2Fvy/hojIXyG3VnSbzZfVZo4ptoXYtiij8fwf2kWzk0W/Dxrt/Npxzs5eUjZFgF+b16xF6YB1yW3tklJrRJmqmOjIQKl6b8tC3OEWbOMzrQrmtNPWL991XjUKT2mIPG5Hrt3fN/4WKiX8nwESr6FnxH97HyQWpPnEjfpBq6uoOuTCKBT8xi6v6L6ReNTvwkmf8k9zqABDE5oe4i48skQws88VMP0nT9wsSlV8J80MurOEX1WwxNByIMndj2shJS5P+gu6mHSufOLTTADUASor2uWZFWsgJyz9Bl7jgFT yourname@yourphone Maintenant, une clé autorise l’accès root depuis SSH. Mais si on tente de se connecter directement, ça ne fonctionne pas ! Et heureusement, car la directive forced-commands-only n’autorise pas le login root, mais seulement le lancement d’une commande donnée. Cette commande doit être ajoutée dans le fichier authorized_keys au tout début de la clé. Par exemple, cela donnerait dans le cas de la clé précédent : command="/bin/ls",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCds3+RK4zfG7L5JmNkaSVBPufUPQMJUIxYfesFAEuetHoD2Fvy/hojIXyG3VnSbzZfVZo4ptoXYtiij8fwf2kWzk0W/Dxrt/Npxzs5eUjZFgF+b16xF6YB1yW3tklJrRJmqmOjIQKl6b8tC3OEWbOMzrQrmtNPWL991XjUKT2mIPG5Hrt3fN/4WKiX8nwESr6FnxH97HyQWpPnEjfpBq6uoOuTCKBT8xi6v6L6ReNTvwkmf8k9zqABDE5oe4i48skQws88VMP0nT9wsSlV8J80MurOEX1WwxNByIMndj2shJS5P+gu6mHSufOLTTADUASor2uWZFWsgJyz9Bl7jgFT yourname@yourphone Maintenant, si on tente depuis l’ordinateur : % ssh root@NAS_IP un « ls » est fait sur le NAS par l’utilisateur root. Et ce sera la seule commande qui sera accessible à l’utilisateur root en login direct (sans passer par su). Bien sûr, tout cela n’est possible que si la clé privée id_rsa est utilisée par le client SSH pour se connecter. Si ce n’est pas le cas, cela ne fonctionnera pas, et heureusement ! authorized_keys sera modifié un peu plus tard pour lancer la commande qui lancera ou stoppera SS. 2/ Script pour démarrer et arrêter Surveillance Station Je propose le script suivant. Je ne suis clairement pas un expert des scripts shell, je suis donc certain qu'il peut être amélioré. Dans tous les cas, il fonctionne bien pour moi #!/bin/sh cd /root/sStation FILE1=here1 case "$SSH_ORIGINAL_COMMAND" in "start") # START SS ONLY WHEN LEAVING HOME if [ -e $FILE1 ]; then # If user1 was here rm $FILE1 echo $(date): "ss START (User1 leaving home)" >> ss.log /var/packages/SurveillanceStation/scripts/start-stop-status start > /dev/null 2>&1 # Launch SS echo 4 > /dev/ttyS1 # Turn POWER LED ON echo $(date "+%H:%M:%S"): "OK, Surveillance ON" else # User1 was not here ... so it means that SS is already ON ! echo $(date "+%H:%M:%S"): "Surveillance already ON" fi ;; "stop") # STOP SS ONLY WHEN ENTERING HOME if [ -e $FILE1 ]; then # Oups, user1 is already here ... echo $(date "+%H:%M:%S"): "Surveillance already OFF" else # User1 is coming ... echo bonjour > $FILE1 echo $(date): "ss STOP (User1 @home)" >> ss.log /var/packages/SurveillanceStation/scripts/start-stop-status stop > /dev/null 2>&1 # Stop ss echo 6 > /dev/ttyS1 # Turn POWER LED OFF echo $(date "+%H:%M:%S"): "OK, Surveillance OFF" fi ;; "status") # CHECK IF SS IS RUNNING ps | grep urveillance > /dev/null if [ $? -eq 0 ]; then echo "SS is ON" else echo "SS is OFF" fi ;; *) echo "Sorry. Command forbidden." exit 1 ;; esac Quelques commentaires : - La première ligne "cd /root/sStation" indique où se situe le script sur le NAS. Il peut être mis n'importe où. - j'utilise ici la variable SSH_ORIGINAL_COMMAND qui permettra de donner accès à root à une seule commande (spécifiée dans le fichier authorized_keys) qui peut réaliser différentes tâches. De cette façon, nous n'aurons pas à générer autant de clé spécifique à une action (start, stop, status, etc.), elle sera simplement spécifiée en argument. - je garde une trace des démarrage/arrêt dans un fichier de log ss.log - j'ai choisi d'allumer et éteindre la diode "power" de mon NAS pour indique si la surveillance est active ou non. C'est optionnel, évidemment - le script renvoie différents textes, en fonction de l'action et du contexte. C'est ce texte qui pourra être affiché sur le téléphone. - enfin, à défaut d'avoir trouvé une autre façon de faire, le script démarre et arrête la surveillance : c'est complètement binaire ... J'ai essayé d'autres solution (désactiver seulement les caméras, ou utiliser l'API officielle), sans succès. Il y a certainement moyen de faire mieux ! 3/ Tests, depuis un ordinateur Tout est normalement prêt maintenant. - tout d'abord, copier le script dans le dossier indiqué sur les premières lignes du script ci-dessus. - le rendre exécutable (chmod +x /root/sStation/surveillance.sh, en tant que root, sur le NAS) - ensuite, modifier le fichier authorized_keys situé dans /root/.ssh/ pour y indiquer que la seule commande autorisée est justement notre script : command="/root/sStation/surveillance.sh",no-port-forwarding,no-X11-forwarding,no-pty - vérifier que la clé privée est bien utilisée pour se connecter en tant que root sur le NAS depuis l'ordinateur (généralement, il faut que le fichier id_rsa généré précédemment soit dans /root/.ssh/) - c'est parti ! Depuis l'ordinateur, il est normalement possible de lancer / stopper la surveillance : % ssh root@NAS_IP start ou % ssh root@NAS_IP stop ou % ssh root@NAS_IP status Pas besoin de spécifier la commande (surveillance.sh), celle-ci est déjà précisée dans le fichier authorized_keys. Seul son argument est à envoyer pour faire un start, stop ou status. ------------------------------------------------------------------------------------------ ATTENTION : ne pas continuer plus loin tant que l'étape 3 ci-dessus est OK ! ------------------------------------------------------------------------------------------ 4/ Tasker - Installer Tasker et son plugin SSH (cf. fin du post) - Je ne peux pas décrire le fonctionnement de Tasker ici. Il y a une tonne de tuto sur le web expliquant bien mieux que moi son fonctionnement. Basiquement, Tasker permet d'exécuter des tâches en fonction d'un contexte (un lieu par exemple). Il faut donc écrire 3 tâches, chacune pour lancer la commande start, stop et status. Et cela est rendu possible en exécutant exactement la même commande que depuis un ordinateur (cf. étape 3). Seulement, il nous faut transférer auparavant la clé privée sur le téléphone afin de l'autoriser à lancer la commande surveillance.sh. Copier donc le fichier id_rsa par le moyen que vous voulez (USB, FTP, etc.), et imaginons que ce fichier soit placé dans /storage/emulated/0/Tasker/ sur le téléphone. - Créer une tâche, appelée par exemple "ss Status" - A l'intérieur, utiliser le plugin SSH pour lancer la commande SSH "magique" : - dans le champ adresse, rentrer « root@NAS_IP:22 » à adapter éventuellement en fonction de votre configuration) - Ensuite, choisir "Keypair" et sélectionner la clé copiée à l'instant sur le téléphone - rentrer la passphrase si celle-ci a été donnée lors de la création des clés (étape 1) - puis, entrer la commande à exécuter. Ici, rentrer simplement "status" - enfin, cocher « return output »n puis entrer le nom d'une variable (%ssout par exemple). Cette variable contiendra le texte renvoyé par la commande pour affichage. J'ai mis des captures d'écran sur le thread synology cité plus haut. Enfin, il ne reste plus qu'à créer de la même façon une tâche pour le démarrage, et une autre pour l'arrêt. Tasker permet d'ajouter des raccourcis vers des tâches sur le launcher : en un clic, on peut allumer ou éteindre la surveillance Puis on peut spécifier des conditions qui lanceront/éteindront automatiquement la surveillance : en fonction de la position, de l'heure, etc. Pour ma part, j'utilise maintenant un tah NFC que je scanne en partant et qui lance la tache "start" Voilà ! J'espère qu'à défaut d'être absolument complet, mon post vous donnera des idées ! Il y a moyen d'améliorer tout ça, c'est certain. Donc n'hésitez pas à le faire dans la suite du thread ! Tasker: https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm SSH-plugin: https://play.google.com/store/apps/details?id=com.laptopfreek0.sshplugin.paid Modifié le 23 février 2014 par Sylar 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sylar Posté(e) le 15 février 2014 Auteur Partager Posté(e) le 15 février 2014 (modifié) J'aissaierai d'en faire une faire une version française dans la semaine. Je la publierai ici du coup. Modifié le 15 février 2014 par Sylar 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
SPoK Posté(e) le 16 février 2014 Partager Posté(e) le 16 février 2014 super, ça va répondre (en partie) à mon pb. J'avais essayé avec la commande "synoservice -stop surveillance" mais ça ne semble pas fonctionner, le service est toujours ON, pourtant le cmde "synoservice -list" donne bien le service surveillance "OFF" !! Je ne connaissais pas /var/packages/SurveillanceStation/scripts/start-stop-status stop, j'ai essayé, ça marche. En fait, ce que je cherche, c'est plutôt désactiver une caméra, il y a une commande pour cela, sscamera -s <id camera> enable=0, mais étrangement, cette commande semble bien désactiver la caméra (elle apparaît en tant que tel dans l'interface Web) mais cette dernière continue à être active 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sylar Posté(e) le 17 février 2014 Auteur Partager Posté(e) le 17 février 2014 (modifié) super, ça va répondre (en partie) à mon pb. J'avais essayé avec la commande "synoservice -stop surveillance" mais ça ne semble pas fonctionner, le service est toujours ON, pourtant le cmde "synoservice -list" donne bien le service surveillance "OFF" !! Je ne connaissais pas /var/packages/SurveillanceStation/scripts/start-stop-status stop, j'ai essayé, ça marche. En fait, ce que je cherche, c'est plutôt désactiver une caméra, il y a une commande pour cela, sscamera -s <id camera> enable=0, mais étrangement, cette commande semble bien désactiver la caméra (elle apparaît en tant que tel dans l'interface Web) mais cette dernière continue à être active J'ai beaucoup cherché également pour trouver une solution moins "binaire" que éteindre et allumer la surveillance. Tout ce qui se base sur sscamera n'a visiblement aucun effet ... Comme toi, la désactivation est seulement partielle : la caméra est désactivée sur l'interface web, mais continue à envoyer des données (et continue à détecter des mouvements). Ce que j'ai constaté, c'est que la désactivation depuis sscamera met les caméra dans le statut numéroté 1, tandis que la désactivation depuis l'interface web la met dans le statut numéro 2. Donc pour l'instant, je n'ai pas d'autres solutions, malheureusement. Modifié le 17 février 2014 par Sylar 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
SPoK Posté(e) le 17 février 2014 Partager Posté(e) le 17 février 2014 (modifié) j'ai contacté le support Synology à propos de sscamera, ils m'ont répondu qu'ils n'assuraient pas de support sur ce type de fonction... Je vais explorer une autre possibilité : simuler ce qui est fait lorsqu'on déactive une caméra via l'interface Web en utilisant via un wget. La requête envoyée est : http://<adresse syno>/webman/3rdparty/SurveillanceStation/cgi/camera.cgi?_dc=1392505123088&action=cameraDisable&UserId=1024&idList=2 Autre solution possible : droper les échanges entre la caméra et SS grâce à la cmde iptable Modifié le 17 février 2014 par SPoK 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sylar Posté(e) le 17 février 2014 Auteur Partager Posté(e) le 17 février 2014 J'avais regardé la webAPI de Surveillance Station également. J'ai un peu joué avec, mais je n'ai pas trouvé comment désactiver une caméra de cette façon (a priori la fonctionnalité est non documentée). 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
SPoK Posté(e) le 17 février 2014 Partager Posté(e) le 17 février 2014 en fait, la Web API officielle n'offre que la possibilité de lancer/arrêter un enregistrement, pas bcp plus. Là j'ai "capturé" les requêtes qui sont échangées entre le navigateur et l'interface Web de SS. Je pense qu'en les rejouant ça devrait être bon 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sylar Posté(e) le 17 février 2014 Auteur Partager Posté(e) le 17 février 2014 Il doit y trainer des IDs temporaire liés à l'authentification, non ? (un peu comme dans la web API) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
SPoK Posté(e) le 17 février 2014 Partager Posté(e) le 17 février 2014 oui mais pas transmis par l'URL comme dans la Web API, mais via le cookie d'après ce que je vois sur la console developper tools de mon navigateur 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sylar Posté(e) le 23 février 2014 Auteur Partager Posté(e) le 23 février 2014 Je viens de terminer la "traduction" de mon post. J'ai depuis joué un peu avec le NFC, et c'est génial pour lancer ou arrêter la surveillance en partant/rentrant de chez moi. Amusez vous bien ! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
SPoK Posté(e) le 25 février 2014 Partager Posté(e) le 25 février 2014 tu peux nous en dire plus concernant ce que tu as fait avec le NFC ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Juliano63 Posté(e) le 4 janvier 2015 Partager Posté(e) le 4 janvier 2015 je déterre le sujet car j'ai réussi a faire fonctionner tasker avec la dernière API Syno. Du coup, plus besoin de SSH, il faut juste acheter l'appli tasker (et elle vaut largement son prix). Je joint les profils tasker qui font ON et OFF ON : <TaskerData sr="" dvi="1" tv="4.6u1m"> <Task sr="task5"> <cdate>1420362366168</cdate> <edate>1420400412258</edate> <id>5</id> <nme>Ds On</nme> <pri>10</pri> <Action sr="act0" ve="7"> <code>118</code> <Str sr="arg0" ve="3">http://%IPFREEBOX:%DSPORT</Str> <Str sr="arg1" ve="3">webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=%DSLOGIN&passwd=%DSPASSWORD&session=SurveillanceStation&format=sid</Str> <Str sr="arg2" ve="3"/> <Str sr="arg3" ve="3"/> <Str sr="arg4" ve="3"/> <Int sr="arg5" val="10"/> <Str sr="arg6" ve="3"/> <Str sr="arg7" ve="3"/> <Int sr="arg8" val="0"/> </Action> <Action sr="act1" ve="7"> <code>129</code> <Str sr="arg0" ve="3">var arr = JSON.parse(global("HTTPD")); var sid = arr.data.sid; setGlobal("SID",sid);</Str> <Str sr="arg1" ve="3"/> <Int sr="arg2" val="1"/> <Int sr="arg3" val="45"/> </Action> <Action sr="act2" ve="7"> <code>118</code> <Str sr="arg0" ve="3">%IPFREEBOX:%DSPORT</Str> <Str sr="arg1" ve="3">webapi/SurveillanceStation/camera.cgi?api=SYNO.SurveillanceStation.Camera&method=Enable&version=3&cameraIds=1,2&_sid=%SID</Str> <Str sr="arg2" ve="3"/> <Str sr="arg3" ve="3"/> <Str sr="arg4" ve="3"/> <Int sr="arg5" val="10"/> <Str sr="arg6" ve="3"/> <Str sr="arg7" ve="3"/> <Int sr="arg8" val="0"/> </Action> </Task> </TaskerData> OFF : <TaskerData sr="" dvi="1" tv="4.6u1m"> <Task sr="task16"> <cdate>1420362366168</cdate> <edate>1420398959945</edate> <id>16</id> <nme>Ds Off</nme> <pri>10</pri> <Action sr="act0" ve="7"> <code>118</code> <Str sr="arg0" ve="3">http://%IPFREEBOX:%DSPORT</Str> <Str sr="arg1" ve="3">webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=%DSLOGIN&passwd=%DSPASSWORD&session=SurveillanceStation&format=sid</Str> <Str sr="arg2" ve="3"/> <Str sr="arg3" ve="3"/> <Str sr="arg4" ve="3"/> <Int sr="arg5" val="10"/> <Str sr="arg6" ve="3"/> <Str sr="arg7" ve="3"/> <Int sr="arg8" val="0"/> </Action> <Action sr="act1" ve="7"> <code>129</code> <Str sr="arg0" ve="3">var arr = JSON.parse(global("HTTPD")); var sid = arr.data.sid; setGlobal("SID",sid);</Str> <Str sr="arg1" ve="3"/> <Int sr="arg2" val="1"/> <Int sr="arg3" val="45"/> </Action> <Action sr="act2" ve="7"> <code>118</code> <Str sr="arg0" ve="3">%IPFREEBOX:%DSPORT</Str> <Str sr="arg1" ve="3">webapi/SurveillanceStation/camera.cgi?api=SYNO.SurveillanceStation.Camera&method=Disable&version=3&cameraIds=1,2&_sid=%SID</Str> <Str sr="arg2" ve="3"/> <Str sr="arg3" ve="3"/> <Str sr="arg4" ve="3"/> <Int sr="arg5" val="10"/> <Str sr="arg6" ve="3"/> <Str sr="arg7" ve="3"/> <Int sr="arg8" val="0"/> </Action> </Task> </TaskerData> 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 4 janvier 2015 Partager Posté(e) le 4 janvier 2015 Payer alors qu'on sait faire ça soit même ? Moi mon script surveille 2 GSM et active/désactivé les caméras selon qu'il sont dans le réseau local. Simple, efficace et gratuit 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Juliano63 Posté(e) le 4 janvier 2015 Partager Posté(e) le 4 janvier 2015 Super, partage ton script. Perso je réagissait a celui-ci car j'utilise tasker pour tout un tas d'autre chose. Je trouvais l'utilisation de SSH compliquée, je pense que ma solution est plus simple je partage. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 4 janvier 2015 Partager Posté(e) le 4 janvier 2015 Payer alors qu'on sait faire ça soit même ? Moi mon script surveille 2 GSM et active/désactivé les caméras selon qu'il sont dans le réseau local. Simple, efficace et gratuit La je te rejoins sur ce point, surtout que au pire des cas il est possible de faire directement des raccourcis sur son bureau de téléphone après avoir génère la clef de session... Pourquoi faire compliquer quand on peux faire simple, nullement besoin de ssh... Chacun voit midi à sa porte 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nasmanu Posté(e) le 5 janvier 2015 Partager Posté(e) le 5 janvier 2015 Payer alors qu'on sait faire ça soit même ? Moi mon script surveille 2 GSM et active/désactivé les caméras selon qu'il sont dans le réseau local. Simple, efficace et gratuit je suis très preneur de ton script si tu souhaites le partager. Je souhaitais justement dans les semaines a venir travailler sur ce sujet. Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 11 janvier 2015 Partager Posté(e) le 11 janvier 2015 je suis très preneur de ton script si tu souhaites le partager. Je souhaitais justement dans les semaines a venir travailler sur ce sujet. Merci C'est tout con, via un test ping, enfin je pense que c'est la méthode utilisé 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 11 janvier 2015 Partager Posté(e) le 11 janvier 2015 oui, maintenant, doit le reecrire proprement pour que ce soit facilement configurable a noté que pour le xperia z3 compact, le ping ne repond plus qd l'appareil est en veille, mais un wget fait l'affaire 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 11 janvier 2015 Partager Posté(e) le 11 janvier 2015 oui, maintenant, doit le reecrire proprement pour que ce soit facilement configurable a noté que pour le xperia z3 compact, le ping ne repond plus qd l'appareil est en veille, mais un wget fait l'affaire A je vais test avec le wget pour voir, car le ping a justement l'inconvénient que tu cite. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nasmanu Posté(e) le 15 janvier 2015 Partager Posté(e) le 15 janvier 2015 @Gaetan Cambier & Einsteinium : avez-vous pu avancer sur le sujet ? Effectivement, il y a yb problème du ping quand le smartphone est en veille, je ne saisie pas bien comment passer outre cela avec le wget.... Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 15 janvier 2015 Partager Posté(e) le 15 janvier 2015 (modifié) bon, j'ai pas trop eu le temps, je vais deja donner le script qui active / desactive et met en position home la camera restera plus que la gestiion du ping sur les gsm que je doit reecrire, car ca a été codé à l'arrache cam_enable.py : # Parametres a modifier ###### user = 'admin' password = 'enter password here' camera_number = 0 camera_preset = 0 base_url = 'http://127.0.0.1:5000/webapi/' ############################## import sys import urllib import urllib2 import json def call_syno_api ( path, values ): param = urllib.urlencode(values); r = urllib2.urlopen(base_url + path + '?' + param) j = json.loads(r.read()) if not j['success']: sys.exit( "Path : %s%s?%snError code : %s" % (base_url, path ,param, j['error']['code']) ) return j # Init path = 'query.cgi' values = { 'api' : 'SYNO.API.Info', 'method' : 'Query', 'version' : '1', 'query' : 'ALL'} list = call_syno_api(path, values) # Login path = list['data']['SYNO.API.Auth']['path'] values = { 'api' : 'SYNO.API.Auth', 'method' : 'Login', 'version' : '2', 'account' : user, 'passwd' : password, 'session' : 'SurveillanceStation'} ret = call_syno_api(path, values) sid = '"' + ret['data']['sid'] + '"' # Camera Select path = list['data']['SYNO.SurveillanceStation.Camera']['path'] values = { 'api' : 'SYNO.SurveillanceStation.Camera', 'method' : 'List', 'version' : '6', '_sid' : sid} ret = call_syno_api(path, values) camera_id = ret['data']['cameras'][camera_number]['id'] # Camera activation/desactivation path = list['data']['SYNO.SurveillanceStation.Camera']['path'] if str(sys.argv[1]) != "0" : # Activation de la camera values = { 'api' : 'SYNO.SurveillanceStation.Camera', 'method' : 'Enable', 'version' : '6', 'cameraIds' : camera_id, '_sid' : sid} ret = call_syno_api(path, values) if str(sys.argv[1]) == "2" : # Selection de la position home values = { 'api' : 'SYNO.SurveillanceStation.PTZ', 'method' : 'ListPreset', 'version' : '3', 'cameraId' : camera_id, '_sid' : sid} ret = call_syno_api(path, values) camera_preset = ret['data']['presets'][0]['id'] # Move de la camera values = { 'api' : 'SYNO.SurveillanceStation.PTZ', 'method' : 'GoPreset', 'version' : '3', 'cameraId' : camera_id, 'presetId' : camera_preset, '_sid' : sid} ret = call_syno_api(path, values) else: # Desactivation de la camera path = list['data']['SYNO.SurveillanceStation.Camera']['path'] values = { 'api' : 'SYNO.SurveillanceStation.Camera', 'method' : 'Disable', 'version' : '6', 'cameraIds' : camera_id, '_sid' : sid} ret = call_syno_api(path, values) # Logout path = list['data']['SYNO.API.Auth']['path'] values = { 'api' : 'SYNO.API.Auth', 'method' : 'Logout', 'version' : '2', 'session' : 'SurveillanceStation', '_sid' : sid} ret = call_syno_api(path, values) dans le code, il y a 5 variable à modifier : user = le nom d'utilisateur qui a le droit d'activer / desactiver la camera (admin par defaut) password = j'espère que tous le monde compredra ce champ camera_number = numera d'index de la camera dans l'ordre qu'elle ont ete declarée, première camera = 0 camera_preset = numero d'index de la position predefinie (pour la position home de la cam = 0) base_url = url d'acces à l'api (a changer uniquement si utilisation sur un port différent ou à partir d'une autre machine) le programme s'utilise avec un paramètre python cam_enable 0 (desactive la camera) python cam_enable 1 (active la camera) python cam_enable 2 (active la camera et la positionne à la position prédéfinie) voila, pour l'iddée du wget au lieu du ping, c simple, un wget sur un telephone renvoit une connection refusée qd il est present, un timeout qd il n'est pas là --> on a ce que l'on desire Modifié le 9 février 2015 par Gaetan Cambier 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 15 janvier 2015 Partager Posté(e) le 15 janvier 2015 Hum script en Python, spécial comme méthode... Nasmatu je fais de l'enregistrement en permanence, mais pour le fun suite au sujet, j'ai fais un script qui fait patrouille ma caméra des que je suis absent, avec le ping par contre, mais en bash par contre et je l'exécute via le gestionnnaire de tâche, pas encore look pour le wget, maintenant je suis pas sûr que cela change grand chose, le téléphone coupant le Wifi en veille, s'il repond pas au ping, il répondra logiquement pas au wget... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 15 janvier 2015 Partager Posté(e) le 15 janvier 2015 (modifié) Décodé du JSON en bash c'est pas la joie, en python, c'est ultra simple Modifié le 15 janvier 2015 par Gaetan Cambier 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 15 janvier 2015 Partager Posté(e) le 15 janvier 2015 (modifié) Décodé du JSON en bash c'est pas la joie, en python, c'est ultra simple Ba sinon tu peux directement génère le pid, après un lien pour l'activation et la désactivation, sans kick la session.. Je trouve plus simple perso et on peux mettre les liens en raccourcis ou en curl si script bash directement. Perso pour la patrouille de mes caméras, j'utilise pas surveillance station, trop merdique et limité à mon goût, je curl en bash directement la caméra, sa permet de temporiser différemment entre les positions et en continue. Modifié le 15 janvier 2015 par Einsteinium 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 16 janvier 2015 Partager Posté(e) le 16 janvier 2015 Aucune session n'est kickee dans mon script ... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.