Hallo Sebastian, kannst Du bitte nochmal step-bei-step erläutern was "neg. Werte funktionieren nicht" heisst:
1. Kanal anlegen 2. Wert xy hinzufügen 3. Kanal auslesen erwarteter/tatsächlicher Wert mit alter und neuer MW? an der Stelle sollte sich nichts geändert haben... vg Andreas 2013/12/26 Sebastian Michel <[email protected]> > 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 > > > 2013/12/26 Andreas Goetz <[email protected]> > >> 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 < >> [email protected]> 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, p.value FROM entities e >>> LEFT JOIN properties p >>> ON (e.id = 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 >>> >>> > >
