[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