Mäta elförbrukning i realtid med en Raspberry PI?

I detta forum hör diskussioner gällande teknik i största allmänhet och hemautomation i synnerhet hemma.

Moderator: elf98

Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
berisen
Wannabe
Inlägg: 9
Blev medlem: 16 jan 2020, 13:04

Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av berisen » 16 jan 2020, 13:12

Jag har letat länge efter någon billig och enkel lösning som man kan övervaka energiförbrukningen i realtid och sen se resultatet i en app/webbsida men inte hittat något vettigt.

Det finns ju lösningar som Watty och liknande men det brukar ofta kosta en bra slant och såå nödvändigt är det inte :wink:

Är det någon här som har satt ihop ett paket med en Rpi som genom mätning av blinkningarna på mätarögat mäter förbrukningen i realtid och sen visualiserar och loggar datan på något bra sätt? Jag skulle bli supernöjd om jag bara kunde se den aktuella förbrukningen på en webbsida som jag vill kunna nå även utanför det lokala nätverket hemma. En bonus vore sen om jag också kunde logga datan och spara ner total förbrukning varje dag i antal kWh och visa någon enkel graf utifrån detta.

Nere vid elmätaren finns både eluttag och hyfsad wifi-signal.

Vad behöver jag? Vad kan det kosta ungefär och slutligen, hur svårt är det för någon med hyfsad teknik och nätverksvana? Tänkte om det fanns någon halvfärdig lösning där ute man kan inspireras av. :D
larky
Moderator
Inlägg: 1147
Blev medlem: 01 feb 2008, 12:21
Ort: Skellefteå
Kontakt:

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av larky » 16 jan 2020, 19:02

Ikea Sparsnäs, Raspberry Pi,en USB-TV-sticka och https://github.com/strigeus/sparsnas_decoder löser problemet, men sparsnäsen har utgått.. men säljs ibland lite här och var. Jag har den lösningen på en elmätare och det fungerar.
rogerthn
Tar hemautomation på allvar
Inlägg: 77
Blev medlem: 06 mar 2008, 22:25
Ort: Trollhättan

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av rogerthn » 16 jan 2020, 19:23

Jag kör med Domoticz på en Raspberry med en https://www.m.nu/adaptrar-natuppbyggnad ... re-ds9490r och en https://www.m.nu/matinstrument-input-ou ... aket-1wire.
dzVents script för att få aktuell aktuell förbrukning

Kod: Markera allt

local function readCounter(cnt)
    open = io.open
    file = open("/mnt/1wire/1D.DAF20C000000/counter.B", "rb") -- r read mode and b binary mode
    if not file then
        domoticz.log('RAdbg2 /mnt/1wire/1D.DAF20C000000/counter.B not open', domoticz.LOG_INFO)
    else
        content = file:read "*a" -- *a or *all reads the whole file
        file:close()
        cnt = tonumber(content)
    end
    return cnt
end

return {
    on = {
        devices = {
            'CounterDAF3'
	}
    },
    execute = function(domoticz, device)
        LastEnergyTimestamp = domoticz.variables('LastEnergyTimestampTotalt').value
        LastEnergyCount = domoticz.variables('LastEnergyCountTotalt').value
        today = domoticz.devices('CounterDAF3').counterToday*1000
        counter = domoticz.devices('CounterDAF3').counter*1000
        currval = readCounter()
        actual = (currval - LastEnergyCount)/((os.time()-LastEnergyTimestamp)/3600)
        if currval ~= LastEnergyCount then
            domoticz.devices('Total Usage').updateElectricity(actual,currval)
            domoticz.variables('LastEnergyTimestampTotalt').set(os.time())
            domoticz.variables('LastEnergyCountTotalt').set(currval)
        else
            domoticz.devices('Total Usage').updateElectricity(actual,currval)
        end
    end
}
Jo, det saknas en del "detaljer" :lol:
berisen
Wannabe
Inlägg: 9
Blev medlem: 16 jan 2020, 13:04

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av berisen » 17 jan 2020, 15:04

Tack för svar! Finns ju några lösningar verkar det som :)

Den där med pulsräknaren direkt på RPi var rätt spännande, vore kul att ge sig på en sån build och testa. Verkar vara precis det jag är ute efter.
berisen
Wannabe
Inlägg: 9
Blev medlem: 16 jan 2020, 13:04

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av berisen » 20 jan 2020, 12:01

larky skrev: 17 jan 2020, 08:43 https://www.hyggeit.dk/2013/04/super-ch ... power.html
Pulsräknare direkt på RPi
Är det någon som vet vad skillnaden är mellan nya och gamla RPi?

Jag funderar på att köpa följande setup från Elfa. Kommer det att fungera eller har det ändrats mycket mellan den Pi som används där jämfört med Pi3?
emOUG2E.png
Är det något mer jag behöver tänka på för att få det att fungera? :)
larky
Moderator
Inlägg: 1147
Blev medlem: 01 feb 2008, 12:21
Ort: Skellefteå
Kontakt:

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av larky » 20 jan 2020, 13:34

Hårdvarumässigt har det nog inte förändrats något i GPIO pinout mellan RPi-versionerna vad jag vet.
Du behöver en bra USB-laddare till en RPi, många oväntade problem som kan uppstå med en som inte ger nog med ström.
berisen
Wannabe
Inlägg: 9
Blev medlem: 16 jan 2020, 13:04

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av berisen » 30 jan 2020, 11:02

Okej då har jag äntligen fått hem min Pi med tillbehör för att kunna sätta ihop en sån mätare som det länkades till ovan.
Tyvärr så går det inte så bra.. den är ju skriven för några år sedan och en hel del har ändrats mjukvarumässigt sedan dess. :(

Får inte riktigt scriptet där att fungera, den skriver ingenting till databasen men däremot så verkar själva fotoresistorn fungera för när jag kör debugscriptet så får jag massa värden. Kan det vara skrivet i en äldre version av python som inte fungerar längre?

Var någon här som hade testat den guiden och lyckats få igång det? Jag kör senaste versionen av Rasbian på en Pi 3 A+.
larky
Moderator
Inlägg: 1147
Blev medlem: 01 feb 2008, 12:21
Ort: Skellefteå
Kontakt:

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av larky » 31 jan 2020, 08:28

Testa att kontakta författaren, men om debugen fungerar finns det ju hopp.
berisen
Wannabe
Inlägg: 9
Blev medlem: 16 jan 2020, 13:04

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av berisen » 31 jan 2020, 15:05

Fick allting att fungera med lite pillande med Python-scriptet. Det var skrivet i pyhton2 och efter att ha anpassat lite till python3 så fungerar det bra. Fick också anpassa lite vid uppstarten av Rasbian då den inte riktigt ville starta som planerat om den låg för tidigt i startsekvensen.

Då är det bara att börja logga. Kanske onödigt egentligen eftersom all denna data finns hos elleverantören men det var just att kunna se det i realtid som var lite kul (och nördigt) ;)
larky
Moderator
Inlägg: 1147
Blev medlem: 01 feb 2008, 12:21
Ort: Skellefteå
Kontakt:

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av larky » 01 feb 2020, 11:34

Kul att det funkade!
Pliggen
Wannabe
Inlägg: 7
Blev medlem: 03 feb 2020, 22:30

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av Pliggen » 03 feb 2020, 22:39

Har länge funderat på att göra något sånt här. Har en väderstation som skickar data till weewx som körs på en Rpi, skulle va roligt att få in elförbrukningen i samma databas och kunna visa på samma vädersida som weewx skapar och se hur elförbrukning ändras vid olika temperaturer. Köpte en sparsnäs för ett tag sen men har inte lagt någon energi på att skapa något ännu med den. Men kanske vore detta smidigare att göra med de få grejjerna.
Vill du dela med dig av det uppdaterade scriptet?
Och kanske någon bild på hur det ser ut när det loggas?

Dela gärna med dig av dina "erfarenheter" i detta projekt!

Vore kul om det gick att göra något av detta nu!
berisen
Wannabe
Inlägg: 9
Blev medlem: 16 jan 2020, 13:04

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av berisen » 07 feb 2020, 10:02

Pliggen skrev: 03 feb 2020, 22:39 Har länge funderat på att göra något sånt här. Har en väderstation som skickar data till weewx som körs på en Rpi, skulle va roligt att få in elförbrukningen i samma databas och kunna visa på samma vädersida som weewx skapar och se hur elförbrukning ändras vid olika temperaturer. Köpte en sparsnäs för ett tag sen men har inte lagt någon energi på att skapa något ännu med den. Men kanske vore detta smidigare att göra med de få grejjerna.
Vill du dela med dig av det uppdaterade scriptet?
Och kanske någon bild på hur det ser ut när det loggas?

Dela gärna med dig av dina "erfarenheter" i detta projekt!

Vore kul om det gick att göra något av detta nu!
Absolut, kan ordna en liten guide senare ikväll om jag hinner eller lite senare i helgen. Det är inga stora förändringar mot ursprungsscriptet (https://www.rakett.dk/2016/12/rpi-cheap-power-meter/) utan det var mindre grejer som behövde göras för att få igång det på nyare hårdvara/mjukvara.

Alla komponenter jag behövde fanns på Elfa iallafall:
https://www.elfa.se/sv/20-polig-startka ... ggest=true
https://www.elfa.se/sv/kondensator-1uf- ... ggest=true
https://www.elfa.se/sv/cds-fotoresistor ... ggest=true

Delar med mig av ett par bilder så länge så kan du se hur det loggas. Hittills verkar förbrukningen stämma väldigt bra jämfört med datan från elbolaget. Det diffar ibland någon tiondels kWh men det kan bero på att jag grejat med Raspberryn samtidigt och gjort lite tunga DB-sökningar och då orkar den inte med att köra python-scriptet ordentligt och tappar en del blinkningar. Det är helt inom rimlig felmarginal för min del iallafall :)

Screenshot 2020-02-07 at 08.54.19.png
Screenshot 2020-02-07 at 08.53.50.png
Pliggen
Wannabe
Inlägg: 7
Blev medlem: 03 feb 2020, 22:30

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av Pliggen » 07 feb 2020, 16:55

Perfekt! Ser ut att va precis vad jag tänkt mig! Blir till å beställa lite grejer då. Ser fram emot en liten guide då :D Tack så länge!
berisen
Wannabe
Inlägg: 9
Blev medlem: 16 jan 2020, 13:04

Re: Mäta elförbrukning i realtid med en Raspberry PI?

Inlägg av berisen » 08 feb 2020, 23:08

Okej då ska jag försöka mig på en liten guide.

Det som behövs är alltså en Raspberry Pi, Rasbian Lite, en cds fotoresistor, en 1uF kondensator samt lite kablar att koppla samman allting med.

https://www.elfa.se/sv/kondensator-1uf- ... ggest=true
https://www.elfa.se/sv/cds-fotoresistor ... ggest=true
https://www.elfa.se/sv/20-polig-startka ... ggest=true

Lite kopplande först då:
För enkelhetens skull så skriver jag med färger här så man kan följa det lite lättare. Köper man den 20-poliga kabeln från Elfa som jag länkade ovan följer det med en massa olika färger.

1. Koppla en röd tråd mellan 3.3 VDC (P1) på Raspberryns GPIO interface och ett av benen på fotoresistorn.
2. Koppla en grön tråd mellan andra benet på fotoresistorn och plus (+) på kondensatorn. (Det långa benet).
3. Koppla en till tråd (blå) från plus på kondensatorn till P12 på Raspberryn.
4. Slutligen så koppla en svart tråd mellan minus (-) på kondensatorn till P6 på Raspberryn.

Tejpa sedan fast fotoresistorn ovanpå dioden på elmätaren. Jag körde med vanlig eltejp bara för att slippa att massa ströljus stör. Fult som fan men det fungerar :lol:

Här finns en skiss på GPIO-interfacet:
https://www.raspberrypi.org/documentati ... gram-2.png

Bör alltså se ut något sånt här sen när man är färdig (kabeldragning högsta klass, jag vet :lol: )
IMG_1581.jpg
IMG_1582.jpg
(Jag har använt lite andra färger som förlängningar så det är därför det ser lite virrigt ut)

När det sen gäller mjukvaran så gjorde jag såhär:
Börja med att tanka hem och installera Raspbian Lite (Buster):
https://www.raspberrypi.org/downloads/raspbian/

Börja med lite grundläggande config genom att köra:

Kod: Markera allt

sudo raspi-config
Sen behövs lite moduler och tillägg till Rasbian:

Kod: Markera allt

sudo apt-get install python-dev
sudo apt-get install python-setuptools
sudo apt-get install mariadb-server
sudo apt-get install python-mysqldb
sudo apt-get install phpmyadmin
sudo apt-get install apache2
Hämta sedan hem Pythonscriptet som jag modifierat och tillhörande filer:
https://www.dropbox.com/s/mi4o032r31jthan/cpm_2020.zip

Placera alla filer i /var/www/html/ och för att testa så att ljusresistorn fungerar så kan man köra

Kod: Markera allt

sudo /var/www/html/cpm/script/./debug.py
.

När man kör debugscriptet så får man upp en massa värden men man ser tydligt vilka som är blink och då ser man också vilket värde man kan lägga sig på:
debug.jpg
För just min setup så har jag satt att för varje gång som värdet är <900 så ska en skrivning till databasen göras men med hjälp av debugscriptet så kan man fintrimma det här.

Nästa steg är att skapa databasen och databasanvändare:

Kod: Markera allt

CREATE DATABASE measurepower;
CREATE USER 'measurepower'@'localhost' IDENTIFIED BY 'yourpasswordhere';
GRANT ALL privileges ON measurepower.* TO 'measurepower'@'%';
Sen själva tabellen som kommer hålla alla värden:

Kod: Markera allt

CREATE TABLE IF NOT EXISTS `watthours` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL,
`lightvalue` int(11) NOT NULL,
`unixtime` int(30) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
Nästa steg är att lägga in lösenordet du just skapade i pythonscriptet samt i configfilen för mysql som används för att rendera graferna:

Kod: Markera allt

sudo nano /var/www/html/cpm/script/readlight.py 
sudo nano /var/www/html/mysql.database.php
Nästa steg är att se till att pyhtonscript körs när Rpn startar:

Kod: Markera allt

sudo nano /etc/rc.local
Lägg till detta på näst sista raden:

Kod: Markera allt

(sleep 10;python /var/www/html/cpm/script/readlight.py)&
Se till att det avslutas med

Kod: Markera allt

exit 0
på sista raden.

Starta om pin:

Kod: Markera allt

sudo reboot
Nu bör allting vara igång och logga värden till databasen. Om du surfar in på din lokala adress så ska du hamna på indexfilen och kan se värdena där.

Om det loggas för mycket eller för lite så kan man justera värdet i readlight-scriptet:

Kod: Markera allt

sudo nano /var/www/html/cpm/script/readlight.py
Längst ner i filen finns följande. Efter att man hittat ett passande värde genom debug-filen så sätter man motsvarande värde här. Varje gång resistorns värde hamnar under det valda värdet så kommer en skrivning till databasen att göras. Det är säkert olika styrka på olika dioder för olika elmätare så det här behöver man nog justera en del.

Kod: Markera allt

while True:
    result = RCtime(18)
    if result<900:       #Adjust this to fit your readings via ./debug
        print(result)
        Writewatt(result)
        time.sleep(0.1)
Jag tror det var allt.. :)

Som sagt, credit till de två som gjort tidigare versioner av scriptet.
https://www.hyggeit.dk/2013/04/super-ch ... power.html
https://www.rakett.dk/2016/12/rpi-cheap-power-meter/

Jag har bara gjort mindre anpassningar så att det ska fungera på senare versioner av Raspbian och Raspberry Pi 3/4. Är långt ifrån någon expert så jag har mest testat mig fram tills att jag hittat en fungerande setup. Finns mycket optimeringar att göra, det är ganska tungkört så det krävs mycket av CPUn. Borde gå att göra mycket bättre men jag vet inte riktigt hur.
Skriv svar