Läsa in data till RRD

RRDTool är en Linuxmjukvara som kan användas för att lagra data i Round-Robin Databaser för att sedan generera grafer utifrån den lagrade datan.
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
joblo
Gillar hemautomation
Inlägg: 49
Blev medlem: 30 jan 2014, 14:07
Ort: Sverige

Läsa in data till RRD

Inlägg 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?
joblo
Gillar hemautomation
Inlägg: 49
Blev medlem: 30 jan 2014, 14:07
Ort: Sverige

Re: Läsa in data till RRD

Inlägg 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.
lennart
Gillar hemautomation
Inlägg: 26
Blev medlem: 22 mar 2013, 23:20
Ort: Tjurkö

Re: Läsa in data till RRD

Inlägg 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.
Internet är bara en fluga - som sitter på väggen och lyssnar...
joblo
Gillar hemautomation
Inlägg: 49
Blev medlem: 30 jan 2014, 14:07
Ort: Sverige

Re: Läsa in data till RRD

Inlägg 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)
Bilagor
Acktank24h.png
larky
Moderator
Inlägg: 1166
Blev medlem: 01 feb 2008, 12:21
Ort: Skellefteå
Kontakt:

Re: Läsa in data till RRD

Inlägg 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;
joblo
Gillar hemautomation
Inlägg: 49
Blev medlem: 30 jan 2014, 14:07
Ort: Sverige

Re: Läsa in data till RRD

Inlägg 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.
larky
Moderator
Inlägg: 1166
Blev medlem: 01 feb 2008, 12:21
Ort: Skellefteå
Kontakt:

Re: Läsa in data till RRD

Inlägg 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
Skriv svar