Aller au contenu

Contr


osa64

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 :P)

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é par Gaetan Cambier
Lien vers le commentaire
Partager sur d’autres sites

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é par Joebart
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é par Joebart
Lien vers le commentaire
Partager sur d’autres sites

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.