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
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

)
(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:
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
.
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å:
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:
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
på sista raden.
Starta om pin:
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.