A necessidade de criar um serviço para receber mensagens de telemóvel (SMS) surgiu, um ex-colega aqui no trabalho já tinha andado a “inventar” à uns tempos com isto, eu sabia que ele tinha posto a coisa a andar com o huawei e220 e pelos vistos funciona com mais modelos para além deste, sendo para isto necessário estabelecer a porta de ligação para o dispositivo.
Um tutorial à maneira e um script de perl não muito perfeito para testar a coisa…
#!/usr/bin/perl
use Device::Modem;
# Validade do numero
sub autorizado {
my ($numero) = @_;
open( numeros, “< numeros.txt”);
@contactos = <numeros>;
foreach $tlf (@contactos){
chomp($tlf);
# debug code
# print ” — “.$tlf . ” ” . $numero . “\n”;
if ( $tlf == $numero ) {
return true;
}
}
return false;
}
$modem = new Device::Modem( port => ‘/dev/ttyUSB0′ );
if ( $modem->connect( baudrate => 115200 ) ) {
} else {
exit 0;
}
$modem->echo (0);
if ( $modem->atsend( ‘AT+CMGL=”all”‘ . Device::Modem::CR )== 1 ) {
# done ;
}
$an = $modem->answer( );
@a = split(/\n/, $an);
$k = $hit = 0;
foreach $answer (@a){
if ( ($answer =~ /.READ./)) {
($cm, $linha) = split(/:/, $answer);
($id,undef, $number, undef, $data) = split(/,/, $linha);
$number =~ s/\”//gi;
$hit = 1;
}else{
if($hit == 1 ) {
$bool = autorizado($number);
if ( $bool eq true ) {
print “numero = “.$number.” msg = “.$answer.”\n”;
$hit = 0;
}
}
}
}
$modem->disconnect();
Ficou a funcionar incluindo com verificação de números o que permite usar respostas automáticas a mensagens.
Nota: Apenas um programa pode usar a porta a cada execução a comunicação com o equipamento é assíncrona e a lista de numeros.txt tem de conter o +351 antes do número ou altera-se o código.
Um breve teste que resultou em algo produtivo viva a class do cpan Device::Modem

1 comment
Comments feed for this article
Agosto 23, 2008 às 10:27 am
huawei e220 perl smstools « Netcrash
[...] jiba-jaba | Tags: e220, huawei, linux, minicom, perl, sms, smstools, ubuntu | Num outro artigo tinha escrito sobre o envio de sms com o huawei e220 usando a libraria do CPAN Device::Modem para [...]