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