Sida 1 av 1

Importera data till RRDtool DB

Postat: 28 okt 2016, 10:00
av cyberjunkie
Försöker få till en import till RRDtool DB för ett flertal olika temp sensorer som är kopplade via Domoticz och en RFXtrx433E på Raspberry

Har skapat databasen så här:

Kod: Markera allt

    #!/bin/bash
    # Script to create rrd-file

    # 24h with 2,5 min resolution
    # 7d with 5 min resolution
    # 1y with 10 min resolution
    # 20y with 1h resolution

    directory="/home/pi/temp/rrddata/"
    filename="domoticz_temp.rrd"
    # Check i file already exists
    if [ ! -f "$directory$filename" ]
    then
            # File doesn't exist, create new rrd-file
            echo "Creating RRDtool DB for outside temp sensor"
            rrdtool create $directory$filename \
                     --step 120 \
                     DS:probe:GAUGE:120:-50:60 \
                     DS:xxxx1:GAUGE:120:-50:60 \
                     DS:vardagsrum:GAUGE:120:-50:60 \
                     RRA:AVERAGE:0.5:1:576 \
                     RRA:AVERAGE:0.5:2:2016 \
                     RRA:AVERAGE:0.5:4:52560 \
                     RRA:AVERAGE:0.5:24:175200 \
                     RRA:MAX:0.5:1:5760 \
                     RRA:MAX:0.5:2:2016 \
                     RRA:MAX:0.5:4:52560 \
                     RRA:MAX:0.5:24:175200 \
                     RRA:MIN:0.5:1:5760 \
                     RRA:MIN:0.5:2:2016 \
                     RRA:MIN:0.5:4:52560 \
                     RRA:MIN:0.5:24:175200
            echo "Done!"
    else
            echo $directory$filename" already exists, delete it first."
    fi
Importerar sen data för EN sensor så här:

Kod: Markera allt

    #!/bin/bash
    rrdtool update /home/pi/temp/rrddata/domoticz_temp.rrd --template probe N:`head -n 1 </home/pi/temp/output/temp_probe.txt`
Textfilen som importeras innehåller bara en siffror som kommer från tempsensorn som uppdateras via ett LUA-script

Koden för att skapa grafer:

Kod: Markera allt

    #!/bin/bash
    rrdtool graph /home/pi/temp/output/img/test/hour.png \
    -w 697 -h 287 -a PNG \
    --slope-mode \
    --start -6h --end now \
    --vertical-label "Last 6 hour temperature" \
    DEF:probe=/home/pi/temp/rrddata/domoticz_temp.rrd:probe:AVERAGE \
    DEF:xxxx1=/home/pi/temp/rrddata/domoticz_temp.rrd:xxxx1:AVERAGE \
    DEF:vardagsrum=/home/pi/temp/rrddata/domoticz_temp.rrd:vardagsrum:AVERAGE \
    COMMENT:"  Location       Min        Max       Senaste\l" \
    LINE1:probe#ff0000:"Utetemp" \
    LINE1:0#ff0000: \
    GPRINT:probe:MIN:"    %5.1lf"  \
    GPRINT:probe:MAX:"     %5.1lf"  \
    GPRINT:probe:LAST:"     %5.1lf\n"  \
    LINE1:xxxx1#00ff00:"Xxxx1" \
    LINE1:0#00ff00: \
    GPRINT:probe:MIN:"      %5.1lf"  \
    GPRINT:probe:MAX:"     %5.1lf"  \
    GPRINT:probe:LAST:"     %5.1lf\n"  \
    LINE1:vardagsrum#0000ff:"vardagsrum" \
    LINE1:0#0000ff: \
    GPRINT:probe:MIN:" %5.1lf"  \
    GPRINT:probe:MAX:"     %5.1lf"  \
    GPRINT:probe:LAST:"     %5.1lf\n"  \
Ger mig denna graf
hour.png
Min fråga är nu då. Hur gör jag för att få in data från flera sensorer?

Har provat att göra så här men då blir grafen helt tokig/korrupt. Vad har jag missat??
Hoppas det finns någon kunnig människa här inne som kan hjälpa till.

Kod: Markera allt

        #!/bin/bash
        rrdtool update /home/pi/temp/rrddata/domoticz_temp.rrd --template probe N:`head -n 1 </home/pi/temp/output/temp_probe.txt`
        rrdtool update /home/pi/temp/rrddata/domoticz_temp.rrd --template xxxx1 N:`head -n 1 </home/pi/temp/output/temp_xxxx1.txt`

Re: Importera data till RRDtool DB

Postat: 30 okt 2016, 10:06
av motoz
Alla sensorer måste uppdateras i samma anrop till rrdtool update. Om du uppdaterar bara en så kommer de två andra att få värdet "undefined".

Re: Importera data till RRDtool DB

Postat: 30 okt 2016, 11:01
av cyberjunkie
motoz skrev:Alla sensorer måste uppdateras i samma anrop till rrdtool update. Om du uppdaterar bara en så kommer de två andra att få värdet "undefined".
Hur definerar jag detta i mitt script? Detta funkade inte iallafall :(. Hur gör jag detta i ETT anrop?

Kod: Markera allt

        #!/bin/bash
        rrdtool update /home/pi/temp/rrddata/domoticz_temp.rrd --template probe N:`head -n 1 </home/pi/temp/output/temp_probe.txt`
        rrdtool update /home/pi/temp/rrddata/domoticz_temp.rrd --template xxxx1 N:`head -n 1 </home/pi/temp/output/temp_xxxx1.txt`
Uppskattar all hjälp jag kan få.

Re: Importera data till RRDtool DB

Postat: 30 okt 2016, 14:03
av motoz
Dokumentationen för rrdtool update är här: http://oss.oetiker.ch/rrdtool/doc/rrdupdate.en.html

Du använder --template switchen i ditt anrop, med den kan du definiera vilka data du uppdaterar och i vilken ordning, annars förväntar rrdupdate att du uppdaterar alla data och i ordning de är definierade i databasen:
By default, the update function expects its data input in the order the data sources are defined in the RRD
The template switch allows you to specify which data sources you are going to update and in which order
--template|-t ds-name[:ds-name]...
Så för att uppdatera dessa två:

Kod: Markera allt

--template probe:xxxx1
Och data skrivs med kolon mellan enligt:
rrdtool {update | updatev} filename [--template|-t ds-name[:ds-name]...] [--skip-past-updates|-s] [--daemon|-d address] [--] N:value[:value]... timestamp:value[:value]... at-timestamp@value[:value]...
Du hämtar ut data från första raden ur en textfil med att mata filinnehållet genom 'head -n 1', så det är bara att upprepa det med kolon mellan för varje värde.