#!/usr/bin/perl -w # program reads messages from "sms-inbox"-folder and handles them when # necessary my $inbox = "/var/gsm/in"; my $handled = "/var/gsm/in.handled/"; my $file=""; my $sendsms = "/usr/local/bin/sendsms.pl"; my $remove=0; foreach $file ( < "$inbox/*.txt" > ) { my $sender=""; my $remove=0; open FILE,"<$file" || print "Cannot open file ($file): $!"; while () { if (/Sender:/) { s/.*Sender:/Sender:/; ($tmp,$sender,@tmp) = split (" ",$_); chomp($sender); $sender =~ s/\+//g; $sender =~ s/ //g; } if (/^SAUNA/) { #saunan ohjausdataa ... &sauna($sender,$_); $remove=1; } } close FILE; if ($remove == 1) { `mv $file $handled`; } } sub sendsms { # sendsms ($number, $text) open SMS, "| $sendsms" || die "Cannot open sendsms: $!"; print SMS "NUMBER: $_[0]\n"; print SMS "$_[1]"; close SMS; } sub sauna { # sauna($sender, $line); my $sender = $_[0]; my $line = $_[1]; if ($sender eq "358407318702" || $sender eq "358405283887") { # authorized to ask and control if ($line =~ /TILA/) { # saunan tilatieto my $text = `tail -2 /var/log/temperature|sed -e 's/Sensor 1/Ulkona/'|sed -e 's/Sensor 0/Saunassa/'`; $sender =~ s/358/0/; &sendsms($sender,$text); } } }