Le troisième exercice lié à PAW consiste a programmer la fonctionnalité d’envoi de SMS. Le principe est simple. Le serveur domotique devant m’alerter par SMS d’un incident survenu se connecte en HTTP au serveur PAW. En le contactant sur la page dédiée, il lui communique le numéro de téléphone du destinataire ainsi que le message à transmettre. PAW prend alors relai et effectue l’envoi du SMS au numéro de téléphone. Voyons comment faire.
Le script du jour apporte les spécificités suivantes:
- Pouvoir être appelé par une simple requête HTTP
- Pouvoir passer en paramètre le numéro de téléphone à appeler
- Pouvoir passer en paramètre le message à transmettre
Pour obtenir le service attendu encore une fois il suffit de placer le script sur le serveur et le tour est joué.
Voici le script que je vous propose:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>Envoi de SMS</title> </head> <body> <h1>Envoi de SMS</h1> <bsh> //déclarations import de.fun2code.android.pawserver.util.*; //récupération des paramètre d'entrée numero = parameters.get("numero"); message = parameters.get("message"); //tests rudimentaires des paramètres if(numero != null && message != null) { sendRes = SmsUtil.sendSms(numero, message); if(sendRes) { print("<p><b><font color='green'>Message envoyé à " + numero + "</font></b></p>"); } else { print("<p><<b><font color='red'>Message en erreur pour " + numero + "</font></b></p>"); } } </bsh> <h3>Paramètres</h3> <p> La page prend en paramètre d'entrée les éléments suivants:<br> <ul> <li>numero : Le numéro de téléphone cible</li> <li>message : Le texte du SMS</li> </ul> </p> <p> <h3>Texte du message envoyé:</h3> <bsh>$$.print(message); </bsh> </p> </body> </hmtl>
L’installation se fait de la même manière que pour le script concernant la reconnaissance vocale. Le prérequis est bien entendu d’avoir installé au préalable le serveur PAW sur votre téléphone Android comme présenté dans le précédent article:
- Télécharger le code précédent et le sauvegarder le sur votre disque dur dans un fichier appelé : “sms.xhtml”
- Se connecter au serveur PAW.
- Accéder au gestionnaire de fichiers : Menu Media->File manager
- Dans le répertoire /sdcard/paw/html de votre téléphone créer le répertoire “actions” s’il n’existe pas encore
- Indiquer l’endroit de votre disque dur où se trouve le script à uploader sur le serveur PAW en cliquant sur “Parcourir”.
- Sélectionner le fichier “sms.xhtml” et cliquer sur “Open”.
- Effectuer l’upload en cliquant sur “Upload”.
- Le message suivant vous confirme le chargement du script sur le serveur.
Il ne vous reste plus qu’à renseigner l’URL adéquate dans un scénario pour une Zibase ou bien dans un périphérique HTTP sur un serveur eedomus.
L’URL à renseigner sera de la forme:
http://192.168.0.10:8080/actions/sms.xhtml?numero=0602030405&message=ceci%20est%20mon%20message
Pensez à modifier “192.168.0.10” par l’adresse IP de votre serveur PAW et “0602030405” par le numéro de téléphone du destinataire du SMS. Le contenu du message sera à préciser dans le paramètre “message”.
Pratique et simple, ce script est une alternative à SMS Gateway dont nous avons déjà parlé il y a quelques mois. Il permet à tout système pouvant communiquer en HTTP d’envoyer des SMS.
Ce script permet également faire rentrer votre prise Orange MyPlug dans votre système domotique en lui envoyant un “ON” ou bien un “OFF” par SM. Pour cela il faut d’abord créer un actionneur HTTP dans votre environnement eedomus et lui affecter 2 valeurs, l’une pour ON et l’autre pour OFF.
Comme le montre la vidéo ci dessous voici le résultat de l’association d’une prise MyPlug et d’une box domotique eedomus. Le tout est piloté par l’application dédiée de l’eedomus.
Bonjour,
Très intéressant, je viens de tester avec succès cette solution. Existe t’il a votre avis la possibilité d’intercepter les sms entrants pour qu’ils soient passés à un script ?
Oui c’est possible. Dans la documentation lié au développement autour de PAW on parle de cela. Je n’ai pas encore travaillé là dessus. Dès que j’aurais vu comment ça marche, je pense qu’il y aura un nouvel article. 😉
Ok, merci.
Je vais regarder de mon coté, si j’y arrive, je vous envoie mes exemples.
Ok avec plaisir.
Bonjour Hervé,
J ai testé tous vos articles sur PAW et du coup j ai acheté un mobile Anroid dédié à ces taches en complément de la box eedomus tout cela fonctionne vraiment trés bien et c est relativement facile à metre en oeuvre.Du coup il ne manque plus que de faire décoder les SMS par paw et les transformer en requete http pour activer un périphérique via l api eedomus.
Bonjour Daniel,
La réception des SMS est en cours… 😉
Bonjour Hervé,
merci pour votre réponse je suis impatient.
Superbe travail tout au long des articles sur Abavala.
c est un site de référence !
Bonjour Daniel,
Ça avance, ça avance car je sens la pression qui monte! 😉
Je n’avais pas encore testé….. tout simplement génial !!!!!
MERCI et bonne continuation.
Je t’en prie! Fais-en bon usage.
Super application en complément de mon Eedomus…
Et les tutos, extras! merci
J’ai vu qu’il était possible de lancer une application android depuis le serveur paw.
Est il possible de la lancer via une requette http?
Merci d’avance
Si c’est possible de lancer une application android depuis PAW, ça ne doit pas être trop compliqué de l’enrober d’une script permettant de l’appeler via une requête http. Je n’ai pas trop regardé ce côté. Ce serait pour quel besoin?
Bonsoir Hervé
J’ai cherché,mais j’ai rien vu là dessus !
A savoir que je ne suis pas un dieu de l’informatique et des codes! 🙂
Si tu as un moment, je veux bien un peu d’aide…je souhaite lancer ponctuellement une appli android qui se connecte à mon onduleur PV et envoie les données automatiquement vers PVoutput.(des fois cette application se coupe toute seule, j’aimerais donc pouvoir la relancer à distance quand je ne suis pas là ! )
En te remerciant, d’avance…
Je relance…on ne sait jamais!…;-)
Bonsoir et merci pour cette documentation sur l’utilisation de Paw.
Je l’utilise avec une box HC2 de Fibaro et cela fonctionne avec un module virtuel dans la mesure où l’on envoie la ligne de commande http au format string… mais gros inconvénient on ne peut inclure une variable.
J’ai donc essayé en LUA, mais cela ne fonctionne pas. J’ai posté sur un forum français, mais pas de réponse (et je ne maîtrise pas l’anglais pour participer au forum de fibaro)
Voici le code LUA (sans utilisation de variable pour l’instant)… et merci par avance !
–[[
%% properties
%% globals
–]]
HC2 = Net.FHttp(“192.168.1.32”,8080)
response = HC2:GET(“/actions/sms.xhtml?numero=0699999999&message=FIBARO%20MESSAGE%20DE%20TEST”)
J’ai la réponse à ma question précédente : apparemment un bug du code Lua de Fibaro, qui devrait être corrigé.
Sur le forum de Fibaro, on trouve une solution de @Krikroff avec un addon
Cordialement
Bonsoir,
Petit déterrage car je suis en train de tester PAW qui semble correspondre à mon besoin.
Pensez-vous qu’il soit possible d’envoyer cette requette HTTP depuis une machine située hors du LAN ? (je souhaiterais avoir des notifications pour une machine située hors de chez moi)
Cordialement
Bonjour,
J’ai installé un Samsung Galaxy SII sur un serveur TSE et j’ai installé Paw Server. Tout est configuré comme vous l’indiquez.
J’ai créé et importé le fichier sms.xhtml dans le répertoire que j’ai créé sous /sdcard/paw/html/actions/.
J’ai développé des logiciels sous Access 2007 en VBA avec des tables SQL Server. Je veux pouvoir envoyer des SMS via l’URL mais cela ne fonctionne pas.
Actuellement l’hébergeur de mon site internet ma communiqué une URL que j’utilise pour envoyer des SMS et cela fonctionne sauf que cela me coûte cher.
Mon script est le suivant :
Public Function Test_SendSMS(ByVal SMS_Numero As String, ByVal SMS_Message As String, Optional ByVal SMS_CoupeA160Characteres As Boolean = False)
On Error Resume Next
Dim SMS_URL As String, SMS_MessageEncode As String
Dim http As MSXML2.ServerXMLHTTP
If SMS_CoupeA160Characteres = True Then
SMS_MessageEncode = URLEncode(OteAccents(Left$(Replace(Replace(SMS_Message, vbCrLf, “. “), “/”, “-“), 160)))
Else
SMS_MessageEncode = URLEncode(OteAccents(Replace(Replace(SMS_Message, vbCrLf, “. “), “/”, “-“)))
End If
If AJC_Nz(Len(OteAccents(Replace(Replace(SMS_Message, vbCrLf, “. “), “/”, “-“))), 0 > 0) Then
SMS_URL = “http://PawAdresseIP:8080/actions/sms.xhtml?numero=” & SMS_Numero & “&message=” & SMS_MessageEncode
Set http = New MSXML2.ServerXMLHTTP
http.Open “POST”, SMS_URL, False
http.send
‘ En cas de réussite, le code renvoyé est 200
If (http.Status = 200) Then
‘ Afficher la réponse du serveur dans la fenêtre Exécution
SendSMS_AJC_ReponseLong = http.responseText
If (http.responseText = 1) Then
SendSMS_AJC_ReponseTexte = “Réponse HTTP : ” & http.StatusText & ” le SMS a été envoyé.”
ElseIf (http.responseText = 0) Then
SendSMS_AJC_ReponseTexte = “Réponse HTTP : ” & http.StatusText & ” – erreur lors de l’envoi du SMS.”
ElseIf (http.responseText = -1) Then
SendSMS_AJC_ReponseTexte = “Réponse HTTP : ” & http.StatusText & ” – problème d’identification au WebService.”
Else
SendSMS_AJC_ReponseTexte = “Réponse HTTP : ” & http.StatusText & ” – aucune information communiquée.”
End If
Else
SendSMS_AJC_ReponseTexte = “Réponse HTTP sur l’Erreur : ” & http.Status & ” – ” & http.StatusText
End If
Set http = Nothing
End If
End Function
Le problème est que cela ne fonctionne pas.
Peux-tu me donner un coup de main ?
Je t’en remercie à l’avance.
JCL
Bonjour,
Désolé, je ne connais pas trop VBA et n’ai pas Access 2007. Peut-être d’autres lecteurs pourront t’aider?
Le principe est assez simple. Cela ressemble à du VB.
Je pense que le script sms.HTML ne fonctionne pas!
Quelqu’un a t’il testé le script SMS.xhtml ? Il me semble qu’il ne fonctionne pas lorsque l’on veut exécuter l’irlandais sous un script vba.
J’arrive à faire fonctionner un lin URL SMS que m’a communiqué mon hébergeur mais le script sms.xhtml ne répond pas.
Quelqu’un a t’il essaye ?
Merci.
Bonjour
Je réactive ce post afin de savoir si quelqu’un a une idée pour provoquer le “raccrochage” du mobile via un script.
Je m’explique, je voudrai au moment du déclenchement de mon alarme executer une appel vocal sur un numéro paramétré afin d’être prévenu de l’alerte car je suis dans un coin où les SMS ne passent pas.
Ca, ca marche bien avec la fonction CALL de PAW. Par contre si personne ne répond au numéro paramètré, la messagerie vocale décroche comme si c’etait une personne et la communication est enclenchée sans que je puis plus rien faire. Je crains donc pour mon forfait mobile.
C’est pour ca que je souhaiterai focer la fin de la communication du tel mobile au bout de 3mn.
Quelqu’un a t’il une idée ou connaitrait la fonction PAW qui va bien ?
bonjour,
j’essaye d’installer paw depuis quelque jours mais j’obtiens ce code erreur
Got the error: Not Found
while trying to obtain /actions/sms.xhtml
pourtant j’ai verifier 3 fois j’ai bien suivis le tuto a la lettre, y a t’il une suptilité que j’aurai zappé? car je ne suis pas balaise en informatique,
merci
Mickaël
Vérifie que le fichier action est bien au bon endroit, dans html.
J’ai eu la meme erreur car je l’avais placé un cran plus haut …
Ça fonctionne bien maintenant.