contrôler domoticz par SMS

Vous avez crée un script lua dont vous êtes fier, un .sh génial, un programme python hors du commun, un tuto , c'est ici que vous pouvez les partager.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
Répondre
vil1driver
Messages : 5096
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

contrôler domoticz par SMS

Message par vil1driver » 05 juin 2015, 23:18

Bonjour,

contrôler domoticz par SMS, ou comment recycler avantageusement un vieux smartphone...

je suis tombé sur l'application android SMS gateway ultimate
cette app permet de transférer tout SMS reçu vers un serveur web... :D
Ainsi que d'envoyer un sms sur réception d'une requette http.. chouette passerelle pour le système de notification de domoticz

j'ai donc sorti mon vieux smartphone du placard où il attendait gentiment le futur vide grenier..
bien sure une carte sim et l'abonnement qui va avec est indispensable mais grâce à FREE ça passe dans le budget..
le tel est donc branché sur secteur et connecté en permanence à mon réseau wifi.

-- dans domoticz, créez une variable utilisateur de type chaîne et nommez la 'sms' (c'est elle qui va recevoir notre sms)
cette commande le fera pour vous
http://USER:PASS@IP:PORT/json.htm?type=command&param=saveuservariable&vname=sms&vtype=2&vvalue=ready;123
-- sur le smartphone, installer et configurer l'application pour transférer les sms vers cette adresse
http://USER:PASS@IP:PORT/json.htm?type=command&param=updateuservariable&idx=IDX&vname=sms&vtype=2&vvalue=%body%;%from%
USER: votre nom d'utilisateur (si nécessaire)
PASS: votre mot de pass (si nécessaire)
IP: ip de domoticz
PORT: port de domoticz
IDX: idx de la variable utilisateur 'sms'

-- puis placez le script suivant dans le dossier lua et nommez le script_variable_sms.lua

Code : Tout sélectionner

-- script_variable_sms.lua
--
-- un smartphone connecté au réseau wifi de la maison
-- avec l'application 'sms gateway ultimate' installée
-- https://play.google.com/store/apps/details?id=com.icecoldapps.smsgatewayultimate
--
-- dès qu'un sms est reçu, l'application met à jour une variable utilisateur nommée 'sms' via la requette json suivante
-- http://USER:PASS@IP:PORT/json.htm?type=command&param=updateuservariable&idx=IDX&vname=sms&vtype=2&vvalue=%body%;%from%
--
-- dès que la variable 'sms' est modifiée, ce script est exécuté.
-- suivant une correspondance avec l'un des messages de la liste ci dessous,
-- si la personne y est autorisée,
-- l'action associée est lancée
--
-- un message de réponse est retourné
--
-- la commande 'Help' retourne un SMS contenant la liste
--

--------------------------------
------ Tableau à éditer ------
--------------------------------

-- liste des messages à comprendre et leurs actions associées
local liste={}
--liste['message'] = "action"
liste['Help'] = 			[[	reponse = sendAll()	]]	-- ne pas toucher cette ligne
liste['Temp salon'] = 		[[	reponse = 'Il fait '..string.sub(otherdevices_svalues['salon'],1,4)..'°C dans le salon'	]]
liste['Temp chambre'] = 	[[	reponse = 'Il fait '..string.sub(otherdevices_svalues['chambre'],1,4)..'°C dans la chambre'	]]
liste['Temp sdb'] = 		[[	reponse = 'Il fait '..string.sub(otherdevices_svalues['salle de bain'],1,4)..'°C dans la salle de bain'	]]
liste['Temp'] = 			[[	reponse = 	'Salon : '..string.sub(otherdevices_svalues['salon'],1,4)..'°C'..'\n'..
											'Chambre : '..string.sub(otherdevices_svalues['chambre'],1,4)..'°C'..'\n'..
											'Salle de bain : '..string.sub(otherdevices_svalues['salle de bain'],1,4)..'°C'	]]
liste['Temp ext'] = 		[[	reponse = 'Il fait '..string.sub(otherdevices_svalues['exterieur'],1,4)..'°C dehors'	]]
liste['Douche'] = 			[[	commandArray['douche'] = 'On'
								reponse = 'Je mets le salle de bain en chauffe'	]]
liste['Tout éteindre'] = 	[[	commandArray['Group:toute la maison'] = 'Off'	]]
liste['Chauffage'] = 		[[	commandArray['mv salon'] = 'On'	]]
liste['Café'] = 			[[	commandArray['la cafetiere'] = 'On'
								reponse = 'Café en préparation'	]]	
liste['Alarme on'] = 		[[	commandArray['SecPanel'] = 'Arm Away'
								reponse = 'Alarme activée dans 30s'	]]
liste['Alarme off'] = 		[[	commandArray['SecPanel'] = 'Disarm'
								reponse = 'Alarme désactivée'	]]
liste['Spoon'] = 			[[	os.execute('/home/vil1driver/domoticz/scripts/lua/spoon.sh') ]]
liste['Cpu'] = 				[[	reponse = 'Charge processeur : '..otherdevices_svalues['CPU_Usage']..'%' ]]
liste['Pc on'] = 			[[	commandArray['windows on'] = 'On' ]]
liste['Pc off'] = 			[[	commandArray['windows off'] = 'On'
								reponse = 'Arrêt en cours'	]]
liste['Ya qqn'] =			[[	function timedifference(d)
									s = otherdevices_lastupdate[d]
									year = string.sub(s, 1, 4)
									month = string.sub(s, 6, 7)
									day = string.sub(s, 9, 10)
									hour = string.sub(s, 12, 13)
									minutes = string.sub(s, 15, 16)
									seconds = string.sub(s, 18, 19)
									t1 = os.time()
									t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
									difference = os.difftime (t1, t2)
									return difference
								end
								if (timedifference('mv salon') + 120) > timedifference('la porte') and (timedifference('mv chambre') + 120) > timedifference('la porte') then
									reponse = 'Non, il n\'y a plus personne depuis '..os.date("!%X",timedifference('la porte'))
								else
									reponse = 'Oui, il y a du monde'
								end		]]										

-- liste des utilisateurs autorisés
local user={}
user['olivier'] = '+336xxxxxxx'
user['delphine'] = '+336xxxxxxx'
-- etc..		

-- paramètres du serveur SMS Gateway Ultimate	
local gateway = '192.168.1.70:41047'		-- url du serveur sms gateway

-- réponses par défaut
local good = 'Ok..'											-- réponse en cas de commande correcte
local notGood = 'Je ne comprends pas, essayez \'Help\''		-- réponse en cas de commande non comprise
local guess = 'Je ne vous connais pas !'					-- réponse aux utilisateurs non autorisés

--------------------------------
-- Fin du tableau à éditer --
--------------------------------

function spairs(t)
    local keys = {}
    for k in pairs(t) do keys[#keys+1] = k end
	table.sort(keys)
	local i = 0
	return function()
		i = i + 1
		if keys[i] then
			return keys[i], t[keys[i]]
		end
	end
end

function url_encode(str)
  if (str) then
    str = string.gsub (str, "\n", "\r\n")
    str = string.gsub (str, "([^%w %-%_%.%~])",
        function (c) return string.format ("%%%02X", string.byte(c)) end)
    str = string.gsub (str, " ", "+")
  end
  return str	
end

function sendAll()
	for message, action in spairs(liste) do
		if message ~= 'Help' then
			if rst == nil then
				rst = message
			else
				rst = rst..'\n'..message
			end
		end		
	end
	return rst
end

commandArray = {}

if(uservariablechanged['sms']) then
	sms,from = uservariables['sms']:match("([^;]+);([^;]+)")
	local msg = "print('SMS reçu du N° '..from..' : \"'..sms..'\"')"
	for name, number in pairs(user) do
		reponse = guess
		if number == from then
			print('SMS reçu de '..name..' : \"'..sms..'\"')
			reponse = notGood
			msg = "print('SMS, commande invalide')"
			for message, action in pairs(liste) do
				if sms == message then
					reponse = good
					msg = "print('SMS, commande correcte')"
					load(action)()
					break
				end
			end
			break
		end	
	end
	load(msg)()
	--print('SMS : réponse -> '..reponse)
	--print('SMS : réponse -> '..url_encode(reponse))
	commandArray['OpenURL']=gateway..'/send.html?smsto='..from..'&smsbody='..url_encode(reponse)..'&smstype=sms'
end

return commandArray 
-- éditez la liste des messages à reconnaitre et les actions qui vont en découler, ainsi que la liste des numéros autorisés..
sans oublier l'ip et le port du serveur SMS gateway pour que le script puisse vous répondre par sms.



voila c'est tout =)

ps: respectez bien la casse dans vos messages



un grand merci au développeur de cette application gratuite
Modifié en dernier par vil1driver le 08 janv. 2016, 14:57, modifié 50 fois.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Nicogluck
Messages : 111
Enregistré le : 24 nov. 2014, 14:54

Re: contrôler domoticz par SMS

Message par Nicogluck » 06 juin 2015, 09:04

Superbe idée !
Merci pour ta trouvaille.

Tu as la même chose en envoyant un e-mail, au lieu d'un SMS, que Domoticz saurait traiter ? ;)
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart

vil1driver
Messages : 5096
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: contrôler domoticz par SMS

Message par vil1driver » 06 juin 2015, 10:39

L'idée première est d'avoir une possibilité de contrôle distant sans internet.

C'est certainement réalisable par mail mais si tu as un accès web, autant utiliser directement l'interface non ?

oula85
Messages : 156
Enregistré le : 29 avr. 2015, 18:09
Localisation : Challans

Re: contrôler domoticz par SMS

Message par oula85 » 06 juin 2015, 14:58

vil1driver a écrit :L'idée première est d'avoir une possibilité de contrôle distant sans internet.

C'est certainement réalisable par mail mais si tu as un accès web, autant utiliser directement l'interface non ?
je suis un peu de cet avis aussi avec le mode plan c'est ultra simple

avec un compte noip y a rien de plus simple pour être toujours en liaison avec sa solution domotique

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


vil1driver
Messages : 5096
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: contrôler domoticz par SMS

Message par vil1driver » 06 juin 2015, 19:09

mise à jour,

le script prend maintenant en compte une liste de numéros autorisés
et vous enverra un sms de confirmation via l'app :D

vil1driver
Messages : 5096
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: contrôler domoticz par SMS

Message par vil1driver » 07 juin 2015, 12:24

mise à jour,

ajout de la commande 'Help' pour recevoir par sms la liste complète des messages reconnus

deennoo
Messages : 4006
Enregistré le : 25 janv. 2015, 02:00

Re: contrôler domoticz par SMS

Message par deennoo » 08 juin 2015, 13:28

cela m'interesse mais en IOS, j'ai 4S qui traine a rien faire, ce serait bien qu'il finise sa vie comme cela.

As tu des mots clefs a chercher dans google pour trouver un equivalent a SMS Gateway ?
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr

Nicogluck
Messages : 111
Enregistré le : 24 nov. 2014, 14:54

Re: contrôler domoticz par SMS

Message par Nicogluck » 10 juin 2015, 16:14

vil1driver a écrit :L'idée première est d'avoir une possibilité de contrôle distant sans internet.

C'est certainement réalisable par mail mais si tu as un accès web, autant utiliser directement l'interface non ?
S'il est vrai qu'on peut tout modifier via l'interface de Domoticz, certaines fonctions ne sont pas particulièrement simple avec un smartphone : modifier une variable utilisateur par exemple : aller sur la page des variables, trouver éventuellement la bonne page, pointer sur la bonne puis la valider, selon l'appareil, ça relève du défi (et je ne parle pas des myopes et des gros doigts ! :) ).

Bref, pouvoir modifier une variable utilisateur en envoyant un e-mail, ça peut être intéressant.
deennoo a écrit :cela m'interesse mais en IOS, j'ai 4S qui traine a rien faire, ce serait bien qu'il finise sa vie comme cela.

As tu des mots clefs a chercher dans google pour trouver un equivalent a SMS Gateway ?
Je n'arrive pas à savoir si l'appli XendApp peut faire la même chose.
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart

deennoo
Messages : 4006
Enregistré le : 25 janv. 2015, 02:00

Re: contrôler domoticz par SMS

Message par deennoo » 10 juin 2015, 17:45

Nicogluck a écrit : Je n'arrive pas à savoir si l'appli XendApp peut faire la même chose.
le vrai probleme c'est de recuperer les sms recu sur ton iphone pour les transmettre a Domoticz, Xendapp ne semble pas le faire. de plus xendapp utilise un serveur externe alors que smsgateway EST le serveur !

J'ai lu que Apple avait bloquer l acces au sms aux applications tiers, j'attend un JB ios 8.3 pour tester une app de cydia...
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr

vil1driver
Messages : 5096
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: contrôler domoticz par SMS

Message par vil1driver » 22 juin 2015, 12:18

aller.. petite mise à jour du code, à présent plus rapide (on sort des boucles au plus tôt)
ajout de la possibilité d'avoir une réponse perso par commande (sinon Ok est retourné), réponse qui peut être une valeur (température, conso, variable utilisateur, etc...)

je n'ai rien trouvé pour ios, il semble qu'effectivement apple ai verrouillé la possibilité d'accès aux sms :/

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre