Architecture
Shifu is a Kubernetes-native and flexible platform, and every component of Shifu is running as a Pod. Here is an overview of the platform:
EdgeDevice
Shifu defines a specific CRD for EdgeDevice
, which describes the data of an actual device if it is connected and managed by Shifu.
Each EdgeDevice has 2 components: EdgeDeviceSpec
and EdgeDeviceStatus
. In EdgeDeviceStatus
, the main component is called EdgeDevicePhase
.
EdgeDeviceSpec specifies basic information of the device. It contains 4 fields:
Sku *string # the SKU info of the device
Connection *Connection # the connection type (e.g., ethernet, USB, etc.)
Address *string # the connection address
Protocol *Protocol # the communication protocol
EdgeDevicePhase is used to describe the top-level status of the edge device:
Pending # The EdgeDevice is recognized but not ready for use
Running # The EdgeDevice is running
Failed # Shifu failed to bootstrap the EdgeDevice, or lost connection to the device, etc.
Unknown # Unknown state
DeviceShifu
EdgeDevice defines the DeviceShifu
Pod, which is the representation, or digital twin of the actual device.
Each DeviceShifu is associated with one actual device. As a digital twin, DeviceShifu is what user is communicating with:
Southbound - DeviceShifu recevies user's request, converts it and sends it to the assiciated device via the way the device accepts. Northbound - DeviceShifu collects telemetries from the associated device, converts it and sends it to the frontend and to the user end.
Shifu Utils
To support different protocols and drivers, Shifu is constantly adding new utility services to the platform. Currently, it has the following utility services:
MQTT Broker
The MQTT Broker service serves as the middleware to process the MQTT subscription and publishing. Currently Shifu uses Mosquitto for this purpose.
RTSP Client
The RTSP client is used to continuously receive RTSP stream and decode it.
Siemens S7 Suite
The Siemens S7 Suite allows user to edit any bits in any memory area of an S7 PLC. Currently Shifu uses Snap7 for this purpose.
HTTP to SSH driver stub
This is a utility service that allows user to arbitrarily add any new driver with commandline executables to Shifu platform. See the page Add New Commandline Driver
Last updated