[RESOLU] RS232 => SMS possible?


#1

Bonjour ,
est-il possible de récupérer une trame RS232 et de la recopier/convertir en SMS avec raspiSMS afin de l’envoyer a un numéro définit dès la réception de la trame ? Si oui par quel(s) moyen(s) ? je pense à un script (php certainement) mais je ne sais pas vraiment comment m’y prendre , auriez vous une piste ou un petit morceau de code que je pourrais exploiter ?

Merci pour votre temps et votre aide,
Jonathan


#2

Salut,

Quand je lis Script alors que ça cause de Linux et de Raspberry, je pense plus pyhon que php en fait.
En effet, les manchots se baladent toujours avec un serpent autour du cou :wink:


#3

Salut Nabla , Merci de la réponse.

Un script python serait donc plus approprier sur la Raspberry pour recevoir et convertir une trame rs232 en SMS selon toi ?
Mon problème c’est que je ne connais absolument rien a python mais si c’est vraiment le cas je vais essayer de jeter un coup d’œil par ci par la !
Merci encore!


#4

Yo,
Je pense juste que python est le langage de référence quand je pense Rpi (avec bash ensuite quand je pense Linux).
Maintenant, je ne connais en rien les protocoles RS323.
Mais il est vrai aussi que j’espérais, par mon intervention, relayer le sujet auprès de personnes plus compétentes que moi :wink:


#5

Hello,

En cherchant 2 min sur le net avec comme critères php rs232 on trouve des exemples (qui visiblement consiste faire une sorte de “proxy” tcp/ip sur le port RS232 et ainsi pouvoir y écrire/lire directement avec Php).


#6

Re,
Et, pour le fun, j’ai tenté “python rs232” dans Qwant :
http://www.varesano.net/blog/fabio/serial%20rs232%20connections%20python


#7

Merci de vos réponses ,

En fait mon Raspberry va recevoir des trames en RS232 (directement en ASCII donc pas de conversion a faire :wink:) et transmettre ce qu’il a reçu en SMS a un numéro prédéfinit . Cependant je ne sais pas quel méthode est la meilleure sachant que je travaille sur le Raspberry directement , le pc ne me sert que pour chercher sur le net et plus tard simuler des trames que j’envoie directement au pi grâce a la liaison série rs232.

<?php
$serial-> new phpSerial();
$serial->deviceSet("ttyUSB0");
$serial->confBaudRate(115200);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();

$read = $serial->readport();

system sudo gammu-smsd-inject TEXT '06XXXXXXXX' -text '$read';
?>

voila ce que j’ai dans un fichier ConvertirTrame.php qui se trouve dans le /var/www/html/RaspiSMS de mon rasp mais je sais pas si cela peut fonctionner :thinking:
Savez vous aussi si il y a une sorte de fonction similaire au RunOnReceive de gammu-smsd mais dans le sens ou lorsque je reçoit je renvoie (une sorte de SentOnReceive ou un truc comme ça ^^) et s’il est possible que cette dernière s’active dès le démarrage du pi et reste active ?

Merci de votre temps et votre aide,
Jonathan


#8

Ok je viens de créer un script python qui me permet de recevoir la trame envoyée (je l’ai testé et il fonctionne :smiley:) maintenant il faut que je rentre la commande de gammu-smsd pour envoyer un SMS seulement le hic c’est que premièrement je ne sais pas comment l’appeler, et deuxièmement je n’arrive pas a envoyer ce que je reçoit en RS232 :
j’avais cela :
echo out | gammu-smsd-inject TEXT 06XXXXXXXX
où “out” est ce que je reçoit en RS232 , mais cela ne fonctionne pas , et si j’ecrit “out” je devrait recevoir un SMS avec écrit out et ce n’est pas ce que je veux :sweat_smile:
Il faut aussi que ce script puisse se lancer sans le lui avoir demandé ( actuellement je doit fait un sudo python test.py pour le lancer)
Si vous avez des idées je suis preneur (encore et toujours dans le besoin)
Merci pour votre temps et votre aide
Jonathan


#9

J’ai résolu mon problème merci @Nabla et merci @Gpapig pour votre aide ! j’ai beau ne rien connaître de python j’ai réussi un script permettant d’envoyer ce que je reçoit en RS232 en SMS ! :grin: je met mon code juste en dessous pour ceux qui aurait un problème similaire :

#!/usr/bin/env python
import time
import serial
import gammu.smsd

smsd = gammu.smsd.SMSD('/etc/gammu-smsdrc')

import sys

ser = serial.Serial(
            port='/dev/ttyUSB0',
            baudrate=115200,
            parity=serial.PARITY_NONE,
            stopbits=serial.STOPBITS_ONE,
            bytesize=serial.EIGHTBITS
)
ser.close()
ser.open()
ser.isOpen()
print 'Enter your commands below. \r\nInsert "exit" to leave the application.'
input=1
while 1:
              if input == 'exit':
                   ser.close()
                   exit()
              else:
                       out = ''
                       time.sleep(1)
                       while ser.inWaiting() > 0:
                                     out += ser.read(1)

                       if out != '':
                                   print out
                                   message = ('Text': out, 'SMSC': {'Location': 1}, 'Number': '06XXXXXXXX'}
                                   smsd.InjectSMS([message])

Avant de passer le sujet en résolu savez vous comment puis-je amélioré ce programme pour qu’il puisse lire l’UTF8 entièrement , je m’explique : j’ai tester ceci : Alarme n°3 déclenchée . Le programme retourne alors “ValueError: Value can not be converted to unicode object” et m’affiche un carré a la place du “é” et du “°” et bien entendu le sms ne s’envoie pas du coup . Voila si vous savez comment m’aider la dessus j’en serait très reconnaissant !!
Merci pour votre temps et votre aide,
Jonathan


#10

Salut,

Facile
Tu lui dis que c’est du UTF 8 :slight_smile:

#!/usr/bin/python3
# -*- coding: utf-8 -*
(puis la suite de ton code)

Je te conseille de coder en python3 et de lancer par “python3 /home/pi/script.py” (par exemple)
++


#11

Merci Nabla ,
Le raspberry pi possède python 2.7.13 mais je ne sais pas comment le passer en python 3 , j’ai essayer ce que tu as écrit mais même problème je ne peux toujours pas lire les accents etc … Si tu as une autre piste :sweat_smile:


#12

python3 est installé en parallèle de python2
que dit
sudo apt-get install python3

Tu as bien modifié le début du code avec

#!/usr/bin/python3

Et lancé avec python3 ?


#13

oui j’ai tout fait (sauf lancer avec python3 --’) mais lorsque je lance avec python 3 bon deja il me demande des parenthèses au print soit , mais après que j’ai corrigé ça il me dit qu’il n’y a aucun module qui s’appelle gammu alors que cela fonctionnait bien sous python 2.7 mais sans ça je ne pense pas pouvoir envoyer un sms :confused:


#14

Bienvenu dans python3.
J’ai codé (travaillé du code) pour l’améliorer et le passer en python3 = nettement plus normé le bougre.
mais nettement plus intéressant de ce fait.
Essaye de coder et corriger avec geany
(et oui :
print(truc)
++


#15

Comment faire avec geany ? je ne sais pas ce que c’est et les informations que j’ai trouvé sur le net sont … relativement flou :confused:
Je viens d’installer geany sur la rasp (sudo apt-get install geany) mais lorsque je lance geany en faisant juste geany ou sudo geany ça me retourne l’erreur :
Geany: cannot open display

En tout cas merci énormément a toi @Nabla !
Jonathan


#16

Hello,

Geany est le programme par défaut de Raspbian qd tu ouvres un fichier .py
Si tu fais un double-clic sur le fichier .py, il s’ouvre avec Geany qui peut aider à corriger.
Notamment si tu exécutes le code depuis Geany lui-même.

Tu peux aussi essayer des bouts de script en les mettant dans la console après avoir lancer une instance python.
Tu lances python en faisant
python3
Ça répond
>>>
Tu essayes du code
Par exemple, hier soir, pour un autre membre du forum, j’ai essayé
import time
import os
fileName = time.strftime("%Y%m%d-%H%M%S")
os.system('raspivid -w 640 -h 480 -t 5000 -fps 24 -o "/home/pi/test/'+fileName+'".h264')
Si tu as la moindre erreur = tu le sais.

++


#17

L’erreur de mon programme reste la même :confused: "ImportError: No module named ‘gammu’ "
et la je sais vraiment pas quoi faire :sweat_smile: d’autant plus que j’essaye pas mal de chose avec python deux du style “chaine = chaine.decode(‘utf8’)” ce genre de choses :grin:
Avec python 2 je n’arrive pas a lire les accents et caractères spéciaux (ce qui me parait étrange par ailleurs :thinking:), mais avec python3 le problème est dès le début avec “l’inexistence” du module gammu qui est bien présent avec python 2.


#18

Re,
Et tu as inséré
# -*- coding: utf-8 -*
Dans ton code en python2 pour voir ?


#19

Re,
Oui mais aucun changement :confused: et c’est principalement ça que je trouve étrange .


#20

Bonjour,

Les fichiers gammu sont probablement dans la bibliothèque réservée à Python2 (/usr/lib/python2.7/ ou qq chose dans le genre). Pour faire fonctionner gammu en Python3, je pense qu’il faut installer la version de gammu pour Python3 “Python3-gammu”.
J’ai pas fait le test, à vérifier donc.

A+