System und Logs¶
Die folgenden Ressourcen und Anfragen sind für die System-Level-API des rc_visard verfügbar. Sie ermöglichen Folgendes:
- Zugriff auf Logdateien (systemweit oder modulspezifisch),
- Abruf von Informationen zum Gerät und zur Laufzeitstatistik, wie Datum, MAC-Adresse, Uhrzeitsynchronisierungsstatus und verfügbare Ressourcen,
- Verwaltung installierter Softwarelizenzen, und
- Aktualisierung des Firmware-Images des rc_visard.
-
GET
/logs
¶ Abruf einer Liste aller verfügbaren Logdateien.
Musteranfrage
GET /api/v2/logs HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json [ { "date": 1503060035.0625782, "name": "rcsense-api.log", "size": 730 }, { "date": 1503060035.741574, "name": "stereo.log", "size": 39024 }, { "date": 1503060044.0475223, "name": "camera.log", "size": 1091 }, { "date": 1503060035.2115774, "name": "dynamics.log" } ]
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: LogInfo-Array)
Referenzierte Datenmodelle:
-
GET
/logs/{log}
¶ Abruf einer Logdatei: Die Art des Inhalts der Antwort richtet sich nach dem format-Parameter.
Musteranfrage
GET /api/v2/logs/<log>?format=<format>&limit=<limit> HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "date": 1503060035.2115774, "log": [ { "component": "rc_stereo_ins", "level": "INFO", "message": "Running rc_stereo_ins version 2.4.0", "timestamp": 1503060034.083 }, { "component": "rc_stereo_ins", "level": "INFO", "message": "Starting up communication interfaces", "timestamp": 1503060034.085 }, { "component": "rc_stereo_ins", "level": "INFO", "message": "Autostart disabled", "timestamp": 1503060034.098 }, { "component": "rc_stereo_ins", "level": "INFO", "message": "Initializing realtime communication", "timestamp": 1503060034.209 }, { "component": "rc_stereo_ins", "level": "INFO", "message": "Startet state machine in state IDLE", "timestamp": 1503060034.383 }, { "component": "rc_stereovisodo", "level": "INFO", "message": "Init stereovisodo ...", "timestamp": 1503060034.814 }, { "component": "rc_stereovisodo", "level": "INFO", "message": "rc_stereovisodo: Using standard VO", "timestamp": 1503060034.913 }, { "component": "rc_stereovisodo", "level": "INFO", "message": "rc_stereovisodo: Playback mode: false", "timestamp": 1503060035.132 }, { "component": "rc_stereovisodo", "level": "INFO", "message": "rc_stereovisodo: Ready", "timestamp": 1503060035.212 } ], "name": "dynamics.log", "size": 695 }
Parameter: - log (string) – Name der Logdatei (obligatorisch)
Anfrageparameter: - format (string) – Rückgabe des Logs im JSON- oder Rohdatenformat (mögliche Werte:
json
oderraw
; Voreinstellung:json
) (optional) - limit (integer) – Beschränkung auf die letzten x Zeilen im JSON-Format (Voreinstellung:
100
) (optional)
Antwort-Headers: - Content-Type – text/plain application/json
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: Log)
- 404 Not Found – Log nicht gefunden
Referenzierte Datenmodelle:
-
GET
/system
¶ Abruf von Systeminformationen zum Sensor.
Musteranfrage
GET /api/v2/system HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "dns": { "dns_servers": [ "10.0.0.1", "1.1.1.1" ], "manual_dns_servers": [ "1.1.1.1" ] }, "firmware": { "active_image": { "image_version": "rc_visard_v1.1.0" }, "fallback_booted": true, "inactive_image": { "image_version": "rc_visard_v1.0.0" }, "next_boot_image": "active_image" }, "hostname": "rc-visard-02873515", "link_speed": 1000, "mac": "00:14:2D:2B:D8:AB", "ntp": { "enabled": true, "manual_ntp_servers": [ "10.0.0.1" ], "offset": -3.2666e-05, "selected_ntp_servers": [ "10.0.0.1" ], "synchronized": true }, "ptp_status": { "master_ip": "", "offset": 0, "offset_dev": 0, "offset_mean": 0, "state": "off" }, "ready": true, "serial": "02873515", "time": 1504080462.641875, "uptime": 65457.42 }
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: SysInfo)
Referenzierte Datenmodelle:
-
GET
/system/backup
¶ Abruf eines Backups der Einstellungen.
Musteranfrage
GET /api/v2/system/backup?pipelines=<pipelines>&load_carriers=<load_carriers>®ions_of_interest=<regions_of_interest>&grippers=<grippers> HTTP/1.1
Anfrageparameter: - pipelines (boolean) – Backup der Pipelines mit Moduleinstellungen, d.h. Parameter und bevorzugte TCP-Orientierung (Standardwert:
True
) (optional) - load_carriers (boolean) – Backup der Load Carrier (Standardwert:
True
) (optional) - regions_of_interest (boolean) – Backup der Regions of Interest (Standardwert:
True
) (optional) - grippers (boolean) – Backup der Greifer (Standardwert:
True
) (optional)
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung
- pipelines (boolean) – Backup der Pipelines mit Moduleinstellungen, d.h. Parameter und bevorzugte TCP-Orientierung (Standardwert:
-
POST
/system/backup
¶ Backup einspielen.
Musteranfrage
POST /api/v2/system/backup HTTP/1.1 Accept: application/json application/ubjson {}
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "return_code": { "message": "backup restored", "value": 0 }, "warnings": [] }
Request JSON Object: - backup (object) – Backup-Daten als json-Objekt (erforderlich)
Anfrage-Header: - Accept – application/json application/ubjson
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung
-
GET
/system/dns
¶ Abfragen der DNS-Server Einstellungen.
Musteranfrage
GET /api/v2/system/dns HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "dns": { "dns_servers": [ "10.0.0.1", "1.1.1.1" ], "manual_dns_servers": [ "1.1.1.1" ] } }
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: DNS)
Referenzierte Datenmodelle:
-
PUT
/system/dns
¶ Setze manuelle DNS-Server.
Musteranfrage
PUT /api/v2/system/dns HTTP/1.1 Accept: application/json application/ubjson {}
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "dns": { "dns_servers": [ "10.0.0.1", "1.1.1.1" ], "manual_dns_servers": [ "1.1.1.1" ] } }
Request JSON Object: - manual_dns_servers (ManualDNSServers) – Manuelle DNS-Server (obligatorisch)
Anfrage-Header: - Accept – application/json application/ubjson
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: DNS)
- 400 Bad Request – ungültige/fehlende Argumente
Referenzierte Datenmodelle:
-
GET
/system/license
¶ Abruf von Informationen zu den auf dem Sensor installierten Lizenzen.
Musteranfrage
GET /api/v2/system/license HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "components": { "calibration": true, "fusion": true, "hand_eye_calibration": true, "rectification": true, "self_calibration": true, "slam": false, "stereo": true, "svo": true }, "valid": true }
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: LicenseInfo)
Referenzierte Datenmodelle:
-
POST
/system/license
¶ Aktualisierung der auf dem Sensor installierten Lizenz mithilfe einer Lizenzdatei.
Musteranfrage
POST /api/v2/system/license HTTP/1.1 Accept: multipart/form-data
Formularparameter: - file – Lizenzdatei (obligatorisch)
Anfrage-Header: - Accept – Multipart/Formulardaten
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung
- 400 Bad Request – Keine gültige Lizenz
-
GET
/system/network
¶ Abruf der aktuellen Netzwerk Konfiguration.
Musteranfrage
GET /api/v2/system/network HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "current_method": "DHCP", "default_gateway": "10.0.3.254", "ip_address": "10.0.1.41", "settings": { "dhcp_enabled": true, "persistent_default_gateway": "", "persistent_ip_address": "192.168.0.10", "persistent_ip_enabled": false, "persistent_subnet_mask": "255.255.255.0" }, "subnet_mask": "255.255.252.0" }
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: NetworkInfo)
Referenzierte Datenmodelle:
-
GET
/system/network/settings
¶ Abruf der aktuellen Netzwerkeinstellungen.
Musteranfrage
GET /api/v2/system/network/settings HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "dhcp_enabled": true, "persistent_default_gateway": "", "persistent_ip_address": "192.168.0.10", "persistent_ip_enabled": false, "persistent_subnet_mask": "255.255.255.0" }
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: NetworkSettings)
Referenzierte Datenmodelle:
-
PUT
/system/network/settings
¶ Setzen der aktuellen Netzwerkeinstellungen.
Musteranfrage
PUT /api/v2/system/network/settings HTTP/1.1 Accept: application/json application/ubjson {}
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "dhcp_enabled": true, "persistent_default_gateway": "", "persistent_ip_address": "192.168.0.10", "persistent_ip_enabled": false, "persistent_subnet_mask": "255.255.255.0" }
Request JSON Object: - settings (NetworkSettings) – Anzuwendende Netzwerkeinstellungen (obligatorisch)
Anfrage-Header: - Accept – application/json application/ubjson
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: NetworkSettings)
- 400 Bad Request – ungültige/fehlende Argumente
- 403 Forbidden – Das Ändern der Netzwerkeinstellungen ist nicht erlaubt, da eine laufende GigE Vision-Applikation diese sperrt.
Referenzierte Datenmodelle:
-
GET
/system/ntp
¶ Abfragen der NTP Einstellungen.
Musteranfrage
GET /api/v2/system/ntp HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "ntp": { "enabled": true, "manual_ntp_servers": [ "10.0.0.1" ], "offset": -3.2666e-05, "selected_ntp_servers": [ "10.0.0.1" ], "synchronized": true } }
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: NTP)
Referenzierte Datenmodelle:
-
PUT
/system/ntp
¶ Setze manuelle NTP-Server.
Musteranfrage
PUT /api/v2/system/ntp HTTP/1.1 Accept: application/json application/ubjson {}
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "ntp": { "enabled": true, "manual_ntp_servers": [ "10.0.0.1" ], "offset": -3.2666e-05, "selected_ntp_servers": [ "10.0.0.1" ], "synchronized": true } }
Request JSON Object: - manual_ntp_servers (ManualNTPServers) – Manuelle NTP-Server (obligatorisch)
Anfrage-Header: - Accept – application/json application/ubjson
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: NTP)
- 400 Bad Request – ungültige/fehlende Argumente
Referenzierte Datenmodelle:
-
PUT
/system/reboot
¶ Neustart des Sensors.
Musteranfrage
PUT /api/v2/system/reboot HTTP/1.1
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung
-
GET
/system/rollback
¶ Abruf von Informationen zu Firmware/System-Images, die aktuell auf dem Sensor aktiv oder inaktiv sind.
Musteranfrage
GET /api/v2/system/rollback HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "active_image": { "image_version": "rc_visard_v1.1.0" }, "fallback_booted": false, "inactive_image": { "image_version": "rc_visard_v1.0.0" }, "next_boot_image": "active_image" }
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: FirmwareInfo)
Referenzierte Datenmodelle:
-
PUT
/system/rollback
¶ Rollback auf vorherige Firmware-Version (inaktives System-Image).
Musteranfrage
PUT /api/v2/system/rollback HTTP/1.1
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung
- 400 Bad Request – Bereits auf die Verwendung der inaktiven Partition beim nächsten Boot-Vorgang gesetzt.
- 500 Internal Server Error – Interner Fehler
-
GET
/system/time
¶ Abfrage der Systemzeit in UTC als String mit dem Format „YYYY-MM-DD hh:mm:ss“
Musteranfrage
GET /api/v2/system/time HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "utc": "2023-10-05 08:35:26" }
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung
-
PUT
/system/time
¶ Setzen der Systemzeit in UTC als String mit dem Format „YYYY-MM-DD hh:mm:ss“
Musteranfrage
PUT /api/v2/system/time?utc=<utc> HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "utc": "2023-10-05 08:35:26" }
Anfrageparameter: - utc (string) – Zeit in UTC als String mit dem Format „YYYY-MM-DD hh:mm:ss“ (obligatorisch)
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung
- 400 Bad Request – ungültige/fehlende Argumente
- 403 Forbidden – Ändern der Zeit nicht erlaubt, da Zeitsynchronisation via NTP oder PTP aktiv ist.
-
GET
/system/ui_lock
¶ Abruf des UI Lock Status
Musteranfrage
GET /api/v2/system/ui_lock HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "enabled": false }
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: UILock)
Referenzierte Datenmodelle:
-
DELETE
/system/ui_lock
¶ UI Lock entfernen.
Musteranfrage
DELETE /api/v2/system/ui_lock HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "enabled": false, "valid": false }
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung
-
POST
/system/ui_lock
¶ Verifizieren oder Setzen des UI Locks.
Musteranfrage
POST /api/v2/system/ui_lock?hash=<hash>&set=<set> HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "enabled": true, "valid": true }
Anfrageparameter: - hash (string) – Hash des UI Lock Passworts (obligatorisch)
- set (boolean) – neuen Hash setzen anstatt zu verifizieren (optional)
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung
-
GET
/system/update
¶ Abruf von Informationen zu Firmware/System-Images, die aktuell auf dem Sensor aktiv oder inaktiv sind.
Musteranfrage
GET /api/v2/system/update HTTP/1.1
Beispielantwort
HTTP/1.1 200 OK Content-Type: application/json { "active_image": { "image_version": "rc_visard_v1.1.0" }, "fallback_booted": false, "inactive_image": { "image_version": "rc_visard_v1.0.0" }, "next_boot_image": "active_image" }
Antwort-Headers: - Content-Type – application/json application/ubjson
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung (Rückgabe: FirmwareInfo)
Referenzierte Datenmodelle:
-
POST
/system/update
¶ Aktualisierung des Firmware/System-Images mit einer Mender-Artefakt-Datei: Um die aktualisierte Firmware zu aktivieren, ist anschließend ein Neustart erforderlich.
Musteranfrage
POST /api/v2/system/update HTTP/1.1 Accept: multipart/form-data
Formularparameter: - file – Mender-Artefakt-Datei (obligatorisch)
Anfrage-Header: - Accept – Multipart/Formulardaten
Statuscodes: - 200 OK – Erfolgreiche Verarbeitung
- 400 Bad Request – Client-Fehler, z.B. kein gültiges Mender-Artefakt