Skip to main content

System Information API

It may be desireable to confirm the system information for the RockREMOTE device.

Devices can make a HTTP GET request on port 8080 to the local IP address of the RockREMOTE (default 192.168.250.1), as follows:

http://<rockremote ip>/api/public/system-information

The response will be a JSON formatted string containing the system information including (but not limited to):

  • Status
  • Errors
  • Firmware Versions
  • Hardware Configuration

Any response code other than 200 should be treated as disconnected.

System Information JSON structure

Break down of the System Information structure:

FieldTypeDescription
statusBooleanIndicates whether the API request was successful. Should always be true.
errorsArrayAn array of any errors that occurred. Should always be empty.
infoObjectContains more detailed information about the device.
processorStringA string that identifies the processor of the RockREMOTE.
serialStringThe serial number (RockThreeWords) of the RockREMOTE.
xferTmpDirStringThe path to the temporary directory which Cloudloop Device Manager (CDM) uses.
fwMainObjectThe firmware version for the RockREMOTE.
fwMCUObjectThe firmware version for the Power MCU.
fwIridiumObjectThe firmware version for the Iridium modem.
appServerConfDirStringThe path to the directory where the device stores configuration files for the local application server.
platformObjectA collection of information about the device's platform.
kernelStringThe kernel version on the device.
uptimeIntegerThe uptime of the device in seconds.
hostnameStringThe hostname of the device.
hardwareRevisionStringThe hardware revision of the device.
temperatureFloatThe temperature of the device in degrees Celsius.
timeIntegerThe current time on the device in Unix epoch seconds.
load1FloatThe load average for the 1-minute period.
load5FloatThe load average for the 5-minute period.
load15FloatThe load average for the 15-minute period.
memoryTotalStringThe total amount of memory on the device in bytes.
memoryFreeStringThe amount of free memory on the device in bytes.
storageTotalStringThe total amount of storage on the device in bytes.
storageFreeStringThe amount of free storage on the device in bytes.
formFactorStringThe form factor of the device. Rugged or Standard.
usbAvailableBooleanWhether or not the device has USB connectivity. Limited to bespoke units.
isTimeTrustworthyBooleanIt indicates the Time has been synced with either a NTP server or a GNSS fix.
modemsArrayAn array of objects that describe the modems on the device.
interfaceStringThe interface of the modem.
IMEIStringThe IMEI of the modem.
serialStringThe serial number of the modem.
ICCIDStringThe SIM ICCID of the modem.
manufacturerStringThe manufacturer of the modem.
modelStringThe model of the modem.
signalLevelIntegerThe signal level of the modem in dBm.
signalStrengthIntegerThe signal strength of the modem in percent.
networkInterfacesArrayAn array of objects that describe the network interfaces on the device.
nameStringThe name of the network interface.
interfaceStringThe interface of the network interface.
MAC addressObjectThe MAC address of the network interface.
upBooleanWhether or not the network interface is up.
carrierBooleanWhether or not the network interface has a carrier.
MTUIntegerThe MTU of the network interface.
voltagesObjectA collection of voltage readings for the device.
inputFloatThe input voltage in volts.
v12FloatThe 12V rail voltage in volts.
v5FloatThe 5V rail voltage in volts.
cap1FloatThe voltage of super capacitor 1 in volts.
cap2FloatThe voltage of super capacitor 2 in volts.
cap3FloatThe voltage of super capacitor 3 in volts.
cap4FloatThe voltage of super capacitor 4 in volts.
fwCellularObjectThe firmware version for the cellular modem on the device.

Signal Information Example

This system information can be parsed to report firmware revisions, platform information, network interfaces and modems. The example python script below will request the system information from 192.168.250.1 (the default RockREMOTE IP). Parse the response and report the signal strengths of the Iridium and Cellular Modem.

import requests
# IP and port of the API
api_ip = '192.168.250.1'
api_port = 8080

# API endpoint to request information
api_url = f'http://{api_ip}:{api_port}/api/public/system-information'

# Make the request to the API
response = requests.get(api_url)

# Check if the request was successful
if response.status_code == 200:
# Parse the JSON response
data = response.json()

# Get the list of modems
modems = data['info']['modems']

# Report the interface and signal strength for each modem
for modem in modems:
interface = modem['interface']
signal_strength = modem['signalStrength']
print(f"Modem Interface: {interface}, Signal Strength: {signal_strength} %")
else:
print(f"Error: {response.status_code} - {response.reason}")