[vz-dev] [vz-users] Gaszähler Startwert

Andreas Goetz cpuidle at gmail.com
Sat Dec 7 14:02:07 CET 2013


Hallo *,

>
> ...
>
>> Ich wünsche mir allerdings, dass im Volkszähler Projekt die Anzeige von
>> absoluten Zählerständen in Zukunft irgendwann einmal vernünftig realisiert
>> wird.
>>
>
> Die Idee finde ich nicht uncharmant.
>
> Je nachdem welchen Zählertyp Du hast sollte das eigentlich heute schon
> möglich sein. Wenn es sich um ein "Meter" handelt das also Verbräuche
> speichert dann kann man natürlich den Startverbauch in einen Timestamp vor
> dem ersten echten Zählerwert schreiben. Damit die MW den wirklich
> berücksichtigt braucht es zusätzlich noch 1(!) weiteren Wert+Timestamp
> davor da der erste verschluckt wird. Dieser sollte soweit vorher liegen
> dass eine vernünftige Durchschnittsleistung berechnet wird- anderenfalls
> kann das im FE sehr blöd aussehen.
>

Ich habe das Ganze mal in einen Unit Test verpackt- wer Interesse hat
sollte es mit dem Code unten und den Unit Tests in Git nachvollziehen
können. Die Funktion "setTotal" funktioniert so, dass sie

1) den aktuellen Gesamtverbaucht ermittelt
2) ausrechnet wieviel dazu muss um den Wunschwert zu erreichen
3) den ersten Wert der Datenbank um den "dazu" Anteil erhöht
4) und den ersten Wert aktualisiert

Der Ablauf dafür mit den Unittestfunktionen sieht so aus:

    function testSetTotal() {
        $this->getTuples(1, "1.1.2030");
        echo("\nold consumption: {$this->json->data->consumption}\n");

        // new desired total consumption
        $total = 75; // kWh
        $delta = $total - $this->json->data->consumption / 1000; // kWh

        $rowCount = $this->json->data->rows;
        if ($rowCount) {
            // we have starting timestamp + at least one valid tuple- get
tuple range
            $ts1 = $this->json->data->from;
            $ts2 = ($rowCount > 2) ? $this->json->data->tuples[1][0] :
$this->json->data->to;

            // add consumption of first tuple
            $delta += $this->json->data->tuples[0][1] * ($ts2 - $ts1) /
3.6e9; // kWh

            // update tuple to match desired total
            $url = self::$context . '/' . self::$uuid .
'.json?operation=edit&ts=' . $ts2 . '&value=' . ($delta *
self::$resolution); // kWh * res
            $this->getJson($url);

            // verify total consumption
            $this->getTuples(1, "1.1.2030", '', 1);
            echo("new consumption: {$this->json->data->consumption}\n");

            $this->assertFromTo($ts1, $this->json->data->to);
            $this->assertEquals($total * 1000,
$this->json->data->consumption); // compare Wh
        }
        else {
            echo("Not enough tuples\n");
        }
    }

Um die Funktion "setTotal" jetzt produktiv einsetzen zu können braucht es:
- eine Erweiterung des Datenkontext da editieren aktuell nicht möglich ist
- eine Idee wo/wie die Funktion den Anwendern angeboten werden soll:
  a) Evtl. als kleines Zusatztool für die Kommandozeile?
  b) als Funktion des channel Kontext?
  c) als Funktion des channel Kontext?
  d) als neuer "totals" Kontext?


> Bei "Countern" ist es egtl. kein Problem- hier wird ja ohnehin der echte
> Zählerwert gespeichert, passt also.
>
> Tatsächlich scheint auch das nicht ganz zu funktionieren da die MW immer
nur die Differenzen ausgibt. Auch hierfür wäre es also notwendig 1
zusätzlichen Tuple mit Wert 0 als allerersten Tuple zu schreiben.

Bei "Sensoren" wiederrum die nur Momentanwerte speichern ließe sich das
> analog "Meter" implementieren.
>
> Jetzt käme es mal auf einen Test und Feedback an, dann liesse sich das
> Ganze durchaus auch über den Channel Controller implementieren, z.B. indem
> man eine neue Eigenschaft "hasTotal" definiert die über Channel Updates in
> Form von Tupeln gespeichert werden. Damit könnte Clients die obige nicht
> ganz triviale Logik verfügbar gemacht werden.
>
> Wer probierts aus und gibt Feedback ob/wie die Funktion implementiert
werden soll?

vg
Andreas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-dev/attachments/20131207/ffd61aad/attachment.html>


More information about the volkszaehler-dev mailing list