Sprang på nästa problem när man kör delta beräkningen.
Första värdet blir ju "värde - 0 = deltavärde", då första värdet som sparats från 1-wire räknaren är ganska högt så drunknar resten av delta värdena i en graf. Har först lite olika metoder att försöka ignorera den första raden, dock utan att lyckas. Sen slog det mig att om man sätter noll-värdet till att vara det första värdet så visar den iaf noll i delta (bättre än 345345). Men hur får jag till det?
Jag tänker mig nåt sånt här (men får det inte att funka):

kod skrev:
SET @prev_house =
SELECT
(house FROM el ORDER BY date ASC LIMIT 1);

SELECT
Date AS "date",
house-@prev_house AS "delta",
@prev_house:=house AS "house"
FROM
el
ORDER BY Date;
 
gadu^ skrev:
Sprang på nästa problem när man kör delta beräkningen.
Första värdet blir ju "värde - 0 = deltavärde", då första värdet som sparats från 1-wire räknaren är ganska högt så drunknar resten av delta värdena i en graf. Har först lite olika metoder att försöka ignorera den första raden, dock utan att lyckas. Sen slog det mig att om man sätter noll-värdet till att vara det första värdet så visar den iaf noll i delta (bättre än 345345). Men hur får jag till det?
Jag tänker mig nåt sånt här (men får det inte att funka):
Du behöver inte göra en sub-select (dvs en select med en select i) för att få fram första värdet.
Gör en SELECT INTO vilket läser ut EN rads valfria kolumner in namngivna variabler.

Eftersom det är viktigt att en SELECT INTO bara får en enda rad i sitt resultat så är "LIMIT 1" mycket bra i sammanhanget.

förslag skrev:
SELECT
house
INTO
@prev_house
FROM
el
ORDER BY date ASC
LIMIT 1;

SELECT
Date AS "date",
house-@prev_house AS "delta",
@prev_house:=house AS "house"
FROM
el
ORDER BY Date
LIMIT 2,10000;
Lägg märke till LIMIT-delen på sista raden. Den begränsar dess resultat till 10000 rader med början från rad 2. Rad 1 tas ju om hand redan i första satsen.
 
Man lär sig nån ny grej varje gång! Tack ännu en gång!
 
Skulle detta fungera?

Göra en egen RS232 > 1-wire adapter enligt denna instrunktion:
http://madmodders.se/moddningar/digitemp/index.html

För att sedan ansluta denna adaptar till datorn via en USB > RS232-omvandlare

Kommer jag att kunna läsa av värdena med t.ex. Logtemp? Eller måste den kommunicera via en "riktig" serieport?
 
Varför inte köpa ett USB till 1-wire interface direkt ?
 
Det är roligt att löda? :)
 
Rikard Ågren skrev:
Det är roligt att löda? :)
Nej? :)
Usb adaptern från Hobby Boards för 240 spänn känns säkrare. Vill man verkligen jobba med serieporten 2012..
 
Rikard Ågren skrev:
Skulle detta fungera?

Göra en egen RS232 > 1-wire adapter enligt denna instrunktion:
[länk]

För att sedan ansluta denna adaptar till datorn via en USB > RS232-omvandlare

Kommer jag att kunna läsa av värdena med t.ex. Logtemp? Eller måste den kommunicera via en "riktig" serieport?

Jag kör med den.
Funkar mycket bra med både temp och räknare...
 
gadu^ skrev:
Den 12dec beställde jag 10st DS18S20+ "samples" från Maxim-IC och dra på trissor, de dök upp idag!
Jaså det var du som tömde lagret :)
Jag lyckades bara, tror jag, beställa 2+2 S20 + B20.. Får se om dom kommer..
 
Patrik_N skrev:
Jaså det var du som tömde lagret :)
Jag lyckades bara, tror jag, beställa 2+2 S20 + B20.. Får se om dom kommer..
Det var nån gräns på samples, översteg man den så behövde nån Sales Manager godkänna ordern. Funkade för mig med godkännandet, men jag använde min jobbmail (jobbar på ett stort svenskt företag).

Sent from my E15i using Tapatalk
 
gadu^ skrev:
Det var nån gräns på samples, översteg man den så behövde nån Sales Manager godkänna ordern. Funkade för mig med godkännandet, men jag använde min jobbmail (jobbar på ett stort svenskt företag).

Sent from my E15i using Tapatalk
Jo, jag gjorde samma sak. Tog jobbmailen. Jobbar visserligen på ett mindre kommunalägt företag, men 2+2 borde jag ju kunna snylta till mig tycker jag :)
Jag har hört noll och inget sen jag la sample-ordern.
 
Patrik_N skrev:
Jo, jag gjorde samma sak. Tog jobbmailen. Jobbar visserligen på ett mindre kommunalägt företag, men 2+2 borde jag ju kunna snylta till mig tycker jag :)
Jag har hört noll och inget sen jag la sample-ordern.
Plötsligt händer det :D

Sent from my E15i using Tapatalk
 
Plötsligt hände det :)
patrik@owfs:~/bin$ /bin/bash get_temp.sh
0.88
 
Grattis! :)

Sent from my E15i using Tapatalk
 
Nya funderingar. Tänkte lyxa till det lite o köra php, och för att kunna göra annat i php som jag är mer bekant med :)
.
Får följande resultat:
Array ( [xsize] => 697 [ysize] => 301 [calcpr] => Array ( ) ) Array ( [xsize] => 697 [ysize] => 301 [calcpr] => Array ( ) )

Bör väl inte vara tomt i arrayet. RRDn är ok eftersom perlscriptet jag kör på cron gör fina grafer.

Koden:

<?php

$rrd = "/home/patrik/rrddata/outside_temp.rrd"; // S�kv�gen till rrd-databasen.

$max_month = date('m'); // Max antal m�nader att r�kna upp. Nuvarande m�nad anges som max.
$year = date('Y'); // Vilket �r. Nuvarande �r anges. Om 2010 anges s� �ndras max_month till 12 f�r att f� hela �ret.

$width = "600";
$height = "200";

$now = date('Y-m-d');

for ($i = 1; $i <= $max_month; $i++) { //k�r loopen tills nuvarande m�nad har r�knats upp.
$month = $i; // Vilken m�nad. (Skapas av loopen)
$starttime1 = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year)); // datum i lite mer l�sbart format
$endtime1 = date('Y-m-t', mktime(0, 0, 0, $month, 1, $year)); // datum i lite mer l�sbart format
$starttime = strtotime(date('Y-m-d', mktime(0, 0, 0, $month, 1, $year))); // Startdatum i Unixtid
$endtime = strtotime(date('Y-m-t', mktime(0, 0, 0, $month, 1, $year))); // Slutdatum i Unixtid
$filename = "temp_" . $starttime1 . "_" . $endtime1 . ".png";

$opts = array(
"--imgformat", "PNG",
"--start", "$starttime",
"--end", "$endtime",
"--width", "$width",
"--height", "$height",
"--slope-mode",
"--title",
"Temp $starttime1 till $endtime1",
"--vertical-label", "°C",
"--lower", "0",
"DEF:temp=$rrd:surprised:utsidetemp:AVERAGE",
"LINE1:temp#000000:Ute",
"GPRINT:temp:LAST:Temperatur %0.2lf\\n",
"GPRINT:temp:MIN:Min\: %0.2lf%s",
"GPRINT:temp:AVERAGE:Medel\: %0.2lf%s",
"GPRINT:temp:MAX:Max\: %0.2lf%s\\n",
"COMMENT:Tid\: $now"
);
$ret = rrd_graph($filename, $opts, count($opts));
if ($ret === false) {
$err = rrd_error();
echo "rrd_graph() FEL: $err\n";
}
else {
print_r($ret);
}

}
?>
 
Redigerat:
Vi vill skicka notiser för ämnen du bevakar och händelser som berör dig.