Aller au contenu

Piloter L'enregistrement Des Caméras Avec Synology Surveillance Station


Lazer

Recommended Posts

Voilà , j'ai réussi pour Enable et Disable Camera

Je fonctionne comme ceci: la détection de mouvement est activée, assez sensible, comme ça quand j'active les caméras, elles n'enregistrent que lorsqu'il y a du mouvement, gain de place énorme et facilité par la suite de retrouver les activités puisqu'il y a 100X moins de vidéos à  consulter

Bref, avec la nouvelle API, mon code ci-dessus ne marchais plus, mais ils ont résolut un bug qui empéchait d'activer et désactiver les caméras.

 

Voici le code:

Seul bug que je connais: la non prise en compte des messages d'erreurs pour la reponse json concernant enable et disable... les réponses sont très longues, c'est peut être la raison ?!?

J'ai mis à  jour la liste des erreurs

Attention, il faut un compte admin pour cette fonction !

--------------------------------------------------
-- Synology Surveillance Station V3
-- Enable/Disable cameras
-- Lazer - SebCbien
-- Janvier 2015
--------------------------------------------------

-- User configurable variables
local login = "admin"
local password = "xxxxxxxxxx"
local cameras = {2,4}
local method = "Enable"
--local method = "Disable"

-- System variables
local selfID = fibaro:getSelfId()
local ip = fibaro:get(selfID, 'IPAddress')
local port = fibaro:get(selfID, 'TCPPort')
local Synology = Net.FHttp(ip, tonumber(port))
local API_ERROR_CODE = {
	[100] = "Unknown error.",
	[101] = "Invalid parameters.",
	[102] = "API does not exist.",
	[103] = "Method does not exist.",
	[104] = "This API version is not supported.",
	[105] = "Insufficient user privilege.",
	[106] = "Connection time out.",
	[400] = "Invalid password.",
	[401] = "Guest or disabled account.",
	[402] = "Permission denied.",
	[403] = "One time password not specified.",
	[404] = "One time password authenticate failed."
}

-- Discover available APIs and corresponding information
payload = "/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.API.Auth,SYNO.SurveillanceStation.Camera"
response, status, errorCode = Synology:GET(payload)
if tonumber(status) == 200 then
	jsonTable = json.decode(response);
	if jsonTable.data["SYNO.API.Auth"].maxVersion >= 3 and jsonTable.data["SYNO.SurveillanceStation.Camera"].maxVersion >= 3 then
		fibaro:debug("Synology API version OK")
		pathAuth = jsonTable.data["SYNO.API.Auth"].path
		pathCamera = jsonTable.data["SYNO.SurveillanceStation.Camera"].path
		fibaro:debug("Synology API Auth path = "..pathAuth)
		fibaro:debug("Synology API Surveillance Station Camera path = "..pathCamera)
		
		-- Create new login session
		payload = "/webapi/"..pathAuth.."?api=SYNO.API.Auth&method=Login&version=3&account="..login.."&passwd="..password.."&session=SurveillanceStation&format=sid"
		response, status, errorCode = Synology:GET(payload)
	--fibaro:debug("seb login payload : " .. payload)
        --fibaro:debug("seb login response : " .. response)
		if tonumber(status) == 200 then
			jsonTable = json.decode(response);
			if jsonTable.success == true then
				SID = jsonTable.data.sid
				fibaro:debug("Synology API Auth SID = "..SID)

				-- Enable or disable cameras
				for i = 1, #cameras do
					-- Enable or disable camera
                                        payload = "/webapi/"..pathCamera.."?api=SYNO.SurveillanceStation.Camera&method=" .. method .. "&version=3&cameraIds="..cameras[i].."&_sid="..SID
					response, status, errorCode = Synology:GET(payload)
			--fibaro:debug("seb Camera disable payload : " .. payload)		
          	        --fibaro:debug("seb Camera disable response : " .. response)
				jsonTable = json.decode(response);
				if jsonTable.success == true then
					if errorCode == 0 then
						fibaro:log("OK")
						fibaro:debug('<span style="color:green;">Synology Surveillance Station '..method..' camera "'..tostring(cameras[i])..'" OK</span>')
					else
						fibaro:log("Erreur")
						fibaro:debug('<span style="color:red;">Synology Surveillance Station '..method..' camera "'..tostring(cameras[i])..'" FAILED : '..API_ERROR_CODE[tonumber(jsonTable.error.code)]..'</span>')
					end
				end
				end
				
				-- Destroy current login session
				payload = "/webapi/"..pathAuth.."?api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation&_sid="..SID
				response, status, errorCode = Synology:GET(payload)
			else
				fibaro:log("Erreur")
				fibaro:debug('<span style="color:red;">Error : '..API_ERROR_CODE[tonumber(jsonTable.error.code)]..'</span>')
			end
		else
			fibaro:log("Erreur")
			fibaro:debug('<span style="color:red;">Error : API Authentication failure</span>')
		end
	else
		fibaro:log("Erreur")
		fibaro:debug('<span style="color:red;">Error : Synology API version is too old : <b>DSM 4.0-2251</b> and <b>Surveillance Station 6.1</b> are required</span>')
	end
else
	fibaro:log("Erreur")
	fibaro:debug('<span style="color:red;">Error : Can not connect to Synology server</span>')
end
  • Upvote 4
Lien vers le commentaire
Partager sur d’autres sites

La dernière version de la doc disponible pour l'API est ici : https://ukdl.synology.com/download/Document/DeveloperGuide/Surveillance_Station_Web_API.pdf

Visiblement, les méthodes Enable et Disable étaient disponibles depuis le 20 mai, juste quand j'étais en train de finaliser la v2 de mon module virtuel, donc je l'ai loupé de peu.

Bref, merci Sebcbien, on a maintenant un module virtuel complet.

La prochaine étape sera de le convertir en plugin... hum hum c'est pas gagné....

Lien vers le commentaire
Partager sur d’autres sites

Log de l'api:

V1.8 2014/08/14  Fix typo in example of Camera Enable and Disable 

 

J'avais essayé de le faire mais ça ne marchais pas, maintenant oui

ceci explique peut être cela... ;-)

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Non, il faut plutôt créer 2 nouveaux boutons Enable et Disable.

 

Les boutons Start & Stop permettent de forcer le Syno à  démarrer l'enregistrement en continu.

Tandis que les boutons Enable et Disable permettent d'activer ou désactiver la caméra dans l'interface de Surveillance Station, ce qui a pour effet d'arrêter le flux vidéo qui transite sur le LAN et donc la détection de mouvement configurée dans Surveillance Station.

Lien vers le commentaire
Partager sur d’autres sites

d'accord :-) alors je remets tout cela en place comme avant ...... et j'ajoute les boutons MERCI  :)

 

Par contre cela veut dire qu'ensuite il faut réactiver la camera si on veut la voir depuis Surveillance Station ?

 

J'ai mis en lien le nouveau virtual device avec vos modifs "Enable" "Disable" si vous voulez le mettre au début du post et l'effacer du mien.

 

 

Surveillance_Station.vfib

Modifié par PITP2
Lien vers le commentaire
Partager sur d’autres sites

Non, il faut plutôt créer 2 nouveaux boutons Enable et Disable.

 

Les boutons Start & Stop permettent de forcer le Syno à  démarrer l'enregistrement en continu.

Tandis que les boutons Enable et Disable permettent d'activer ou désactiver la caméra dans l'interface de Surveillance Station, ce qui a pour effet d'arrêter le flux vidéo qui transite sur le LAN et donc la détection de mouvement configurée dans Surveillance Station.

j'aurais pas mieux dit moi même  ;)

 

p.s. les caméras sont toujours actives "par elles même" même si disable pour le syno, (donc visibes dans l'interface du HC2...)

ps2 j'utilise les boutons start et stop en cas de violation de l'alarme, pour enregistrer en continu.

Lien vers le commentaire
Partager sur d’autres sites

Sebcbien : tu fais bien de préciser :)

 

@PITP2 : en fait je comptais également ajouter les boutons de @maestrea en page précédente pour la gestion de la patrouille, avant de partager le module complet en première page. Je n'ai pas encore pris le temps...

Lien vers le commentaire
Partager sur d’autres sites

  • 3 weeks later...

cybersquat : il faudra tout réécrire, car je pense que ces NAS ont une API complètement différente.

 

kinou.69 : normalement, si la caméra est désactivée, la détection de mouvement aussi. C'est un fonctionnement propre au Syno,

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Pour ceux que cela intéresse , fonctionnement toujours ok avec la nouvelle version de Surveillance Station 7.

Je le dis car j'ai été un peu fébrile au moment de cette mise à  jour  :)

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

J'ai un souci, je viens de me rendre compte que le module virtuel ne fonctionne plus chez moi, avec Surveillance Station 7.0-3742

 

Je viens de voir qu'ils ont sorti la version 2.0 des specs de l'API au 13/03/2015 : https://global.download.synology.com/ftp/Document/DeveloperGuide/Surveillance_Station_Web_API_v2.0.pdf

Je vais jeter un coup d'oeil mais je ne sais pas si j'aurai le temps ce week-end...

Lien vers le commentaire
Partager sur d’autres sites

@Lazer, c'est étrange car chez moi pas de soucis avec la même version que toi de Surveillance station.

 

Qu'as tu comme version de DSM ?

je suis en DSM 5.1-5022

Lien vers le commentaire
Partager sur d’autres sites

DSM 5.1, je ne sais plus le numéro de build, mais le dernier normalement.

C'est un Xpenology des fois que ça change quelque chose....

J'avais des messages dans la fenêtre de debug incohérents, et les scripts se plantent avant la fin. Je regarderai ça en détail la semaine prochaine.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...