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 »

När jag kör get_ditt_tepms.sh, scriptet som jämför temperaturer mellan två sensorer och om diffen är mer än 2° ska ge 150 till en tredje rrd-rubrik får jag följande svar:
23:23:0
Tänkte att kanske funkar det ändå, men eftersom sensorerna ligger framför TV:n och visar 23° båda två så vore det ju intressant att utsätta den första av dom för lite värme. En PET-flaska med hett vatten stöld ovanpå sensor ett gav följande resultat:
32:24:150 :D UNDERBART!!!!
Nu blir det,att trixa en graf eller tabell för detta resultat.
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 »

Nu har det varit tyst ett tag... Har gnetar på med att koppla rrd->get_temp->graf
Ett himla meck att få en ny rrd-bas att dels börja innehålla data. Sedan för ett Perl-script att rita upp detta som en graf.
Men nu funkar det delvis. Jag har ett script som läser av två sensorer, om dessa har en differens på minst 2° läggs värdet 150 in i tre fält, ett GAUGE, ett COUNTER och ett DERIVE. Jag räknade tidigt ut att jag egentligen inte vill ha en graf för detta. Det blir lite obegripligt mitt en linje på värdet 150 eller noll. Man får liksom sedan försöka räkna ut hur lång tid grafen ligger på 150 för att göra om detta till sekunder och där efter dela på 3600. Nej, egentligen vill jag kanske ha en graf med dagar längs x-axel och timmar på y-axel och sedan staplar som visar tiden, eller en enkel tabell kanske som talar om att detta datum gick värmepumpen 5 timmar och detta bara tre, eller något annat liknande.
Osäker på om GAUGE verkligen är bäst då. Kanske vore det bättre om man hade DERIVE eller något liknande, visst, det är viktigt att man liksom nollar detta värde inför varje dygn, vill jag ha reda på säsongens totala drifttid så kanske det är enklare att i efterhand räkna ihop alla dygnsvärden.
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 »

Fattar mig kort pga mobil, men det är funktionen TOTAL du vill använda. Kolla dokumentationen för rrdtool graph och sök efter total. Med den kan du få summan av en DS över ett intervall. stapeldiagram är också möjligt men det är minst sagt lite bökigt med rrd...
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 »

Perfekt! En ledtråd är utomordentligt för att veta var man ska börja söka. Har spenderat dagen i fantastiskt väder med testande och provande. Fantastiskt bra att ha SSH på rpi så man kan sitta i solen och ändå ha kul! Tror jag är på rätt väg, får scriptet godkänt, ja det säger "Done!" och det är ofta ett första steg på vägen, då har datorn i alla fall accepterat min formulering. Men ja... det blir inte någon graf än, men ja... semestern är lång =)
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 »

Scriptandet för beräkning av drifttid avbröts av det fina vädret, istället blev det hårdvaruarbete. Började med att tvinna två trådar, har läst att tvinnat ger stabilare signaler. Körde med vanlig tunn kabel, typ samma grovlek som tunna högtalarkablar, tvinnade dessa till en 20 meters lång testslinga. Parallellt med denna tejpade jag en extra kabel för extra ström. Mot bättre vetande så började jag klättra runt på fasaden för att fästa detta, gjorde superfina lödningar direkt i kabeln för kontaktdonen utan att klippa kabeln, har hört att 1wire mår som bäst om avstickarna är så korta som möjligt. Slog igång rpi... Inte en sensor dyker upp... Felsöker resten av den dagen. Gjorde en otvinnad slinga på 20 m. Fick 5,18V längst bort, borde alltså funka, men nix, inte en chans. Stoppar i en sensor alldeles vid rpi, den dök upp fint, tar en Anna sensor i änden längst bort, då försvinner den som nyss dök upp... Förbryllande.
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 »

Felsökandet på kabel fortskred, det visade sig att mitt idoga tvinnande av par-kabel troligen lyckats tvinna av GND-kabeln. Kopplade om, så den raka parallella kabeln fick bli GND, då funkar det och vp_diff-beräkningen fungerar. Värmepumpen är dock effektivare än jag kunnat tro, 20° in och 10° ut.
Att ha en sensor nära rpi och en annan runt 20 meter bort går dock fortfarande inte. Det där är förbryllande, det verkar som att det som spökar är skillnad i avstånd. Just nu sitter två sensorer 20 och 22 meter från rpi, inga problem. Sätter jag alla sensorerna inom två meter från rpi, inga problem. Men en på en meter och en på 20, funkar helt enkelt inte i min konfiguration i alla fall.
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 »

Problemen med långa och korta avstånd består och allt mer tyder på att en avståndsskilnad på upp emot 20 ggr ger problem. Förlängde slingan med ytterligare fem meter idag, inga problem alls, men att ansluta en sensor en meter från rpi släcker omedelbart samtliga sensorer.

För den som funderar på att övervaka en poolvärmepump, i detta fallet en Brilix 100 med en rpi så kan jag konstatera att de 2° i diff jag utgick från var helt i underkant, den temperaturdiffen kvarstår långt efter att värmepumpen stannat, motoz förslag på 5° diff var tydligen ganska välunderbyggt. Det är kul med folk som kan sina saker :D tempskilnaden på ut och inblåssidan är mer som 10° vid en utetemp på 20°
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 »

Kabeläventyret fortsatte idag, långa avstickare från 1-wire linan funkar inte, då sista sensorn på min lina är en sådan där vattentät sensor så gick det inte att förlänga linan. Målet att ha två bra placerade termometrar för rapportering till temperatur.nu får ligga lite på is.
Fortsätter istället med att försöka begripa hur funktionen TOTAL fungerar.
Som det verkar så ber man rrdtool arr summera alla värden i en data-source (DS) och sedan föra in dom i en annan DS. Bör nog inte vara en ds-typ (DST) DERIVE eller COUNTER, utan en GAUGE, då denna inte sedan lägger ihop alla totalvärden. I min rrd fanns inga lediga GAUGE kvar, men väl en DERIVE. Läste att man kan ändra DST med följande kommando:

Kod: Markera allt

rrdtool tune rrd2.rrd -d vp_derive:GAUGE 
Rrdtool tune ska vara verktyget för att ändra i en rrd-fil
rrd2.rrd är min rrd-fil
-d ska vara det som indikerar att detta ska ändras
vp_derive är den DS jag vill ändra
och :GAUGE är den DST jag vill ändra till.
Körde detta kommando och fasen, jag tror det ändrades :)
Sedan till TOTAL...
Har hittat massor av exempel, men det är alltid bara brottstycken, lite för små delar för att man ska förstå sammanhanget, t.ex.

VDEF:total=vp_diff,TOTAL
Här verkar man ha den DS som heter total och den ska byggas av vp_diff, på TOTAL-vis, det mest lovande exemplet. Men när jag klämmer in det i ett script så ballar det ur...

* CDEF:ds0total=ds0,144000,*
* GPRINT:ds0total:AVERAGE:Total\:%lf
Detta består av en DS (ds0total) denna byggs upp av DS vid namn ds0 som multipliceras med 144000
Därefter skriver man medelvärdet av ds0total och slutet ska undvika att okända värden sätts som 0

DEF:ifInOctets=<RRD>:ifInOctets:MAX
VDEF:ifInOctetsTotal=ifInOctets,TOTAL
PRINT:ifInOctetsTotal:\'%6.1lf %sB\'
Denna sista har jag helt begripit, men...
DS ifInOctets ska vara =ifInOctets Max-värden
ifInOctetsTotal ska byggas från en sammanställning av värdena i ifInOctets, alltså TOTAL
Sedan skrivs detta någon stans, men ja...
Detta summerar denna dag :)
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 för en lite uppdate, har nu försökt få summering med kommandot TOTAL att funka, har läst manualerna och troligt vis de flesta sitter relaterade till rrdtool graph och total, jag har testat typ alla varianter av kombinationer jag kan komma på, men det blir fasen inte rätt. Vetegudarna vad jag gör för fel. Men utgångspunkten har varit att köra i ett perl-script. Samma script som ritar graf, kanske det som är fel.
GPRINT' DEF vdef och cdef i massor av kombinationer... Ja, att få till en summering av värdena i en DS och sedan få dessa skrivna, ja det var svårare än jag trodde, troligen är det något i grunden jag har missat.
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 »

Hej igen. Ja rrdtool är inte helt lätt att förstå sig på då man börjar gräva lite djupare. Får du fel svar eller något felmeddelande?

Har du kollat på tex https://wiki.m.nu/index.php/M%C3%A4ta_e ... ch_RRDTool ?

Plockar ur lite valda delar:

Kod: Markera allt

   --start -24h \
   --end now \
   DEF:energi=/home/energi/db/energi.rrd:energi:AVERAGE \
   CDEF:W=energi,3600,* \
   CDEF:energiK=energi,1000,/ \
   VDEF:value_sum=energiK,TOTAL \
   GPRINT:value_sum:"Förbrukad mängd\: %0.2lfkWh\n" \
Där har du först en DEF för att hämta ut data ur databasen, sedan en CDEF för att multiplicera med 3600 (sekunder till timmar), en till CDEF för att dividera med 1000 (watttimmar till kilowatttimmar) och en VDEF för att summera över valt intervall (now-24h till now)

För att förenkla kan du strunta i alla CDEF, kör TOTAL på en DEF så borde du få ut något användbart i sekunder, men jag misstänker att jag missledde dig en aning tidigare. Rrdtool TOTAL "Returns the rate from each defined time slot multiplied with the step size" så du ska nog skriva 1 till databasen då pumpen går och 0 då den står still. TOTAL sköter om att multiplicera med step size som är 150. Så om du har fått ett svar som är 150 gånger för stort så var felet mitt...

Sen misstänker jag att perl bara krånglar till det för dig. Kör kommandona direkt i terminalen då du testar och sen då det fungerar så gör ett bash skript av det.
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 »

Jo, länken hade jag hittat och det är förvånansvärt vad många av googleträffar man får på m.nu-sidor även om man googlar på engelska. Det verkar som att just rrdtool diskuteras extra flitigt just här =)

Hittills har jag inte fått ut något av ett TOTAL-kommando, alla script med TOTAL i har resulterat i felmeddelanden, så jag tror mina fel är fler än ett eventuellt 150-fel, men jag ska sätta mig igen om några dagar, det blir lite intensiv släkt-reunion de närmaste dagarna... Men efter några dagars pliktskyldigt småprat så hägrar lite ledighet och mera script-knackande =)
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 »

Snurrat runt I detta några dagar nu. Fick hela tiden meddelanden som "filen eller katalogen finns inte" hur jag än vände och vred på syntaxen så var svaret det samma. Tillverkade en ny rrd-bas, med vp1, vp2 och vp_diff med den ändringen att vp_diff nu får värdet 1 eller 0 beroende på drift eller inte. Men alla försök att använda rrd3.rrd:vp_diff:AVERAGE ger samma resultat, "filen eller katalogen finns inte" ja... Någonstans missar jag nog något uppenbart.
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 »

Min DEF ser ut så här
"DEF:drift=/mnt/ramdisk/rrddata/rrd3.rrd:vp_diff:AVERAGE",
Sökvägen är korrekt, och vp_diff är en av mina DS
Rrdtool lastupdate visar att i rrd3.rrd finns DS vp1, vp2 och vp_diff....
Grunn, grunn, grunn....
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 »

:D detta klurande är ju bara så kul!
Fick ju bara massor av felmeddelanden om att filen inte fanns. Testade då att i mnt/ramdisk/rrddata (alltså samma mapp som rrd-filen finns i) skapa ett .sh-script, (samma som i guiden här på m.nu om OWFS och elmätare)först riktat mot en dokumenterat fungerande databas, och det fungerade, bytte sedan till min nya rrd-fil, och då fungerade det med :D så nu ska jag bara putsa vidare på detta nya script.... Parallellt med scriptandet snickrar jag en altandörr i lösvirke, massor av limmande som måste torka, perfa för lite scriptpauser i solen.
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 »

scriptet jag utgår ifrån ser ut så här:

Kod: Markera allt

 #!/bin/bash
 #Exempel för en elmätare med 10000 blink per kWh. OBS . i stället för ,
# OMRAKNINGSFAKTOR=0.1
 #COUNT=`cat /mnt/1wire/1D.94EC09000000/counters.A|sed -e s/" "//g`
 #Lite magi för att räkna med flyttal i BASH
 #VALUE=`echo "$OMRAKNINGSFAKTOR $COUNT" |awk '{printf "%.0f", ($1 * $2)}'`
# /usr/bin/rrdtool update /home/energi/db/energi.rrd N:$VALUE

 /usr/bin/rrdtool graph /var/www/energi-24h.png \
   -E \
   --imgformat PNG \
   --start -24h \
   --end now \
   --width 600 \
   --height 400 \
   --title Exempelgraf \
   --vertical-label 'Watt' \
   -l 0 \
   DEF:energi=/home/energi/db/energi.rrd:energi:AVERAGE \
   CDEF:W=energi,3600,* \
   AREA:W#AAAAee \
   LINE3:W#000000 \
   CDEF:energiK=energi,1000,/ \
   VDEF:value_sum=energiK,TOTAL \
   GPRINT:value_sum:"Förbrukad mängd\: %0.2lfkWh\n" \
   GPRINT:W:MIN:"Momentanförbrukning\: Min\: %0.2lf%sW" \
   GPRINT:W:AVERAGE:"Medel\: %0.2lf%sW" \
   GPRINT:W:MAX:"Max\: %0.2lf%sW" \
   GPRINT:W:LAST:"Just nu\: %0.2lf%sW\n" \
   COMMENT:"Copyright Freiholtz Consulting 2010"
Jag #-markerade hela början för att slippa all inläsning och sånt, det görs redan.
Därefter blev det småstegsmetoden igen, genom att efter varje ändring i scriptet köra detta så har jag listat ut vilka delar som är viktiga. Genom att byta ut multiplicerandet med 3600 och divisionen med 1000 som finns i scriptet mot multiplikation med 1 och division med 3600 så sekunder blir timmar. Detta gav dock ett problem, jag får då driften under det senaste dygnet, jag vill hellre ha bara innevarande dygn. Bytte -- start -24 till -12 så är problemet löst för stunden. Ja så ändra lite enheter och så.

Nästa problem att lösa är att ändra så att summering sker på innevarande dygn, har läst om detta i rrdtool-guiden....
Skriv svar