Page cover image

MTKcoder

The MTKcoder measures even the smallest flow rates. Perfect areas of application are measuring points that are difficult to access, such as in manholes or in the automation of fixed network readout.

Product Datasheet

Device Profile for Tesenso IoT Cloud

Device Labels

in manual
dataKey
dataType
dataFormat

Hauswasserzähler

waterMeter

telemetry

float

Decoder/Payload Converter for Tesenso IoT Cloud

https://github.com/Tesenso-GmbH/Device-Decoder/blob/main/GWF_MTKcoder.js
//V1.0, 20.12.2021,DS

if (msg.data) {
    var decoded = decodeFromHex(msg.data);
    decoded.ts = msg.ts;
    decoded.rssi = msg.rssi;
    decoded.snr = msg.snr;
    decoded.toa = msg.toa;
    decoded.frequency = msg.frequency;
    decoded.dr = msg.dr;
    decoded.bat = decodeBattery(msg.bat);
    decoded.hex = msg.data;

    return {
        msg: decoded,
        metadata: metadata,
        msgType: msgType
    };
} else {
    return {
        msg: msg,
        metadata: metadata,
        msgType: msgType
    };
}


function decodeFromHex(data) {

    var telemetry = {};

    //var batteryStatus = BatteryStatus.CalculateBatterStatus((int) rawMessageSection.bat);

    // Unstring input payload according to the specification
    //string protocolType = sensorData.Substring(0, 2);
    //string meterManufacturerID = sensorData.Substring(2, 4);
    //string meterID = sensorData.Substring(6, 8);
    var meterMedium = data.substr(14, 2);
    //telemetry.meterMedium = meterMedium;
    var stateMbus = data.substr(16, 2);
    //telemetry.stateMbus = stateMbus;
    //string actualityDuration = sensorData.Substring(18, 4);
    var volumeVIF = data.substr(22, 2);
    //telemetry.volumeVIF = volumeVIF;
    var volumeValue = data.substr(24, 8);
    //telemetry.volumeValue = volumeValue;
    //string additionalFunctions = sensorData.Substring(32, 2);
    //string batteryLifetime = sensorData.Substring(34, 2);
    //string checksum = sensorData.Substring(36, 4);

    telemetry.unit = "m3";

    if (meterMedium == "07" && (stateMbus == "00" |
            stateMbus == "04")) {
        telemetry.waterMeter =
            GetMeterReadingWarmWater(volumeVIF,
            volumeValue);
    }


    return telemetry;

}

function decodeBattery(byte) {
    if (byte == 0) {
        return 'External power source';
    } else if (byte > 0 && byte < 255) {
        return byte / 254 * 100;
    } else {
        return 'Unknown battery state';
    }
}

// Decode Payload for the meter reading warm water
function GetMeterReadingWarmWater(volumeVIF, volumeValue) {

    
    var volumeValueLSB = volumeValue.substr(6, 2) +
        volumeValue.substr(4, 2) + volumeValue.substr(2,
            2) + volumeValue.substr(0, 2);

    var measurementResult = parseInt(volumeValueLSB,
        16);

    switch (volumeVIF) {
        case "10":
            measurementResult *=
                0.000001; // (10 ^ (-6));
            break;
        case "11":
            measurementResult *=
                0.00001; // (10 ^ (-5));
            break;
        case "12":
            measurementResult *= 0.0001; // (10 ^ (-4));
            break;
        case "13":
            measurementResult *= 0.001; // (10 ^ (-3));
            break;
        case "14":
            measurementResult *= 0.01; // (10 ^ (-2));
            break;
        case "15":
            measurementResult *= 0.1; // (10 ^ (-1));
            break;
        default:
            break;
    }

    return measurementResult;
}

ThingsBoard Converter Export

{
    "cmd": "gw",
    "seqno": 114935,
    "EUI": "10CE45FFFE00AAAD",
    "ts": 1660726181716,
    "fcnt": 4198,
    "port": 2,
    "freq": 867300000,
    "toa": 97,
    "dr": "SF7 BW125 4/5",
    "ack": false,
    "gws": [{
        "rssi": -41,
        "snr": 9.8,
        "ts": 1660726181716,
        "time": "2022-08-17T08:49:41.585149Z",
        "gweui": "9C65F9FFFF386C4F",
        "ant": 0,
        "lat": 46.8076885,
        "lon": 7.100528
    }],
    "bat": 0,
    "data": "230400681b1b6808007200375316e61e3c07040000000c78003753160c13580319173316",
    "_id": "62fcaba53184c84733df3296"
}

Last updated