Dashboard
📱 Online-Benutzer ?
Lade...
🔋 Akku-Warnungen ?
Lade...
🚨 Letzte Alarme
Lade Daten...
Benutzerverwaltung
👥 Rollen & Berechtigungen — Übersicht
| Rolle | Beschreibung | App-Zugriff | Admin-Panel |
|---|---|---|---|
| Admin |
System-Administrator Vollzugriff auf alle Funktionen. Kann Benutzer verwalten, Profile erstellen, Konfiguration ändern, Master-Passwort setzen und Weiterleitungs-Server konfigurieren. |
✅ Alle Tabs sichtbar ✅ Alle Einstellungen änderbar ✅ Master-PW Bereich verfügbar |
✅ Vollzugriff auf alle Bereiche |
| Manager |
Team-/Abteilungsleiter Kann Alarm-Protokolle und Benutzer-Status einsehen. Kann zugewiesene Benutzer verwalten und deren Profile zuweisen. Kein Zugriff auf System-Konfiguration oder Master-Passwörter. |
⚙️ Je nach Server-Konfiguration ✅ Schutz + Einstellungen ❌ Kein Master-PW Bereich (Standard) |
✅ Dashboard, Alarme, Protokolle ⚠️ Eingeschränkte Benutzerverwaltung |
| Benutzer |
Standard-Mitarbeiter / Alleinarbeiter Die typische Rolle für Außendienstmitarbeiter und Alleinarbeiter. Sieht nach dem Login nur den Schutz-Bereich (Start/Stop, Status, Verlauf). Alle Konfiguration erfolgt zentral über den Server. Der Benutzer muss in der App nichts konfigurieren. |
✅ Schutz aktivieren/deaktivieren ✅ Check-in "Bin OK" bestätigen ✅ Alarm-Verlauf einsehen ✅ Notfallkontakte sehen (read-only) ❌ Kein Dashboard/Sensoren/Analyse ❌ Keine Profil-/Schwellwert-Änderung ❌ Kein Master-PW Bereich |
❌ Kein Zugriff |
| Betrachter |
Nur-Lese-Zugriff Kann sich einloggen und den eigenen Status sehen, aber keine Aktionen ausführen. Gedacht für Auditoren oder temporäre Zugänge. |
👁️ Nur-Lese-Modus ❌ Kein Schutz aktivierbar |
❌ Kein Zugriff |
🔑 Was wird wo konfiguriert?
| Einstellung | Wo? | Wer? |
|---|---|---|
| Schutzprofil zuweisen | Admin-Panel → Benutzer → Profil | Admin / Manager |
| Notfallkontakte setzen | Admin-Panel → Benutzer → Notfallkontakte | Admin / Manager |
| Tabs ein-/ausblenden | Admin-Panel → Konfiguration → UI | Admin |
| Schwellwerte ändern | Admin-Panel → Profile → Schwellwerte | Admin |
| Heartbeat-Intervall | Admin-Panel → Konfiguration → Allgemein | Admin |
| Weiterleitungs-Server | Admin-Panel → Weiterleitungen | Admin |
| Pro-Benutzer Overrides | Admin-Panel → Benutzer → Konfiguration | Admin |
| Live-Status | Benutzername | Name | Rolle | Profil | Letzter Login | Aktionen | |
|---|---|---|---|---|---|---|---|
Schutzprofile
Lade Profile...
App-Konfiguration
Lade Konfiguration...
Alarm-Protokoll
| Zeit | Benutzer | Szenario | Schweregrad | Nachricht | Status | Position |
|---|---|---|---|---|---|---|
Sicherheitseinstellungen
🔐 Master-Passwort ändern
Das Master-Passwort wird benötigt, um in der App auf geschützte Einstellungen zuzugreifen. Nur Benutzer, die dieses Passwort kennen, können Konfigurationen lokal in der App ändern.
📋 Audit-Log (letzte Änderungen)
Wird geladen...
🔍 System-Check
Klicken Sie auf Check starten, um die Systemdiagnose durchzuführen.
Benutzer-Protokolle
📡 Alive-Signal – Automatisches Lebenszeichen der App an den Server (alle 30 s technisch, alle 2 Min protokolliert). Zeigt, dass die App aktiv und erreichbar ist.
✅ Check-in – Manuelle Bestätigung des Benutzers („Bin OK"-Taste). Wird vom Alleinarbeiterschutz in regelmäßigen Abständen verlangt.
🛡️ Schutz – Automatische Ereignisse des Schutzsystems: Überwachung gestartet/gestoppt, Countdown, Alarm ausgelöst/entwarnt.
📱 App-Ereignis – Login, Logout, App in Vordergrund/Hintergrund, Konfigurationsänderungen.
| Zeit | Benutzer | Kategorie | Ereignis | Details |
|---|---|---|---|---|
Weiterleitungs-Server
📖 API-Dokumentation: Weitergeleitete Daten & erwartete Werte
GIS Care sendet bei Alarmen und Heartbeats automatisch JSON-Daten per HTTP POST an alle aktiven Weiterleitungs-Server.
🔗 Verbindungsparameter
| Methode | Immer POST |
| Content-Type | application/json |
| Auth-Header | X-API-Key: {Ihr API-Key} — optional, wird als HTTP-Header gesendet |
| Timeout | Connect: 3s, Response: 5s (non-blocking) |
🚨 Alarm-Payload (type: "alarm")
Wird gesendet wenn ein Mitarbeiter einen Alarm auslöst (Sturz, Bewegungslosigkeit, Check-in verpasst, etc.)
{
"type": "alarm",
"source": "gis_care",
"timestamp": "2025-01-15T14:30:00+01:00",
"data": {
"alarm_id": 42,
"user_id": 5,
"username": "mustermann",
"scenario": "fallDetection",
"severity": "critical",
"message": "Möglicher Sturz erkannt! Hohe Beschleunigung...",
"was_cancelled": 0,
"event_type": "triggered",
"latitude": 51.1657,
"longitude": 10.4515,
"timestamp": "2025-01-15T14:30:00+01:00"
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
type | string | Immer "alarm" |
source | string | Immer "gis_care" |
data.alarm_id | int | Eindeutige Alarm-ID in der GIS Care DB |
data.user_id | int | Benutzer-ID des betroffenen Mitarbeiters |
data.username | string | Benutzername des Mitarbeiters |
data.scenario | string | fallDetection | immobility | noMovement | tiltAnomaly | checkinHeartbeat |
data.severity | string | warning | critical | emergency |
data.message | string | Menschenlesbare Alarmbeschreibung (DE) |
data.event_type | string | triggered (Alarm ausgelöst) | cancelled (Entwarnung) |
data.was_cancelled | int | 0 = aktiver Alarm, 1 = Benutzer hat Entwarnung gegeben |
data.latitude | float|null | GPS-Breitengrad (kann null sein wenn kein GPS) |
data.longitude | float|null | GPS-Längengrad (kann null sein wenn kein GPS) |
💓 Heartbeat-Payload (type: "heartbeat")
Wird periodisch gesendet (Standard: alle 30 Sekunden) solange die App aktiv ist.
{
"type": "heartbeat",
"source": "gis_care",
"timestamp": "2025-01-15T14:30:00+01:00",
"data": {
"user_id": 5,
"username": "mustermann",
"timestamp": "2025-01-15T14:30:00+01:00",
"monitoring_active": true
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
data.monitoring_active | bool | true = Schutzüberwachung läuft, false = App offen aber Schutz nicht aktiv |
🔌 Test-Payload (type: "test")
Wird beim Klick auf "Verbindung testen" gesendet.
{
"type": "test",
"source": "gis_care",
"timestamp": "2025-01-15T14:30:00+01:00",
"data": {
"message": "GIS Care Verbindungstest"
}
}
📝 Empfangsserver einrichten
Ihr externer Server muss einen POST-Endpoint bereitstellen der JSON empfängt. Minimal-Beispiel (PHP):
<?php
$input = json_decode(file_get_contents('php://input'), true);
$type = $input['type']; // "alarm", "heartbeat" oder "test"
$data = $input['data']; // Nutzdaten
$apiKey = $_SERVER['HTTP_X_API_KEY'] ?? '';
// API-Key prüfen (empfohlen)
if ($apiKey !== 'IHR_GEHEIMER_KEY') {
http_response_code(403);
exit;
}
// Verarbeitung je nach Typ
if ($type === 'alarm') {
// Alarm weiterverarbeiten, z.B. an Leitstelle senden
$scenario = $data['scenario'];
$severity = $data['severity'];
$user = $data['username'];
// ...
}
http_response_code(200);
echo json_encode(['received' => true]);
?>
⚠️ Wichtige Hinweise
- Weiterleitungen sind fire-and-forget — Fehler blockieren nicht den Alarm-Prozess
- Timeout: 3s Connect + 5s Response — langsame Server werden übersprungen
- Ihr Server sollte mit HTTP 2xx antworten, sonst wird ein Fehler protokolliert
- Latitude/Longitude können
nullsein wenn der Benutzer kein GPS hat - Alle Texte (message, username) sind UTF-8 kodiert
- Derzeit werden nur Alarme und Heartbeats weitergeleitet, kein User-Info
Lade Server...
📊 System-Logs
Lade Logs...
📄 Berichte
📋 Bericht erstellen
📁 Erstellte Berichte
Noch keine Berichte erstellt