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!
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 då kan jag inte svara på vad som händer. Cron borde köra varannan timme med den confen, men uppenbarligen händer nåt annat... Du kan ju börja med att ta bort skriptet från cron.d och kolla att det faktiskt kommer därifrån.

Om du kör synkningen med rsync enligt vad som fanns i första länken ovan "rsync --quiet --archive --delete --recursive --force" så tar den bort filer i destinationsmappen som inte finns i startmappen (--delete parametern).

Du kan göra en webbapplikation som begär nya grafer vid behov med valbart innehåll, då du kör 'rrdtool graph' så väljer du ju vilka linjer som ska ritas i grafen och vilket tidsspann. Alternativt så kan du generera bara data från rrdtool i json eller xmlformat utan att rita någon bildfil, sedan finns det fina javascriptbibliotek färdiga som ritar grafer utgående från det. Då kan man slå av och på linjer i grafen utan att ladda om nåt från servern.

Jag kör med json data från rrdtool och ritar graferna med flot, det blir snyggare grafer än rrdtools bitmapbilder plus att de blir fint skalbara så de passar alltid skärmstorleken på allt från mobiler till 32tummare.

Angående partitionerna så har du väl installerat via NOOBS, om du installerar rasbian direkt så har du bara en ext4 partition och ingen recovery FAT32 partition.
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:Ja då kan jag inte svara på vad som händer. Cron borde köra varannan timme med den confen, men uppenbarligen händer nåt annat... Du kan ju börja med att ta bort skriptet från cron.d och kolla att det faktiskt kommer därifrån.

Om du kör synkningen med rsync enligt vad som fanns i första länken ovan "rsync --quiet --archive --delete --recursive --force" så tar den bort filer i destinationsmappen som inte finns i startmappen (--delete parametern).

Du kan göra en webbapplikation som begär nya grafer vid behov med valbart innehåll, då du kör 'rrdtool graph' så väljer du ju vilka linjer som ska ritas i grafen och vilket tidsspann. Alternativt så kan du generera bara data från rrdtool i json eller xmlformat utan att rita någon bildfil, sedan finns det fina javascriptbibliotek färdiga som ritar grafer utgående från det. Då kan man slå av och på linjer i grafen utan att ladda om nåt från servern.

Jag kör med json data från rrdtool och ritar graferna med flot, det blir snyggare grafer än rrdtools bitmapbilder plus att de blir fint skalbara så de passar alltid skärmstorleken på allt från mobiler till 32tummare.

Angående partitionerna så har du väl installerat via NOOBS, om du installerar rasbian direkt så har du bara en ext4 partition och ingen recovery FAT32 partition.
Enklast först: partitioner osv, Diskinternals LinuxReader gav en helt annan mappstruktur =) Så nu finns troligen en fullständig kopia på SD-kortet

Provade att #-tagga cronscriptet och då slutade uppdateringen, så det var mitt cronjobb som skötte detta. Testade först att skriva* * */2 * * men egentligen visste jag att deta som bäst skulle ge skrivning varannan dag, och ja, inte gav det någon skrivning under denna förmiddag i alla fall. Letade vidare, hittade en som frågat samma sak som jag och fått svaret att det ska stå 0 */2 * * * annars kör den varje minut varannan timme. Men det fick igång en ordentlig diskussion i den tråden och det förslag som fått flest tummar upp varmotsvarande:

Kod: Markera allt

0 0-23/2 * * * root /usr/sbin/service persist-ramdisk sync > /dev/null
eller

Kod: Markera allt

0 0,2,4,6,8,10,12,14,16,18,20,22 * * * root /usr/sbin/service persist-ramdisk sync > /dev/null
Testar det övre alternativet nu.

Tittade på flot, exakt så som jag vill att det ska funka!
http://www.flotcharts.org/flot/examples ... index.html
så här med bockar för vilka sensorer som ska med i diagrammet och sedan borde det väl gå att ange om man vill ha en dag, vecka, månad eller år som upplösning.
Fattar jag allt rätt nu om du jobbar så här:
Sensordata hamnar i rrddatabasen
json hämtar data där och skickar detta vidare till flot
flot presenterar detta i fina grafer

För att flera sensorer ska få plats i samma rrddatabas måste gissningsvis rrd få typ rubriker för varje sensor så att man sedan kan plocka ut rätt sensors data. Sedan bör nog även tidsstämpel för varje sensor med, så inte man får två sensorers data i samma graf, men från olika tider, det blir ju rätt obegripligt då.
Min rrdbas skapades med detta:

Kod: Markera allt

# File doesn't exist, create new rrd-file
        echo "Creating RRDtool DB for outside temp sensor"
        rrdtool create $directory$filename \
                 --step 150 \
                 DS:outsidetemp:GAUGE:300:-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
Där DS:outsidetemp:GAUGE:300:-50:60 \ anger min sensor, men om jag begripit allt så står DS för DataSet och lägger jag till en till rad med t.ex.
DS:indoortemp:GAUGE:300:-50:60 \ så får jag helt enkelt ytterligare en rad i tabellen för denna sensors data.
Jag antar att både json och flot är något man måste installera och troligen finns olika addons eller versioner för dessa program, vet du vilka addons eller bibliotek du använder?
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 »

Och nu funkar cronjobbet =)

Kod: Markera allt

0 0-23/2 * * * root /usr/sbin/service persist-ramdisk sync > /dev/null
för er som undrar =)
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 »

Intressant, den crontab syntaxen var obekant för mig. Men vid närmare eftertanke så ska det förstås inte vara en * för minuterna och 0 */2 * * * borde alltså fungera också. En * i början betyder ju faktiskt 'kör varje minut' så då har inte 'varannan timme' någon betydelse längre.

Flot är javascript bibliotek som körs i webbläsaren, det finns i en zipfil på http://www.flotcharts.org/ Du behöver alltså en webbserver och en webbsida med en <script> tag för att ladda över flot till webbläsaren.

JSON är inget program det är ett format att skriva strukturerad data i textform https://en.wikipedia.org/wiki/JSON.

Du kan ge parametern "--imgformat JSON" till rrdtool graph kommandot för att få grafdata i jsonformat (textformat alltså) istället för att få en bildfil. Tyvärr ger inte rrdtool ut jsondata i en form som flotcharts direkt kan använda, utan du måste läsa in utdata från rrdtool graph och bearbeta det i en form som flotchart vill ha det. Det kan du göra i ett program som körs på webbservern, tex php eller python, eller så gör du det i webbläsaren med lite egen javascriptkod. Jag känner inte till nåt färdigt program för det (annat än mitt eget...)

Det är bara att lägga till en DS för varje sensor till rrdtool create kommandot. Du kan inte få sensordata med olika tidsstämpel i RRD. Då du definierar databasen så berättar du att nytt data kommer tex med 150s mellanrum. Då skapas en databas med en plats för varje DS för varje tidpunkt som databasen omfattar, där platsen i databasen motsvarar dess tidsstämpel. Alla data är från början odefinierade och missar man att uppdatera en lucka i rätt tid så kommer RRD att betrakta den sensorn i den tidpunkten som odefinierad. Sen då du uppdaterar databasen så måste du uppdatera alla sensorer i samma kommando, annars saknas ju de andra sensorerna för den tidspunkten och blir odefinierade. Man kan alltså inte uppdatera en sensor å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 »

motoz skrev:Intressant, den crontab syntaxen var obekant för mig. Men vid närmare eftertanke så ska det förstås inte vara en * för minuterna och 0 */2 * * * borde alltså fungera också. En * i början betyder ju faktiskt 'kör varje minut' så då har inte 'varannan timme' någon betydelse längre.

Flot är javascript bibliotek som körs i webbläsaren, det finns i en zipfil på http://www.flotcharts.org/ Du behöver alltså en webbserver och en webbsida med en <script> tag för att ladda över flot till webbläsaren.

JSON är inget program det är ett format att skriva strukturerad data i textform https://en.wikipedia.org/wiki/JSON.

Du kan ge parametern "--imgformat JSON" till rrdtool graph kommandot för att få grafdata i jsonformat (textformat alltså) istället för att få en bildfil. Tyvärr ger inte rrdtool ut jsondata i en form som flotcharts direkt kan använda, utan du måste läsa in utdata från rrdtool graph och bearbeta det i en form som flotchart vill ha det. Det kan du göra i ett program som körs på webbservern, tex php eller python, eller så gör du det i webbläsaren med lite egen javascriptkod. Jag känner inte till nåt färdigt program för det (annat än mitt eget...)


Det är bara att lägga till en DS för varje sensor till rrdtool create kommandot. Du kan inte få sensordata med olika tidsstämpel i RRD. Då du definierar databasen så berättar du att nytt data kommer tex med 150s mellanrum. Då skapas en databas med en plats för varje DS för varje tidpunkt som databasen omfattar, där platsen i databasen motsvarar dess tidsstämpel. Alla data är från början odefinierade och missar man att uppdatera en lucka i rätt tid så kommer RRD att betrakta den sensorn i den tidpunkten som odefinierad. Sen då du uppdaterar databasen så måste du uppdatera alla sensorer i samma kommando, annars saknas ju de andra sensorerna för den tidspunkten och blir odefinierade. Man kan alltså inte uppdatera en sensor åt gången.
Sedan sist har jag brottats med grafer, databaser och annat. Jag har lyckats skapa en rrddatabas till. Men hur jag än stångar pannan blodig får jag inte shellscript att fungera att skriva till denna databas. Scriptet ser ut på detta vis och jag har testat massor av varianter, men det blir inget exikverbart script av det. Listar man innehåll i terminalfönstret så blir ju körbara script gröna, mina skitscript är VITA! Ahhh!

Kod: Markera allt

#!/bin/bash

OutsideTempSensor="28.FFE45E001602"
InsideTempSensor="28.FFD06D001602"
RRDDataDirectory="/mnt/ramdisk/rrddata/rrdbas/"
RRDDataFile="temp_database.rrd"

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

#Update RRD database
rrdtool update $RRDDataDirectory$RRDDataFile N:$OutsideTemp;N:$InsideTemp
echo $OutsideTemp;$InsideTemp
Jag har lagt till den här get2_temp-filen i cron, kört chmod -x på den och ja...

Sedan har png-filen blivet helt sönderlaborerad av mig =) Såg det inte först, men kolla på temperaturskalan till vänster... knepigt =) Jag bifogar den filens innehåll med...:

Kod: Markera allt

#!/usr/bin/perl

use RRDs;

my $cur_time = time();
my $start_time = $cur_time - 86400;     # set end time to 24 hours ago 
                
RRDs::graph "/mnt/ramdisk/www/graph_temp.png",   
			"--start= $start_time",
			"--end= $cur_time",
			"--title= Temp ute",
			"--height= 300",
			"--width= 500",
			"--vertical-label= °C",
	      "DEF:OutsideTemp=/mnt/ramdisk/rrddata/outside_temp.rrd:outsidetemp:AVERAGE",                          
			"COMMENT:\t\t\t\tNu     Medel    Max    Min\\n",
			"HRULE:0#0000FF",         
	      "LINE2:OutsideTemp#000000:Ute\t\t\t",    
			"GPRINT:OutsideTemp:LAST:%6.1lf",
			"GPRINT:OutsideTemp:AVERAGE:%6.1lf",
			"GPRINT:OutsideTemp:MAX:%6.1lf",
			"GPRINT:OutsideTemp:MIN:%6.1lf\\n";
              "LINE2:OutsideTemp#FFAA00:Ute\t\t\t",    
			"GPRINT:OutsideTemp:LAST:%6.1lf",
			"GPRINT:OutsideTemp:AVERAGE:%6.1lf",
			"GPRINT:OutsideTemp:MAX:%6.1lf",
			"GPRINT:OutsideTemp:MIN:%6.1lf\\n";

my $err=RRDs::error;
if ($err) {print "problem generating the graph: $err\n";}

print "Done!\n"
Ja, det här summerade de senaste dagarnas arbete. ja, eller jag har lagt någon dag på att försöka fatta lite mer av mysql, det kan nog vara en bra investering framöver =)
Bilagor
graph_temp.png
graph_temp.png (15.25 KiB) Visad 4705 gånger
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 »

Det första problemet är iaf lätt, chmod -x tar bort körrättigheter, chmod +x lägger till dem.

Sen ser det inte rätt ut i ditt skript för att uppdatera databasen med flera DS. Det ska vara bara ett N (eller en tidsstämpel) och sedan alla värden åtskilda av kolon.
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 »

Det är nog dags att ge upp för dagen... Har nog lyckats kortsluts rpi IO stift. Trasslade med mina sensorer tappade ner en samlade sig mellan stiftenpå rpi. Sedan dess ser grafen rätt trist ut.

Chmod +x :) borde man ju nästan kunnat räkna ut

Flera N kan det vara det som gav lite tokiga temperaturaxlar?

Låter rpi och i2c-kort ligga strömlöst över natten, man kan ju hoppas i alla fall...
Bilagor
image.png
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 »

De två graferna nu på slutet, de ska återspegla samma tisdag, men det ser ju ganska olika ut. Måste bero på de olika temperaturaxlarna, nu är den senaste grafen tyvärr mer utzoomad, men man ser inte upprepade temperaturer i temperaturskalan, jag tog bort de där båda N kommandona innan kortslutningen.
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 »

Startade rpi idag, 1wire verkade stendött. Intre en mapp i 1-wirekatalogen. Tänkte beställa en ny, men så körde jag detta.

Kod: Markera allt

sudo i2cdetect -y 1
och fick detta som tack =)

Kod: Markera allt

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- 1b -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Lite senare dök 1wirekataloger med sensorer upp, först var temeraturerna på dessa endast i heltal, lite senare dök det upp decimaler. Ja, en läxa att lära av, nu blir det att fixa ett "Sull-skydd" till pinnarna. Det får bli något att trä över dom, antingen trycka fast en bit skumgummi eller liknande eller plasthölje till kablar, men bara pinnar på det här viset är nog klart dumt.
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 »

Tesar vidare med att väcka min andra rrddatabas till liv, hittade ett kommando Motoz gav mig på första sidan i den här tråden. Körde detta och får ett underligt svar:

Kod: Markera allt

pi@raspberrypi:~ $ cd /mnt/ramdisk/rrddata/rrdbas
pi@raspberrypi:/mnt/ramdisk/rrddata/rrdbas $ rrdtool lastupdate temp_database.rrd
ERROR: mmaping file 'temp_database.rrd': Ogiltigt argument
pi@raspberrypi:/mnt/ramdisk/rrddata/rrdbas $ 
Har sökt på detta meddelande, men hittar inga
svar på detta "ERROR: mmaping file 'temp_database.rrd': Ogiltigt argument" Samma kommando på den andra rrddatabasen om jag står i rätt mapp ger inga fel utan rapport om senaste uppdatering tid av databasen i det underbara formatet epoch time samt senaste loggade värde.
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 får det felmeddelandet om din databasfil existerar men har storleken noll. Kör

Kod: Markera allt

ls -l
för att kolla om du har filstorlek noll på databasen.

Det är då nåt fel i kommandot som skapar databasen. Får du inget felmeddelande då du kör skriptet som ska skapa en ny databas?
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:Du får det felmeddelandet om din databasfil existerar men har storleken noll. Kör

Kod: Markera allt

ls -l
för att kolla om du har filstorlek noll på databasen.

Det är då nåt fel i kommandot som skapar databasen. Får du inget felmeddelande då du kör skriptet som ska skapa en ny databas?
Du är en klippa! Svaret blev:
"totalt:0"
Gissningsvis var scriptet som meckade ihop databasen felaktigt. Ska kolla igenom detta igen :)
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 »

Hittade en RRD Wizard som funkade bra för att hjälpa till att fatta vad som var vad i en rrd-create-fil.
http://rrdwizard.appspot.com/rrdcreate.php
Då satte jag ihop denna och här är det nog troligt att databasen kan bli lite för omfattande, men jag tänkte att det verkar enklare att skapa för många poster i en rrd och sedan kanske inte använda alla, jämfört med att lägga till poster i efterhand. Ja, jag vet att det ska gå med hjälp av ett av det verktyg som finns i rrdtool-boxen.

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="/mnt/ramdisk/rrddata/rrdbas/"
filename="temp_db.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 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:60 \
		 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:Drifttid_VP:COUNTER:300:50:60 \
		 DS:Drift_Pool:COUNTER:300:-50:60 \
		 DS:El:COUNTER:300:-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
Det mesta av denna bas kommer från wikin om rrdtool här. Men det står att den här konfigurationen ska ge lagring i 20 år, jag tvivlar på att något sparas mer än några dagar.

Det jag är mest schalur på är om mina tre counters ska ha samma heartbeat (300) som övriga och min/max-värden på -50 och 60, här kanske man ska skriva U istället. Ja, egentligen mår kanske de flesta DS bra av U, alltså obestämda min och max-värden. Altan satte jag max på 100, där blir det ibland sinnessjukt hett och det kommer absolut att slå 60 grader.

Ja, uppe på detta ska det alltså även börja skissas på hur man gör en counter för drifttid på en värmepump. Finns det färdiga sådanna? Jag har sett att folk har sensorer på 1wire som känner om dörrar är öppna eller stängda, en sådan borde gå att nyttja till att känna av om fläkten till poolvärmen blåser eller inte.
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 »

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?

Heartbeat på dubbla step är väl helt ok för alla DS, om du missar att uppdatera med längre intervall än heartbeat så blir data unknown. Vitsen med att sätta min-max är att om man får in data utanför det intervallet så sätts data till unknown där, tänk tex om en tempsensor får fnatt och ger värdet 10000 plötsligt. Då man plottar en graf med den spiken med så blir resten av grafen ett rakt streck längst ner vilket inte är så kul. Så sätt min max till det teoretiskt största intervallet av korrekta data.

Om du ska räkna drifttiden med en COUNTER så måste du ha något som räknar upp tiden då pumpen går. Dvs du måsta mata in ett värde som ökar med tiden. Alternativt så går det också att använda en GAUGE och mata in värdet 150 då pumpen går och 0 då den står still (om step size är 150 alltså), resultatet blir faktiskt samma bortsett från att då pumpen startar så får du 150s i första samplet fast pumpen kanske gått bara några sekunder i det intervallet, samma då den stannar så får du 0 sekunder i hela sista intervallet då den stannade. Men det jämnar ju faktiskt ut sig, felet i båda ändar blir i medeltal lika stort åt varsitt håll. Men det är förstås inte mycket svårare att mata in drifttiden i sekunder som att mata in driftstatus 150 eller noll, det här var mest bara som illustration för att visa på skillnaden mellan GAUGE och COUNTER.

DS2406 fungerar som en digital ingång, dvs känner av om ingången har noll eller 5V. Men om du har många tempsensorer så kan du ju använda dem också, om temperaturen i kylluften från motorn är högre än insuget så är motorn igång. Du kan jämföra två tempvärden i ditt update skript och uppdatera med 150 om temp_ut - temp_in > 5 (eller nåt) och annars noll.

Eller så kör du ett skript i snabbare intervall och räknar upp sekunder då motorn går och sparar det värdet i en fil som updateskriptet sedan läser in och uppdaterar en COUNTER med.
Open source pellet logger: https://github.com/motoz/PellMon
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 »

Förresten så är en COUNTER inte så kul att använda om inte man har en räknare som aldrig startar om från noll, eller har ett maxvärde (där den börjar om från noll) på annat än 2^32. Orsaken är att RRD försöker detektera när en räknare har roterat, dvs om den får in ett värde som är mindre än förra så anser RRD att räknaren har räknat ända upp till 2^32 och fortsatt från noll. Det ger en gigantisk spik i grafen om så inte var fallet. Enklaste sättet att undvika det är att i stället använda en DERIVE och sätta min värde till noll. Då kan räknaren starta om från noll när som helst och allt fungerar som det ska eftersom noll minus förra värdet är negativt och det godkänns inte om minimivärdet är noll.
Open source pellet logger: https://github.com/motoz/PellMon
Skriv svar