<div dir="ltr"><div><div><div><div><div><div><div>Hallo Sebastian,<br><br></div>kannst Du bitte nochmal step-bei-step erläutern was "neg. Werte funktionieren nicht" heisst:<br><br></div>1. Kanal anlegen<br></div>
2. Wert xy hinzufügen<br></div>3. Kanal auslesen<br></div>erwarteter/tatsächlicher Wert mit alter und neuer MW?<br><br></div>an der Stelle sollte sich nichts geändert haben...<br><br>vg<br></div>Andreas<br><br></div><div class="gmail_extra">
<br><br><div class="gmail_quote">2013/12/26 Sebastian Michel <span dir="ltr"><<a href="mailto:Sebastian_Michel@gmx.de" target="_blank">Sebastian_Michel@gmx.de</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<u></u>
<div style="font-family:Verdana,Geneva,sans-serif">
<p>Hallo,</p>
<p> </p>
<p>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.</p>
<p> </p>
<p>Vor dem update hat es mit negativen Werten funktioniert (und natürlich ohne aggregation).</p>
<p> </p>
<p>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.</p>
<p> </p>
<p>Aber trotzdem nochmal zusammengefasst: Mit den letzten Änderungen in der middleware funktionieren negative Werte nicht. Warum auch immer. </p>
<p> </p>
<p>Sebastian</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>Am 2013-12-26 12:30, schrieb Andreas Goetz:</p><div><div class="h5">
<blockquote type="cite" style="padding-left:5px;border-left:#1010ff 2px solid;margin-left:5px">
<div dir="ltr">Problem ist jetzt hier erfasst: <a href="https://github.com/volkszaehler/volkszaehler.org/issues/85" target="_blank">https://github.com/volkszaehler/volkszaehler.org/issues/85</a></div>
<div class="gmail_extra"><br><br>
<div class="gmail_quote">2013/12/26 Andreas Goetz <span><<a href="mailto:cpuidle@gmail.com" target="_blank">cpuidle@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div>Hallo Sebastian,<br><br>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. <br><br>Einfachste Lösung: aggregation ausschalten (klappts dann?)<br>
<br></div>
<div>Zweiteinfachste Lösung: aggregation NICHT für Deinen selbst geschriebenen Kanal nutzen.<br><br></div>
<div>Schwieriger: überlegen was passiert.</div>
<div>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.<br>
Für Middleware liesse sich das mit ein wenig Logik noch beheben, für Datenbank bist Du auf Dich gestellt.<br><br>vg<span><span style="color:#888888"><br></span></span></div>
<div>Andreas</div>
<div> </div>
</div>
<div>
<div>
<div class="gmail_extra"><br><br>
<div class="gmail_quote">On Thu, Dec 26, 2013 at 11:42 AM, Sebastian Michel <span><<a href="mailto:Sebastian_Michel@gmx.de" target="_blank">Sebastian_Michel@gmx.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Es ist in python geschrieben. Hier ein Auszug:<br><br> class VzDb(object):<br><br> def __init__(self, host, port, user, passwd, name):<br>
self.Host = host<br> self.Port = port<br> self.User = user<br> self.Pass = passwd<br> self.Name = name<br><br> def connect(self):<br> self.Handle = MySQLdb.connect(host=self.<span style="text-decoration:underline"></span>Host, port=self.Port, user=self.User, passwd=self.Pass, db=self.Name)<br>
<br> def save(self, uuid, value):<br><br> cursor = self.Handle.cursor()<br> query = """SELECT <a href="http://e.id" target="_blank">e.id</a>, p.value FROM entities e<br> LEFT JOIN properties p<br>
ON (<a href="http://e.id" target="_blank">e.id</a> = p.entity_id)<br> WHERE e.uuid = '%s' AND p.pkey = 'title'""" % (uuid)<br> resp = cursor.execute(query)<br>
if resp != 1:<br> raise Exception("Multiple channels in database with uuid: %s" % uuid)<br><br> # get channel id and channel title<br> (channel_id,title,) = cursor.fetchone()<br>
<br> timestamp = int( time.time()*1000 )<br> query = "INSERT INTO data(channel_id, timestamp, value) VALUES (%d, %d, %f)" % (channel_id, timestamp, value)<br> resp = cursor.execute(query)<br>
# print query<br> if resp == 1:<br> syslog.syslog(syslog.LOG_INFO, "Added value (%.2f) to database channel: '%s'" % (value, title))<br> else:<br> raise Exception("Error adding value to database channel:" % title)<br>
<br> cursor.close()<br><br> def close(self):<br> self.Handle.commit()<br> self.Handle.close()<br><br><br><br> Viele Grüße<br> Sebastian<br><br><br>Am 2013-12-26 11:34, schrieb Daniel Lauckner:
<div>
<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Mahlzeit,<br><br> Am Donnerstag, 26. Dezember 2013 um 11:11 schrieb Sebastian Michel:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hallo,</blockquote>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">ich hab folgendes Problem:</blockquote>
<br> [...]<br><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Kann mir jmd weiterhelfen?</blockquote>
<br><br> Script vergessen?!<br><br><br><br><br> mfg Daniel</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
<p> </p>
<div> </div>
</div></div></div>
</blockquote></div><br></div>