Slimste manier van Loggen gemeten waarden

Naar aanleiding van mijn topic http://www.circuitsonline.net/forum/view/100907/1/ de volgende vraag.

Inmiddels met ik mijn zonnepanelen, kWh meter en gasmeter ( watermeter wil nog niet lukken.

Nu sla ik elke dag om 00:00 uur de totaal tellerstand op in een DB. Na 1 jaar wordt de de 1e dag weer overschreven.

Om nu een wat langere historie op te bouwen wil ik deze ook in een SQL tabel opslaan.
Nu zit ik wat te dubben
1
Een tabel waar elk uur de het verbruik van dat uur in staat of telkens elk uur de totale tellerstand op slaan. Later met een query met aftrekken haal je dan het uur verbruik terug.
Bij de laatse heb ik dan een extra tabel nodig met de totaal tellers welke elk uur overschreven worden.
De eeste tabel kunnen dan smallints zijn de totaal tellers waarschijnlijk int of bigint.

als datumtijd wil ik smalldatetime gebruiken of is het handiger dit niet te doen ?

Binnenkort zal ik wat resultaten on SJP zetten

In zo'n geval kun je best de complete tellerstand opslaan. Tenminste als de nauwkeurigheid een rol speelt. In het eerste geval krijg je kleine afrondfouten, en die kunnen bij een groot aantal metingen aardig oplopen.

buckfast_beekeeper

Golden Member

Hoe komt het dat in je DB na een jaar de eerste dag overschreven wordt? Een datum wordt normaal opgeslagen als een nummerieke waarde. Deel voor de komma is het aantal dagen na 01/01/1900. Het deel na de komma is de uren, minuten, seconden. 41019,5 is dan de datum van vandaag om 12h.

Ik zou de volledige tellerstand opslaan. De getallen aftrekken kan dan wel in een query. Wat de grootte van je DB betreft moet je niet gaan panikeren. 24 records/dag 365 dagen/jaar geeft maar 8760 records van enkele bytes. Op het werk heb ik een database van >70 000 records in 1 tabel en >10 000 records in een andere tabel. De Koppel tabel bevat meer dan 100 000 records. De DB bevat nog meerdere kleinere tabellen en koppel tabellen. Oa een landen tabel met alle landen van de wereld met ISO-landcode en internationaal telefoon kengetal. Ik blijf daarmee in de buurt van 10MB.

Met deze kant van de logging denk ik dat je beter af bent op tweakers.net

Van Lambiek wordt goede geuze gemaakt.

Nu sla ik elke dag om 00:00 uur de totaal tellerstand op in een DB. Na 1 jaar wordt de de 1e dag weer overschreven.

Vergeten te vermelden dat dit een DB in de PLC is, PLC geheugen van siemens is rete duur. In deze db staan alleen de tellerwaarden.
Aangezien het aantal recors per jaar maximaal 366 kan zijn kan ik dus altijd terugvinden aan de hand van het dagnummer wat de stand was. Dit is min of meer een hulpmiddel om te zien / vergelijken wat ik in de SQL db schrijf.

Inmiddels ben ik begonnen met SQL2005, om flink wat data te krijgen eerst maar eens begonnen met per minuut zodat is query's uit kan proberen. SQL vragen stel ik op helpmij forum ( of weet iemand een beter forum hiervoor). In SQL log ik nu elke minuut dat wordt elk uur Timestamp (SmallDateTime) en de complete tellerstand als Int.

Zolang je met een PLC of microcontroller zit, heb je geheugen beperkingen. Dat zo'n PLC niet meer dan 366 waardes kan onthouden zou best kunnen. Ik geloof je dat dat zo is als je het zegt.

Maar zodra je de boel naar een moderne PC gaat loggen, dan moet je even van de ouderwetse: "een beetje opletten met hoeveel data je opslaat" afstappen.

Gewoon doorgaan met iedere minuut loggen.

Ga er even van uit dat je EUR 10,- aan disk-ruimte in dit project kan investeren. Dat is ongeveer 100Gb. Log je "datum, tijd, stand", dan hoeft dat maar 12 bytes te kosten. De database zal het wel inefficiënt doen en 100 bytes nodig hebben. Dan kan je zo'n 31 jaar loggen alvorens dat je voor EUR 10 genoeg disk ruimte kan kopen dat je drie millennia kan loggen....

(Als je vervolgens op de seconde nauwkeurig opslaat wanneer de stand 1 waarde is opgeschoven, dan heb je net NOG iets meer nauwkeurige data, waardoor je nog iets beter achteraf kan achterhalen wat het gebruik was.)

Voor dit soort dingen is een Raspberry Pi eigenlijk een prima apparaat om continue aan te staan (minder dan 3W) en prima programmeerbaar voor zo'n taak. Dan moet je op SD kaart loggen. Dan zal je maar 10G van een 16G SD kaartje kunnen gebruiken. Wat jammer nou! Moet er over 3 jaar al een nieuwe SD kaart in! Zucht!

[Bericht gewijzigd door rew op zaterdag 21 april 2012 11:11:29 (14%)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
GJ_

Moderator

Op 21 april 2012 11:09:31 schreef rew:.. Dat zo'n PLC niet meer dan 366 waardes kan onthouden zou best kunnen. Ik geloof je dat dat zo is als je het zegt. ...

Die PLC kan wel meer onthouden :-)

Op 21 april 2012 08:51:05 schreef Peter112:..PLC geheugen van siemens is rete duur....

Gewoon SD kaartje?