#!/opt/perl/bin/perl # # SmartApron - SMS message to mp3 playback mapper # (for Mac OSX: requires perl and mpg123 player) # A. Schiffler, 2004 # use Device::Gsm; print "Apron GSM Interface\n\n\n"; # Configure mp3 player $player = "/usr/local/bin/mpg123 -q "; # Connect to phone (no pin) print "Connecting to GSM phone ...\n"; $gsm = new Device::Gsm( port => '/dev/tty.usbserial0', pin => '' ); if( $gsm->connect() ) { print "Connected!\n"; } else { print "Sorry, no connection with gsm phone on serial port!\n"; exit; } # Register to GSM network (you must supply PIN number in above new() call) $gsm->register(); print "Registered to GSM network\n"; # Get some info $do_info=0; if ($do_info) { $man_name = $gsm->manufacturer(); print "Phone manufacturer: $man_name\n"; $model = $gsm->model(); print "Phone model: $model\n"; $imei = $gsm->imei(); print "IMEI: $imei\n"; $level = $gsm->signal_quality(); print "Signal quality: $level db\n"; } # Clean up print "Deleting messages ...\n"; $n=-1; while ($n > -1) { if ( $gsm->delete_sms($n) ) { print "Deleted message $n!\n"; } $n--; } # Message polling loop $in_loop=1; while ($in_loop) { # Get list of Device::Gsm::Sms message objects print "Checking messages ...\n"; @messages = $gsm->messages(); $num_messages = $#messages + 1; print "$num_messages messages\n"; my $smessages = scalar @messages; if( $smessages ) { print "You have messages!\n" ; my $n = 0; foreach( @messages ) { my $sms = $_; next unless defined $sms; $n++; print '-' x 60, "\n", "MESSAGE $n\n"; print 'Type ',($sms->type() eq Device::Gsm::Sms::SMS_SUBMIT ? 'SUBMIT' : 'DELIVER'), "\n"; print 'Status ', $sms->status(), "\n"; print 'From ', $sms->sender(), "\n"; print 'To ', $sms->recipient(), "\n"; print 'Text [', $sms->text(), "]\n"; print '-' x 60, "\n\n"; # Play mp3 based on sms message text print "Playing audio ...\n"; system ($player . $sms->text() . ".mp3"); } print "Deleting messages ...\n"; while ($n > 0) { if ( $gsm->delete_sms($n) ) { print "Deleted message $n!\n"; } $n--; } } else { print "No messages!\n"; } } print "Bye\n";