[vz-users] Middleware mit negativen Werten nach Update

Andreas Goetz cpuidle at gmail.com
Thu Dec 26 17:17:29 CET 2013


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 <Sebastian_Michel at gmx.de>

>  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 <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, 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
>>>
>>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20131226/534cc58e/attachment.html>


More information about the volkszaehler-users mailing list