diff --git a/drivers/src/elf2.xmq b/drivers/src/elf2.xmq index 6ede635..421e76a 100644 --- a/drivers/src/elf2.xmq +++ b/drivers/src/elf2.xmq @@ -76,7 +76,8 @@ driver { field { name = status quantity = Text - info = status_and_error_flags + info = 'Status and error flags.' + attributes = INCLUDE_TPL_STATUS match { measurement_type = Instantaneous vif_range = ErrorFlags diff --git a/src/driver_dynamic.cc b/src/driver_dynamic.cc index 37da04b..d160b1c 100644 --- a/src/driver_dynamic.cc +++ b/src/driver_dynamic.cc @@ -28,6 +28,7 @@ string check_default_fields(const char *fields, string file); void check_detection_triplets(DriverInfo *di, string file); string check_field_name(const char *name, DriverDynamic *dd); +string check_field_info(const char *info, DriverDynamic *dd); Quantity check_field_quantity(const char *quantity_s, DriverDynamic *dd); VifScaling check_vif_scaling(const char *vif_scaling_s, DriverDynamic *dd); DifSignedness check_dif_signedness(const char *dif_signedness_s, DriverDynamic *dd); @@ -277,8 +278,8 @@ XMQProceed DriverDynamic::add_field(XMQDoc *doc, XMQNode *field, DriverDynamic * // The properties are by default empty but can be specified for specific fields. PrintProperties properties = check_print_properties(xmqGetStringRel(doc, "attributes", field), dd); - // The about fields explains what the value is for. Ie. is storage 1 the previous day or month value etc. - string info = get_translation(doc, field, "about", language()); + // The info fields explains what the value is for. Ie. is storage 1 the previous day or month value etc. + string info = check_field_info(xmqGetStringRel(doc, "info", field), dd); // The calculate formula is optional. string calculate = check_calculate(xmqGetStringRel(doc, "calculate", field), dd); @@ -600,6 +601,13 @@ string check_field_name(const char *name, DriverDynamic *dd) return name; } +string check_field_info(const char *info, DriverDynamic *dd) +{ + if (!info) return ""; + + return info; +} + Quantity check_field_quantity(const char *quantity_s, DriverDynamic *dd) { if (!quantity_s) diff --git a/src/generated_database.cc b/src/generated_database.cc index e956bdb..0a8b8ae 100644 --- a/src/generated_database.cc +++ b/src/generated_database.cc @@ -15,12 +15,12 @@ along with this program. If not, see . */ -// Generated 2024-09-16_10:02 +// Generated 2024-09-16_12:01 BuiltinDriver builtins_[] = { { "aquastream", "driver{name=aquastream meter_type=WaterMeter default_fields=name,id,total_m3,timestamp detect{mvt=IMT,01,07}use=total_m3,meter_datetime,target_m3,target_date field{name=status quantity=Text info=status_and_error_flags attributes=INCLUDE_TPL_STATUS match{measurement_type=Instantaneous vif_range=ErrorFlags}lookup{name=ERROR_FLAGS map_type=BitToString mask_bits=0xffff default_message=OK map{name=LOW_BATTERY info='Low Battery – 18 months before end of life'value=0x04 test=Set}map{name=TEMPORARY_ALARM info='Temporary alarm - Manipulation/module removed'value=0x10 test=Set}map{name=LEAKAGE info=Leakage value=0x20 test=Set}map{name=BURST info=Burst value=0x30 test=Set}}}field{name=total_tariff1 quantity=Volume match{measurement_type=Instantaneous vif_range=Volume tariff_nr=1}}field{name=battery quantity=Time display_unit=y force_scale=0.0027397260273972603 match{measurement_type=Instantaneous difvifkey=02FD74}}}", false }, - { "elf2", "driver{name=elf2 meter_type=HeatMeter default_fields=name,id,status,total_energy_kwh,timestamp detect{mvt=APA,42,04}use=fabrication_no use=on_time_h use=on_time_at_error_h field{name=meter quantity=PointInTime info='Meter date when telegram was sent.'display_unit=date match{measurement_type=Instantaneous vif_range=Date}}field{name=t2_temperature quantity=Temperature info='Temperature of returned water.'match{measurement_type=Instantaneous vif_range=ReturnTemperature}}field{name=t1_temperature quantity=Temperature info='Temperature of incoming water.'match{measurement_type=Instantaneous vif_range=FlowTemperature}}field{name=current_power quantity=Power info='Instantaneous power consumed.'match{measurement_type=Instantaneous vif_range=AnyPowerVIF}}field{name=current_volume_flow quantity=Flow info='Instantaneous water flow.'match{measurement_type=Instantaneous vif_range=VolumeFlow}}field{name=total_volume quantity=Volume info='Total volume of water used.'match{measurement_type=Instantaneous vif_range=AnyVolumeVIF}}field{name=total_energy quantity=Energy info='The total heat energy consumption recorded by this meter.'match{measurement_type=Instantaneous vif_range=AnyEnergyVIF}}field{name=status quantity=Text info=status_and_error_flags match{measurement_type=Instantaneous vif_range=ErrorFlags}lookup{name=ERROR_FLAGS map_type=BitToString mask_bits=0xffff default_message=OK map{name=MINIMUM_FLOW info='Average minute flow is below the minimum flow and higher than the starting flow.'value=0x01 test=Set}map{name=FLOW_METER_FAILURE info='No flow detected and temperature diff is higher than threshold.'value=0x02 test=Set}map{name=RETURN_TEMPERATURE_ERROR info='Temperature is out of measurement range or the sensor is broken.'value=0x04 test=Set}map{name=SUPPLY_TEMPERATURE_ERROR info='Temperature is out of measurement range or the sensor is broken.'value=0x08 test=Set}map{name=DIFFERENTIAL_TEMPERATURE_ERROR info='The temperature differences (eg supply-return) exceeds a threshold.'value=0x10 test=Set}map{name=MAXIMUM_FLOW info='Average minute flow Qs is higher than Qp and equal to or lower than 2Qp (Qp < Qs ≤ 2 * Qp).'value=0x20 test=Set}map{name=MEMORY_FAILURE info='Critical internal error.'value=0x40 test=Set}map{name=LOW_BATTERY_VOLTAGE info='Low battery voltage.'value=0x80 test=Set}map{name=DAILY_ABNORMAL_NOMINAL_FLOW info=('Nominal flow is detected at Q > Qp for 1 h per day (24 h)' 'where one day is measured from the moment the overrun is detected.')value=0x100 test=Set}map{name=ANNUAL_ABNORMAL_NOMINAL_FLOW info=('Nominal flow is detected at Q > Qp for 200 h in 1 year' 'where one year is calculated from the start of billing period n to' 'the start of billing period n+1 (which is when the annual data is saved to the archive).')value=0x200 test=Set}map{name=DIFFERENTIAL_TEMPERATURE_TOO_LOW info=('The volume count is incremented in 3 consecutive integration cycles while' 'the differential temperature is below the configured differential temperature' 'insensitivity threshold.')value=0x400 test=Set}map{name=CRC_ERROR info='Critical internal error in firmware vs saved model.'value=0x800 test=Set}map{name=FLASH_ERROR info='Critical internal error when reading non-volatile flash memory.'value=0x1000 test=Set}map{name=CRITICAL_BATTERY_VOLTAGE info='Critical low battery voltage.'value=0x2000 test=Set}map{name=CPU_OVERTEMPERATURE info='CPU is overheating.'value=0x4000 test=Set}map{name=UART_LIMIT_OVERRUN info='Sent and received bytes exceeds the byte count limit.'value=0x8000 test=Set}}}}", false }, + { "elf2", "driver{name=elf2 meter_type=HeatMeter default_fields=name,id,status,total_energy_kwh,timestamp detect{mvt=APA,42,04}use=fabrication_no use=on_time_h use=on_time_at_error_h field{name=meter quantity=PointInTime info='Meter date when telegram was sent.'display_unit=date match{measurement_type=Instantaneous vif_range=Date}}field{name=t2_temperature quantity=Temperature info='Temperature of returned water.'match{measurement_type=Instantaneous vif_range=ReturnTemperature}}field{name=t1_temperature quantity=Temperature info='Temperature of incoming water.'match{measurement_type=Instantaneous vif_range=FlowTemperature}}field{name=current_power quantity=Power info='Instantaneous power consumed.'match{measurement_type=Instantaneous vif_range=AnyPowerVIF}}field{name=current_volume_flow quantity=Flow info='Instantaneous water flow.'match{measurement_type=Instantaneous vif_range=VolumeFlow}}field{name=total_volume quantity=Volume info='Total volume of water used.'match{measurement_type=Instantaneous vif_range=AnyVolumeVIF}}field{name=total_energy quantity=Energy info='The total heat energy consumption recorded by this meter.'match{measurement_type=Instantaneous vif_range=AnyEnergyVIF}}field{name=status quantity=Text info='Status and error flags.'attributes=INCLUDE_TPL_STATUS match{measurement_type=Instantaneous vif_range=ErrorFlags}lookup{name=ERROR_FLAGS map_type=BitToString mask_bits=0xffff default_message=OK map{name=MINIMUM_FLOW info='Average minute flow is below the minimum flow and higher than the starting flow.'value=0x01 test=Set}map{name=FLOW_METER_FAILURE info='No flow detected and temperature diff is higher than threshold.'value=0x02 test=Set}map{name=RETURN_TEMPERATURE_ERROR info='Temperature is out of measurement range or the sensor is broken.'value=0x04 test=Set}map{name=SUPPLY_TEMPERATURE_ERROR info='Temperature is out of measurement range or the sensor is broken.'value=0x08 test=Set}map{name=DIFFERENTIAL_TEMPERATURE_ERROR info='The temperature differences (eg supply-return) exceeds a threshold.'value=0x10 test=Set}map{name=MAXIMUM_FLOW info='Average minute flow Qs is higher than Qp and equal to or lower than 2Qp (Qp < Qs ≤ 2 * Qp).'value=0x20 test=Set}map{name=MEMORY_FAILURE info='Critical internal error.'value=0x40 test=Set}map{name=LOW_BATTERY_VOLTAGE info='Low battery voltage.'value=0x80 test=Set}map{name=DAILY_ABNORMAL_NOMINAL_FLOW info=('Nominal flow is detected at Q > Qp for 1 h per day (24 h)' 'where one day is measured from the moment the overrun is detected.')value=0x100 test=Set}map{name=ANNUAL_ABNORMAL_NOMINAL_FLOW info=('Nominal flow is detected at Q > Qp for 200 h in 1 year' 'where one year is calculated from the start of billing period n to' 'the start of billing period n+1 (which is when the annual data is saved to the archive).')value=0x200 test=Set}map{name=DIFFERENTIAL_TEMPERATURE_TOO_LOW info=('The volume count is incremented in 3 consecutive integration cycles while' 'the differential temperature is below the configured differential temperature' 'insensitivity threshold.')value=0x400 test=Set}map{name=CRC_ERROR info='Critical internal error in firmware vs saved model.'value=0x800 test=Set}map{name=FLASH_ERROR info='Critical internal error when reading non-volatile flash memory.'value=0x1000 test=Set}map{name=CRITICAL_BATTERY_VOLTAGE info='Critical low battery voltage.'value=0x2000 test=Set}map{name=CPU_OVERTEMPERATURE info='CPU is overheating.'value=0x4000 test=Set}map{name=UART_LIMIT_OVERRUN info='Sent and received bytes exceeds the byte count limit.'value=0x8000 test=Set}}}}", false }, { "elster", "driver{name=elster meter_type=GasMeter default_fields=name,id,total_m3,timestamp detect{mvt=ELS,81,03}use=actuality_duration_s field{name=total quantity=Volume match{measurement_type=Instantaneous vif_range=Volume}about{de='Der Gesamtwasserverbrauch.'en='The total water consumption.'fr='''La consommation totale d'eau.'''sv='Den totala vattenförbrukningen.'}}}", false }, { "eltako", "driver{name=eltako default_fields=name,id,total_kwh,timestamp meter_type=ElectricityMeter detect{mvt=ELT,01,02}field{name=status quantity=Text info=status_and_error_flags match{measurement_type=Instantaneous vif_range=ErrorFlags}lookup{name=ERROR_FLAGS map_type=BitToString mask_bits=0xff default_message=OK map{name=BUSY info='System is busy'value=0x01 test=Set}map{name=GENERIC_APP_ERROR info='Generic application error'value=0x02 test=Set}map{name=CURRENT_LOW info='Current too low'value=0x04 test=Set}map{name=PERMANENT_ERROR info='permanent error'value=0x08 test=Set}map{name=TEMPORARY_ERROR info='temporary error'value=0x10 test=Set}}}field{name=total_tariff_1 quantity=Energy info='Total cumulative active energy per tariff.'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=AnyEnergyVIF tariff_nr=1}}field{name=total_tariff_2 quantity=Energy info='Total cumulative active energy per tariff.'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=AnyEnergyVIF tariff_nr=2}}field{name='total_reactive_tariff_{tariff_counter}'quantity=Energy info='Total cumulative reactive energy per tariff.'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=AnyEnergyVIF storage_nr=2 tariff_nr=1,10}}field{name=voltage_l1_n quantity=Voltage info='Instantaneous voltage between L1 and neutral.'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=Voltage add_combinable=Mfct01}}field{name=current_l1 quantity=Amperage info='Instantaneous current in the L1 phase.'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=Amperage add_combinable=Mfct01}}field{name=power_l1 quantity=Power info='active Power in L1 phase'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=AnyPowerVIF add_combinable=Mfct01}}field{name=reactive_power_l1 quantity=Power info='reactive Power in L1 phase'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=AnyPowerVIF subunit_nr=1 add_combinable=Mfct01}}field{name=voltage_l2_n quantity=Voltage info='Instantaneous voltage between L2 and neutral.'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=Voltage add_combinable=Mfct02}}field{name=current_l2 quantity=Amperage info='Instantaneous current in the L2 phase.'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=Amperage add_combinable=Mfct02}}field{name=power_l2 quantity=Power info='active Power in L2 phase'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=AnyPowerVIF add_combinable=Mfct02}}field{name=reactive_power_l2 quantity=Power info='reactive Power in L2 phase'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=AnyPowerVIF subunit_nr=1 add_combinable=Mfct02}}field{name=voltage_l3_n quantity=Voltage info='Instantaneous voltage between L3 and neutral.'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=Voltage add_combinable=Mfct03}}field{name=current_l3 quantity=Amperage info='Instantaneous current in the L3 phase.'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=Amperage add_combinable=Mfct03}}field{name=power_l3 quantity=Power info='active Power in L3 phase'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=AnyPowerVIF add_combinable=Mfct03}}field{name=reactive_power_l3 quantity=Power info='reactive Power in L3 phase'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=AnyPowerVIF subunit_nr=1 add_combinable=Mfct03}}field{name=ct_numerator info='Current transformer ratio (numerator)'quantity=Dimensionless vif_scaling=None match{difvifkey=02FF68}}field{name=active_power_overall quantity=Power info='active Power overall'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=AnyPowerVIF add_combinable=Mfct00}}field{name=reactive_power_overall quantity=Power info='reactive Power overall'match{measurement_type=Instantaneous vif_scaling=Auto vif_range=AnyPowerVIF subunit_nr=1 add_combinable=Mfct00}}field{name=active_tariff info='active tariff'quantity=Dimensionless vif_scaling=None match{difvifkey=01FF13}}field{name=total quantity=Energy info='Total active energy over all tariffs.'calculate=total_tariff_1_kwh+total_tariff_2_kwh}}", false }, { "ime", "driver{name=ime info='This meter uses a seriously bonkers violation of the wmbus protocol. Avoid at all cost!'default_fields=name,id,positive_total_active_energy_kwh,timestamp meter_type=ElectricityMeter detect{mvt=IME,66,02}field{name=status quantity=Text info='Meter status from tpl field.'attributes=INCLUDE_TPL_STATUS}field{name=positive_total_active_energy quantity=Energy info='Positive Three-phase Active Energy (Total).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kwh match{difvifkey=849010FF80843B}}field{name=negative_total_active_energy quantity=Energy info='Negative Three-phase Active Energy (Total).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kwh match{difvifkey=849010FF80843C}}field{name=positive_total_reactive_energy quantity=Energy info='Positive Three-phase Reactive Energy (Total).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kvarh match{difvifkey=849010FF81843B}}field{name=negative_total_reactive_energy quantity=Energy info='Negative Three-phase Reactive Energy (Total).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kvarh match{difvifkey=849010FF81843C}}field{name=positive_tariff1_active_energy quantity=Energy info='Positive Three-phase Active Energy (Tariff 1).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kwh match{difvifkey=8410FF80843B}}field{name=positive_tariff2_active_energy quantity=Energy info='Positive Three-phase Active Energy (Tariff 2).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kwh match{difvifkey=8420FF80843B}}field{name=negative_tariff1_active_energy quantity=Energy info='Negative Three-phase Active Energy (Tariff 1).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kwh match{difvifkey=8410FF80843C}}field{name=negative_tariff2_active_energy quantity=Energy info='Negative Three-phase Active Energy (Tariff 2).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kwh match{difvifkey=8420FF80843C}}field{name=positive_tariff1_reactive_energy quantity=Energy info='Positive Three-phase Reactive Energy (Tariff 1).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kvarh match{difvifkey=8410FF81843B}}field{name=positive_tariff2_reactive_energy quantity=Energy info='Positive Three-phase Reactive Energy (Tariff 2).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kvarh match{difvifkey=8420FF81843B}}field{name=negative_tariff1_reactive_energy quantity=Energy info='Negative Three-phase Reactive Energy (Tariff 1).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kvarh match{difvifkey=8410FF81843C}}field{name=negative_tariff2_reactive_energy quantity=Energy info='Negative Three-phase Reactive Energy (Tariff 2).'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kvarh match{difvifkey=8420FF81843C}}field{name=partial_positive_active_energy quantity=Energy info='Partial Positive Three-phase Active Energy.'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kwh match{difvifkey=84A010FF80843B}}field{name=partial_negative_active_energy quantity=Energy info='Partial Negative Three-phase Active Energy.'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kwh match{difvifkey=84A010FF80843C}}field{name=partial_positive_reactive_energy quantity=Energy info='Partial Positive Three-phase Reactive Energy.'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kvarh match{difvifkey=84A010FF81843B}}field{name=partial_negative_reactive_energy quantity=Energy info='Partial Negative Three-phase Reactive Energy.'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=kvarh match{difvifkey=84A010FF81843C}}field{name=pulse_input quantity=Dimensionless info='Pulse Input.'vif_scaling=None dif_signedness=Signed force_scale=0.01 display_unit=counter match{difvifkey=04FF9029}}field{name=pulse_unit quantity=Text info='Pulse Unit.'match{difvifkey=02FF912B}lookup{name=UNIT map_type=IndexToString mask_bits=0xffff map{name=WH info=Wh value=0 test=Set}map{name=KWH info=kWh value=1 test=Set}map{name=MWH info=MWh value=2 test=Set}map{name=VARH info=varh value=3 test=Set}map{name=KVARH info=kvarh value=4 test=Set}map{name=MVARH info=mvarh value=5 test=Set}map{name=VAH info=VAh value=6 test=Set}map{name=KVAH info=kVAh value=7 test=Set}map{name=MVAH info=mVAh value=8 test=Set}map{name=M3 info=m³ value=9 test=Set}map{name=KM3 info=km³ value=10 test=Set}map{name=WOOT info='woot not in manual'value=11 test=Set}map{name=NM3 info=Nm³ value=12 test=Set}map{name=KNM3 info=kNm³ value=13 test=Set}map{name=MNM3 info=MNm³ value=14 test=Set}map{name=J info=J value=15 test=Set}map{name=KJ info=kJ value=16 test=Set}map{name=MJ info=MJ value=17 test=Set}map{name=cal info=cal value=18 test=Set}map{name=KCAL info=kcal value=19 test=Set}map{name=G info=g value=20 test=Set}map{name=KG info=kg value=21 test=Set}map{name=T info=T value=21 test=Set}}}field{name=kta quantity=Text info='Current Transformer Ratio (KTA).'vif_scaling=None dif_signedness=Unsigned display_unit=txt match{difvifkey=02FF922B}}field{name=ktv quantity=Text info='Voltage Transformer Ratio (KTV).'vif_scaling=None dif_signedness=Unsigned display_unit=txt match{difvifkey=02FF9329}}field{name=three_phase_total_active_power quantity=Power info='Three-phase Total Active Power.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kw match{difvifkey=84B010FF842B}}field{name=active_power_l1 quantity=Power info='Active Power L1.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kw match{difvifkey=848020FF842B}}field{name=active_power_l2 quantity=Power info='Active Power L2.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kw match{difvifkey=849020FF842B}}field{name=active_power_l3 quantity=Power info='Active Power L3.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kw match{difvifkey=84A020FF842B}}field{name=three_phase_total_reactive_power quantity=Power info='Three-phase Total Reactive Power.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kvar match{difvifkey=84B010FF852B}}field{name=reactive_power_l1 quantity=Power info='Reactive Power L1.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kvar match{difvifkey=848020FF852B}}field{name=reactive_power_l2 quantity=Power info='Reactive Power L2.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kvar match{difvifkey=849020FF852B}}field{name=reactive_power_l3 quantity=Power info='Reactive Power L3.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kvar match{difvifkey=84A020FF852B}}field{name=three_phase_total_apparent_power quantity=Power info='Three-phase Total Apparent Power.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kva match{difvifkey=84B010FF862B}}field{name=apparent_power_l1 quantity=Power info='Apparent Power L1.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kva match{difvifkey=848020FF862B}}field{name=apparent_power_l2 quantity=Power info='Apparent Power L2.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kva match{difvifkey=849020FF862B}}field{name=apparent_power_l3 quantity=Power info='Apparent Power L3.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kva match{difvifkey=84A020FF862B}}field{name=voltage_1_n quantity=Voltage info='1-N Voltage.'vif_scaling=None dif_signedness=Signed force_scale=0.1 display_unit=v match{difvifkey=848020FF8748}}field{name=voltage_2_n quantity=Voltage info='2-N Voltage.'vif_scaling=None dif_signedness=Signed force_scale=0.1 display_unit=v match{difvifkey=849020FF8748}}field{name=voltage_3_n quantity=Voltage info='3-N Voltage.'vif_scaling=None dif_signedness=Signed force_scale=0.1 display_unit=v match{difvifkey=84A020FF8748}}field{name=voltage_1_2 quantity=Voltage info='1-2 Voltage.'vif_scaling=None dif_signedness=Signed force_scale=0.1 display_unit=v match{difvifkey=848020FF8848}}field{name=voltage_2_3 quantity=Voltage info='2-3 Voltage.'vif_scaling=None dif_signedness=Signed force_scale=0.1 display_unit=v match{difvifkey=849020FF8848}}field{name=voltage_3_1 quantity=Voltage info='3-1 Voltage.'vif_scaling=None dif_signedness=Signed force_scale=0.1 display_unit=v match{difvifkey=84A020FF8848}}field{name=current_l1 quantity=Amperage info='Phase 1 Current Value.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=a match{difvifkey=848020FF8959}}field{name=current_l2 quantity=Amperage info='Phase 2 Current Value.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=a match{difvifkey=849020FF8959}}field{name=current_l3 quantity=Amperage info='Phase 3 Current Value.'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=a match{difvifkey=84A020FF8959}}field{name=frequency quantity=Frequency info=Frequency. vif_scaling=None dif_signedness=Signed force_scale=0.1 display_unit=hz match{difvifkey=02FF8A48}}field{name=three_phase_power quantity=Dimensionless info='Three-phase Power Factor (PF).'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=factor match{difvifkey=82B010FF8B28}}field{name=power_factor_sector quantity=Text info='Power Factor (PF) sector.'match{difvifkey=82B010FF8C2B}lookup{name=SECTOR_NR map_type=IndexToString mask_bits=0xffff map{name=RESISTIVE info=Resistive value=0 test=Set}map{name=INDUCTIVE info=Inductive value=1 test=Set}map{name=CAPACITIVE info=Capacitive value=2 test=Set}}}field{name=total_active_power_requirement quantity=Power info='Total Active Power Requirement (MD).'vif_scaling=None dif_signedness=Unsigned force_scale=0.001 display_unit=kw match{difvifkey=8410FF8D2B}}field{name=max_total_active_power_tariff1 quantity=Power info='Maximum Total Active Power Requirement Tariff 1 (PMD T1).'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kw match{difvifkey=8410FF8E2B}}field{name=max_total_active_power_tariff2 quantity=Power info='Maximum Total Active Power Requirement Tariff 2 (PMD T2).'vif_scaling=None dif_signedness=Signed force_scale=0.001 display_unit=kw match{difvifkey=8420FF8E2B}}field{name=run_meter_total quantity=Time info='Run hour meter (TOT).'vif_scaling=None dif_signedness=Signed force_scale=1/60 display_unit=h match{difvifkey=84B010FF8F21}}field{name=run_meter_tariff1 quantity=Time info='Run hour meter (Tariff 1).'vif_scaling=None dif_signedness=Signed force_scale=1/60 display_unit=h match{difvifkey=8410FF8F21}}field{name=run_meter_tariff2 quantity=Time info='Run hour meter (Tariff 2).'vif_scaling=None dif_signedness=Signed force_scale=1/60 display_unit=h match{difvifkey=8420FF8F21}}}", false },