โš–๏ธIND400 - Smart Weighing Indicator

In this article, you will learn about IND400 from Mettler Toledo which is a smart weighing device that support various protoocls like MODBUS, MQTT and OPC UA to share data remotely

Smart Weighing with MQTT- IND400 in ACTION

The Mettler Toledo IND400 is a smart weighing indicator designed for industrial applications. It supports modern protocols such as MQTT, OPC UA, and Ethernet/IP, making it IIoT-ready for digital factories.

Data Communication and Integration

  • IND400 smart weighing indicator communicates via Modbus TCP, RTU, OpenAPI, MQTT, and OPCUA for real-time data transmission to the cloud or an MQTT broker.

  • IND400 can be connected to Node-RED for easy data visualization and real-time monitoring of MQTT data and device status.

Remote Control and Monitoring

  1. IND400 supports remote monitoring and control via VNC, enabling easy access and real-time observation of weighing data and device status.

  2. The scale can be controlled remotely using MQTT and Node-RED, allowing for real-time data and command exchange, including zeroing, taring, preset taring, and clearing.

Operational Modes

IND400 can be configured to send data via Transfer mode or ComOne mode, enabling real-time data transmission and remote control.

Industry-Specific Features

IND400 is ideal for pharmaceutical industries and food production systems, providing audit trails, secure data, time synchronization, and LDAP support for GMP environments.

Key notes:

Resources:

The following is the code that was used in the LIVE demonstration in the video.

Transfer Mode

// Converting String to JSON
let input = msg.payload;

// Remove extra spaces and split by lines
let lines = input.trim().split('\n');

let result = {};

for (let line of lines) {
    let [key, ...valueParts] = line.split(':');
    if (!key || valueParts.length === 0) continue;

    let value = valueParts.join(':').trim();

    switch (key.trim()) {
        case 'Kopie / Kopien insgesamt':
            result.copies = value;
            break;
        case 'Datum':
            result.date = value;
            break;
        case 'Zeit':
            result.time = value;
            break;
        case 'Brutto':
            result.brutto = value;
            break;
        case 'Netto':
            result.netto = value;
            break;
        case 'Tara':
            result.tara = value;
            break;
        case 'Waage Nr.':
            result.scale_id = value;
            break;
        default:
            result[key.trim()] = value;
    }
}

msg.payload = result;
return msg;

ComOne mode

1. Get measurements

msg.payload = {
    "Message": {
        "Header": {
            "Version": "v1.0.0",
            "MessageType": "Request",
            "ActionCode": "Read",
            "MessageID": "1234",
            "Path": "Measurement/Weight"
        }
    }
}

return msg;

2. Zero the scale

msg.payload = {
    "Message": {
        "Header": 
        {
            "Version": "v1.0.0",
            "MessageType": "Request",
            "ActionCode": "Update",
            "MessageID": "1234",
            "Path": "Command"
        },
        "Command": 
        {
            "DeviceName": "Scale1",
            "CommandCode": "Zero"
        }
    }
}
return msg;

3. Tare the scale

msg.payload = {
    "Message": {
        "Header":
        {
            "Version": "v1.0.0",
            "MessageType": "Request",
            "ActionCode": "Update",
            "MessageID": "1234",
            "Path": "Command"
        },
        "Command":
        {
            "DeviceName": "Scale1",
            "CommandCode": "Tare"
        }
    }
}
return msg;

4. Preset Tare the scale

msg.payload = {
    "Message": {
        "Header": {
            "Version": "v1.0.0",
            "MessageType": "Request",
            "ActionCode": "Update",
            "MessageID": "1234",
            "Path": "Command"
        },
        "Command": {
            "DeviceName": "Scale1",
            "CommandCode": "PresetTare",
            "Value": 0.05,
            "Unit": "kg"
        }
    }
}
return msg;

5. Clear the scale

msg.payload = {
    "Message": {
        "Header": {
            "Version": "v1.0.0",
            "MessageType": "Request",
            "ActionCode": "Update",
            "MessageID": "1234",
            "Path": "Command"
        },
        "Command": {
            "DeviceName": "Scale1",
            "CommandCode": "Clear"
        }
    }
}
return msg;

Node-RED Example Code

The Node-RED flow used in the video can be found in the GitHub repository mentioned below:

https://github.com/Code-and-Compile/Mettler_Toledo_IND400_MQTT

โ™ฅ๏ธ Work With Me

I regularly test industrial automation and IIoT devices. If youโ€™d like me to review your product or showcase it in my courses and YouTube channel:

๐Ÿ“ง Email: [email protected] or drop me a message on LinkedIn

Last updated

Was this helpful?