Modules/System - OpenSCADAWiki

# Modules/System

English • ‎mRussian • ‎Українська

Module | Name | Version | License | Source | Languages | Platforms | Type | Author | Description
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
System | System DA | 3.5 | GPL2 | daq_System.so | en,uk,ru,de | x86,x86_64,ARM | DAQ | Roman Savochenko Maxim Lysenko (2009) — the page translation | Provides data acquisition from Operation System. Supported OS Linux data sources: CPU, Memory, Sensors, Disk SMART, Disk Statistic, File System, Network, Power, UPS, Up Time etc. To Do: -

The module is a kind of gateway between OpenSCADA and Operation System (OS) which receives data from various data sources and allows to manage some components of the OS.

The module provides an ability of automatic searching for supported active data sources with establishing the parameters for accessing to them as well as the implementation of the horizontal reservation function, that is working in conjunction with the remote station of the same level.

## 1 Controller object

To add a data source of OS there is created and configured a controller object in OpenSCADA. An example of the configuration tab of the controller object of the given type shown in Figure 1.

Fig.1. Configuration tab of the controller object.

From this tab you can set:

- State of the controller object, as follows: status, "Enabled", "Running" and the storage name containing the configuration.
- Identifier, name and description of the controller.
- The state "Enabled" and "Running", in which the controller object must be translated at start up.
- Automatic searching the active data sources and creation of the parameters for them for modes: "Manual", "Fast sources", "Slow sources", "All sources".
- Policy of scheduling and priority of the data acquisition task.
- In cycle call for slow sources, to prevent of constant shunting the main cycle of fast sources.

## 2 Parameters

The module provides only one the "Standard (std)" type of the parameters with the parameters table name "OSPrm_{CntrId}". Additional configuration fields of the parameters of the module (Fig. 2) are:

- part of the system;
- subtype, dependent from the data source and can be missing in whole.

Fig.2. Configuration tab of the DAQ parameter.

Supported data sources of OS
Data Source (ID) "AutoCreateID" | Subtype values | Parameter attributes (identifier[properties]) | Notes
--- | --- | --- | ---
CPU (CPU) "CPU[{N}]" | "General (gen)" or CPU number N. | "Load whole, system, user, idle\nIn %" (load[real], sys[real], user[real], idle[real]) "Frequency: driver" (frqDrv[string]) "Frequency: governor" (frqGov[string|wr]) "Frequency: current\nIn MHz" (frqCur[real|wr]) "Frequency: minimum, set\nIn MHz" (frqMin[real], frqMinCur[real|wr]) "Frequency: maximum, set\nIn MHz" (frqMax[real], frqMaxCur[real|wr]) "Model name" (model[string]) "MHz" (MHz[real]) "BogoMIPS" (BogoMIPS[real]) "MHz at rdtsc" (rdtsc[real]) | Updated in the generic cycles for all attribute values and prepares the most actual CPU generic-average frequency for the root page. All CPU specific frequency values are averaged for "General (gen)" and changes there are propagated to all cores. As the sources there used: "/proc/stat" — for the CPU load; "/sys/devices/system/cpu/cpu{N}/cpufreq/" — for CPUFreq; "/proc/cpuinfo" — for generic CPU information.
Memory (MEM) "MEM" | Not used. | "Free (KiB)" (free[integer]) "Total (KiB)" (total[integer]) "Used (KiB)" (use[integer]) "Buffers (KiB)" (buff[integer]) "Cached (KiB)" (cache[integer]) "Swap free (KiB)" (sw_free[integer]) "Swap total (KiB)" (sw_total[integer]) "Swap used (KiB)" (sw_use[integer]) | As the source there used "/proc/meminfo".
Sensors (sensors) "Sensors" | Not used. | Defined by sensors those are available on the hardware. For each sensor the unique attribute is created. | The library libsensors or the program mbmon is used also as the direct sensors in "/sys/devices/virtual/hwmon/*/temp" and "/sys/devices/virtual/hwmon/*/temp*". Higher priority in use is given to the library libsensors since mbmon has problems on multi-core architectures and it is deprecated mostly.
Process (proc) | List of commands of the processes with the possibility to specify the regular expression to the whole command-line in view "/{RE}/". | "User loading (%)" (UserLoad[real]) "System loading (%)" (SystemLoad[real]) "Number of file descriptor slots currently" (FDSize[integer]) "Peak virtual memory size (KiB)" (VmPeak[integer]) "Virtual memory size (KiB)" (VmSize[integer]) "Locked memory size (KiB)" (VmLck[integer]) "Pinned memory size (KiB)" (VmPin[integer]) "Peak resident set size (KiB)" (VmHWM[integer]) "Resident set size (KiB)" (VmRSS[integer]) "Size of resident anonymous memory (KiB)" (RssAnon[integer]) "Size of resident file mappings (KiB)" (RssFile[integer]) "Size of resident shared memory (KiB)" (RssShmem[integer]) "Size of data segment (KiB)" (VmData[integer]) "Size of stack segment (KiB)" (VmStk[integer]) "Size of text segment (KiB)" (VmExe[integer]) "Shared library code size (KiB)" (VmLib[integer]) "Page table entries size (KiB)" (VmPTE[integer]) "Swapped-out virtual memory size by anonymous private pages (KiB)" (VmSwap[integer]) "Size of hugetlb memory portions (KiB)" (HugetlbPages[integer]) "Number of threads in process" (Threads[integer]) "Number of processes" (Processes[integer]) | As the source there is used "/proc/{PID}/status" and "/proc/{PID}/stat".
Qt sensor (QSensor) "{OrigName}" | List of the Qt-sensors in their original name OrigName | "State" (st[string]) "Property {N}" (pr{N}[boolean|integer|real|string]) | The source is dynamic, so the available attributes dependent from the QSensor type. Typical sensor types are: QAccelerometer, QAmbientLightSensor, QCompass, QIRProximitySensor, QLightSensor, QMagnetometer, QOrientationSensor, QProximitySensor, QRotationSensor, QTapSensor. The sensors accessible mostly on Android and MeeGo.
Disk SMART (hddsmart) "DiskSMART{DEV}" | Devices DEV of disks, available in the system. | Defined by SMART-fields (also as entries of the NVMe Log), available for this disk. For each field the unique attribute is created. | It is a slow source. The source is dynamic, so the available attributes dependent from the disk type. The smartctl program must be installed and available.
HDD temperature (hddtemp) "Temperature_hd{DEV}" | Devices DEV of the HDD Disks, available in the system. | "Name" (disk[string]) "Measure unit" (ed[string]) "Temperature" (t[integer]) | Deprecated mostly and replaced by "Disk SMART (hddsmart)". The hddtemp program must be installed, configured and running as the service.
Disk Statistic (hddstat) "DiskSt_{DEV}" | Devices DEV of disks or their partitions, available in the system. | "Read (B)" (rd[real]) "Read speed (B/s)" (rdSp[real]) "Write (B)" (wr[real]) "Write speed (B/s)" (wrSp[real]) | As the sources there used: "/proc/diskstats" — for disks; "/proc/partitions" — for partitions.
File System (fs) "FS{MP}" | Mounted file systems MP. | "Total (GB)" (total[real]) "Used (GB)" (used[real]) "Free (GB)" (free[real]) "Total file nodes" (totalN[integer]) "Used file nodes" (usedN[integer]) "Free file nodes" (freeN[integer]) | As the source there used "/etc/fstab" for the file systems.
Network (netstat) "Net_{IF}" | Network interfaces IF, available in the system. | "Received (B)" (rcv[real]) "Receive speed (B/s)" (rcvSp[real]) "Transmitted (B)" (trns[real]) "Transmit speed (B/s)" (trnsSp[real]) | As the source there used "/proc/net/dev" for the network devices-interfaces.
Power (Power) "Power{DEV}" | Power devices DEV, available in the hardware. | Read and written all properties accessible in the device folder with specific processing of the most known ones: "Type" (type[string]) "Technology" (technology[string]) "Scope" (scope[string]) "Present" (present[boolean]) "Manufacturer, model, SN" (manufacturer[string], model_name[string], serial_number[string]) "Status" (status[string]) "Online" (online[boolean]) "Health" (health[string]) "Capacity" (capacity[integer]) "Capacity level" (capacity_level[string]) "Charge now, full, design\nIn Ah" (charge_now[real], charge_full[real], charge_full_design[real]) "Energy now, full, design\nIn Ah" (energy_now[real], energy_full[real], energy_full_design[real]) "Voltage" (voltage_now[real]) "Voltage minimum" (voltage_min_design[real]) "Cycle count" (cycle_count[integer]) "Power\nIn Watts" (power_now[real]) "Current\nIn mAmpers" (current_now[real]) "Temperature\nIn degC" (temp[real]) "Time to empty now, average" (time_to_empty_now[real], time_to_empty_avg[real]) "Time to full" (time_to_full_now[real]) "Charge threshold start, stop" (charge_start_threshold[integer|wr], charge_stop_threshold[integer|wr]) "Charge control threshold start, end" (charge_control_start_threshold[integer|wr], charge_control_end_threshold[integer|wr]) | The source is dynamic, so the available attributes dependent from the source type. As the source there used the Linux Power interface in "/sys/class/power_supply/".
UPS (ups) | UPS Address. | Defined by fields, provided by corresponded UPS. For each field the unique attribute is created. | That is the slow source. The source is dynamic, so the available attributes dependent from the UPS type. The upsd demon from the project NUT must be accessible in the system or network, that is not detected automatically and its address you must set directly.
Up Time (uptime) "UpTm_[sys|stat]" | System (sys) or Station (stat) uptime. | "Full seconds" (full[integer]) "Seconds" (sec[integer]) "Minutes" (min[integer]) "Hours" (hour[integer]) "Days" (day[integer]) |

Modules/System/en - GFDL | July 2026 | OpenSCADA 1+r3070