When I joined Renewalytics, I was a web developer. I'd never heard of MQTT, OPC-UA, or SCADA. Two years later, I've built a production telemetry system ingesting data from dozens of renewable energy plants. The learning curve is steep but manageable if you come from a web background.
SCADA (Supervisory Control and Data Acquisition) is the backbone of industrial systems. Every solar plant, wind farm, and factory has SCADA systems monitoring equipment in real time, power output, temperature, voltage, alarm states.
The challenge: SCADA systems speak industrial protocols (Modbus, OPC-UA), not HTTP. To build a modern web dashboard on top of SCADA data, you need a translation layer.
MQTT is a lightweight publish-subscribe messaging protocol. Think of it as WebSockets for IoT. A device publishes telemetry to a topic, and any subscriber gets it instantly.
Solar Plant → SCADA → MQTT Broker → Your AppIn practice, most modern SCADA gateways can publish to MQTT natively or through a middleware.
import mqtt from "mqtt";
const client = mqtt.connect(process.env.MQTT_BROKER_URL, {
username: process.env.MQTT_USERNAME,
password: process.env.MQTT_PASSWORD,
});
client.on("connect", () => {
// Subscribe to all plant telemetry topics
client.subscribe("plants/+/telemetry/#");
console.log("Connected to MQTT broker");
});
client.on("message", async (topic, message) => {
// topic: plants/PLANT_001/telemetry/generation_kw
const [, plantId, , metricName] = topic.split("/");
const value = parseFloat(message.toString());
await db.telemetry.create({
data: {
plantId,
metric: metricName,
value,
timestamp: new Date(),
},
});
});When MQTT isn't available, OPC-UA gives you direct access to SCADA data points. It's more complex but more powerful:
import { OPCUAClient, DataType } from "node-opcua";
const client = OPCUAClient.create({ endpoint_must_exist: false });
await client.connect(process.env.OPCUA_ENDPOINT);
const session = await client.createSession();
// Read a specific data point
const result = await session.read({
nodeId: "ns=2;s=Plant.Generation.ActivePower",
attributeId: 13, // Value attribute
});
console.log(result.value.value); // e.g., 1523.7 (kW)Coming from web development, I brought modern tooling to a domain still running on legacy desktop apps. A Next.js dashboard with WebSocket updates is objectively better than the 20-year-old SCADA HMI software most plants use.
If you're a web developer interested in IoT, industrial automation, or climate tech, the demand is huge and the competition is thin. Start with MQTT. Build a dashboard. The skills transfer directly.