{
    "rtype": 0, // 0 = modbus, 1 = http/json
    "mtype": 1, // 0 = other, 1 = meter, 2 = inverter, 4 = battery
    
    "name": "Algodue UPM309v5",   // as displayed in the config dialog
    "manufacturer": "Algodue",
    "dev_type": "UPM309v5",   // will be prefixed by "meter_"

    // modbus parameters
    "rtu": {
        "silence_period": 75,    // msec
        "silence_same_slave": false,
        "retries": 4,
        "rcv_timeout": 120       // msec
    },
    "modbus_read": 3,            // function code to read registers
    "modbus_read_max_registers": 96, 
    "modbus_write": 16,          // function code to write register(s)
    "modbus_write_max_registers": 64,

    // values used to build the model string: type_designation,version,firmware_version,serial
  //  "type_designation": {
    //    "address": 0x200A,  // modbus address as number
      //  "type": "int32",   // zero terminated
       // "length": 4         // string length in registers
   // },
    "version": {
        "address": 0x2008,
        "type": "int16",
        "length": 2
    },
    "firmware_version": {
        "address": 0x2006,
        "type": "int16",
        "length": 2        // for version strings: len = 2 means VV.VV, len = 4 means V.V.V.V
    },
    "serial": {
        "address": 0x2000,
        "type": "int32",   // available types: int16, int32, int64, float, string
        "order": "hl",     // most significant word(s) first, use "lh" for least significant word(s) first
        "reserved": [0x7fffffff, 0xffffffff]    // raw values -> results in value 0
    },
    
    // instantaneous values
    "voltage_l1": {
        "address": 0x0000,
        "type": "int32",
        "order": "hl",
     //   "reserved": [0x7fffffff, 0xffffffff],
        "resolution": 0.001   // result in V, the read value will be multiplied with 'resolution' to yield the final result
    },
    "voltage_l2": {
        "address": 0x0002,
        "type": "int32",
        "order": "hl",
     //   "reserved": [0x7fffffff, 0xffffffff],
        "resolution": 0.001   // result in V
    },
    "voltage_l3": {
        "address": 0x0004,
        "type": "int32",
        "order": "hl",
     //   "reserved": [0x7fffffff, 0xffffffff],
        "resolution": 0.001   // result in V
    },
    "current_l1": {
        "address": 0x000E,
        "type": "int32",
        "order": "hl",
    //    "reserved": [0x7fffffff, 0xffffffff],
        "resolution": 1.0   // result mA
    },
    "current_l2": {
        "address": 0x0010,
        "type": "int32",
        "order": "hl",
   //     "reserved": [0x7fffffff, 0xffffffff],
        "resolution": 1.0   // result in mA
    },
    "current_l3": {
        "address": 0x0012,
        "type": "int32",
        "order": "hl",
    //    "reserved": [0x7fffffff, 0xffffffff],
        "resolution": 1.0   // result in mA
    },
    "power_w": {
        "address": 0x0024,
        "type": "int64",
        "order": "hl",
    //    "reserved": [0x7fffffff, 0xffffffff],
        "resolution": 0.001  // result in W   - THIS SHOULD BE 0,0001
    },
    "power_var": {
        "address": 0x0044,
        "type": "int64",
        "order": "hl",
     //   "reserved": [0x7fffffff, 0xffffffff],
        "resolution": 0.0001   // result in VAR
    },
    "power_va": {
        "address": 0x0034,
        "type": "int64",
        "order": "hl",
     //   "reserved": [0x7fffffff, 0xffffffff],
        "resolution": 0.0001   // result in VA
    },

    // accumulated values
    "import_wh": {
        "address": 0x0418,
        "type": "int64",
        "order": "hl",
     //   "reserved": [0x7fffffffffffffff, 0xffffffffffffffff],
        "resolution": 0.01   // 10 Wh, result in Wh
    },
    "export_wh": {
        "address": 0x041C,
        "type": "int64",
        "order": "hl",
     //   "reserved": [0x7fffffffffffffff, 0xffffffffffffffff],
        "resolution": 0.01   // 10 Wh,  result Wh
    } //,
 
    // inputs, modbus only
 //   "inputs": [
   //     {
     //      "address": 0x6308,
       //    "count": 1     // number of input bits in this register
 //       },
   //     {
     //       "address": 0x6309,
       //     "count": 1
      //  }
   //  ]
 }
 