This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

BMC examples

These examples are meant to be run on the device!
If you want to run them from a remote computer, you need to change “localhost” to the IP/hostname.
You will also need to generate an access token and use the “auth basic” method.
You may also want to use the secure protocol https://.

Python examples

Get temperature

Example:

import requests

# For tokens see http://noreya-nexus.local/nexuscontrolui/system/settings#access-token
login=("token", "")
hostname="localhost"

resp = requests.get("http://" + hostname + "/api/bmc/1.0/", auth=login)
if resp.status_code == requests.codes.ok:
  response = resp.json()
  for device in response['devices']:
    print("Temperature values for BMC on slot " + str(device['slot_number']) + ":")
    resp = requests.get("http://" + hostname + "/api/bmc/1.0/" + str(device['slot_number']) + "/temperature", auth=login)
    if resp.status_code == requests.codes.ok:
      response = resp.json()
      print("Temperature sensor next to SoC: " + str(response['ntc_0']) + "°C")
      print("Temperature sensor ambient: " + str(response['ntc_1']) + "°C")
    else:
      print("Error response for slot " + str(device['slot_number']))
else:
  print("Error response")

Output:

Temperature values for BMC on slot 0:
Temperature sensor next to SoC: 38.674°C
Temperature sensor ambient: 29.638°C

Watchdog configuration

Example:

import requests
import time

# For tokens see http://noreya-nexus.local/nexuscontrolui/system/settings#access-token
login=("token", "")
hostname="localhost"

response = requests.get("http://" + hostname + "/api/bmc/1.0/", auth=login)
if response.status_code == requests.codes.ok:
  response = response.json()
  for device in response['devices']:
    slot_number = device['slot_number']
    print("Watchdog config for BMC on slot " + str(slot_number) + ":")

    response = requests.get("http://" + hostname + "/api/bmc/1.0/" + str(slot_number) + "/reset", auth=login)
    if response.status_code == requests.codes.ok:
      print("Successfully reset device")  # We do "write" requests so we need to get a defined state

    request = {"timeout": 2000 }
    response = requests.post("http://" + hostname + "/api/bmc/1.0/" + str(slot_number) + "/watchdog", json=request, auth=login)
    if response.status_code == requests.codes.ok:
      print("Watchdog enabled with timeout " + str(request['timeout']) + 'ms')
      response = requests.get("http://" + hostname + "/api/bmc/1.0/" + str(slot_number) + "/watchdog/alive", auth=login)
      if response.status_code == requests.codes.ok:
          print("Watchdog updated by /alive")
      else:
          print("Failed reseting watchdog")

      print("Wait a second...")
      time.sleep(1)
      response = requests.get("http://" + hostname + "/api/bmc/1.0/" + str(slot_number) + "/watchdog", auth=login)
      if response.status_code == requests.codes.ok:
        response = response.json()
        print("Time left until reset: " + str(response['timeout_left']) + ' ms')
      else:
        print("Failed getting watchdog status")

      request = {"timeout": 0 }
      response = requests.post("http://" + hostname + "/api/bmc/1.0/" + str(slot_number) + "/watchdog", json=request, auth=login)
      if response.status_code == requests.codes.ok:
        print("Watchdog disabled")
      else:
        print("Failed disabling watchdog")

      response = requests.get("http://" + hostname + "/api/bmc/1.0/" + str(slot_number) + "/reset", auth=login)
      if response.status_code == requests.codes.ok:
        print("Successfully reset device after test")
      print("")
    else:
      print("Error response for slot " + str(device['slot_number']))
else:
  print("Error response")

Output:

Watchdog config for BMC on slot 0:
Successfully reset device
Watchdog enabled with timeout 2000ms
Watchdog updated by /alive
Wait a second...
Time left until reset: 981 ms
Watchdog disabled
Successfully reset device after test