Aller au contenu
i-magin

Message Sms Via Un Serveur Paw

Recommended Posts

La box HC2 nous permet d'adresser des alertes par email et notification Push.

L'envoi de message SMS est bien prévu, mais cette option nécessite d'acheter un pack SMS auprès de Fibaro

 

Vous me direz que les notifications Push fonctionnent très bien ?

C'est vrai, mais impossible d'envoyer une alerte si l'accès Internet de votre HC2 est HS

Et à  l'étranger, je n'active jamais le service des données à  l'étranger vu le coà»t induit.

Par contre, la réception de SMS est gratuit

 

Si vous pouvez récupérer un smartphone android et souscrire un abonnement à  2€, la solution suivante peut vous intéresser....

 

Il existe plusieurs applications sous Android qui permettent de créer un serveur SMS.

Nous retiendrons ici le serveur PAW (http://paw-android.fun2code.de/) qui ouvre plusieurs possibilités, dont l'envoi de SMS

Attention ! Tous les portables ne semblent pas compatibles

Pour ma part, j'ai récupéré l'ancien smartphone Samsung Galaxy Ace de ma compagne

J'avais installé dans un 1er temps le serveur Paw sans message d'erreur. Mais ensuite, impossible de démarrer le serveur, avec un message non explicite

Je me suis douté que le problème était lié au fait que j'avais retiré la carte mémoire SD.
J'ai installé une nouvelle carte SD, désinstallé et réinstallé l'application et le serveur s'est bien lancé.

Notez qu'il est nécessaire d'effectuer quelques paramétrages, comme :

- de préférence attribuer une adresse IP fixe à  votre smartphone

- faire en sorte que la connexion wifi de votre smartphone soit active en permanence (y compris en veille)

 

Pour les détails de configuration, vous trouverez toutes les informations ici : http://www.abavala.com/2013/01/07/paw-serveur-http-php-perl-pour-android-et-ma-domotique/

Vous trouverez d'autres pages sur ce site, dont l'envoi de SMS : http://www.abavala.com/2013/01/10/paw-envoi-de-notifications-par-sms/

 

Une fois l'installation effectuée et des tests réussis d'envoi de SMS depuis une ligne de commande HTPP et votre explorateur préféré, vous pourrez passer à  votre box HC2

 

Il faudra créer un module virtuel en précisant l'adresse IP de votre smartphone et le port 8080

gallery_12_6_4809.png

Vous configurerez la ligne string suivante (en modifiant le numéro de téléphone) : 

GET /actions/sms.xhtml?numero=0600000000&message=FIBARO%20MESSAGE%20DE%20TEST HTTP/1.10x0D0x0A0x0D0x0A

Il est impératif de terminer votre ligne de commande par HTTP/1.10x0D0x0A0x0D0x0A

Inconvénient de cette ligne de commande string : impossible d'insérer une variable

Donc, autant de boutons que de messages et impossible d'envoyer une valeur prélevée sur la box.

Exemple : impossible d'envoyer un message avec des informations sur les lampes restées allumées (voir script lua "checker l'éclairage chez soi")

La solution ? un script lua comme celui-ci :

--[[
%% properties
%% globals
--]]
HC2 = Net.FHttp("192.xxx.xxx.xxx", 8080);
response, status, errorCode = HC2:GET("/actions/sms.xhtml?numero=0600000000&message=test");

Sauf, qu'il y a un bug LUA et que cela ne fonctionne pas...

Et, c'est là  que toute la sympathique compétence de @Krikroff intervient.

 

@Krikroff a élaboré un toolkit disponible sur le forum officiel Fibaro
Il a adapté son addon pour permettre l'envoi de SMS via serveur PAW
Je ne le copie pas ici, je laisse @Krikroff et les administrateurs du site s'en charger
Et cela fonctionne impeccable. Vous ne trouverez ci-après que les dernières lignes (main process) du code de @Krikroff :
------------------------------------------------------------------------------------------- 
-- Main process 
------------------------------------------------------------------------------------------- 
function SendSMS(number, message) 
  local uri = "/actions/sms.xhtml"; 
  local params = "?numero=" .. number .. "&message=" .. urlencode(tostring(message or "empty")); 
  Tk.Net.isTraceEnabled = false; 
  local HttpClient = Tk.Net.HttpRequest("192.xxx.xxx.xxx", 8080); 
  HttpClient:setReadTimeout(500); 
  local response, status, errorCode = HttpClient:request("GET", 
    uri..params, { 
      "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0", 
      "Accept: text/html,application/xhtml+xml,application/xml;q=0.9" 
    }); 
  HttpClient:disconnect(); 
  HttpClient:dispose(); 
  HttpClient = nil; 
end 
local message = fibaro:getGlobalValue("sms")
-- numéro de tel, message... 
SendSMS("0600000000", message); 

Il faut bien sà»r modifier l'adresse Ip et le numéro de tél destinataire

A noter que j'ai créé une variable globale "sms"

 

Pour mes tests, j'ai créé une scène qui s'exécute tous les jours à  10H00

gallery_12_6_3068.png

 

Voici son contenu :

--[[
%% autostart
%% properties
%% globals
--]]


local sourceTrigger = fibaro:getSourceTrigger();
if (sourceTrigger["type"] == "autostart") then
while true do
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
-- on envoie un sms tous les jours à  10H00
if (
 ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "10:00") )
)
then
tempext = fibaro:getGlobalValue("tempext") -- température extérieure Netatmo
    tempint = fibaro:getGlobalValue("tempint") -- température intérieure Netatmo
    message = ("Bonjour, nous sommes le "..currentDate.day.."/"..currentDate.month.."/"..currentDate.year.." - "..tempext.." - "..tempint.." - A demain !")
    fibaro:setGlobal("sms", message); -- constitution du message
    fibaro:call(88, "pressButton", "4"); -- envoi du message par module virtuel
end
fibaro:sleep(60*1000);
end
else
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
    tempext = fibaro:getGlobalValue("tempext")
    tempint = fibaro:getGlobalValue("tempint")
    message = ("Bonjour, nous sommes le "..currentDate.day.."/"..currentDate.month.."/"..currentDate.year.." - "..tempext.." - "..tempint.." - A demain !")
    fibaro:setGlobal("sms", message);
    fibaro:debug(message)
    fibaro:call(88, "pressButton", "4");
end
end

Je reçois donc un SMS journalier qui me donne la température extérieure et intérieure de ma station Netatmo

 

J'espère que ce mémo vous sera utile....

 

 

 

  • Upvote 4

Partager ce message


Lien à poster
Partager sur d’autres sites

×