[vz-users] Obis Code Einheit beachten
Thorben Thuermer
r00t at constancy.org
Tue Jan 29 00:32:29 CET 2013
On Mon, 28 Jan 2013 21:53:18 +0100
"Michael Martin" <Michael.glh at gmx.de> wrote:
> Der D0 Parser extrahiert ja auch die Einheit zu einem
> OBIS Code. Wie kann die Einheit eingerechnet werden,
> bevor die Daten an die Middleware übertragen werden?
sicher dass das noetig/sinnvoll ist?
reicht es nicht, den kanal in der middleware entsprechend zu
konfigurieren?
> In meinem Beispiel wird der Obiscode 1.7.0 mit der
> Einheit kW ausgegeben (0,5 kW).
> Leider landet in der Middelware nur 0,5 statt 500.
>
> Gibt es einen Weg die Einheit umzurechnen oder muß
> man dazu an den Code ran? Wenn ja wo?
habe gerade ein bisschen nachgelesen...
der grobe ablauf:
src/threads.c:reading_thread()
dort wir zuerst ueber meter_read() die meter_read_* funktion des protokolls
aufgerufen, diese liefert ein array von reading_t (aus include/reading.h)
worin aber nur der wert und die id enthalten ist, nicht die einheit,
dann werden ueber reading_id_compare() noch die zu loggenden readings
herausgesucht (nicht ganz sauber implementiert, da der code zentral und
nicht in der jeweiligen protocols/*.c datei liegt)...
src/protocols/d0.c:meter_read_d0():
case END_LINE:
print(log_debug, "Parsed reading (OBIS code=%s, value=%s, unit=%s)", mtr, obis_code, value, unit);
rds[number_of_tuples].value = strtof(value, NULL);
obis_parse(obis_code, &rds[number_of_tuples].identifier.obis);
gettimeofday(&rds[number_of_tuples].time, NULL);
(aber nicht mit unit)
das waehre also die stelle, wo man unit-abhaengig den wert manipulieren koennte.
momentan werden die units garnicht ausgewertet... vielleicht waehre es auch
allgemein sinnvoll irgendwie die plausibilitaet der einheit zu pruefen...?
> - Michael
- T.
More information about the volkszaehler-users
mailing list