advanced write scenarios 1
1. Conditional Multi-Write
// Write different sets based on conditions
const mode = flow.get("operationMode") || "manual";
let writes = [];
switch (mode) {
    case "automatic":
        writes = [
            { nodeId: "ns=2;s=AutoMode", value: true },
            { nodeId: "ns=2;s=SetpointAuto", value: 50.0 },
            { nodeId: "ns=2;s=ControllerEnabled", value: true }
        ];
        break;
        
    case "manual":
        writes = [
            { nodeId: "ns=2;s=AutoMode", value: false },
            { nodeId: "ns=2;s=ManualOutput", value: 25.0 },
            { nodeId: "ns=2;s=ControllerEnabled", value: false }
        ];
        break;
        
    case "maintenance":
        writes = [
            { nodeId: "ns=2;s=MaintenanceMode", value: true },
            { nodeId: "ns=2;s=AllValvesClose", value: true },
            { nodeId: "ns=2;s=SafetyShutdown", value: true }
        ];
        break;
}
msg.payload = writes;
return msg;
2. Data Validation Before Write
// Validate all data before writing
const writes = msg.payload || [];
const validatedWrites = [];
const validationErrors = [];
writes.forEach((write, index) => {
    let isValid = true;
    let errorMsg = "";
    
    // Check nodeId format
    if (!write.nodeId || typeof write.nodeId !== "string") {
        isValid = false;
        errorMsg = "Invalid nodeId";
    }
    
    // Check value ranges based on nodeId
    if (write.nodeId.includes("Temperature")) {
        if (write.value < -50 || write.value > 200) {
            isValid = false;
            errorMsg = "Temperature out of range (-50 to 200)";
        }
    }
    
    if (write.nodeId.includes("Pressure")) {
        if (write.value < 0 || write.value > 10) {
            isValid = false;
            errorMsg = "Pressure out of range (0 to 10)";
        }
    }
    
    if (isValid) {
        validatedWrites.push(write);
    } else {
        validationErrors.push({
            index: index,
            nodeId: write.nodeId,
            value: write.value,
            error: errorMsg
        });
    }
});
if (validationErrors.length > 0) {
    node.warn(`Validation errors: ${JSON.stringify(validationErrors)}`);
}
if (validatedWrites.length > 0) {
    msg.payload = validatedWrites;
    msg.validationErrors = validationErrors;
    return msg;
} else {
    node.error("All write operations failed validation");
    return null;
}