Skip to content

Technician manual — uMe Eyes: set-up, kiosk lock and relay service

Status as of 03.11.2026. In development — kiosk app and relay service (protocol 1.3) are in development in the repository ume-eyes, not yet adopted. Not yet installed on any device; the device test is still open. Use: kiosk tablets in front of box 2 (reception), box 3 (emergency department) and box 6 (laboratory) at MEDICA 2026. Audience: service technicians of United Robotics Group and appointed partners. The page follows in German below: Deutsch. Related pages: uMe Eyes — status overview and uMe Eyes — relay protocol 1.2.

For IT, technicians and integration partners

Technical reference for IT departments, URG technicians and trained partners. It is not written as operating instructions for end users.

1 Overview

Part Where Task
Kiosk app „uMe Eyes“ one tablet per box (Android; iPad possible) face, question mode, push-to-talk (currently off), warning screen, permanent notices
Relay service fair laptop in the closed fair router Wi-Fi central configuration, status overview, forwards speech to the speech service, warning check

The relay service is the only part that talks to the speech service and the only part that knows its key. It controls no robot. The tablets never see the key or the instructions of the speech service.

2 Operating conditions (mandatory)

The status overview can be read without a password. This is only allowed under these conditions (decision of 31.10.2026):

  1. Relay laptop and kiosk tablets are only in the closed fair router Wi-Fi (WPA2, own Wi-Fi password from the password manager). Never in the open fair Wi-Fi of the exhibition centre. No port forwarding on the router — the relay service must never be reachable from the internet.
  2. In addition, the relay service only answers requests from the allowed networks (erlaubte_netze; default: the private address ranges). Every other source receives HTTP 403, also when a WebSocket is opened. The list can be narrowed to exactly the fair router network in zentral.json (restart needed).
  3. The technician page of the relay service is protected by a password. It exists only in the password manager — never in a repository, ticket, chat or document. There is no default password.

No protection against eavesdropping: tablets and relay service talk unencrypted (ws://, http://). Since protocol 1.2 tablet and relay service authenticate each other with the device key, but after the log-in anyone who can read the traffic sees audio and texts, and anyone who can redirect it can take over a connection. For the fair, the protection is the closed WPA2 network (condition 1) — apply it all the more strictly. TLS is a follow-up (own certificate at the relay service, check in the app).

3 Relay service on the fair laptop

Requirements: Windows laptop with Node.js 20.6 or later (node -v; needed for --env-file), working copy of ume-eyes with the adopted version under %USERPROFILE%\dev\ume-eyes. No packages are installed (the relay service has no third-party dependencies). All commands: PowerShell, no admin.

3.1 Data folder

The data folder is outside the repository: %USERPROFILE%\.ume-eyes-relay. The relay service refuses a data folder inside the repository.

File Content
zentral.json configuration without secrets; created at first start
geheim.json device keys of the tablets, pairing keys of the robots, hash of the technician password
relay.env key of the speech service (created by product management, see 3.2)

Create the folder and make it readable for the own account only (equivalent of 0600/0700):

cd $env:USERPROFILE\dev\ume-eyes
node $env:USERPROFILE\dev\ume-eyes\relay\src\cli.js
icacls $env:USERPROFILE\.ume-eyes-relay /inheritance:r /grant:r "${env:USERNAME}:(OI)(CI)F"

The first command creates zentral.json and geheim.json and lists the commands. Under Linux the service sets 0600 itself and refuses to start if geheim.json is readable for others.

3.2 Key of the speech service (environment file)

The file relay.env in the data folder contains exactly one line: the variable UME_RELAY_SPEECH_API_KEY= followed directly by the key. The value is entered only by URG product management from the password manager. It never appears in a repository, log, ticket or on this site, and it is never sent to a tablet. Without the file the service starts anyway; speech then stays off and the kiosks use question mode.

Create the file (PowerShell, no admin):

cd $env:USERPROFILE\.ume-eyes-relay
notepad $env:USERPROFILE\.ume-eyes-relay\relay.env

Write exactly one line: UME_RELAY_SPEECH_API_KEY= and directly after it, without spaces, the key from the password manager. Save and close Notepad.

3.3 Technician password of the relay service

cd $env:USERPROFILE\dev\ume-eyes
node $env:USERPROFILE\dev\ume-eyes\relay\src\cli.js kennwort-setzen

At least 12 characters, entered twice (invisible). Store it in the password manager only. Without a password the technician page stays locked. Five wrong attempts from the same source address lock the log-in for 60 s for that address only; other addresses (for example the technician laptop) stay free, so a visitor in the network can only lock out himself, not the technician; a session ends after 30 min without use.

3.4 Device keys for the kiosk tablets

cd $env:USERPROFILE\dev\ume-eyes
node $env:USERPROFILE\dev\ume-eyes\relay\src\cli.js geraet-anlegen kiosk-box2
node $env:USERPROFILE\dev\ume-eyes\relay\src\cli.js geraet-anlegen kiosk-box3
node $env:USERPROFILE\dev\ume-eyes\relay\src\cli.js geraet-anlegen kiosk-box6

Each key is shown once: put it into the password manager immediately (entry „uMe Eyes kiosk-box2“ etc.) and enter it in the set-up of the kiosk app (section 5). The key never travels over the network; the tablet answers a challenge with it. An existing key is replaced only with --neu; the tablet must then be set up again.

3.5 First start

With the key file:

cd $env:USERPROFILE\dev\ume-eyes
node --env-file=$env:USERPROFILE\.ume-eyes-relay\relay.env $env:USERPROFILE\dev\ume-eyes\relay\src\main.js

If relay.env does not exist yet, use the following command instead — --env-file with a missing file stops Node.js at once. Without the key file (question mode, status overview and configuration only):

cd $env:USERPROFILE\dev\ume-eyes
node $env:USERPROFILE\dev\ume-eyes\relay\src\main.js

Expected output (the data folder is shown with the path of the own user folder):

uMe Eyes Vermittlungsdienst läuft auf Port 8770. Datenordner: C:\Users\…\.ume-eyes-relay

plus notes on a missing password, key or device keys. Keep the window open; stop with Ctrl+C.

At the first start Windows asks for network access: allow only „Private networks“ (TCP 8770, UDP 5353 for mDNS). This release is clicked by product management.

Check on the laptop:

  • status overview: http://localhost:8770/
  • technician page: http://localhost:8770/technik (password from 3.3)
  • detection: http://localhost:8770/api/v1/hello answers {"type":"hello","service":"ume-eyes-relay","protocol":"1.2"}

Log in to the technician page only on the laptop itself (localhost): the connection in the fair router network is unencrypted.

3.6 Discovery — no address to type

The relay service announces itself in the Wi-Fi as _ume-eyes._tcp (mDNS, host name ume-eyes-relay.local). The kiosk app finds it in this order:

  1. the last connected relay service;
  2. search in the own network: every address of the tablet's own private network on port 8770 with GET /api/v1/hello, only over Wi-Fi or LAN, never over mobile data. The app assumes a network of size /24 (at most 254 addresses).

Open: the mDNS search in the kiosk app is not built yet (follow-up). Until then the search in the own network applies.

4 Central configuration

Changed only on the technician page of the relay service. Saving takes effect immediately on the tablet concerned; the other tablets keep their values. The tablets also fetch the configuration every 60 s and keep the last valid version if the relay service is missing.

Setting Values Default
Device → box box 2, 3 or 6 per kiosk; name per kiosk from the assignment
Speech on / off (push-to-talk and text input to the AI) off
Demo (recording demo) on / off off
Volume 0–100 70
Face uGo or uMe per kiosk (field gesicht, see 7.5) uGo
Content version valid version of the approved content from the content manifest
Read robot status via the Gateway on / off (section „General“, with warning) off

Fixed in zentral.json (effective after restart): allowed networks, bind address, speech model and voice, time limit of the speech service (8 s), fetch interval (60 s), status interval (10 s), offline after 20 s, reset after 90 s.

Robot status reading stays OFF

The Gateway of the uMe has no read-only role: when a paired connection is closed, it stops the robot (locomotion stopped, gesture ended). Therefore reading is off by default and the overview shows uMe 1 and uMe 2 as „not polled“. Switch it on only after the Gateway has a read-only role and authenticates itself to the relay service (mutual log-in like protocol 1.2 of the kiosks; follow-up for the uMe development); until then reading stays off. If it is on: the relay service sends only pair and ping, discards camera images at once, and shows the battery level of the moment of pairing. Do not stop the relay service while a uMe is driven from a tablet. Switching on (pairing keys of uMe 1 and uMe 2 with roboter-schluessel, address on the technician page, check box with warning): relay/README.md section 2.5 in the repository ume-eyes.

5 Kiosk set-up on Android (kiosk mode)

What the app does itself: it is the home screen, starts with the system, pins itself with lock task (as device owner without status bar, notifications, home, recents and power menu; lock screen off), keeps the screen on in landscape, restarts after a crash after 1 s, ignores the back key.

Requirements:

  • tablet with USB debugging enabled (for the set-up only) and without signed-in accounts (Android does not allow a device owner otherwise). Whether accounts are removed or the tablet is reset is decided by product management;
  • Android SDK folder %USERPROFILE%\dev\android-sdk-ume — open (being set up by product management). Steps 1 and 2 work only once this folder exists. The shared SDK under %USERPROFILE%\dev\android-sdk must not be used.

  • Build the app (PowerShell, no admin). Release build, because the face stutters in a debug build; it is signed with the development key for now (open point):

    cd $env:USERPROFILE\dev\ume-eyes\app
    & "$env:USERPROFILE\dev\_setup\flutter\bin\flutter.bat" build apk --release
    
  • Install the app and set it as device owner (PowerShell, no admin, exactly one tablet connected):

    cd $env:USERPROFILE\dev\ume-eyes\app
    & "$env:USERPROFILE\dev\android-sdk-ume\platform-tools\adb.exe" install -r build\app\outputs\flutter-apk\app-release.apk
    & "$env:USERPROFILE\dev\android-sdk-ume\platform-tools\adb.exe" shell dpm set-device-owner group.unitedrobotics.ume.ume_eyes/.KioskAdminReceiver
    

    Expected: Success: Device owner set to package group.unitedrobotics.ume.ume_eyes.

  • Start the app. At the first start:

    • choose the kiosk (box 2, 3 or 6);
    • enter the device key from the password manager (3.4);
    • set the local technician password of the kiosk and repeat it (at least 12 characters; create it in the password manager first). It is stored on the tablet only as a salted hash. The relay service does not know it. There is no default password.
    • „Speichern und starten“. If the relay service is running, the app checks the device key at once; a rejected key is not stored and can be entered again.
    • „Nur Fragenmodus starten“ starts without relay service; box and technician password hash are stored, after a restart the kiosk starts directly in question mode again.
    • After this first set-up the set-up never appears publicly again: also after a crash or power failure the kiosk starts directly (screen pinning first). Changes only in the technician area: long press top left → local technician password → „Einrichtung ändern“ (kiosk mode stays on).
  • Check: status bar and notifications cannot be reached, home and recents keys have no effect, the screen stays on, after a restart of the tablet uMe Eyes starts by itself and shows no set-up.
  • Before the tablet goes to the box: leave the kiosk mode, Settings → Developer options → USB debugging off, then switch the developer options off, start uMe Eyes again. The USB port must not be accessible to visitors (holder or cover). Otherwise anyone with a cable could bypass the kiosk lock via the debugging interface.

Leaving the kiosk mode: long press top left → local technician password → „Kioskmodus verlassen“. Five wrong attempts lock for 60 s.

6 Kiosk set-up on iPad (Guided Access)

On the iPad the app does not lock the device; the accessibility feature Guided Access does.

  1. Settings → Accessibility → Guided Access → on. Passcode settings: Guided Access accepts only a 6-digit numeric code — set an own 6-digit code from the password manager (entry „uMe Eyes iPad Geführter Zugriff“), not the technician password. Face ID/Touch ID for ending off. No time limit.
  2. Settings → Display & Brightness → Auto-Lock → Never. Focus „Do Not Disturb“ on.
  3. First start of the app: choose the kiosk (box 2, 3 or 6), enter the device key from the password manager (3.4), set the local technician password of the kiosk and repeat it (at least 12 characters, password manager; no default password), „Speichern und starten“ — as on Android (section 5, step 3). After this the set-up never appears publicly again; changes only via long press top left → local technician password → „Einrichtung ändern“.
  4. Each fair day: open uMe Eyes, triple-click the top (or home) button → Guided Access → options: top button off, volume buttons off, motion off, keyboard on, touch on → Start.
  5. End: triple-click → 6-digit code → End.

There is no automatic restart after a crash on the iPad. The iPad version is not tested on a device (open).

7 Behaviour at the kiosk

7.1 Question mode

Tiles with the approved questions of the box; the answers are shown word for word from the approved content, without AI. The kiosk switches to question mode automatically in less than 5 s when the relay service or its internet connection is missing (check every 2 s). After a failed answer it stays in question mode for 30 s. Visitors can choose it at any time. „Speech off“ means question mode only.

7.2 Reset after 90 s

After 90 s without touch, or after „Ende“: history, session (also at the relay service), demo and warning screen are cleared, the face returns to idle, the language returns to German.

7.3 Warning list and warning screen

The warning list is always active, also as long as its wording is not yet approved. The app checks every text input before it is passed on; the relay service checks text input and the transcript of speech input once more before any AI answer is requested. While a transcript is being checked, the relay service accepts no new input (busy).

Matching also works inside longer words (inflections, compounds) and folds umlauts to the base vowel. Accepted false positives: for example „Notfallaufnahme“ (contains „Notfall“) or „heart attacks“ — the warning screen then appears although the visitor only asked about the box. Booth staff clarify this on site; in case of doubt the stricter reading applies.

On a match there is no AI answer. The kiosk shows a full-screen warning with exactly this approved text (S-8):

Bitte sprechen Sie sofort das Standpersonal an. In einem Notfall wählen Sie 112.

Please speak to our booth staff right away. In an emergency, call 112.

The text never promises that somebody is fetched or notified. The status overview shows „Help requested, Box n“ at once. There is no active notification: booth staff must look at the status overview regularly.

7.4 Speech at the kiosk is currently off

Push-to-talk is off in operation until the audio implementation (microphone and loudspeaker) is approved. Leave „Speech“ off on the technician page. Text input and question mode work as described.

7.5 Face uMe or uGo, moments (from 03.11.2026, in development)

Each kiosk shows the uGo eyes with glasses (default, the same variant everywhere). The uMe face remains as the way back. The face is set only on the technician page of the relay service, per kiosk (field „Face“, values uGo and uMe); saving takes effect immediately on this tablet only. Without the relay service and without a stored configuration the tablet also shows the uGo eyes. When switched to uGo, the rings are drawn first, then the eyes open. The uGo face blinks every 2.6–6.2 s and glances left, right and up. Without a touch it falls asleep after 60 s and wakes at every touch. The accessibility setting „Remove animations“ stops the glances, opens the eyes without the start-up drawing and shows no particles; expression, party hat and subtitles stay.

With uGo, moments appear over the face: little hearts (love), stars (starstruck), closed eyes with rising „z“ (sleepy) and the birthday mode with party hat, balloons and confetti (birthday), at most 60 particles at once. The birthday lasts until the song has ended, at least 14 s and at most 40 s; then the birthday wish, 2.5 s happy, and the face returns. An emotion set by the AI stays 8 s, then the face is friendly again. The uGo face has a concerned expression for faults; the kiosk app does not use it yet (a connection loss switches to question mode, the face stays idle). With uMe the tablet shows existing expressions instead (happy, surprised, neutral with half closed lids).

Device test: on the technician page under „Moments (device test)“, eight buttons per kiosk: „Hearts on departure“, „Thank you“, „Wow“, „Birthday“, „Hello“, „Concern“, „Fall asleep“, „Be happy“. Only the face changes; nothing moves. The tablet ignores a moment during a conversation and on the warning screen; in question mode it shows it.

The AI gets the four new expressions only when the section „MOMENTE“ of the kiosk instructions is approved and the kiosk shows uGo. Both apply as of 03.11.2026; with uMe the AI knows only the eight earlier expressions. The question-mode tile „Sing mir Happy Birthday“ (melody generated on the tablet, always „dear friend“, no AI) is prepared and stays off.

8 Data handling

  • The relay service writes only zentral.json and geheim.json. Conversations, audio, text, transcripts and camera images pass through memory only and are not stored. The log contains only event codes and device IDs.
  • Only counters are kept (conversations, push-to-talk, text inputs, answers, emotions, rejected tools, discarded messages, fallbacks), in memory only; they are lost at a restart.
  • The tablet stores only configuration, device key, hash of the technician password, the chosen box (also in question mode only) and the last address of the relay service. App data backup is switched off.
  • Limitation: with speech input, the audio itself reaches the speech service before the warning check, because the transcript is created there. The check prevents the AI answer, not the transfer of the audio. Text inputs with a match never leave the relay service.
  • This page makes no statement on a data location for the speech part.

9 Rollback

  1. Stop the relay service (Ctrl+C). The kiosks keep the last valid configuration and switch to question mode by themselves.
  2. First installation: there is no previous version. Rollback = leave the relay service stopped; the kiosks run in question mode.
  3. The data folder stays unchanged and is valid for every version with protocol 1.x. Nothing is deleted; a data folder no longer needed is moved to %USERPROFILE%\dev\_ausgelagert\.
  4. Kiosk: leave the kiosk mode with the local technician password (Android) or the Guided Access 6-digit code (iPad). A forgotten Android technician password cannot be reset in the app in this version; the only way back is a reset of the tablet (decision product management). Removing the device owner is not yet in the app either; without it, only a reset of the tablet removes it.

10 Open points

  • mDNS search in the kiosk app (today: last address, then the own network).
  • „Geräteinhaber entfernen“ in the technician area of the app.
  • Updates via adb: USB debugging must temporarily be switched on again (leave kiosk mode first in the technician area, switch it off again afterwards).
  • Own release signing key for the kiosk app.
  • Wording of the permanent notices on the kiosk (six languages) awaits approval.
  • Approval of the audio implementation (speech at the kiosk).
  • Read-only role in the uMe Gateway with self-authentication towards the relay service (only then robot status reading may be switched on).
  • TLS between tablets and relay service (today no protection against eavesdropping).
  • Device test on Android and iPad.
  • uGo eyes: device test with video per moment.
  • Kiosk app: use the concerned expression of the uGo face for faults (today the face stays idle).

Faults: support@unitedrobotics.group.

United Robotics Group GmbH, An der Riede 2, 28816 Stuhr, Germany, HRB 209124 Amtsgericht Walsrode.


Technikerhandbuch — uMe Eyes: Einrichtung, Kiosk-Sperre und Vermittlungsdienst

Stand 03.11.2026. In Entwicklung — Kiosk-App und Vermittlungsdienst (Protokoll 1.3) sind im Repository ume-eyes in Entwicklung, noch nicht übernommen. Noch auf keinem Gerät eingespielt; der Gerätetest steht aus. Einsatz: Kiosk-Tablets vor Box 2 (Empfang), Box 3 (Notaufnahme) und Box 6 (Labor) auf der MEDICA 2026. Zielgruppe: Servicetechniker der United Robotics Group und beauftragte Partner. Weitere Seiten: uMe Eyes — Statusübersicht und uMe Eyes — Vermittlungsprotokoll 1.2.

Für IT, Techniker und Integrationspartner

Technische Referenz für IT-Abteilungen, URG-Techniker und geschulte Partner. Keine Bedienungsanleitung für Endanwender.

1 Überblick

Teil Wo Aufgabe
Kiosk-App „uMe Eyes“ ein Tablet je Box (Android; iPad möglich) Gesicht, Fragenmodus, Sprechtaste (derzeit aus), Warnbildschirm, dauerhafte Hinweise
Vermittlungsdienst Messe-Laptop im geschlossenen Messerouter-WLAN zentrale Konfiguration, Statusübersicht, leitet Sprache zum Sprachdienst durch, Warnwort-Prüfung

Nur der Vermittlungsdienst spricht mit dem Sprachdienst und kennt dessen Schlüssel. Er steuert keinen Roboter. Die Tablets sehen weder den Schlüssel noch die Anweisungen des Sprachdienstes.

2 Betriebsbedingungen (Pflicht)

Die Statusübersicht ist ohne Kennwort lesbar. Das ist nur unter diesen Bedingungen zulässig (Entscheidung vom 31.10.2026):

  1. Laptop und Kiosk-Tablets sind nur im geschlossenen Messerouter-WLAN (WPA2, eigenes WLAN-Kennwort aus dem Passwortmanager). Nie im offenen MEDICA-WLAN. Keine Portweiterleitung am Router — der Vermittlungsdienst ist nie aus dem Internet erreichbar.
  2. Zusätzlich beantwortet der Dienst nur Anfragen aus den erlaubten Netzen (erlaubte_netze; Vorgabe: die privaten Adressbereiche). Jede andere Quelle erhält HTTP 403, auch beim WebSocket-Aufbau. Die Liste kann in zentral.json auf genau das Messerouter-Netz eingeengt werden (Neustart nötig).
  3. Die Technikerseite des Dienstes ist kennwortgeschützt. Das Kennwort steht nur im Passwortmanager — nie in einem Repository, Ticket, Chat oder Dokument. Es gibt kein Vorgabekennwort.

Kein Schutz gegen Mitlesen: Tablets und Dienst sprechen unverschlüsselt (ws://, http://). Seit Protokoll 1.2 prüfen sich Tablet und Dienst gegenseitig über den Geräteschlüssel; nach der Anmeldung sieht aber jeder, der den Verkehr mitlesen kann, Audio und Texte, und wer ihn umleiten kann, kann eine Verbindung übernehmen. Für die Messe schützt das geschlossene WPA2-Netz (Bedingung 1) — umso strenger einhalten. TLS ist ein Folgeschritt (eigenes Zertifikat am Dienst, Prüfung in der App).

3 Vermittlungsdienst auf dem Messe-Laptop

Voraussetzungen: Windows-Laptop mit Node.js ab 20.6 (node -v; nötig für --env-file), Arbeitskopie von ume-eyes mit dem übernommenen Stand unter %USERPROFILE%\dev\ume-eyes. Es wird kein Paket installiert (der Dienst hat keine Fremdabhängigkeiten). Alle Befehle: PowerShell, kein Admin.

3.1 Datenordner

Der Datenordner liegt außerhalb des Repositorys: %USERPROFILE%\.ume-eyes-relay. Einen Datenordner innerhalb des Repositorys verweigert der Dienst.

Datei Inhalt
zentral.json Konfiguration ohne Geheimnisse; wird beim ersten Start angelegt
geheim.json Geräteschlüssel der Tablets, Kopplungsschlüssel der Roboter, Hash des Technikerkennworts
relay.env Schlüssel des Sprachdienstes (legt das Produktmanagement an, siehe 3.2)

Ordner anlegen und nur für das eigene Konto lesbar machen (entspricht 0600/0700):

cd $env:USERPROFILE\dev\ume-eyes
node $env:USERPROFILE\dev\ume-eyes\relay\src\cli.js
icacls $env:USERPROFILE\.ume-eyes-relay /inheritance:r /grant:r "${env:USERNAME}:(OI)(CI)F"

Der erste Befehl legt zentral.json und geheim.json an und zeigt die Befehlsliste. Unter Linux setzt der Dienst 0600 selbst und startet nicht, wenn geheim.json für andere lesbar ist.

3.2 Schlüssel des Sprachdienstes (Umgebungsdatei)

Die Datei relay.env im Datenordner enthält genau eine Zeile: die Variable UME_RELAY_SPEECH_API_KEY= und direkt dahinter den Schlüssel. Den Wert trägt nur das URG-Produktmanagement aus dem Passwortmanager ein. Er steht nie in einem Repository, Log, Ticket oder auf dieser Seite und wird nie an ein Tablet gesendet. Ohne die Datei startet der Dienst trotzdem; Sprache bleibt dann aus, die Kiosks nutzen den Fragenmodus.

Datei anlegen (PowerShell, kein Admin):

cd $env:USERPROFILE\.ume-eyes-relay
notepad $env:USERPROFILE\.ume-eyes-relay\relay.env

Genau eine Zeile schreiben: UME_RELAY_SPEECH_API_KEY= und direkt dahinter, ohne Leerzeichen, den Schlüssel aus dem Passwortmanager. Speichern, Notepad schließen.

3.3 Technikerkennwort des Vermittlungsdienstes

cd $env:USERPROFILE\dev\ume-eyes
node $env:USERPROFILE\dev\ume-eyes\relay\src\cli.js kennwort-setzen

Mindestens 12 Zeichen, zweimal eingeben (unsichtbar). Nur im Passwortmanager ablegen. Ohne Kennwort bleibt die Technikerseite gesperrt. Fünf Fehlversuche von derselben Adresse sperren die Anmeldung nur von dieser Adresse für 60 s; andere Adressen (z. B. der Technikerlaptop) bleiben frei, ein Besucher im Netz kann also nur sich selbst aussperren, nicht den Techniker; eine Sitzung endet nach 30 min ohne Nutzung.

3.4 Geräteschlüssel für die Kiosk-Tablets

cd $env:USERPROFILE\dev\ume-eyes
node $env:USERPROFILE\dev\ume-eyes\relay\src\cli.js geraet-anlegen kiosk-box2
node $env:USERPROFILE\dev\ume-eyes\relay\src\cli.js geraet-anlegen kiosk-box3
node $env:USERPROFILE\dev\ume-eyes\relay\src\cli.js geraet-anlegen kiosk-box6

Jeder Schlüssel wird einmal angezeigt: sofort in den Passwortmanager übernehmen (Eintrag „uMe Eyes kiosk-box2“ usw.) und bei der Einrichtung der Kiosk-App eingeben (Abschnitt 5). Der Schlüssel geht nie über das Netz; das Tablet beantwortet damit eine Challenge. Ein vorhandener Schlüssel wird nur mit --neu ersetzt; danach das Tablet neu einrichten.

3.5 Erster Start

Mit Schlüsseldatei:

cd $env:USERPROFILE\dev\ume-eyes
node --env-file=$env:USERPROFILE\.ume-eyes-relay\relay.env $env:USERPROFILE\dev\ume-eyes\relay\src\main.js

Gibt es relay.env noch nicht, stattdessen den folgenden Befehl nehmen — mit --env-file und fehlender Datei bricht Node.js sofort ab. Ohne Schlüsseldatei (nur Fragenmodus, Statusübersicht und Konfiguration):

cd $env:USERPROFILE\dev\ume-eyes
node $env:USERPROFILE\dev\ume-eyes\relay\src\main.js

Erwartete Ausgabe (der Datenordner erscheint mit dem Pfad des eigenen Benutzerordners):

uMe Eyes Vermittlungsdienst läuft auf Port 8770. Datenordner: C:\Users\…\.ume-eyes-relay

plus Hinweise zu fehlendem Kennwort, Schlüssel oder Geräteschlüsseln. Fenster offen lassen; Stopp mit Strg+C.

Beim ersten Start fragt Windows nach Netzwerkzugriff: nur „Private Netzwerke“ zulassen (TCP 8770, UDP 5353 für mDNS). Diese Freigabe klickt das Produktmanagement.

Prüfen auf dem Laptop:

  • Statusübersicht: http://localhost:8770/
  • Technikerseite: http://localhost:8770/technik (Kennwort aus 3.3)
  • Erkennung: http://localhost:8770/api/v1/hello antwortet {"type":"hello","service":"ume-eyes-relay","protocol":"1.2"}

An der Technikerseite nur auf dem Laptop selbst anmelden (localhost): Die Verbindung im Messerouter-Netz ist unverschlüsselt.

3.6 Erkennung — keine Adresse eintippen

Der Dienst meldet sich im WLAN als _ume-eyes._tcp (mDNS, Rechnername ume-eyes-relay.local). Die Kiosk-App findet ihn in dieser Reihenfolge:

  1. zuletzt verbundener Vermittlungsdienst;
  2. Suche im eigenen Netz: jede Adresse des eigenen privaten Netzes des Tablets auf Port 8770 mit GET /api/v1/hello, nur über WLAN oder LAN, nie über Mobilfunk. Die App nimmt ein Netz der Größe /24 an (höchstens 254 Adressen).

Offen: Die mDNS-Suche in der Kiosk-App ist noch nicht gebaut (Folgepunkt). Bis dahin gilt die Suche im eigenen Netz.

4 Zentrale Konfiguration

Geändert wird nur auf der Technikerseite des Dienstes. Speichern wirkt sofort auf das betroffene Tablet; die anderen behalten ihre Werte. Die Tablets holen die Konfiguration zusätzlich alle 60 s und behalten ohne Dienst die zuletzt gültige Fassung.

Einstellung Werte Vorgabe
Gerät → Box Box 2, 3 oder 6 je Kiosk; Name je Kiosk aus der Zuordnung
Sprache an / aus (Sprechtaste und Texteingabe an die KI) aus
Demo (Aufnahme-Demo) an / aus aus
Lautstärke 0–100 70
Gesicht uGo oder uMe je Kiosk (Feld gesicht, siehe 7.5) uGo
Inhaltsfassung gültige Fassung der freigegebenen Inhalte aus dem Inhaltsmanifest
Roboterstatus über das Gateway lesen an / aus (Abschnitt „Allgemein“, mit Warnhinweis) aus

Fest in zentral.json (wirksam nach Neustart): erlaubte Netze, Bindeadresse, Sprachmodell und Stimme, Zeitlimit des Sprachdienstes (8 s), Abruf (60 s), Statusintervall (10 s), offline nach 20 s, Rücksetzen nach 90 s.

Roboterstatus lesen bleibt AUS

Das Gateway des uMe hat keine reine Leserolle: Beim Trennen einer gekoppelten Verbindung hält es den Roboter an (Fortbewegung stoppen, Geste beenden). Deshalb ist das Lesen ab Werk aus, und die Übersicht zeigt uMe 1 und uMe 2 als „nicht abgefragt“. Erst einschalten, wenn das Gateway eine reine Leserolle hat und sich gegenüber dem Dienst selbst ausweist (gegenseitige Anmeldung wie Protokoll 1.2 der Kiosks; Folgepunkt für die uMe-Entwicklung); bis dahin bleibt das Lesen aus. Ist es an, sendet der Dienst nur pair und ping, verwirft Kamerabilder sofort und zeigt den Akkustand zum Zeitpunkt der Kopplung. Den Dienst nicht beenden, während ein uMe per Tablet gefahren wird. Einschalten (Kopplungsschlüssel von uMe 1 und uMe 2 mit roboter-schluessel, Adresse auf der Technikerseite, Kästchen mit Warnhinweis): relay/README.md Abschnitt 2.5 im Repository ume-eyes.

5 Kiosk-Einrichtung unter Android (Kioskmodus)

Was die App selbst tut: Sie ist Startbildschirm, startet mit dem System, fixiert sich per Lock-Task (als Geräteinhaber ohne Statusleiste, Benachrichtigungen, Start, Übersicht und Ein/Aus-Menü; Sperrbildschirm aus), hält den Bildschirm im Querformat an, startet nach einem Absturz nach 1 s neu und ignoriert die Zurück-Taste.

Voraussetzungen:

  • Tablet mit aktivierter USB-Fehlersuche (nur für die Einrichtung) und ohne angemeldete Konten (sonst erlaubt Android keinen Geräteinhaber). Ob Konten entfernt oder das Tablet zurückgesetzt wird, entscheidet das Produktmanagement;
  • Android-SDK-Ordner %USERPROFILE%\dev\android-sdk-ume — offen (wird vom Produktmanagement eingerichtet). Die Schritte 1 und 2 gehen erst, wenn dieser Ordner steht. Das gemeinsame SDK unter %USERPROFILE%\dev\android-sdk wird nicht benutzt.

  • App bauen (PowerShell, kein Admin). Release-Bau, weil das Gesicht im Debug-Bau ruckelt; signiert ist er vorerst mit dem Entwicklungsschlüssel (offener Punkt):

    cd $env:USERPROFILE\dev\ume-eyes\app
    & "$env:USERPROFILE\dev\_setup\flutter\bin\flutter.bat" build apk --release
    
  • App installieren und als Geräteinhaber setzen (PowerShell, kein Admin, genau ein Tablet angeschlossen):

    cd $env:USERPROFILE\dev\ume-eyes\app
    & "$env:USERPROFILE\dev\android-sdk-ume\platform-tools\adb.exe" install -r build\app\outputs\flutter-apk\app-release.apk
    & "$env:USERPROFILE\dev\android-sdk-ume\platform-tools\adb.exe" shell dpm set-device-owner group.unitedrobotics.ume.ume_eyes/.KioskAdminReceiver
    

    Erwartet: Success: Device owner set to package group.unitedrobotics.ume.ume_eyes.

  • App starten. Beim ersten Start:

    • Kiosk (Box 2, 3 oder 6) wählen;
    • Geräteschlüssel aus dem Passwortmanager eingeben (3.4);
    • lokales Technikerkennwort des Kiosks festlegen und wiederholen (mindestens 12 Zeichen; vorher im Passwortmanager anlegen). Es wird auf dem Tablet nur als gesalzener Hash gespeichert. Der Vermittlungsdienst kennt es nicht. Es gibt kein Vorgabekennwort.
    • „Speichern und starten“. Läuft der Dienst, prüft die App den Geräteschlüssel sofort; ein abgelehnter Schlüssel wird nicht gespeichert und kann neu eingegeben werden.
    • „Nur Fragenmodus starten“ startet ohne Dienst; Box und Kennwort-Hash werden gespeichert, nach einem Neustart startet der Kiosk direkt wieder im Fragenmodus.
    • Nach dieser ersten Einrichtung erscheint die Einrichtung nie mehr öffentlich: auch nach Absturz oder Stromausfall startet der Kiosk direkt (Bildschirmfixierung zuerst). Ändern nur im Technikerbereich: langer Druck oben links → lokales Technikerkennwort → „Einrichtung ändern“ (der Kioskmodus bleibt dabei an).
  • Prüfen: Statusleiste und Benachrichtigungen nicht erreichbar, Start- und Übersichtstaste ohne Wirkung, Bildschirm bleibt an, nach Neustart des Tablets startet uMe Eyes von selbst und zeigt keine Einrichtung.
  • Bevor das Tablet an die Box geht: Kioskmodus verlassen, Einstellungen → Entwickleroptionen → USB-Fehlersuche aus, danach die Entwickleroptionen ausschalten, uMe Eyes wieder starten. Der USB-Anschluss ist für Besucher nicht zugänglich (Halterung oder Abdeckung). Sonst könnte jemand mit einem Kabel die Kiosk-Sperre über die Fehlersuche umgehen.

Kioskmodus verlassen: langer Druck oben links → lokales Technikerkennwort → „Kioskmodus verlassen“. Fünf Fehlversuche sperren für 60 s.

6 Kiosk-Einrichtung auf dem iPad (Geführter Zugriff)

Auf dem iPad sperrt nicht die App, sondern die Bedienungshilfe „Geführter Zugriff“ das Gerät.

  1. Einstellungen → Bedienungshilfen → Geführter Zugriff → ein. Code-Einstellungen: Der geführte Zugriff nimmt nur einen 6-stelligen Zahlencode — eigenen 6-stelligen Code aus dem Passwortmanager festlegen (Eintrag „uMe Eyes iPad Geführter Zugriff“), nicht das Technikerkennwort. Face ID/Touch ID zum Beenden aus. Kein Zeitlimit.
  2. Einstellungen → Anzeige & Helligkeit → Automatische Sperre → Nie. Fokus „Nicht stören“ ein.
  3. Erster Start der App: Kiosk (Box 2, 3 oder 6) wählen, Geräteschlüssel aus dem Passwortmanager eingeben (3.4), lokales Technikerkennwort des Kiosks festlegen und wiederholen (mindestens 12 Zeichen, Passwortmanager; kein Vorgabekennwort), „Speichern und starten“ — wie unter Android (Abschnitt 5, Schritt 3). Danach erscheint die Einrichtung nie mehr öffentlich; ändern nur über langen Druck oben links → lokales Technikerkennwort → „Einrichtung ändern“.
  4. Je Messetag: uMe Eyes öffnen, dreimal die obere Taste (bzw. Home-Taste) drücken → Geführter Zugriff → Optionen: obere Taste aus, Lautstärketasten aus, Bewegung aus, Tastatur an, Berühren an → Starten.
  5. Beenden: dreimal drücken → 6-stelliger Code → Beenden.

Einen automatischen Neustart nach einem Absturz gibt es auf dem iPad nicht. Die iPad-Fassung ist nicht auf einem Gerät geprüft (offen).

7 Verhalten am Kiosk

7.1 Fragenmodus

Kacheln mit den freigegebenen Fragen der Box; die Antworten erscheinen wörtlich aus den freigegebenen Inhalten, ohne KI. Der Kiosk wechselt automatisch in weniger als 5 s in den Fragenmodus, wenn der Vermittlungsdienst oder dessen Internetverbindung fehlt (Prüfung alle 2 s). Nach einer gescheiterten Antwort bleibt er 30 s im Fragenmodus. Besucher können ihn jederzeit wählen. „Sprache aus“ bedeutet nur Fragenmodus.

7.2 Rücksetzen nach 90 s

Nach 90 s ohne Berührung oder nach „Ende“: Verlauf, Sitzung (auch beim Dienst), Demo und Warnbildschirm sind weg, das Gesicht geht in den Leerlauf, die Sprache zurück auf Deutsch.

7.3 Warnliste und Warnbildschirm

Die Warnliste wirkt immer, auch solange ihr Wortlaut noch nicht freigegeben ist. Die App prüft jede Texteingabe vor jeder Weitergabe; der Vermittlungsdienst prüft Texteingaben und das Transkript der Spracheingabe noch einmal, bevor eine KI-Antwort angefordert wird. Solange ein Transkript geprüft wird, nimmt der Dienst keine neue Eingabe an (busy).

Der Abgleich trifft auch innerhalb längerer Wörter (Beugungen, Zusammensetzungen) und faltet Umlaute auf den Grundvokal. Bewusst hingenommene Fehltreffer: z. B. „Notfallaufnahme“ (enthält „Notfall“) oder „heart attacks“ — dann erscheint der Warnbildschirm, obwohl nur nach der Box gefragt wurde. Das Standpersonal klärt das vor Ort; im Zweifel gilt die strengere Auslegung.

Bei einem Treffer gibt es keine KI-Antwort. Der Kiosk zeigt einen Warnbildschirm mit genau diesem freigegebenen Text (S-8):

Bitte sprechen Sie sofort das Standpersonal an. In einem Notfall wählen Sie 112.

Please speak to our booth staff right away. In an emergency, call 112.

Der Text verspricht nie, dass jemand geholt oder benachrichtigt wird. Die Statusübersicht zeigt sofort „Hilfe angefordert, Box n“. Eine aktive Benachrichtigung gibt es nicht: Das Standpersonal schaut regelmäßig auf die Statusübersicht.

7.4 Sprache am Kiosk derzeit aus

Die Sprechtaste ist im Betrieb aus, bis die Audio-Umsetzung (Mikrofon und Lautsprecher) freigegeben ist. „Sprache“ auf der Technikerseite aus lassen. Texteingabe und Fragenmodus funktionieren wie beschrieben.

7.5 Gesicht uMe oder uGo, Momente (ab 03.11.2026, in Entwicklung)

Jeder Kiosk zeigt die uGo-Augen mit Brille (Vorgabe, überall in derselben Variante). Das uMe-Gesicht bleibt als Rückweg. Das Gesicht wird nur auf der Technikerseite des Vermittlungsdienstes je Kiosk eingestellt (Feld „Gesicht“, Werte uGo und uMe); Speichern wirkt sofort und nur auf diesem Tablet. Ohne Dienst und ohne gespeicherte Konfiguration zeigt das Tablet ebenfalls die uGo-Augen. Beim Umschalten auf uGo werden zuerst die Ringe gezeichnet, dann öffnen sich die Augen. Das uGo-Gesicht blinzelt alle 2,6–6,2 s und schaut nach links, rechts und oben; die Ohne Berührung schläft es nach 60 s ein und wacht bei jeder Berührung auf. Die Bedienungshilfe „Animationen entfernen“ stoppt das Umherschauen, öffnet die Augen ohne das Zeichnen beim Hochfahren und zeigt keine Teilchen; Ausdruck, Partyhut und Untertitel bleiben.

Mit uGo erscheinen Momente über dem Gesicht: Herzchen (love), Sterne (starstruck), geschlossene Augen mit aufsteigenden „z“ (sleepy) und der Geburtstagsmodus mit Partyhut, Luftballons und Konfetti (birthday), höchstens 60 Teilchen gleichzeitig. Der Geburtstag dauert, bis das Lied zu Ende ist, mindestens 14 s und höchstens 40 s; danach Glückwunsch, 2,5 s Lachen und Rückkehr. Eine von der KI gesetzte Emotion bleibt 8 s, dann ist das Gesicht wieder freundlich. Das uGo-Gesicht kennt einen Ausdruck Sorge für Störungen; die Kiosk-App nutzt ihn derzeit nicht (bei Netzausfall wechselt sie in den Fragenmodus, das Gesicht bleibt in Ruhe). Mit uMe zeigt das Tablet stattdessen vorhandene Ausdrücke (fröhlich, überrascht, neutral mit halb geschlossenen Lidern).

Gerätetest: Auf der Technikerseite unter „Momente (Gerätetest)“ je Kiosk acht Knöpfe: „Herzchen beim Losfahren“, „Danke“, „Wow“, „Geburtstag“, „Hallo“, „Sorge“, „Einschlafen“, „Sei glücklich“. Es ändert sich nur das Gesicht; nichts bewegt sich. Während eines Gesprächs und auf dem Warnbildschirm ignoriert das Tablet den Moment; im Fragenmodus zeigt es ihn.

Die KI bekommt die vier neuen Ausdrücke nur, wenn der Abschnitt „MOMENTE“ der Kiosk-Anweisungen freigegeben ist und der Kiosk uGo zeigt. Beides gilt seit 03.11.2026; mit uMe kennt die KI nur die acht bisherigen Ausdrücke. Die Kachel „Sing mir Happy Birthday“ im Fragenmodus (Melodie, die das Tablet selbst erzeugt, immer „dear friend“, ohne KI) ist vorbereitet und bleibt aus.

8 Umgang mit Daten

  • Der Dienst schreibt nur zentral.json und geheim.json. Gespräche, Audio, Text, Transkripte und Kamerabilder werden nur im Arbeitsspeicher durchgereicht und nicht gespeichert. Das Protokoll enthält nur Ereigniscodes und Gerätekennungen.
  • Es gibt nur Zähler (Gespräche, Sprechtaste, Texteingaben, Antworten, Emotionen, abgewiesene Werkzeuge, verworfene Nachrichten, Rückfälle), nur im Arbeitsspeicher; sie gehen beim Neustart verloren.
  • Das Tablet speichert nur Konfiguration, Geräteschlüssel, Hash des Technikerkennworts, die gewählte Box (auch bei „Nur Fragenmodus“) und die letzte Adresse des Dienstes. Die Sicherung der App-Daten ist abgeschaltet.
  • Grenze: Bei Spracheingabe erreicht das Audio selbst den Sprachdienst vor der Warnwort-Prüfung, denn das Transkript entsteht dort. Die Prüfung verhindert die KI-Antwort, nicht die Übertragung des Audios. Texteingaben mit Treffer verlassen den Dienst nie.
  • Diese Seite macht keine Aussage zu einem Datenort für den Sprachteil.

9 Rückweg

  1. Dienst stoppen (Strg+C). Die Kiosks behalten die zuletzt gültige Konfiguration und wechseln von selbst in den Fragenmodus.
  2. Erstinbetriebnahme: Es gibt keine Vorgängerfassung. Rückweg = Dienst gestoppt lassen; die Kiosks laufen im Fragenmodus.
  3. Der Datenordner bleibt unverändert und gilt für jede Fassung mit Protokoll 1.x. Nichts wird gelöscht; ein nicht mehr benötigter Datenordner wird nach %USERPROFILE%\dev\_ausgelagert\ verschoben.
  4. Kiosk: Kioskmodus mit dem lokalen Technikerkennwort (Android) oder dem Code für den geführten Zugriff (6-stellig, iPad) verlassen. Ein vergessenes Android-Technikerkennwort lässt sich in dieser Fassung nicht in der App zurücksetzen; Rückweg nur durch Zurücksetzen des Tablets (Entscheidung Produktmanagement). Auch „Geräteinhaber entfernen“ fehlt noch in der App; ohne diese Funktion entfernt nur ein Zurücksetzen des Tablets den Geräteinhaber.

10 Offene Punkte

  • mDNS-Suche in der Kiosk-App (heute: letzte Adresse, dann eigenes Netz).
  • „Geräteinhaber entfernen“ im Technikerbereich der App.
  • Updates per adb: USB-Fehlersuche vorübergehend wieder einschalten (vorher Kioskmodus im Technikerbereich verlassen, danach wieder ausschalten).
  • Eigener Release-Signierschlüssel für die Kiosk-App.
  • Wortlaut der dauerhaften Hinweise am Kiosk (sechs Sprachen) wartet auf Freigabe.
  • Freigabe der Audio-Umsetzung (Sprache am Kiosk).
  • Leserolle im uMe Gateway, das sich gegenüber dem Dienst selbst ausweist (erst dann darf das Lesen des Roboterstatus an).
  • TLS zwischen Tablets und Dienst (heute kein Schutz gegen Mitlesen).
  • Gerätetest unter Android und auf dem iPad.
  • uGo-Augen: Gerätetest mit Video je Moment.
  • Kiosk-App: Ausdruck Sorge des uGo-Gesichts bei Störungen nutzen (heute bleibt das Gesicht in Ruhe).

Störungen: support@unitedrobotics.group.

United Robotics Group GmbH, An der Riede 2, 28816 Stuhr, Deutschland, HRB 209124 Amtsgericht Walsrode.