Raspberry pi 3 som mätstation, en vision

Hur ser ditt mät- och/eller hemautomations-system ut? Dela med dig av hur just Ditt projekt ser ut och fungerar, eller hur dina planer ser ut för framtiden. Att läsa om andra är bästa inspirationen.
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

motoz skrev:Det är inte speciellt enkelt att utöka en rrd-databas med nya DS (men det går...), så det är nog en bra idé att ha några extra. Den konfen ger exakt 20 år datalagring, varför tvivlar du på det?
Den rrdbas jag fick till i början av månaden och som har stått och tickat mestadels av tiden sedan dess innehåller inte värden äldre än åtta dagar tillbaka. Det enda som kan förklara detta är väl att datan inte sparas längre än så, eller om något skulle ha hänt då jag skapade ramdisken förstås... Ja, jag får låta det gå lite längre tid kanske.
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

Fick lov att tänka endel innan jag helt förstod. Om jag förstår rätt så kan man alltså ange vilket värde en sensor ska ge när den skickar signal. De här temperatursensorerna de skickar ett uppmätt värde, men de där dörrvakterna de ger signal som typ 1 eller 0, eller? Och man kan alltså då addera 150 till det värdet och varje gång sensorn skickar ett värde läggs ytterligare 150 s till databasen. Ja, det låter ju nästan som det allra smidigaste.

En rätt tydlig anledning till varför COUNTER kan vara dumt :) ett miljard-värde i samma graf som temperaturvariationerna i november :) jag säger som i Lorry... Tänkte inte på det...
Max och min, återigen samma sak... Tänkte inte på det :)


Tanken med tempdifferens är klart intressant. Min tanke först var en vind-flapp som vid värmepumpsdrift sluter en kontakt och då startar räknandet, men tempdiff är nog mer driftsäkert, risken för att mekanik påverkas av väder, vind, katter och annat är ju stor. Dessutom är just temperatursensorerna löjligt billiga, under tjugan per styck. Och då anar jag att det kommer ett sånt där roligt logikproblem längs vägen, temp från sensor 1 - sensor 2 > 2 (tror att 5° är lite mycket) => värdet 150 och detta sedan kört av ett script :) hm... Det här gör ju att man vill öppna rpi så att man kommer åt den utanför vårt lan, semester är ju tyvärr upphackat av diverse resor, och jag vill nog hellre pyssla med det här än hänga på familjen till släkten...
Användarvisningsbild
motoz
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 feb 2015, 15:05
Ort: ostrobothnia

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av motoz »

Hur länge data finns kvar i databasen bestäms av hur du har definierat dina RRA. I den senaste har du fyra st AVERAGE RRA och den som håller kvar data längst är den här: RRA:AVERAGE:0.5:24:175200
Men step size 150s så får du medelvärdet av 24 sampel = 3600s mellan varje datapunkt och 175200 sådana ger alltså 175200 timmar eller 20 år.
Sen har du motsvarande RRA med en timmes maxvärde och minvärde i 20 år och andra rra med bättre upplösning än en timme men kortare tid. Tex RRA:AVERAGE:0.5:1:576 ger data med upplösningen 150s i ett dygn (86400 sekunder).
Open source pellet logger: https://github.com/motoz/PellMon
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

motoz skrev:Hur länge data finns kvar i databasen bestäms av hur du har definierat dina RRA. I den senaste har du fyra st AVERAGE RRA och den som håller kvar data längst är den här: RRA:AVERAGE:0.5:24:175200
Men step size 150s så får du medelvärdet av 24 sampel = 3600s mellan varje datapunkt och 175200 sådana ger alltså 175200 timmar eller 20 år.
Sen har du motsvarande RRA med en timmes maxvärde och minvärde i 20 år och andra rra med bättre upplösning än en timme men kortare tid. Tex RRA:AVERAGE:0.5:1:576 ger data med upplösningen 150s i ett dygn (86400 sekunder).
Har brottats en tid med att lyckas skapa nya rrd-baser, men det har hela tiden blivit felmeddelanden och rrd-filen har varit på 0k i storlek. Med endast en DS funkade det hur fint som helst, men så fort jag la till en enda DS så sprack det. Trodde länge att det var got i syntaxen som jag missuppfattat, mened rrd-wizards som jag hittade skrev samma sätt som jag. Började då att #-märka rra-raderna... Plötsligt gick det bra att skapa filer med fler DS i. Såklart är ramdisken lite för liten för att rymma en väl tilltagen rrd. Med den konfiguration somjag haft hittills har en DS med lagring enligt tidigare inlägg hamnat på 5,4mb. Med typ 10-20 DS lär utrymmet troligen också växa med en faktor 10-20. Det är nog lite för stort för en rpi att hantera. Att backuppa 50-100mb vid varje uppstart, reboot och var annan timme, ja det blir en hel det tid. Börjar förså varför en av länkarna jag hade med sparade backuppen i tar-format... Jag lär se över antalet sensorer och kanske även den tid datan sparas.
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

Den rrd-fil jag hade i förra exemplet hade 21 DS och detta gav 104mb.
Nu har jag minskat upplösningen, känns löjligt med en timmes noggrannhet i 20 år. Satte alla rra så här

Kod: Markera allt

RRA:AVERAGE:0.5:1:576 \
		 RRA:AVERAGE:0.5:8:504 \
		 RRA:AVERAGE:0.5:48:4380 \
		 RRA:AVERAGE:0.5:144:29200 \
Alltså även raderna med Max och min, enligt mina beräkningar ger detta en upplösning på:
Dygn = 2,5 min
Vecka = 20 min
År = 2 timmar
20 år = 6 timmar
Tror inte man behöver större noggrannhet än så. Det är i alla fall rätt pilligt att plocka ut datan ur rrd-filen.
Då minskades storleken till 17,5mb och egentligen skulle man ju kunna fimpa lagringen utöver något år.
För vill man göra vettiga grafer får man i alla fall lov att sätta sif in i mysql, flot och Ajax mfl. Och då är kanske inte längre ramdisk och rrd riktigt grejen, utan snarare strömsnål ssd och lite jävlar anamma. :)
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

Rrddatabas med 21 poster fixad, men att skriva till denna var svårt, har kört chmod 777 på filen för att vara riktigt säker, men icke. Gjorde ett script enligt mallen på m.nu (rrdtool) men naturligtvis med mina sökvägar och sensorer samt rubrik ur rrd-basen. Får då detta svar:
ERROR: /(sökvägen)/tempdb.rrd: expected 21 data source readings (got 1) from N
Och en aktuell temperatur

Testade först med att fylla upp alla 21 DS rubrikerna med hänvisningar till sensorer, exakt samma svar. Testade sedan att ta bort den där sista delen i scriptet där det står N:$Outsidetemp ( jag har givetvis bytt detta mot min rubrik i rrd-basen till "Ute")
Då fick jag svaret "expected time stamp not foundation in data source from N"

Klurar vidare...
Användarvisningsbild
motoz
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 feb 2015, 15:05
Ort: ostrobothnia

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av motoz »

Du ska skicka med alla ds i rätt ordningsföljd då du uppdaterar med ett enda rrdtool update. Det verkar som att du försöker uppdatera en åt gången.
Open source pellet logger: https://github.com/motoz/PellMon
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

Hm...
Alla DS i rätt ordningsföljd till rrd-basen:
Alltså alla DS i rddbasen står i samma ordning som i scriptet som ska hämta temperaturerna från 1wire katalogerna. Ska testa med att skapa en mycket enklare rrdbas, endast två DS denna gång och se om det blir samma fel. Sedan är frågan om man kanske hellre ska köra flera rrdbaser istället. det verkar inte spara något utrymme direkt att köra alla i en och samma. Men jag tycker att jag borde kunna få det att funka med mer än en sensor per rrd-bas.
Användarvisningsbild
motoz
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 feb 2015, 15:05
Ort: ostrobothnia

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av motoz »

Den säger ju att den vill ha 21 och får en. Du kan posta skriptet här om du inte hittar vad du ska ändra.
Open source pellet logger: https://github.com/motoz/PellMon
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

RRD-basen gjordes med detta script, jag placerade scriptet direkt i den mapp jag ville ha rrd-basen i.

Kod: Markera allt

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

echo "Creating RRDtool DB for temp sensors"
        rrdtool create tempdb.rrd \
                 --step 150 \
                 DS:Ute:GAUGE:300:-50:60 \
                 DS:Inne:GAUGE:300:-50:60 \
                 DS:Sovrum:GAUGE:300:-50:60 \
                 DS:Altan:GAUGE:300:-50:100 \
                 DS:Syd:GAUGE:300:-50:80\
                 DS:Norr:GAUGE:300:-50:60 \
                 DS:Ost:GAUGE:300:-50:60 \
                 DS:Temp_1:GAUGE:300:-50:60 \
                 DS:Temp_2:GAUGE:300:-50:60 \
                 DS:Temp_3:GAUGE:300:-50:60 \
                 DS:Temp_4:GAUGE:300:-50:60 \
                 DS:Temp_5:GAUGE:300:-50:60 \
                 DS:VP_Pool_1:GAUGE:300:-10:60 \
                 DS:VP_Pool_2:GAUGE:300:-10:60 \
                 DS:Drift_2:COUNTER:300:0:200 \
                 DS:Drift_3:COUNTER:300:0:200 \
                 DS:Pool:COUNTER:300:0:200 \
                 DS:Drift_1:DERIVE:300:0:200 \
                 DS:Drift_Pool_1:DERIVE:300:0:200 \
                 DS:Drift_Pool_2:DERIVE:300:0:2000 \
                 DS:El:DERIVE:300:0:1000 \
                 RRA:AVERAGE:0.5:1:576 \
                 RRA:AVERAGE:0.5:8:504 \
                 RRA:AVERAGE:0.5:48:4380 \
                 RRA:AVERAGE:0.5:144:7300 \
                 RRA:MAX:0.5:1:576 \
                 RRA:MAX:0.5:8:504 \
                 RRA:MAX:0.5:48:4380 \
                 RRA:MAX:0.5:144:7300 \
                 RRA:MIN:0.5:1:576 \
                 RRA:MIN:0.5:8:504 \
                 RRA:MIN:0.5:48:4380 \
                 RRA:MIN:0.5:144:7300 \
Sedan skrev jag ett get_temp-script, först hade jag gett sensorer till varje DS, men när det inte funkade så bytte jag ut den där delen som döper om det faktiska sensornamnet till mänskligt språk. men ja, det funkade inte det heller. Just nu får alla DS info från samma sensor helt enkelt.

Kod: Markera allt

#!/bin/bash

UteSensor="28.FFE45E001602"
RRDDataDirectory="/mnt/ramdisk/rrddata/rrdbas/"
RRDDataFile="tempdb.rrd"

# Get temps form OWFS
Ute=`cat /mnt/1wire/$UteSensor/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Inne=`cat /mnt/1wire/28.FFE45E001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Sovrum=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Altan=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Syd=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Norr=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Ost=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Temp_1=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Temp_2=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Temp_3=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Temp_4=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Temp_5=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
VP_Pool_1=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}$
VP_Pool_2=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}$
Drift_2=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Drift_3=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Pool=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Drift_1=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`
Drift_Pool_1=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $
Drift_pool_2=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $
El=`cat /mnt/1wire/28.FF495F001602/temperature|sed -e s/" "//g|awk '{$1=$1 + 0.005;printf "%.2f", $1}'`

#Update RRD database
rrdtool update $RRDDataDirectory$RRDDataFile N:$Ute
echo $Ute
Ja, slutet på get-scriptet har jag ändrat fram och tillbaka rätt många gånger, så där är det rimligtvis fel vid"N:Ute" det kanske borde vara rätt många fler sensorer där..
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

RRD-basen heter tempdb.rrd och har alla rättigheter enligt detta:

Kod: Markera allt

pi@raspberrypi:/mnt/ramdisk/rrddata/rrdbas $ sudo chmod 777 tempdb.rrd
pi@raspberrypi:/mnt/ramdisk/rrddata/rrdbas $ ls -l
totalt 6328
-rwxrwxrwx 1 root root    1064 jun 24 21:02 create2_rrd.sh
-rwxrwxrwx 1 root root     993 jun 24 20:56 create3_rrd.sh
-rw-r--r-- 1 root root    1040 jun 24 16:50 create_rrd.sh
-rwxrwxrwx 1 pi   pi      1065 jun 24 21:05 rrd2.sh
-rwxrwxrwx 1 pi   pi   6457592 jun 26 14:56 tempdb.rrd
-rwxrwxrwx 1 pi   pi      1185 jun 25 12:15 tempdb.sh
Kör detta:

Kod: Markera allt

pi@raspberrypi:/mnt/ramdisk/rrddata/rrdbas $ rrdtool lastupdate tempdb.rrd
 Ute Inne Sovrum Altan Syd Norr Ost Temp_1 Temp_2 Temp_3 Temp_4 Temp_5 VP_Pool_1 VP_Pool_2 Drift_2 Drift_3 Pool Drift_1 Drift_Pool_1 Drift_Pool_2 El

1466945752: U U U U U U U U U U U U U U U U U U U U U
Och när jag kör get_temp-scriptet ser det ut så här:

Kod: Markera allt

pi@raspberrypi:~/bin $ ./get1_temp.sh
ERROR: /mnt/ramdisk/rrddata/rrdbas/tempdb.rrd: expected 21 data source readings (got 1) from N
24.82
Användarvisningsbild
motoz
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 feb 2015, 15:05
Ort: ostrobothnia

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av motoz »

Ja du uppdaterar med bara ett värde (ute). Det ska vara en tidsstämpel eller N för "nu" och sedan värden för alla sensorer i rätt ordning åtskilda av kolon som parameter till rrdtool update.
Open source pellet logger: https://github.com/motoz/PellMon
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

Den övre delen av scriptet tycker jag att ser ut att ta allt i rätt ordning, men jag gissar att det är den där "N:$"delen på slutet... Skulle det kunna se ut något så här...:

Kod: Markera allt

#Update RRD database
rrdtool update $RRDDataDirectory$RRDDataFile N:$Ute:$Inne:$Sovrum:$Altan...osv
echo $Ute:$Inne:$Sovrum:$Altan... osv
Eller är det mer jag missar?
Användarvisningsbild
motoz
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 feb 2015, 15:05
Ort: ostrobothnia

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av motoz »

Ja rrdtool update kommandot ska ha data för alla ds i databasen. Resten av skriptet är helt upp till dig hur du gör. Du kan ju prova köra "rrdtool update databasfil.rrd N:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0" direkt utan skript.
Open source pellet logger: https://github.com/motoz/PellMon
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

Hm... då börjar saker klarna för mig. "N" betyder helt enkelt Nu, därefter kommer uppdateringskommandor där allt som tidigare i scriptet lästs av från 1wire-katalogerna liksom ska skrivas in i rrd-basens alla rubriker. Jag skrev helt enkelt in alla rubriknamnen där efter "N". Naturligtvis blev det lite monotont och på några ställen kom :$ i fel ordning, men det upptäckte rpi på egen hand och talade om att det var fel.
Nu kvarstår följande

Kod: Markera allt

pi@raspberrypi:~/bin $ ./get1_temp.sh
ERROR: /mnt/ramdisk/rrddata/rrdbas/tempdb.rrd: not a simple unsigned integer: '24.32'
./get1_temp.sh: rad 32: oväntat filslut vid sökning efter matchande """
./get1_temp.sh: rad 33: syntaxfel: oväntat filslut
Skriv svar