Aller au contenu

Quick App - Synology Surveillance Station


Lazer

Recommended Posts

Mise en ligne de la version 5.10 :

  • Correction du problème de login avec DSM v7
  • Correction du bug de création des modules enfants depuis le firmware HC3 v5.100
  • Meilleure gestion des modules déconnectés (dead) et support de la fonction wakeUpDeadDevice
  • Gestion de plusieurs langues (français/anglais)
  • Ajout d'emojis sur le visuel du QuickApp parent
  • Améliorations diverses

 

Pour la mise à jour, copier/coller le contenu de chaque fichier LUA dans le QuickApp (et créer le fichier DSM s'il n'existe pas encore) :

 

Modifié par Lazer
  • Like 2
Lien vers le commentaire
Partager sur d’autres sites

  • 6 months later...

@Lazer, j'essai de comprendre la logique des QA et de la HC3 ... 

 

dans les modules enfants crées, est ce que je peux rajouter des boutons pour faire les fibaro.call(ID, "PTZ", 1) de ma cam PTZ ou faire l'activation / desactivation

ou je dois créer cela ailleurs ?

 

Lien vers le commentaire
Partager sur d’autres sites

Non on ne peut pas ajouter des boutons sur les modules enfants (c'est possible via un hack, mais pas simple et pas franchement recommandé car rien ne dit que le hack fonctionnera éternellement lors des mises à jours ultérieures de firmware de la box)

 

Les modules enfants sont de type binary switch, ce qui te permet par simple clic de forcer le démarrage/arrêt de l'enregistrement de chaque caméra directement depuis l'interface Web ou l'application mobile.

 

En complément, par la programmation LUA, GEA, ou via l'API HTTP, tu peux directement exécuter les différentes fonctions comme décrit à la fin du tuto (enable, disable, PTZ, etc...)

Donc en LUA, c'est avec fibaro.call(), et tu utilises l'ID de chaque module enfant.

Ou bien l'équivalent avec une action GEA {"QuickApp", ID, "PTZ", 1) par exemple

Lien vers le commentaire
Partager sur d’autres sites

Ok noté merci.
Avec du gea oui je le ferai sur des déclenchements particulier mais j avais l habitude d avoir aussi la possible de faire le ptz via des boutons pour checker des situations à la main.
Je vais donc créer une autre QA pour cela.

Lien vers le commentaire
Partager sur d’autres sites

OK en effet si tu veux le faire manuellement, le mieux est de créer un QA dédié, de type tableau de bord qui te permet d'agir sur toutes tes caméras.

 

J'ai un truc similaire d'ailleurs depuis des années sur HC2, que j'ai reproduit sur HC3.

ça allume les lumières, fait des screenshots, du PTZ sur la caméra intérieur, d'autres screenshots, puis éteint les lumières.

Pratique pour avoir un état des lieux complet de la maison pendant les vacances.
 

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

  • 3 weeks later...

Voici le code de la fonction qui est appelée par un bouton du QuickApp :

--
-- Bouton Scène snapshots
--
function QuickApp:sceneSnapshots(event)

	if not fibaro.getValue(id["WP_WEBCAM"], "value") then
		-- Allume Webcam
		self:turnOn()
	end

	-- Attente caméra opérationnelle
	waitCamera(self, os.time(), 300, 5000, {

		success = function()

			local function doAction(actions, index)
				local index = index or 1
				if self.isdebug then
					tools:print("gray", "action", index, "...")
				end
				local action = actions[index]
				if action then
					if action.position then
						if self.isdebug then
							tools:print("silver", "Set position", action.position, "...")
						end
						self:setPosition(action.position,
							function(success)
								fibaro.call(id["WEBCAM"], "sendPhotoToUser", self.userid)
								fibaro.setTimeout(action.postSleep or 0, function() doAction(actions, index + 1) end)
							end,
							action.preSleep
						)
					elseif action.func then
						if self.isdebug then
							tools:print("silver", "Execute function...")
						end
						action.func()
						doAction(actions, index + 1)
					elseif self.isdebug then
						tools:print("silver", "Unknown action...")
					end
				elseif self.isdebug then
					self:warning("End of action sequence")
				end
			end

			local actions = {
				{func = function()
					-- Allume les lumières
					fibaro.call(id["LUMIERE_SALON"]  , "setValue", 99)
					fibaro.call(id["LUMIERE_SAM"]    , "setValue", 50)
					fibaro.call(id["LUMIERE_CUISINE"], "setValue", 99)
					fibaro.call(id["LUMIERE_HALL"]   , "setValue", 99)
					fibaro.call(id["LUMIERE_ENTREE"] , "setValue", 99)
				end},
				{position = "Salon"         , preSleep = 15*1000, postSleep = 1*1000},
				{position = "Salle-a-manger", preSleep =  9*1000, postSleep = 1*1000},
				{position = "Entree"        , preSleep = 14*1000, postSleep = 1*1000},
				{func = function()
					-- Éteint les lumières
					fibaro.call(id["LUMIERE_SALON"], "turnOff")
					fibaro.call(id["LUMIERE_SAM"], "turnOff")
					fibaro.call(id["LUMIERE_CUISINE"], "turnOff")
					fibaro.call(id["LUMIERE_HALL"], "turnOff")
					fibaro.call(id["LUMIERE_ENTREE"], "turnOff")
				end},
			}

			doAction(actions)

		end,

		error = function()
			tools:error("Webcam : KO")
			Notifications:send("Snapshots Webcam échoué", "Webcam non disponible", {"push", "email", "sms"})
		end,

	})

end

 

Comme dans GEA, le code fait appel à une table id qui contient les ID de tous les modules utilisés.

 

Tu peux ignorer (supprimer) tout le bloc relatif à l'appel de la fonction waitCamera() qui vérifie et attend que la caméra soit allumée (une Foscam motorisée qui est dans mon salon, donc éteinte par défaut quand on est présent)

La fonction locale doAction() permet de séquencer les actions.

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

@Lazer, est ce qu'il y a moyen de connaitre dans quelle position "PTZ" est la camera ?

 

sur HC2, je mettais un label à jour au click mais si la cam avait été déplacé via une autre app bien sur la HC2 ne le voyait, je me demandais donc si SS peut me remonter la position "en cours" ?

 

Lien vers le commentaire
Partager sur d’autres sites

Avec ma Foscam non, elle ne donne pas l'information de sa position.

Avec les autres caméras, je ne sais pas...

 

Sinon il faut contourner le problème, en mémorisant la dernière position demandée.

Mais ça ne fonctionnera pas si en parallèle, un autre donneur d'ordre intervient (utilisateur en direct sur la caméra, via Surveillance Station, etc)

Lien vers le commentaire
Partager sur d’autres sites

yes bon je vais faire simple en effet pour le moment

 

une question, ce message veut me dire qq chose n'est pas genial ou RAS ? 

 

[25.09.2022] [12:02:58] [TRACE] [QUICKAPP40]: UIEvent: {"elementName":"button3_4","deviceId":40,"values":[],"eventType":"onReleased"}

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

  • 7 months later...

@Lazer j’ai vu la fin de ton tuto sur les actions

si tu souhaites stopper l’enregistrement d’une cam après 60 sec 

tu utilises turnOff ou disable, dans Gea?

 

GEA.add({"turnOn", "cam1"},60,"",
{"turnOff", "cam1"})

 

La réaction est aléatoire, des fois ça stop bien l’enregistrement après 1min et des fois ça ne l’arrête jamais.

Lien vers le commentaire
Partager sur d’autres sites

ta ligne GEA est bizarre... déjà mettre un "turnOn" dans les conditions, ce n'est pas très "humainement" lisible, car pas logique du coup. C'est une action normalement...

 

Tu veux faire quoi en fait ?

 

En ce qui concerne l'enregistrement forcé, il faut bien comprendre la logique de fonctionnement de Surveillance Station.
Quand j'écris ceci :

  • fibaro.call(ID, "turnOff") => Stoppe l'enregistrement forcé d'une caméra

ça veut dire ce que ça veut dire, c'est à dire que ça stoppe l'enregistrement forcé. Je le met en gras pour appuyer l'importance du mot.
Donc ça ne veut pas dire que ça stoppe inconditionnellement l'enregistrement de la caméra, car SS peut très bien décider de continuer l'enregistrement si par exemple l'algorithme a détecté un mouvement et qu'il est configuré pour enregistrer en cas de détection de mouvement.

Donc tout dépend du paramétrage effectué dans SS.

Lien vers le commentaire
Partager sur d’autres sites

@Lazer j’ai respecté ton tuto (extrêmement clair) « Il est conseillé de paramétrer la caméra en détection de mouvement permanente« 

 

je comprends bien la notion de « forcer »

est ce le tampon avant/après ?

mais la conséquence, de tps en tps ça continue à REC (de tps en tps)


pour la syntaxe, pareil je n’y arrive pas, alors que sur hc2, c’était value…..  « 1 » (ou true) alors turnOn

si value…… « 0 » (ou false) alors turnOff

 

 

concernant ce que je veux faire sur Gea,

j’ai un Pir (sur Ipx800 en In1) 

si pir=1 et cam turnOff alors turnOn cam1

si la cam1 record et Pir=0 depuis 1 min alors stop rec cam1

 

pour cette dernière ligne j’ai essayé une autre variante, même résultat,

si Pir=0 et la cam1 record depuis 1 min alors stop rec cam1

 

 

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

Tu n'es pas obligé de suivre mon tuto à la lettre, disons que j'ai partagé tel que je l'utilise chez moi, ça me convient en tout cas.

En pratique, comme dit, même si la HC3 demande l'arrêt de l'enregistrement forcé, SS peut très bien décider de continuer à enregistrer malgré tout, selon sa propre logique interne (dépendante de la façon dont on l'a configuré et des événements qui se produisent devant la caméra)... sachant en plus que la détection de mouvement peut être effectué par la caméra elle-même (si supporté) ou bien par SS lui même par analyse d'image.

En plus j'ai une veille version de SS, je ne serai pas surpris qu'il y ai de nombreuses nouveautés dans les versions plus récentes.

 

En ce qui concerne la syntaxe de GEA, normalement ça se passe sur le topic dédié.
Heureusement, les value "0" et "1" n'existent plus sur HC3, c'était un truc tout pourri codé à l'arrache par Fibaro sur la HC2.
Maintenant les devices prennent des valeurs qui respectent les standard du JSON, donc true ou false (booléen) dans le cas d'un détecteur binaire (ce que sont les modules enfants créés par ce QA, chaque module enfant représente l'état d'enregistrement d'une caméra)

C'est donc "Value", "true" ou "false" que dois utiliser dans les conditions de GEA.

Ce sujet a été maintes fois abordé tant il a perturbé les utilisateurs venant de la HC2 et ayant pris les mauvaises habitudes (encore une fois, à cause de Fibaro...)

 

 

Lien vers le commentaire
Partager sur d’autres sites

 c’est tjrs aléatoire, ce qui est consternant c’est que 2 cam sur un même Pir, le turnOff, des 2 cam sur la mm ligne GEA, en stop une mais pas l’autre

j’ai check SS, tt est ok

Bon, à voir

 

EDIT

j'ai testé 3 ecritures, ça fonctionne bien pour les 3, mais de tps en tps il y a un loupé, si je reboot le GEA, alors la il detecte bien que que les conditions sont bien réunies et stop la camera

le probleme est que si il y a un loupé à la premiere echeance, alors le REC cam ne s'arrete pas et rec non stop



-- ici je stop camera si celle ci REC, si le PIR est OFF et les 2 conditions mode auto et sirene de l'alarme à l'arret

GEA.add({{"turnOn",id["CAM_TERRASSE_PISCINE"]},{"turnOff",id["IN4_PIR_PISCINE"]},{"Global","MODE_CAMERA","AUTO"},{"turnOff",id["ETAT_SIRENE"]}},60, "",{{"turnOff",id["CAM_TERRASSE_PISCINE"]}})

GEA.add({{"Value",id["CAM_TERRASSE_PISCINE"],true},{"Value",id["IN4_PIR_PISCINE"],false},{"Global","MODE_CAMERA","AUTO"},{"Value",id["ETAT_SIRENE"],false}},30*2, "",{{"turnOff",id["CAM_TERRASSE_PISCINE"]}})

GEA.add({{"Value",id["IN4_PIR_PISCINE"],false},{"Value",id["CAM_TERRASSE_PISCINE"],true},{"Global","MODE_CAMERA","AUTO"},{"Value",id["ETAT_SIRENE"],false}},30*2, "",{{"turnOff",id["CAM_TERRASSE_PISCINE"]}})

EDIT 2:

comment palier à cela afin d'eviter que ça tourne pour rien?

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

  • 5 months later...

Bonjour !

J'ai un petit soucis avec ce QA, qui se bloque régulièrement à cause, je pense, de l'identification du SYNO.

J'ai régulièrement ce message : [10.10.2023] [09:31:00] [ERROR] [QA_SURVSTATION_23]: Can't get cameras list : Privilèges utilisateur insuffisant

Ce qui est embêtant, c'est que le QA tourne en rond sur ce message, et que je dois redémarer la box (ou le QA) quand je m'en rend compte. Y a moyen d'automatiser un redémarage du QA pour cette erreur ?

 

Lien vers le commentaire
Partager sur d’autres sites

étonnant, je n'ai pas ce souci... ce ne serait pas plutôt lié à un paramètre de configuration particulier dans ton Syno ? Au niveau du contrôle d'accès utilisateur ou un truc dans le genre.

 

Sinon pour redémarrer un QA automatiquement, il faudrait que je ressorte mon Watchdog du fond de tiroir dans lequel il est rangé...

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Bonsoir @Dragoniacs et @Lazer,

Je rencontre le même souci depuis peu '(alors que le QA fonctionnait correctement jusque-là. J'ai vu que le centre de paquets DSM avait fait une mise à jour il y a peu (mais je ne peux pas confirmer la date exacte vu que je ne me sers que peu de ce QA).

Je n'ai pas modifié les droits de l'utilisateur qui est rentré dans les variables du QA.

Le message d'erreur affiché est : "Can't list cameras : Permission refusée". E le message de debug est : " Request new Synology SID". Si ca peut mettre sur la voie...

 

A+

 

 

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...