[vz-users] Middleware mit negativen Werten nach Update

Sebastian Michel Sebastian_Michel at gmx.de
Thu Dec 26 16:35:03 CET 2013


 

Hallo, 

also ohne Aggregation funktioniert es auch nicht. Ich denke, dass
Problem liegt irgendwo in der middleware, da ein direkter Aufruf der
middleware.php/data/... auch falsche Werte liefert. 

Vor dem update hat es mit negativen Werten funktioniert (und natürlich
ohne aggregation). 

Allerdings war meine Rechnung falsch rum. Das hab ich jetzt korrigiert
und damit hab ich auch keine negativen Werte mehr. Damit hab ich das
Problem jetzt quasi nicht mehr. 

Aber trotzdem nochmal zusammengefasst: Mit den letzten Änderungen in der
middleware funktionieren negative Werte nicht. Warum auch immer. 

Sebastian 

Am 2013-12-26 12:30, schrieb Andreas Goetz: 

> Problem ist jetzt hier erfasst: https://github.com/volkszaehler/volkszaehler.org/issues/85 [1] 
> 
> 2013/12/26 Andreas Goetz <cpuidle at gmail.com>
> 
> Hallo Sebastian,
> 
> verstehe ich Dich richtig, dass Du die Datenbank direkt manipulierst? Wenn Du das machst bist Du natürlich auch dafür verantwortlich dass die gesamte Datenbank stimmt. 
> 
> Einfachste Lösung: aggregation ausschalten (klappts dann?)
> 
> Zweiteinfachste Lösung: aggregation NICHT für Deinen selbst geschriebenen Kanal nutzen.
> 
> Schwieriger: überlegen was passiert. 
> Das aggregate Skript schiebt die historischen Daten (=vor der aktuellen Periode) in eine Extratabelle. Das Problem ist wenn Du jetzt nochmal Daten in die Originaltabelle schreibst. Wenn das einen Zeitraum betrifft der in der Aggregationstabelle bereits enthalten ist werden die Änderungen schlicht ignoriert, unabhängig davon ob Du es über Middleware oder Datenbank machst.
> Für Middleware liesse sich das mit ein wenig Logik noch beheben, für Datenbank bist Du auf Dich gestellt.
> 
> vg
> 
> Andreas 
> 
> On Thu, Dec 26, 2013 at 11:42 AM, Sebastian Michel <Sebastian_Michel at gmx.de> wrote:
> Es ist in python geschrieben. Hier ein Auszug:
> 
> class VzDb(object):
> 
> def __init__(self, host, port, user, passwd, name):
> self.Host = host
> self.Port = port
> self.User = user
> self.Pass = passwd
> self.Name = name
> 
> def connect(self):
> self.Handle = MySQLdb.connect(host=self.Host, port=self.Port, user=self.User, passwd=self.Pass, db=self.Name)
> 
> def save(self, uuid, value):
> 
> cursor = self.Handle.cursor()
> query = """SELECT e.id [2], p.value FROM entities e
> LEFT JOIN properties p
> ON (e.id [2] = p.entity_id)
> WHERE e.uuid = '%s' AND p.pkey = 'title'""" % (uuid)
> resp = cursor.execute(query)
> if resp != 1:
> raise Exception("Multiple channels in database with uuid: %s" % uuid)
> 
> # get channel id and channel title
> (channel_id,title,) = cursor.fetchone()
> 
> timestamp = int( time.time()*1000 )
> query = "INSERT INTO data(channel_id, timestamp, value) VALUES (%d, %d, %f)" % (channel_id, timestamp, value)
> resp = cursor.execute(query)
> # print query
> if resp == 1:
> syslog.syslog(syslog.LOG_INFO, "Added value (%.2f) to database channel: '%s'" % (value, title))
> else:
> raise Exception("Error adding value to database channel:" % title)
> 
> cursor.close()
> 
> def close(self):
> self.Handle.commit()
> self.Handle.close()
> 
> Viele Grüße
> Sebastian
> 
> Am 2013-12-26 11:34, schrieb Daniel Lauckner: 
> 
> Mahlzeit,
> 
> Am Donnerstag, 26. Dezember 2013 um 11:11 schrieb Sebastian Michel:
> Hallo, 
> ich hab folgendes Problem: 
> [...]
> 
> Kann mir jmd weiterhelfen? 
> 
> Script vergessen?!
> 
> mfg Daniel

 

Links:
------
[1] https://github.com/volkszaehler/volkszaehler.org/issues/85
[2] http://e.id
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20131226/8cd11496/attachment.html>


More information about the volkszaehler-users mailing list