sudo mkdir /usr/local/share/opennethome/
sudo nano /usr/local/share/opennethome/Read1-WireTemperature.pl
------------------------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
if(@ARGV < 1){
print "Usage: [DeviceId] [optional:quiet]\n";
}else{
my $quiet = 0;
if(@ARGV > 1 && lc($ARGV[1]) eq "quiet"){
$quiet = 1;
}
my $device = $ARGV[0];
if($quiet == 0){
print "Reading device: '" . $device . "'\n";
}
#my $sensordata = `cat /sys/bus/w1/devices/$device/w1_slave 2>&1`;
my $sensordata = `less -FX /mnt/1wire/$device/temperature`;
if($quiet == 0){
print "Device read, temperature: '$sensordata'\n";
}else{
print $sensordata;
}
}
------------------------------------------------------------
sudo chmod +x /usr/local/share/opennethome/Read1-WireTemperature.pl
sudo nano /usr/local/share/opennethome/ReadCPUTemp.pl
------------------------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
my $raw = `/opt/vc/bin/vcgencmd measure_temp`;
$raw =~ s/^\s+|\s+$//g;
#print "Raw: '" . $raw . "'\n";
my @result = split("=", $raw);
my @value = split("'", $result[1]);
my $final = $value[0];
print $final;
------------------------------------------------------------
sudo chmod +x /usr/local/share/opennethome/ReadCPUTemp.pl
#Test:
/usr/local/share/opennethome/ReadCPUTemp.pl
sudo nano /usr/local/share/opennethome/SendUPMThermometerToOpennethome.pl
------------------------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
if(@ARGV < 3){
print "Usage: [HouseCode] [DeviceCode] [Temperature] [optional:quiet]\n";
}else{
my $quiet = 0;
if(@ARGV > 3 && lc($ARGV[3]) eq "quiet"){
$quiet = 1;
}
my $houseCode = $ARGV[0];
my $deviceCode = $ARGV[1];
my $temperature = $ARGV[2];
my $k = 0.0625;
my $m = -50;
if($quiet == 0){
print "Subtract with m: " . $temperature . " - " . $m ." = " . ( $temperature - $m ) . "\n";
}
$temperature = $temperature - $m;
if($quiet == 0){
print "Divide by k: " . $temperature . " / " . $k . " = " . ( $temperature / $k ) . "\n";
}
$temperature = $temperature / $k;
my $sock = IO::Socket::INET->new(
Proto => 'udp',
PeerPort => 8005,
PeerAddr => '127.0.0.1',
) or die "Could not create socket: $!\n";
my $message = "event,UPM_Message,Direction,In,UPM.HouseCode,$houseCode,UPM.DeviceCode,$deviceCode,UPM.Primary,$temperature";
if($quiet == 0){
print "Send to server:\n";
print $message . "\n";
}
print $sock $message;
}
------------------------------------------------------------
sudo chmod +x /usr/local/share/opennethome/SendUPMThermometerToOpennethome.pl
sudo nano /usr/local/share/opennethome/SaveSensorValues.pl
------------------------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
my $temp;
my $device;
my $houseCode;
my $deviceCode;
#CPU Temperature
$houseCode = 2;
$deviceCode = 1;
$temp = `/usr/local/share/opennethome/ReadCPUTemp.pl`;
#print "CPU Temperature: '" . $cputemp . "'\n";
`/usr/local/share/opennethome/SendUPMThermometerToOpennethome.pl $houseCode $deviceCode $temp quiet`;
$device = "28.746FE0020000";
$houseCode = 1;
$deviceCode = 1;
$temp = `/usr/local/share/opennethome/Read1-WireTemperature.pl $device quiet`;
#print "One Wire Temperature: '" . $temp . "'\n";
`/usr/local/share/opennethome/SendUPMThermometerToOpennethome.pl $houseCode $deviceCode $temp quiet`;
------------------------------------------------------------
sudo chmod +x /usr/local/share/opennethome/SaveSensorValues.pl
crontab -e
# m h dom mon dow command
*/5 * * * * /usr/local/share/opennethome/SaveSensorValues.pl
Inga kommentarer:
Skicka en kommentar