Page 1 sur 1

Jarvis / Alarme

Publié : 09 sept. 2017, 21:26
par ColdFace
Bonsoir,

J'ai un petit problème et je commence à m'embrouiller les neurones.

J'ai des capteurs xiaomi (température, PIR et contacteur O/F) avec la gateway.
J'ai fait des scripts pour activer l'alarme basée sur ses capteurs uniquement si toutes les fenêtres et portes sont fermées.
Si l'une d'entre elles est ouverte, j'ai un retour vocal m'indiquant laquelle est restée ouverte.

Tout mon bazar (RPI, Rfxcom,box asl et gateway xiaomi) est dans un petit meuble de mon garage.
Je ne peux donc pas utiliser le retour vocal de la gateway.

Du coup, j'ai bricolé un LUA qui me génère une URL sur jarvis (smartphone) pour avoir le retour vocal sur les portes et fenêtres à l'activation de l'alarme.

Mon objectif est de commander l'alarme via le smartphone (celui de madame et le mien) uniquement via jarvis pour bénéficier du retour vocal et éviter d'avoir à lancer jarvis et de devoir aller sous l'appli domoticz.

Ma procédure grosso merdo :
- "Allume l'alarme" sur jarvis => activation d'un switch dummy
- Lancement du script_device_xxx.lua
- Si demande d'activation d'alarme => vérification de l'état des portes et fenêtres
- Si elles sont toutes fermées => alarme mode "Arm Away" + message "Alarme activée" envoyé sur jarvis via le script LUA
- Si l'une d'entre elle est ouverte => message "Porte|Fenetre Chambre X|Y" envoyé sur jarvis via le script LUA + alarme mode "Disarm"

Tout fonctionne bien MAIS j'ai un retour uniquement sur un smartphone.
Si je mets

Code : Tout sélectionner

			commandArray ['OpenURL'] = jarvis_arnaud .. 'data={%22text%22:%22' .. message .. '%22,%22volume%22:%22100%22}'
			commandArray ['OpenURL'] = jarvis_sophie .. 'data={%22text%22:%22' .. message .. '%22,%22volume%22:%22100%22}'
Cela envoie uniquement au smartphone Sophie. Si son smartphone n'a pas jarvis de lancé mais que le mien oui, je n'ai pas de retour vocal.
Si j'ai ces 2 lignes, domoticz me génère parfois des erreurs...

Bref, ce n'est pas fiable et cela ne me plaît pas.

Il faudrait que je puisse identifier le smartphone qui demande l'activation de l'alarme pour lui faire le retour vocal uniquement à lui.

J'ai pensé à un truc mais je ne sais pas si c'est faisable ou pas (les parties en rouge) ...

Jarvis lance un script php à la demande d'activation de l'alarme.
Le script php identifie le smartphone en récupérant l'@ IP du smartphone via l'URL.
Le script php lance le script LUA avec une variable d'identification du smartphone.

Après un simple if else avec le commandArray avec le bon destinataire.


Merci !

Re: Jarvis / Alarme

Publié : 10 sept. 2017, 15:20
par seblang
Hello

Super ton explication.
Dsl je ne peux t'aider je ne connais pas Jarvis j'utilise sahra.
En revanche ton script fait:
"J'ai fait des scripts pour activer l'alarme basée sur ses capteurs uniquement si toutes les fenêtres et portes sont fermées.
Si l'une d'entre elles est ouverte, j'ai un retour vocal m'indiquant laquelle est restée ouverte."

M'intéresse car moi je galère sur ce point et suis pas doué en programmation !

Peux tu le partager en public ou en privé stp
D'avance merci
Sébastien

Re: Jarvis / Alarme

Publié : 10 sept. 2017, 15:55
par vil1driver
salut,

@seblang,

la logique serait celle ci

si demande d'activation de l'alarme
tester si fenêtre A ouverte
si oui dire fenêtre A ouverte
si non tester avec fenêtre suivante
...
si aucune ouverte
activer alarme et dire alarme active..

plutôt simple dans le cheminement..

mais autant ouvrir ton propre sujet..

Re: Jarvis / Alarme

Publié : 10 sept. 2017, 17:33
par ColdFace
Salut,

Dès que j'ai un peu de temps je posterai les scripts.
Pour mon problème je pense qu'avec un peu de temps et des recherches j'y arriverai mais j'avais aussi envie de partager l'idée sur le forum.

Re: Jarvis / Alarme

Publié : 10 sept. 2017, 19:37
par seblang
Merci coldface

J'attends avec impatience tes scripts pour les adapter à mon installation

Merci merci
Sébastien

Re: Jarvis / Alarme

Publié : 10 sept. 2017, 20:58
par ColdFace
Voici mon code vite fait avant que le film du soir commence :D !

Code : Tout sélectionner

dofile ('/home/pi/domoticz/scripts/lua/modules.lua')

local capteurs = {
					'Contacteur_P_Entree', 'Contacteur_F_Salon', 'Contacteur_PF_SaM', 'Contacteur_F_Cuisine', 
					'Contacteur_F_Parents', 'Contacteur_F_Romain', 'Contacteur_F_Raphael'
				}
				
commandArray = {}

if (devicechanged ['Activation_Alarme']) then
	
	if (devicechanged ['Activation_Alarme'] == 'On') then
	
		message = ""
		
		for cle, valeur in ipairs (capteurs) do
		
			if otherdevices [valeur] == 'Open' then
				
				element = string.sub (valeur, 12, 13)
				
				if (element == 'F_') then
					ouvrant = 'Fenetre'
				elseif (element == 'P_') then
					ouvrant = 'Porte'
				elseif (element == 'PF') then
					ouvrant = 'Porte%20Fenetre'
				elseif (element == 'PG') then
					ouvrant = 'Porte%20Garage'
				end
										
				index = valeur:match (".*()_")
				lieu = string.sub (valeur, index + 1)
				
				if (lieu == 'SaM') then
					lieu = 'Salle%20a%20manger'
				end
				
				message = message .. ouvrant .. '%20' .. lieu .. '..'
			end
		end
		
		if (string.len (message) > 0) then
		
			message = message .. '%20alarme%20desactivee'
			commandArray ['Commande_Alarme'] = 'Disarm'
			commandArray ['Activation_Alarme'] = 'Off'
		else
			message = 'alarme%20activee'
			commandArray ['Commande_Alarme'] = 'Arm Away'
		end
		
			commandArray ['OpenURL'] = jarvis_arnaud .. 'data={%22text%22:%22' .. message .. '%22,%22volume%22:%22100%22}'
			-- commandArray ['OpenURL'] = jarvis_sophie .. 'data={%22text%22:%22' .. message .. '%22,%22volume%22:%22100%22}'
	else
		commandArray ['Commande_Alarme'] = 'Disarm'
	end
end
	
return commandArray
Après pour jarvis, j'ai pris un exemple fourni sur le serveur (portail de mémoire) que j'ai retravaillé pour mes prises électriques connectées.
J'ai crée un interrupteur virtuel (dummy) qui s'appelle "Activation_Alarme".

La variable jarvis_arnaud "complète" pour faire le retour vocal sur jarvis :

Code : Tout sélectionner

jarvis_arnaud = 'http://' .. ip_gsm_arnaud .. ':8181/jarvis?jKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&action=execute&type=TTS&'
Les ".." dans le message du retour vocal me sert de délai entre les mots pour éviter que jarvis parle trop vite.

Re: Jarvis / Alarme

Publié : 17 sept. 2017, 19:30
par seblang
merci
:D

Re: Jarvis / Alarme

Publié : 17 sept. 2017, 20:07
par ColdFace
De rien.

Cela fonctionne ?

Je m'en sers pour l'activation mais pour l'opération inverse, je le fais manuellement sur domoticz Lite car je n'ai pas besoin de retour vocal.
De plus, Jarvis me fait parfois quelques plantages, c'est plus fréquent sur le téléphone de madame donc le WAF baisse un peu mais bon c'est elle qui a demandé une alarme.