Sida 1 av 1

Läsa in data till RRD

Postat: 05 feb 2014, 20:44
av joblo
Nu kommer jag och ber om hjälp och råd igen. (Raspbian wheezy, owfs och RRDTool)
I RRDTool How To finns en liten kodsnutt för att läsa in tempdata från EN sensor till EN RRD fil.

Kod: Markera allt

#!/bin/bash

OutsideTempSensor="10.51777C010800"
RRDDataDirectory="/home/anders/rrddata/"
RRDDataFile="outside_temp.rrd"

# Get temps form OWFS
OutsideTemp=`cat /mnt/1wire/$OutsideTempSensor/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`

#Update RRD database
rrdtool update $RRDDataDirectory$RRDDataFile N:$OutsideTemp
echo $OutsideTemp
Nu funderar jag på hur man kan utveckla den på något bra sätt. Jag hade tänkt mig att på lämpligt sätt läsa in sensor info i en array (el. snarare en matris) för att sedan loopa igenom detta med minimalt med kod. Så här tänkte jag:

# 1-WIRE ENHETER
# Rökgas temp DS: SmokeTemp RRD: SmokeTemp.rrd ID: 30.164FB5120000 Type: "/TypeK"
# Pann temp DS: BoilerTemp RRD: BoilerTemp.rrd ID: 28.xxxxxxxxxxxx Type: Null
# Panna-in temp DS: BoilerInTemp RRD: BoilerInTemp.rrd ID: 28.xxxxxxxxxxxx Type: Null
# Ack-retur temp DS: AckReturnTemp RRD: AckReturnTemp.rrd ID: 28.xxxxxxxxxxxx Type: Null
# Radiator retur temp DS: RadiatorInTemp RRD: RadiatorInTemp.rrd ID: 28.xxxxxxxxxxxx Type: Null
# Radiator fram temp DS: RadiatorOutTemp RRD: RadiatorOutTemp.rrd ID: 28.xxxxxxxxxxxx Type: Null
# Acktank 1 (översta) DS: Ack1Temp RRD: Ack1Temp.rrd ID: 28.xxxxxxxxxxxx Type: Null
# Acktank 2 DS: Ack2Temp RRD: Ack2Temp.rrd ID: 28.xxxxxxxxxxxx Type: Null
# Acktank 3 DS: Ack3Temp RRD: Ack3Temp.rrd ID: 28.xxxxxxxxxxxx Type: Null
# Acktank 4 (nedersta) DS: Ack4Temp RRD: Ack4Temp.rrd ID: 28.xxxxxxxxxxxx Type: Null
# i="Räknare för loop (antal temp sensorer)
(Rökgasgivaren är den enda jag just nu har det exakta Id numret till)
Men nu lästa jag på nätet att bash inte hanterar matriser.
jag vet att detta borde vara väldigt basic men snälla, hjälp en VÄLDIGT ringrostig programmerare på traven; måste jag gå över till perl (som jag inte heller behärskar) eller hur fixa på galant sätt?

Re: Läsa in data till RRD

Postat: 08 feb 2014, 21:03
av joblo
Ingen som vet??? Åtminstone en länk till någon bra site att hitta bra exempel kod?
De 1wire exempel som jag hittar behandlar bara EN sensor, hur gör ni för att läsa in flera? De verkar lite omständligt att skriva en ny kodsnutt för varje sensor.

Re: Läsa in data till RRD

Postat: 08 feb 2014, 23:43
av lennart
Jag har ett python-script som läser in värden från flera givare till en tabell.
Det läser in givarnas identitet från en fil som går att ändra under drift.
Jag gör en tvåstegsöversättning från id till funktion. Först går jag från id till ett löpnummer,
sedan numret till ett namn. Kanske onödigt, men tanken var att det skulle vara lättare att ändra
om en givare gick sönder. Lättare att komma ihåg ett kort nummer än ett långt id dock...
Finns uppladdat i denna tråd:

http://www.temperatur.nu/forum/post21883.html#p21883

Antingen kan man justera scriptet, eller också skriva om till perl.

Re: Läsa in data till RRD

Postat: 17 feb 2014, 16:12
av joblo
Jag tragglar mig vidare så sakteliga och börjar nu få till lite grafer. Visserligen tittar jag på dem just nu via VNC men det är en bit på väg i alla fall, webgränssnitt får komma senare (om jag inte råkar snubbla över lämplig kod att klippa-klistra).
Nu tänkte jag att det skulle vara smutt att läsa in solvärmestyrningens data (Steca TR 0603mc) via USB till RRD. Är det möjligen någon som har en lämplig kodsnutt att dela med sig av som kan funka? Så här kan data se ut:

Kod: Markera allt

2012-02-11 23:08:34;3;38;1;-1;73;Err;15;0;0;0;36;1;0;3772;32767;EU;2;TR0603mc;15;0;0;;
2012-02-11 23:09:34;3;38;1;-1;73;Err;15;0;0;0;36;1;0;3772;32767;EU;2;TR0603mc;15;0;0;;
2012-02-11 23:10:34;3;38;1;-1;73;Err;15;0;0;0;36;1;0;3772;32767;EU;2;TR0603mc;15;0;0;
Dvs. en gång i minuten, men till RRD räcker det om jag loggar var 2.5te minut som för alla andra mätvärden.

I grafen nedan kan vi se att SOLEN TITTAT FRAM FÖR FÖRSTA GÅNGEN PÅ LÄNGE och börjar bidra med värme längst ner i ack tanken! 8)

Re: Läsa in data till RRD

Postat: 18 feb 2014, 08:09
av larky
Vilken siffra är det som är temperaturen i den strängen?
2012-02-11 23:10:34;3;38;1;-1;73;Err;15;0;0;0;36;1;0;3772;32767;EU;2;TR0603mc;15;0;0;

Re: Läsa in data till RRD

Postat: 18 feb 2014, 10:31
av joblo
larky skrev:Vilken siffra är det som är temperaturen i den strängen?
2012-02-11 23:10:34;3;38;1;-1;73;Err;15;;00;0;36;1;0;3772;32767;EU;2;TR0603mc;15;0;0;
Det är 7st temperturer (Tds kommer jag inte ihåg vad det är), flöde, effekt, och sedan Relä-värdena (pumpfart (PWM), växelventil på/av, poolpump på/av och larm).
DATE & TIME;T1[C];T2[C];T3[C];T4[C];T5[C];T6[C];Tds[C];V'[l/min];P[kW];R1[%];R2[%];R3[%];R![%];?;?;?;?;TR0603mc;?;?;?;
Till sist är det några värden där jag just nu inte vet vad alla är men som kanske kan vara av intresse.

Re: Läsa in data till RRD

Postat: 18 feb 2014, 16:48
av larky
läs sista raden med tail -1, välj fält med awk -F ';' {'print $2'}

typ,
tail -1 log.txt|awk -F ';' {'print $2'}
vilket borde ge T1.

Öka $2 till lämpligt värde