Envoi de SMS via freemobile

Vous le savez déjà certainement, Free Mobile propose une nouvelle option permettant l’envoi automatique de SMS sur votre portable muni d’une SIM Free Mobile.
Il existe déjà pas mal de sites décrivant les modalités pour mettre en œuvre ce service. Si vous ne savez pas de quoi je parle, prenez 5 minutes pour lire les articles ici et .

L’essentiel n’est pas là.

Ce petit script python, vous permettra d’envoyer des sms à partir de votre rapsberry.

#!/usr/bin/python
# -*-coding:Utf-8 -*
# José - Juin 2014

import urllib2
import sys

user = 'identifiant_free_mobile'
texte = 'texte_du_sms'
pas = 'password'
url = 'https://smsapi.free-mobile.fr/sendmsg?&user='+user+'&pass='+pas+'&msg='+texte

req = urllib2.Request(url)
try:
  reponse = urllib2.urlopen(req)

except IOError, e:
  if hasattr(e,'code'):
    if e.code == 400:
        print 'Un des paramètres obligatoires est manquant.'
    if e.code == 402:
        print 'Trop de SMS ont été envoyés en trop peu de temps.'
    if e.code == 403:
        print 'Le service n’est pas activé sur l’espace abonné, ou login / clé incorrect.'
    if e.code == 500:
        print 'Erreur côté serveur. Veuillez réessayez ultérieurement.'

print 'Le SMS a été envoyé sur votre mobile.'
sms.py

L’exemple suivant décrit l’envoi d’un sms automatique si la température de la boite de dérivation de la cuve est supérieure à 40°C. Plutôt que d’inclure le script d’envoi de sms directement dans celui qui relève les températures, l’idée est de transmettre les données à envoyer à un script dédié.

#!/usr/bin/python
# -*-coding:Utf-8 -*

import sys

tfile = open("/sys/bus/w1/devices/28-0000049d7894/w1_slave")
text = tfile.read()
tfile.close()
secondline = text.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
temperature = temperature / 1000

if temperature > 40:
 sys.argv='La temperature du boitier est de '+str(temperature)+' degres.'
 execfile("sms.py")
verif_tech.py

La variable sys.argv récupère le texte et la valeur de la température puis la ligne suivante lance le script sms.py.

#!/usr/bin/python
# -*-coding:Utf-8 -*
# José - Juin 2014

import urllib2
import sys

user = 'identifiant_free_mobile'
texte = sys.argv
pas = 'password'
url = 'https://smsapi.free-mobile.fr/sendmsg?&user='+user+'&pass='+pas+'&msg='+texte

req = urllib2.Request(url)
try:
  reponse = urllib2.urlopen(req)

except IOError, e:
  if hasattr(e,'code'):
    if e.code == 400:
        print 'Un des paramètres obligatoires est manquant.'
    if e.code == 402:
        print 'Trop de SMS ont été envoyés en trop peu de temps.'
    if e.code == 403:
        print 'Le service n’est pas activé sur l’espace abonné, ou login / clé incorrect.'
    if e.code == 500:
        print 'Erreur côté serveur. Veuillez réessayez ultérieurement.'

print 'Le SMS a été envoyé sur votre mobile.'

Regardez bien, la variable texte se voit attribuer la valeur transmise par l’autre script.
Bon comme d’hab, le code peut être amélioré mais dans le fond cela fonctionne bien.