meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
documentation:recsdaemon [2016/09/28 13:49] – kru | documentation:recsdaemon [2021/06/08 14:12] (current) – Adding SensorProviderJetson info vor | ||
---|---|---|---|
Line 3: | Line 3: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | The RECSDaemon is a small program that can be installed on compute modules in a RECS< | + | The RECSDaemon is a small program that can be installed on compute modules in a RECS< |
To be able to adapt to different platforms, the RECSDaemon uses plugins for different purposes. To configure these plugins and other settings an .ini file is used. | To be able to adapt to different platforms, the RECSDaemon uses plugins for different purposes. To configure these plugins and other settings an .ini file is used. | ||
The RECSDaemon is also able to execute commands sent by the management system to the node (e.g. for shutting down the OS gracefully). | The RECSDaemon is also able to execute commands sent by the management system to the node (e.g. for shutting down the OS gracefully). | ||
Line 9: | Line 9: | ||
===== Installation ===== | ===== Installation ===== | ||
- | The RECSDaemon is currently | + | The RECSDaemon is open source and available as [[https:// |
- | + | ||
- | After downloading the file you can install it e.g. on Ubuntu using the following command: | + | |
- | + | ||
- | dpkg --install RECSDaemon_3.5.0.deb | + | |
The installation script will try to auto-detect some of the configuration parameters, but as platforms supported by the daemon are very diverse, manual configuration of remaining parameters most probably will be necessary. | The installation script will try to auto-detect some of the configuration parameters, but as platforms supported by the daemon are very diverse, manual configuration of remaining parameters most probably will be necessary. | ||
- | RECSDaemon comes with both systemd and classical init scripts to allow autostart of the daemon during system boot. Depending on your distribution, | + | RECSDaemon comes with both systemd and classical init scripts to allow automatically starting |
- | systemctl enable RECSDaemon | + | <code bash> |
+ | systemctl enable RECSDaemon | ||
+ | </ | ||
or | or | ||
- | + | ||
- | update-rc.d RECSDaemon defaults | + | <code bash> |
+ | update-rc.d RECSDaemon defaults | ||
+ | </ | ||
===== Configuration ===== | ===== Configuration ===== | ||
Line 32: | Line 32: | ||
/ | / | ||
- | As this is a standard INI file, it is devided | + | As this is a standard INI file, it is divided |
The different aspects that need to be configured will be described in the following chapters. | The different aspects that need to be configured will be described in the following chapters. | ||
==== Communication ==== | ==== Communication ==== | ||
+ | |||
To be able to send sensor values and to receive commands, the RECSDaemon has to communicate with the management system of the RECS< | To be able to send sensor values and to receive commands, the RECSDaemon has to communicate with the management system of the RECS< | ||
This can happen via one of two different communication channels: On the one hand it is possible to use the internal management bus (I2C) of the RECS< | This can happen via one of two different communication channels: On the one hand it is possible to use the internal management bus (I2C) of the RECS< | ||
Line 52: | Line 53: | ||
=== LinuxCommunicatorDev === | === LinuxCommunicatorDev === | ||
- | If neccessary, the I2C bus to be used can be changed. This is done by setting the '' | + | |
+ | If necessary, the I2C bus to be used can be changed. This is done by setting the '' | ||
Example configuration: | Example configuration: | ||
- | < | + | |
+ | < | ||
+ | [Comm] | ||
PluginName=LinuxCommunicatorDev | PluginName=LinuxCommunicatorDev | ||
- | i2cBus=0</ | + | i2cBus=0 |
+ | </ | ||
=== CommunicatorTCP configuration === | === CommunicatorTCP configuration === | ||
- | When utilizing I2C as the communication channel, the RECSDaemon automatically can determine on which baseboard in the RECS< | + | When utilizing I2C as the communication channel, the RECSDaemon automatically can determine on which baseboard in the RECS< |
- | Also neccessary | + | Also necessary |
Example configuration: | Example configuration: | ||
- | < | + | |
+ | < | ||
+ | [Comm] | ||
PluginName=CommunicatorTCP | PluginName=CommunicatorTCP | ||
baseboard=2 | baseboard=2 | ||
- | controller=192.168.13.56</ | + | controller=192.168.13.56 |
+ | </ | ||
==== Slot detection ==== | ==== Slot detection ==== | ||
+ | |||
Because some of the RECS< | Because some of the RECS< | ||
Line 79: | Line 88: | ||
=== LinuxSlotDetectorGPIO configuration === | === LinuxSlotDetectorGPIO configuration === | ||
+ | |||
This plugin needs the numbers of the GPIO pins used to sense the slot position as used by the running kernel. These are set with the '' | This plugin needs the numbers of the GPIO pins used to sense the slot position as used by the running kernel. These are set with the '' | ||
Example configuration: | Example configuration: | ||
- | < | + | < |
+ | [Slot] | ||
slotPluginName=LinuxSlotDetectorGPIO | slotPluginName=LinuxSlotDetectorGPIO | ||
Bit0GPIO=133 | Bit0GPIO=133 | ||
- | Bit1GPIO=134</ | + | Bit1GPIO=134 |
+ | </ | ||
==== Sensor providers ==== | ==== Sensor providers ==== | ||
+ | |||
Sensor providers, as the name implies, add one or more sensors to the RECSDaemon' | Sensor providers, as the name implies, add one or more sensors to the RECSDaemon' | ||
Line 94: | Line 108: | ||
|LinuxSensorProviderEth | Direct | Ethernet link status/ | |LinuxSensorProviderEth | Direct | Ethernet link status/ | ||
|SensorProviderSystem | Direct | CPU utilization, | |SensorProviderSystem | Direct | CPU utilization, | ||
- | |SensorProviderZynq | Direct | Serial transceiver link, utilization, | + | |SensorProviderZynq | Direct | Serial transceiver link, utilization, |
|SensorProviderZynqModule | JSON | Sensors provided by the module’s microcontroller: | |SensorProviderZynqModule | JSON | Sensors provided by the module’s microcontroller: | ||
+ | |SensorProviderJetson | Direct | Nvidia Jetson Xavier AGX SoC temperature and various power measurements | | ||
Example configuration: | Example configuration: | ||
< | < | ||
- | SensorProviders=SensorProviderZynq, | + | SensorProviders=SensorProviderZynq, |
JSONSensorProviders=SensorProviderZynqModule</ | JSONSensorProviders=SensorProviderZynqModule</ | ||
Line 107: | Line 122: | ||
=== SensorProviderZynq === | === SensorProviderZynq === | ||
+ | |||
This plugin needs the base address of the monitoring peripheral it should read in the Zynq's memory space. Configure it with the '' | This plugin needs the base address of the monitoring peripheral it should read in the Zynq's memory space. Configure it with the '' | ||
=== SensorProviderZynqModule === | === SensorProviderZynqModule === | ||
+ | |||
This plugin needs the name of the serial port of the management microcontroller on the Zynq module. Configure it with the '' | This plugin needs the name of the serial port of the management microcontroller on the Zynq module. Configure it with the '' | ||
+ | |||
==== Sensors ==== | ==== Sensors ==== | ||
+ | |||
+ | Besides SensorProviders that automatically add a set of sensors when enabled, the RECSDaemon also allows manual configuration of additional sensors. | ||
+ | |||
+ | Currently, the following plugins can be used to instantiate sensors manually: | ||
+ | |||
+ | ^ Plugin ^ Use for ^ | ||
+ | |SensorFileReader | Value read from arbitrary file| | ||
+ | |||
+ | Sensors are instantiated in the '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | An example configuration for one manual sensor could be: | ||
+ | <code ini> | ||
+ | [Sensors] | ||
+ | count=1 | ||
+ | |||
+ | pluginName1=SensorFileReader | ||
+ | sensorName1=Test | ||
+ | options1=path=test.txt type=U8 | ||
+ | </ | ||
+ | |||
+ | === SensorFileReader configuration === | ||
+ | |||
+ | This plugin reads and parses the first line of a given file each time it is requested to update the sensor value. It recognizes the following options: | ||
+ | |||
+ | ^ Option ^ Possible values ^ Required ^ Description ^ | ||
+ | |path | String | Yes | Path of the file to be read | | ||
+ | |type | U8, U16, double | Yes | Data type of the sensor. U8 and U16 mean unsigned integers of the given width. | | ||
+ | |multiplier| Double | No | When type is " | ||
+ | |unit | °C | No | Unit of the sensor value | | ||
+ | |lowerCriticalThreshold | Double | No | Lower critical threshold as double | | ||
+ | |lowerWarningThreshold | Double | No | Lower warning threshold as double | | ||
+ | |upperWarningThreshold | Double | No | Upper warning threshold as double | | ||
+ | |upperCriticalThreshold | Double | No | Upper critical threshold as double | | ||
==== Other settings ==== | ==== Other settings ==== | ||
- | In the '' | + | |
+ | In the '' | ||
===== TCP/IP server ===== | ===== TCP/IP server ===== | ||
+ | |||
The RECSDaemon provides a simple TCP/IP server (by default on port 2023) that can be used by external programs to gain information or provide additional sensors. | The RECSDaemon provides a simple TCP/IP server (by default on port 2023) that can be used by external programs to gain information or provide additional sensors. | ||
- | The following commands are currenty | + | The following commands are currently |
^ Command ^ Action ^ | ^ Command ^ Action ^ | ||
Line 128: | Line 184: | ||
==== Getting monitoring data ==== | ==== Getting monitoring data ==== | ||
- | Using the '' | + | |
+ | Using the '' | ||
The returned JSON string has the following format: | The returned JSON string has the following format: | ||
- | < | + | < |
- | {" | + | [ |
- | {" | + | {" |
- | {" | + | {" |
+ | {" | ||
{" | {" | ||
- | ]</ | + | ] |
+ | </ | ||
The '' | The '' | ||
+ | |||
==== Adding and updating sensors ==== | ==== Adding and updating sensors ==== | ||
Line 163: | Line 223: | ||
Example: | Example: | ||
- | < | + | < |
- | { | + | [ |
- | " | + | { |
- | " | + | " |
- | " | + | " |
- | " | + | " |
- | " | + | " |
- | }, | + | " |
- | { | + | }, |
- | " | + | { |
- | " | + | " |
- | " | + | " |
- | } | + | " |
- | ]</ | + | } |
+ | ] | ||
+ | </ |