osa64 Posté(e) le 16 mars 2013 Partager Posté(e) le 16 mars 2013 Juste un petit exemple sur les webcam. J’ai une webcam qui surveille ce qui se passe chez moi, depuis que ma femme a pris l’habitude de rentrer en oubliant d’éteindre l’alarme et de me téléphoner (ou répondre au téléphone d’ailleurs) pour me le dire. Rien d’extraordinaire. Mais il se trouve que je n’aime pas du tout que cet œil me surveille quand je suis là. Donc quand je rentrais, je déplaçais la caméra avec une application sur mon smartphone. Mais pas très pratique, surtout que la configuration de cette application était sur l’adresse IP publique de ma Box et qu’en rentrant et en basculant en Wifi Local la règle NAT/PAT ne fonctionne plus… Avec la 4.2 de Synology j’ai décidé de franchir le pas pour contrôler cette caméra de façon automatique. La première chose à faire est de créer un user dans la Webcam pour l’accès du Syno. La seconde consiste à réserver une adresse IP dans le scope DHCP pour mon smartphone. Le smartphone se connecte automatiquement au Wifi lorsqu’il arrive à portée grâce à une application. (B.Wifi dans mon cas). Il ne reste plus qu’à mettre en place un script qui ping l’adresse IP réservée pour le smartphone. Si le ping répond, le smartphone est là, donc à priori moi aussi. Dans ce cas la caméra doit changer de position pour regarder le mur. J’en profite aussi pour arrêter le service Surveillance station du Syno. Et bien sûr, si le ping ne répond pas le smartphone n’est pas là, donc moi non plus, et donc la webcam doit reprendre sa position de surveillance (avec en plus le redémarrage du service station) On schedule ce script dans le Syno et voilà ça marche nickel. L’exemple ci-dessous est fait pour une webcam Heden. Chacun pourra adapter avec les commandes de sa Webcam. Je présume que ça doit marcher tel que pour une Foscam. Note : On peut aussi envisager de faire patrouiller la caméra entre 2 points au lieu des 240° prévus dans le soft de la Webcam qui font que la caméra positionnée dans un angle de pièce se trouve quasiment les 2/3 du temps face à un mur. Encore un programmeur qui a oublié de réfléchir à l’utilisation dans la vraie vie… Bon on ne va pas se plaindre déjà au reboot elle peut se remettre dans une position préenregistrée. Et ça tombe bien parce qu’elle un peu tendance à rebooter toute seule de temps en temps. Très visible avec surveillance station. Bon revenons à notre script. #!/bin/sh # Saisir ici le User et le Password créé dans la webcam pour l’accès du Syno User=USER Pwd=PASSWORD # Saisir l’adresse IP de la Webcam (Adresse IP fixe ou réservée dans DHCP elle aussi) WebCam=192.168.1.105 # Saisir l’adresse IP réservée dasn DHCP pour le smartphone quand il est en Wifi SmartPhone=192.168.1.30 # Commandes à envoyer à la Webcam pour la positionner dans les positions pré-enregistrées # Dans notre exemple PTZ1 sera la position de surveillance et PTZ2 sera le mur aveugle. WebCamPTZ1=decoder_control.cgi?command=31 WebCamPTZ2=decoder_control.cgi?command=33 WebCamPTZ3=decoder_control.cgi?command=35 WebCamPTZ4=decoder_control.cgi?command=37 # Chemin du script pour gérer le service station SurveillanceStation=/var/packages/SurveillanceStation/target/scripts/S82surveillance.sh # Le script … ping -4 $SmartPhone -c 1 -q >/dev/null if [ $? -eq 0 ] then $SurveillanceStation stop wget --http-user=$User --http-password=$Pwd http://$WebCam/$WebCamPTZ2 else $SurveillanceStation start wget --http-user=$User --http-password=$Pwd http://$WebCam/$WebCamPTZ1 fi 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
tixav Posté(e) le 16 mars 2013 Partager Posté(e) le 16 mars 2013 pas bête, l'idée de la détection du smartphone pour automatiser la marche ou l'arrêt de l'alarme ! Je vais reproduire. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
kyz78 Posté(e) le 18 mars 2013 Partager Posté(e) le 18 mars 2013 Vraiment pas mal cette idée de présence du smartphone. je vais tester ça ce week end par contre, je mettrai en place que l'arrêt de surveillance Station. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Joebart Posté(e) le 2 février 2015 Partager Posté(e) le 2 février 2015 Bonjour, Ce script fonctionne très bien chez moi, je l'ai mit dans la crontab toutes les 5 minutes. Par contre je souhaiterai que l'ordre start/stop ne soit envoyé que si l’état du ping à changé depuis le dernier test. J'y connais rien en programmation, j'ai bien essayé de faire la bidouille ci-dessous mais ça ne fonctionne pas. Si quelqu'un peut me guider. Merci ________________________________ - - - # Le script … ping -4 $SmartPhone -c 1 -q >/dev/null if [ $? -eq 0 ] then if etatstop=0 then $SurveillanceStation stop wget --http-user=$User --http-password=$Pwd http://$WebCam/$WebCamPTZ2 etatstop=1 etatstart=0 fi else if etatstart=0 then $SurveillanceStation start wget --http-user=$User --http-password=$Pwd http://$WebCam/$WebCamPTZ1 etatstop=0 etatstart=1 fi fi 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nasmanu Posté(e) le 2 février 2015 Partager Posté(e) le 2 février 2015 je ne peux que te rediriger vers l'excellent script de Gaetan Cambier pour tpon besoin ici : 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Joebart Posté(e) le 2 février 2015 Partager Posté(e) le 2 février 2015 Merci pour ce lien, je l'avais déjà vu, je trouvais le script un peu compliqué pour mon besoin et non fonctionnel avec ma camera. Mon problème est que surveillance station ne gère pas la fonction PT de ma caméra, voila pourquoi j'utilisais le script qui positionnait directement la caméra sans passer par SS avec la commande " wget --http-user=$User --http-password=$Pwd http://$WebCam/decoder_control.cgi?command=31" Du peu que j'ai pu comprendre du script de Gaetan Cambier, celui-ci utilise la position "home" qui est une position définit dans SurveillanceStation (impossible dans mon cas). De plus ce que je veux aussi c'est que la camera se positionne dans une autre position pré-définit2 (vers le plafond) lorsque que le smartphone est absent, je ne pense pas que le script le gère. Je vais essayer de creuser un peu plus... Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 2 février 2015 Partager Posté(e) le 2 février 2015 (modifié) ben le script il active / desactive la camera --> plus d'enregistrement, après, que la cam te regarde ou pas meme qd c'est desactivé dans surveillance station, on peut facilement l'ajouter dans le script (ce n'est qu'un move) mais faudra trouver le bon emplacement preprogrammé (à la fois, en général, il y en a pas 36 ) viens de trouve un bug dans le script, j'ai modifier bon, pour ajouter le move à la desactivation, il suffit de copier les partie "# Selection de la position home" et "# Move de la camera" juste après le else et modifier le 0 de l'index du home, pour le bon qui correspond à la position prédéfinie voulue et c tout Modifié le 2 février 2015 par Gaetan Cambier 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Joebart Posté(e) le 3 février 2015 Partager Posté(e) le 3 février 2015 (modifié) Je ne peux pas utiliser la fonction "move" ou la position "home", car le positionnement de ma caméra n'est pas géré par SurveillanceStation (le PTZ de ma cam n'est pas compatible avec l'application Synology). Je dois directement envoyer la commande : hxxp://adresse_IP_de_la_camera:port/decoder_control.cgi?command=31&user=operator&pwd=operator (par la fonction wget) à la camera. Modifié le 3 février 2015 par Joebart 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 3 février 2015 Partager Posté(e) le 3 février 2015 je reviens à la charge : au lieu de declenché le fichier "cam_enable.py" je te propose un fichier qui va déclencher un evenement configurable dans surveillance station 7 et une des possibilité est utilise une url voici le script surveillance_trigger.py # Parametres a modifier ###### user = 'admin' password = 'password' 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 ,p return j try: argument = int(str(sys.argv[1])) except ValueError: sys.exit( "Entrer un parametre numerique" ) if argument < 1 or argument > 10 : sys.exit( "Entrer un parametre entre 1 et 10") # 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', 'format' : 'sid'} ret = call_syno_api(path, values) sid = ret['data']['sid'] # Declenchement du Trigger path = list['data']['SYNO.SurveillanceStation.ExternalEvent']['path'] values = { 'api' : 'SYNO.SurveillanceStation.ExternalEvent', 'method' : 'Trigger', 'version' : '1', 'eventId' : argument, '_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) la configuration des triger se fait dans surveillance station --> Regle d'action 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Joebart Posté(e) le 4 février 2015 Partager Posté(e) le 4 février 2015 (modifié) Merci beaucoup pour ton travail. Je vais maintenant essayer de mettre ça en application. Par contre ou se situe le numéro d’événement car je dois utiliser 2 positions de la camera, une position quand le smartphone est présent et une autre position différente lorsque le smartphone est absent, donc il me faudra 2 scripts avec une position de trigger différente. Si je comprend bien, je dois créer 2 événements externe (1 pour chaque position). Je ne dois pas changer ce paramètre ? ==> base_url = 'http://127.0.0.1:5000/webapi/' Cdlt Modifié le 4 février 2015 par Joebart 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.