MySql Mittelwert berechnen lassen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
der_Arne
User
Beiträge: 10
Registriert: Samstag 23. Juli 2016, 13:28

Hallo
Ich möchte mir eine Homepage aufbauen für mein Photovoltaikanlage.
Anzeige für momentan Verbrauch/Produktion
sowie Diagramme für die Tages bzw. Wochen Produktion

Derzeitig habe ich eine Datenbank mit zwei Tabellen "Verbrauch" & "Produktion" (Spalten: ID ; DatumZeit ; Sensorwert)
in beide Tabellen wird jede Minute ein Wert eingetragen, ID hat AUTO_INCREMENT und DatumZeit wird von MYSQL vorgegeben (NOW).
Eingetragen werden die werte für "Produktion" bereits durch ein Pyhton Script welches XML-Dateien liest, einträg und verschiebt.
Für die Verbrauchswerte habe ich einen Arduino dieser misst den S0-Bus den Stromzählers und rechnent einen Mittelwert für jeweils eine Minute.

Jetzt möchte ich gerne eine weitere Tabelle nutzen mit welcher die Homepage arbeitet. Verbrauchswerte für eine Woche.
Hier reicht es wenn die Diagramme in 5minuten Schritten genau sind. Dazu soll der Mittelwert berechnet werden.

Gearbeitet wird mit Python 3.2 & MYSQL 5.1.73 das ganze läuft auf eine QNAP.

Eine Abfrage aus der Datenbank habe ich nun schon bekommen nur leider stehe ich etwas auf den Schlauch um den nächsten Schritt für die Berechnung zu schaffen.

Vielleicht könnt ihr mir nen Tipp geben.

Danke der Arne

Code: Alles auswählen

#python
import datetime
import mysql.connector
		
		

cnx = mysql.connector.connect(user=XXX', password='XXXX', database='PV')
cursor = cnx.cursor()

add_data = ("SELECT W, Wh, timestamp FROM Produktion ORDER BY Produktion.timestamp DESC LIMIT 10 ")

		

cursor.execute(add_data)


for (W, Wh, timestamp) in cursor:
  print("{}, {} was hired on {}".format(W, Wh, timestamp))

for (W) in cursor:
W + W



cursor.close()
cnx.close()
Zuletzt geändert von Anonymous am Samstag 1. Oktober 2016, 16:10, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@der_Arne: Was soll denn der Quelltext? Der ist offensichtlich nicht lauffähig und sieht aus wie von irgendwoher ohne nachdenken zusammenkopiert.

Zudem würde ich auch sagen das ist keine Python-Frage, sondern eine MySQL-Frage. Du kannst natürlich eine weitere Datenbanktabelle mit redundanten Daten anlegen, aber ich würde das einfach in der Abfrage erledigen. Ungetestet:

[codebox=mysql file=Unbenannt.sql]SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(`timestamp`) DIV 600), AVG(`value`)
FROM production
WHERE `timestamp` BETWEEN '2016-09-01' AND '2016-09-30'
ORDER BY `timestamp` DESC
GROUP BY FROM_UNIXTIME(UNIX_TIMESTAMP(`timestamp`) DIV 600) -- 5*60 seconds = 5 minutes[/code]
Antworten