// Created by Energielenker solutions GmbH
// Creator: JRO
// Date: 04.04.2023
// Version: 0.1

{
    "rtype": 0, // 0 = modbus, 1 = http/json
    "mtype": 1,   // 0 = other, 1 = meter, 2 = inverter, 4 = battery
    
    "name": "Gossen Metrawatt EM228x",   // as displayed in the config dialog
    "manufacturer": "Gossen Metrawatt",
    "dev_type": "EM228x",   // will be prefixed by "meter_"

    // modbus parameters
    "rtu": {
        "silence_period": 50,    // msec
        "silence_same_slave": false,
        "retries": 8,
        "rcv_timeout": 300       // msec
    },
	
    "modbus_read": 4,            // function code to read registers
    "modbus_read_max_registers": "xx",
    "modbus_allow_gabs": false, 
    "modbus_write": 6,           // 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": 6,
        "type": "string",
        "fixed": "EM228x"
    },
    "version": {
        "address": 36,
        "type": "string",
        "fixed": "1.0"
    },
    "firmware_version": {
        "address": 38,
        "type": "string",
        "fixed": "1.0"
    },
    "serial": {
        "address": 14,
        "type": "string",
        "fixed": "0"
    },
    
// instantaneous values
    "voltage_l1": {	
        "address": 4, 
	"type": "int16",
	"resolution" : 0.1
	},
    "voltage_l2": {
        "address": 5, 
	"type": "int16",
	"resolution" : 0.1
	},
    "voltage_l3": {
        "address": 6, 
	"type": "int16",
	"resolution" : 0.1
	},    

//A_Exponenten bestimmen
    "current_l_expo":{
	"address": 108,
	"type": "int16",
    },
    

//A_L1 bestimmen
    "current_l1_mantisse": {
        "address": 100,
        "type": "int16",
    },
    "current_l": {
	"expr": "10^current_l_expo"
    },
    "current_l1": {
	"expr": "current_l * current_l1_mantisse * 1000",
    },
//A_L2 bestimmen
    "current_l2_mantisse": {
        "address": 101,
        "type": "int16",
    },
    "current_l2": {
	"expr": "current_l * current_l2_mantisse * 1000",
    },
//A_L3 bestimmen
    "current_l3_mantisse": {
        "address": 102,
        "type": "int16",
    },
    "current_l3": {
	"expr": "current_l * current_l3_mantisse * 1000",
    },

    
//power_exponent
    "power_expo":{
	"adress": 212,
	"type": "int16"
    },
    "powerp":{
	"expr": "10 ^ power_expo"
    },
//power_va bestimmen
    "power_w_mantisse":{
	"adress": 203,
	"type": "int16"
    },
    "power_w": {
        "expr": "powerp * power_w_mantisse"
    },
//power_var bestimmen
    "power_var_mantisse":{
	"adress": 207,
	"type": "int16"
    },
    "power_var": {
        "expr": "powerp * power_var_mantisse"
    },

// accumulated values
    "Faktor_ex":{
	"address": 310,
        "type": "int16",
        "order": "hl"
	},
    "Faktor": {
        "expr": "10^Faktor_ex"
	},
    "import_wh_mantisse": {
        "address": 300,
        "type": "int32",
        "reserved": [0x7fffffff, 0x80000000, 0xffffffff],
        "order": "hl"   // result in Wh
	},
    "import_wh": {
        "expr": "import_wh_mantisse * Faktor"
	},
    "export_wh_mantisse": {
        "address": 302,
        "type": "int32",
        "reserved": [0x7fffffff, 0x80000000, 0xffffffff],
        "order": "hl"   // result in Wh  
	},
    "export_wh": {
        "expr": "export_wh_mantisse * Faktor"
	},     	

    // inputs, modbus only
    "inputs": [
        {
           
        },
        {
          
        }
    ]
 }
 