IoT and Communication Protocols

The Barracuda App Server (BAS) can act as a network server, a network client, or both. Use this page to select a communication model and find the corresponding BAS API or tutorial. Protocol availability depends on the BAS build and licensed components.

NeedProtocol or interfaceBAS component and next step
Request-response APIs for devices, gateways, test tools, or cloud servicesHTTP or HTTPS with REST-style resourcesUse the BAS server APIs or Lua HTTP(S) client. See the REST tutorials for C and C++ or Lua.
Real-time browser updates, device control, and publish/subscribe messagingSimple Message Queue (SMQ)BAS includes the SMQ broker and client interfaces. Start with the SMQ overview, then review SMQ security.
Connect a device to an MQTT brokerMQTTUse the Lua MQTT client or C/C++ MQTT client. BAS does not replace the external MQTT broker in this model.
Represent industrial edge data through MQTTMQTT SparkplugUse the separate Lua Sparkplug Edge of Network example and library.
Structured industrial data and servicesOPC Unified Architecture (OPC UA)The OPC UA client and server stack is a separate product and is not included in a standard BAS delivery. See the OPC UA API documentation. Precompiled Mako Server packages may include it.
Communicate with industrial controllers and field devicesModbus TCPUse the Lua Modbus client.
Bidirectional messages over a persistent connectionWebSocketsUse the Lua WebSocket client and server or the C/C++ WebSocket server. For browser choices, see Browser-to-Server Communication.
Send email notificationsSimple Mail Transfer Protocol (SMTP)Use the Lua SMTP client.
Obtain and renew TLS certificatesAutomatic Certificate Management Environment (ACME)Use the ACME module. ACME manages certificates; it is not an application-data protocol.

Choose the Communication Model First

Whichever protocol you select, define authentication, authorization, TLS, credential provisioning, input limits, and update procedures as part of the system design.