1.30.1.1.3.6. KogniDoor-Controller¶
Kontakt: | Alexander Neumann <alneuman@techfak.uni-bielefeld.de> |
---|---|
CITK: | |
Vorbedingung: | Die KogniHome-Variane von Robotic Service Types wird benötigt, sowie die Python-Pakete |
Quickstart: |
$ doorcontroller
|
1.30.1.1.3.6.1. RSB-Schnittstellen¶
Scope | Type | Description |
---|---|---|
/io/actor/lock/status | rst.door.LockStatus | Status des Türschlosses |
/io/actor/motor/status | rst.door.MotorStatus | überwacht Motorfahrt |
/io/emr/bluetooth/inside | rst.door.BluetoothInfo | Authentifiziert BLE-Advertising |
/io/emr/bluetooth/outside | rst.door.BluetoothInfo | Authentifiziert BLE-Advertising |
/io/emr/radar | rst.door.RadarStatus | reagiert auf Personen in der Nähe der Tür |
/io/emr/reed | rst.door.ContactStatus | Überwacht Öffnungszustand der Tür |
/service/detection/closingobstacle | bool | stoppt Motor bei erkanntem Hindernis |
/service/detection/knock | rst.door.KnockStatus | Klopfen an der Tür |
/service/detection/openingobstacle | bool | stoppt Motor bei erkanntem Hindernis |
/service/door/checkout | int | Zeigt Erinnerung, falls beim Verlassen des Hauses kein Beacon des Nutzers mit ID <int> detektiert wird. Öffnet die Tür automatisch, wenn das Beacon in Reichweite kommt. |
/service/door/response | rst.kognihome.UserNotification | reagiert auf Nutzereingaben wenn Nachrichten angezeigt worden sind. |
Scope | Type | Description |
---|---|---|
/io/actor/lock/get | bool | Fragt Schlossstatus ab |
/io/actor/lock/set | rst.door.LockStatus | Öffnet Schloss |
/io/actor/motor/set | rst.door.MotorStatus | Fährt Motor auf und zu |
/io/control/bluetooth/inside | bool | Aktiviert/Deaktiviert den Ble-Grabber |
/io/control/bluetooth/outside | bool | Aktiviert/Deaktiviert den Ble-Grabber |
/io/vision/eink/backlight/set | rst.door.LEDStrip | setzt eInk-Beleuchtung |
/io/vision/eink/file | string | Pfad zu einer monochromen Bilddatei |
/io/vision/eink/file/1 | string | .. konkret für Buffer 1 |
/io/vision/eink/file/2 | string | .. konkret für Buffer 2 |
/io/vision/eink/file/3 | string | .. konkret für Buffer 3 |
/io/vision/eink/html | string | HTML-Inhalt zur Anzeige an der Tür |
/io/vision/eink/html/1 | string | .. konkret für Buffer 1 |
/io/vision/eink/html/2 | string | .. konkret für Buffer 1 |
/io/vision/eink/html/3 | string | .. konkret für Buffer 1 |
/io/vision/eink/refresh | bool | zeigt nächsten Buffer an |
/io/vision/eink/refresh/1 | bool | zeigt Buffer 1 an |
/io/vision/eink/refresh/2 | bool | zeigt Buffer 2 an |
/io/vision/eink/refresh/3 | bool | zeigt Buffer 3 an |
/io/vision/led/ir | int | setzt IR-LED-Intensität in der Zarge |
/io/vision/led/rgba | rst.vision.Color | setzt LED-Zargenfarbe |
/kognidoor/io/display/model/notification | rst.kognihome.UserNotification | Sendet Erinnerungsnachricht bei checkout |
/service/door/controller/status | string | Sendet den Namen des aktuellen States |
Scope | Method | Input | Output | Description |
---|---|---|---|---|
/service/kognidb/ | register_app | string | string | Registriert Anwendung ‘door’ |
/service/kognidb/door | get_user_tokens | int | rst.kognihome.db.IdentificationTokens | Fragt mögliche Identifizierungstokens an, um sicherzustellen, dass beim Verlassen des Hauses Nutzer mit der ID <int> ein valides Token mit sich führen |
1.30.1.1.3.6.2. FSM-Logik¶
Um auf Ereignisse angemessen reagieren zu können, ist doorcontroller
als
State Machine bzw. endlicher Automat konzipiert. Zu jedem Zeitpunkt wird einer
der folgenden Status angenommen:
Initial: | Der Zustand wird während der Initiliesierung eingenommen und danach sofort verlassen. |
---|---|
AccessDenied: | Wir nach einem fehlgeschlagenen Authentifizierungsversuch betreten. |
BlockedInside: | Wenn die Tür aufgrund eines Hindernisses auf der Innenseite der Tür nicht Öffnen kann. |
BlockedOutside: | Wenn aufgrund eines Hindernisses beim Zufahren der Tür Einklemmen droht. |
CLosingDoor: | Während die Tür automatisch zugefahren wird. |
DetectBeacon: | Es wird für die Authentifizierung auf ein Token/Beacon gewartet. |
DetectPerson: | Platzhalter-Status für weitere Detektionsschritte. Wird im Moment sofort wieder (erfolgreich) verlassen. |
DoorClosed: | Die Tür gilt als geschlossen. |
DoorLockedAndClosed: | |
Die Tür wird als geschlossen und verriegelt angenommen. | |
DoorNotClosed: | Die Tür ist (zumindest einen Spalt weit) offen. |
LockLock: | Schließt das Türschloss. |
LockUnlock: | Entriegelt das Türschloss. |
OpeningAutomatic: | |
Fährt die Tür auf. | |
OpeningManual: | Wartet auf manuelle Öffnung der Tür oder (wie momentan konfiguriert) leitet den Übergang zum automatischen Öffnen ein. |
PendingCheckout: | |
Eine Person hat das Verlassen des Hauses angekündigt. Die Tür wartet auf weitere Ereignisse, um zu Öffnen. |
1.30.1.1.3.6.2.1. Funktionslose Status¶
Einige Status wurden konzipiert, sind jedoch bisher nicht in die Kontrolllogik integriert:
PersonEngage: | Löst eigeninitiativ Aktionen aus, um Personen vor der Tür anzusprechen. |
---|---|
PersonPresent: | Wird eingenommen, wenn eine Person sich vor der Tür aufhält, aber keine weiteren Ereignisse auslöst. |
RecordMessage: | Aufnahme eine Sprach-/Videonachricht bei Abwesenheit der Bewohner. |
WaitingForResponse: | |
Wird nach dem Klopfen eingenommen, wenn ein Bewohner benachrichtigt wird. Dieser Schritt ist obsolet, da Klopfereignisse direkt an den Nutzer mitteln Smartphone-App übermittelt werden. |