[vz-dev] Fragen zum Protokoll "s0" in vzlogger (Zusammenfassung)
Justin Otherguy
justin at justinotherguy.org
Mon May 16 09:09:33 CEST 2016
Guten Morgen,
> Am 14.05.2016 um 12:49 schrieb Andreas Goetz <cpuidle at gmail.com>:
>
>> 2016-05-14 8:05 GMT+02:00 Justin Otherguy <justin at justinotherguy.org>:
>>
>> Jetzt, wo ich die „[AVG]“-Blöcke im Log entdeckt habe, habe ich mich doch mal auf die Suche nach der relevanten Gegend in vzlogger gemacht und ich würde mal hier hin deuten: https://github.com/volkszaehler/vzlogger/blob/master/src/Buffer.cpp#L80
>
> Zitat aus dem Link:
>
> // AVG needs to handle tuples with different distances properly:
> // so we need to consider the last tuple from last aggregate call as well
> // and use this value as the starting point.
> // we assume buffer values are already sorted by time here! TODO: is this always true?
> // otherwise a sort by time would be needed but this might conflict with _last_avg
>
> AVG macht genau kein arithmetisches Mittel sondern ein gewichtetes Mittel. Dahinter steht die Annahme dass AVG _nur_ für Sensorwerte zum Einsatz kommt, also z.b. Leistung. Um von da bei nicht gleih verteilten Timestamps auf eine durchschnittliche Leistung zu kommen muss eben gewichtet werden.
>
> Ich kenne keine Anwendungfall wo wir AVG mit der von Dir erwarteten Funktion brauchen.
ok, dann sind wir spätestens jetzt an der Stelle angekommen, an der (auch mir) klar ist:
- "protocol s0“ in vzlogger eignet sich nicht in Kombination mit „avg“
- richtig wäre „sum“, damit werden alle Impulse aufsummiert und dann nach aggtime geloggt
vorher war schon klar (hier der Übersicht Halber nochmal zusammen gefasst):
- „send_zero“ wird benötigt (zumindest derzeit, s. https://github.com/volkszaehler/vzlogger/issues/231)
- „interval“ sollte nicht verwendet werden in Kombination mit protocol s0 (s. https://github.com/volkszaehler/vzlogger/issues/253)
- bei „protocol s0“ arbeitet vzlogger so, dass er die gezählten Impulse jede Sekunde im log ausgibt (bei entsprechend hoher verbosity)
- sobald https://github.com/volkszaehler/vzlogger/issues/252 implementiert ist, kommt ein solches Setup auch ohne Impulsformer (http://wiki.volkszaehler.org/hardware/channels/meters/working_hours) aus - ein geschalteter Eingang aus: „Förderung läuft -> Spannung“; "Förderung läuft nicht -> keine Spannung“; geloggt wird dann nach aggtime (zB 10s) die aufsummierte Laufzeit
- der Identifier muss in diesem Fall „Impulse“ sein (s. https://github.com/volkszaehler/vzlogger/issues/255)
Die passende vzlogger.conf sieht so aus:
{
"retry": 0,
"daemon": true,
"verbosity": 5,
"log": „/tmp/vzlogger.log",
"meters": [
{ //Pellet-Simulator
"enabled": true,
"allowskip": false,
"aggtime": 10, // aggregate all signals and give one update to middleware every <aggtime> seconds
"protocol": "s0",
"device": "GPIO17",
"gpio": 17,
"gpio_dir": -1,
"configureGPIO": true,
"resolution": 1,
"send_zero": true,
"debounce_delay": 1,
"nonblocking_delay": 100000,
"channels": [
{
"uuid": <uuid>,
"identifier": "Impulse",
"api": "volkszaehler",
"middleware": "http://demo.volkszaehler.org/middleware.php",
"type": "device",
"aggmode": „sum",
"duplicates": 0
}
]
}
]
}
Nächster Halt: Middleware :)
Gruß J.
More information about the volkszaehler-dev
mailing list