Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- use strict;
- use FileHandle;
- use Email::MIME;
- use MIME::Base64;
- use Authen::SASL;
- use Email::Sender::Simple qw(sendmail);
- use Email::Sender::Transport::SMTP ();
- use Email::Simple ();
- use Email::Simple::Creator ();
- use Email::Send::SMTP::Gmail;
- use DateTime;
- use Switch;
- use Data::Dumper qw(Dumper);
- $ENV{TZ} = ':/usr/share/zoneinfo/Canada/Pacific';
- my $subclient = "/usr/bin/mosquitto_sub -v -t sensor/#";
- my $sensor_type;
- my $sensor_value;
- my $sensor_name;
- my $sttime=0;
- my $entime;
- my $elapse;
- open(SUB, "$subclient|");
- SUB->autoflush(1);
- while (my $line = <SUB>) {
- print $line;
- my $str = $line;
- #my @words = split / /, $str;
- #print Dumper \@words;
- #print Dumper['sensor/moisture'];
- ($sensor_name, $sensor_type) = split '/', $line;
- ($sensor_type, $sensor_value) = split ' ', $sensor_type;
- $sttime++;
- print "Sensor type is" . $sensor_type;
- print "Sensor value is" . $sensor_value;
- print "rrdtool update /var/www/html/$sensor_type.rrd N:$sensor_value";
- if (($sensor_type eq 'temperature_indoor') && ($sensor_value>34) ||($sensor_type eq 'water') && ($sensor_value<1))
- {
- print "Sending email...triggered";
- my $smtpserver = 's.com';
- my $smtpport = 587;
- my $smtpuser = '[email protected]';
- my $smtppassword = 's';
- my $transport = Email::Sender::Transport::SMTP->new({
- host => $smtpserver,
- port => $smtpport,
- sasl_username => $smtpuser,
- sasl_password => $smtppassword,
- });
- my $email = Email::Simple->create(
- header => [
- To => 'myemail',
- From => 'myemail',
- Subject => 'Sensor alert!',
- ],
- body => $sensor_type . " Sensor reported:" . $ sensor_value,
- );
- if ($sttime > 6000) {
- $sttime = 0;
- sendmail($email, { transport => $transport });
- print "Email sent";
- }
- }
- system("rrdtool update /var/www/html/$sensor_type.rrd N:$sensor_value");
- }
Add Comment
Please, Sign In to add comment