curlymoo / energylogging Goto Github PK
View Code? Open in Web Editor NEWReading the P1 port with a Raspberry Pi
Reading the P1 port with a Raspberry Pi
CurlyMo, Ik heb nog een foutje ontdekt, de kolom 'name' in de 'devices' tabel moet uniek zijn, anders krijg je meerdere devices met dezelfde naam en dan gaat het fout bij mysql.py.
Ik kreeg deze fout bij het draaien van mysql.py:
(1242, 'Subquery returns more than 1 row')
na het invoeren van dit in mysql:
ALTER IGNORE TABLE devices ADD UNIQUE (name);
draait het allemaal goed en krijg ik mooie grafieken te zien.
Broken image :)
Hoi,
Ik probeer jou raspberry software te bruiken om mijn slimme meter uit te lezen. maar loop bij het 3e punt al vast. (3.Change the settings in the cmdline.txt), maar dit bestand is niet te lezen.
Ook als ik de image gewoon op een SD kaart zet start de raspberry ook niet op.
kan jij mij verder helpen.
mvg Gerard
Ik probeer e.e.a. te porten naar arch OS op RPI. Bij het bekijken van de p1read.py code zie ik het volgende:
je gaat uit van 20 regels in de P1 datagram. Waarom dit niet gewoon dynamisch houden en checken of einde datagram ('!') bericht komt?
voor iedere meetpunt doe je eerst een re.match, en indien positief, gevolgd door een re.search. Ben zelf nog aan het experimenteren, maar zou je bijvoorbeeld de key/value paren kunnen opslaan in een dictionary en deze later gebruiken. Iets als:
OBIScode2name = {
'1.7.0': 'ElecticityTotalUsed',
'1.8.1': 'ElecticityRateUsedOffPeak',
'1.8.2': 'ElecticityRateUsedPeak',
'2.7.0': 'ElecticityTotalGenerated',
'2.8.1': 'ElecticityRateGeneratedOffPeak',
'2.8.2': 'ElecticityRateGeneratedPeak',
'24.3.0': 'GasLogDateTime',
'96.1.0': 'GasSerial',
'96.1.1': 'ElecticitySerial',
'96.3.10': 'ElecticitySwitchPosition',
'96.14.0': 'ElecticityCurrentRate',
}
OBIScodes = '|'.join(OBIScode2name)
pattern = '\d-\d:(?P%s)((?P\w+|\d+|\d+.\d+|)(?:*kWh?|))' % OBIScodes
OBISline_RE = re.compile(pattern)
metingdata = {}
en dan in loop iets als:
result = OBISline_RE.search(line)
if result:
metingdata[result.group('OBIScode')] = result.group('value')
else:
# wat niet door de reguliere expressie heenkomt, bv gas.
Voor de P1 meting moet natuurlijk metingdata geinitialiseerd worden!
NB: dit is nog niet voldoende uitgewerkt, de code zelf haalt nog een cijfer weg voor floats (ik neem aan om minder inserts in de db te krijgen?), e.d.
Voordeel zou kunnen zijn dat je werkt met een gecompileerde reguliere expressie, zou efficienter moeten zijn, en je hebt minder regels nodig om de gegevens uit de meting te halen.
NB: een vraagje over het schedulen van de jobs. Gebeurt dit vanuit cron?
Line 148: ), %.2f, '%s'), 1);\n" %
OKE: ), %.2f, '%s', 1);\n" %
achter %s' staat een ')' teveel.
Groetjes,
Berto
Op regel 1 van het tables.sql bestand mis je een CREATE
na het toevoegen werkt het bestand goed.
TABLE IF NOT EXISTS device_types (
type_id tinyint(1) unsigned UNIQUE AUTO_INCREMENT,
name varchar(11) NOT NULL UNIQUE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
moet zijn:
CREATE TABLE IF NOT EXISTS device_types (
type_id tinyint(1) unsigned UNIQUE AUTO_INCREMENT,
name varchar(11) NOT NULL UNIQUE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.