Sida 1 av 1

behöver perl hjälp

Postat: 12 mar 2011, 00:25
av Futei
har precis börjat med perl istället för bash och kört fast ganska dir =)

Kod: Markera allt

#!/usr/bin/perl
use DBI;

# MYSQL INFO
$host = "localhost";
$database = "1wire";
$table = "sensor_readings";
$user = "";
$pw = "";

# Connect to SQL with Perl
$dbh = DBI->connect("DBI:mysql:database=$database", $user, $pw);

#misc
$time = time();

#Script part, enter follow data
#&sensors("sensor id", "location", "Type", "hilarm", "lolarm");
&sensors("28.FA5CD6020000", "Sovrum", "Temp", "20", "15");
&sensors("28.BB5B70020000", "Hallen", "Temp", "35", "15");
sub sensors
{
my $value = `grep . /mnt/1wire/$_[0]/temperature`;
my $fixed = sprintf("%.2f", $value);
if($fixed > "$_[4]") { return; }
elsif($fixed < "$_[5]") { return; }
else{
$dbh->do("INSERT INTO sensor_readings(timestamp,sensor,data,type) VALUES($time, '$_[1]', $fixed ,'$_[2]')");
}
}
fungerar inge bra, eller tar jag bort, IF, elsif och else statements och kör bara inserten in i DB så fungerar det klockrent. men jag skulle vilja att den inte matade in värdet i mysql om det går över eller under vissa värden för då är dom antagligen felaktiga.

Re: behöver perl hjälp

Postat: 12 mar 2011, 00:31
av daromer
Nu kan jag inte perl i huvudet. Kör ju nästan allt i php istället.

Men vad för värden har $_[4] och $_[5] ?

Re: behöver perl hjälp

Postat: 12 mar 2011, 00:47
av Futei
daromer skrev:Nu kan jag inte perl i huvudet. Kör ju nästan allt i php istället.

Men vad för värden har $_[4] och $_[5] ?

Kod: Markera allt

&sensors("28.FA5CD6020000", "Sovrum", "Temp", "20", "15");
&sensors("28.BB5B70020000", "Hallen", "Temp", "35", "15");
bara där hittade du felet åt mig, såg det inte förräns nu =) ÖL scriptning ftw

blev en liten rättning där =) 5->4 och 4->3
$_[4] = 15
S_[3] = 20

Re: behöver perl hjälp

Postat: 12 mar 2011, 00:48
av daromer
Var lite det ja trodde :) Eller mer jag gissade på att felet satt i dem. Visste bara inte va du hade för värden i dem :lol:

Re: behöver perl hjälp

Postat: 12 mar 2011, 00:55
av Futei
daromer skrev:Var lite det ja trodde :) Eller mer jag gissade på att felet satt i dem. Visste bara inte va du hade för värden i dem :lol:
frågan är ju den, ska man ta med dom dåliga värderna in i sql ändå fast bara lägga till en column till som heter typ larm och innehåller 0 eller 1.

sen då man extraherar informationen från SQL så kan man ju välja att plocka ut all information utom dom som har en 1:a i larm columnen

Re: behöver perl hjälp

Postat: 12 mar 2011, 01:18
av CirruZZ
Det är ju mer en fråga om vad som menas med "dålig" värden. Värden som är helt felaktiga, säg "85-felet" för tempsensorerna, då hade jag skippat dom helt, lika så om du får spikar som är felaktiga. Jag hade istället skapat en egen logg tabell där du stoppar in felaktiga värden, så att du kan ha det som referens och felsökning. Det kommer innebära att du dessutom har korrekta värden i din huvud tabell.

Re: behöver perl hjälp

Postat: 12 mar 2011, 01:27
av Futei
CirruZZ skrev:Det är ju mer en fråga om vad som menas med "dålig" värden. Värden som är helt felaktiga, säg "85-felet" för tempsensorerna, då hade jag skippat dom helt, lika så om du får spikar som är felaktiga. Jag hade istället skapat en egen logg tabell där du stoppar in felaktiga värden, så att du kan ha det som referens och felsökning. Det kommer innebära att du dessutom har korrekta värden i din huvud tabell.
atm så loggar jag bara 2 inomhus temperaturer och dessa två borde ligga mellan 18-35 grader, givetvis kommer det komma gånger då man kanske överstiger (mer eller mindre solljus på sensorn gör ju att värdet blir missvisande, sensorn lär tycka att det är varmare än vad det är i rummet) den nedre gränsen vete gudarna vad jag ska till ännu =)

men att logga dom "dåliga" värderna kan ju vara bra om man vill plocka ut dom från databasen samt även kanske felsöka vid ett senare tillfälle.

btw, mail i perl ? tänkte om man fått ett "dåligt" värde
sitter och söker lite i fyllan, kanske är någon som har det i huvudet ? =)

Re: behöver perl hjälp

Postat: 12 mar 2011, 02:14
av daromer
Jag tycker dina värden för felaktiga temperaturer är galna. De enda felaktiga som egentligen finns är som sagt 85 när sensorn inte är initierad. (Ivf det enda som jag inte matar in och har hitils igna galna värden i databasen)

Resten ska du mata in på ett eller annat sätt. Det kan ju faktiskt vara 30 grader i ett rum...

Jag mailar när det blir för många fel. Hade även sms funktion. Dock bara i PHP och Bash.