====== Gatekeeper (Schließanlage) ====== Follow-Up zur [[projects:2013:spacenotification|SpaceNotification]] und [[projects_protected:2012:schliessanlage_fuer_den_space|altem Schließanlagen-Projekt]], konkret geht es um die Schließanlage. ===== Meta ===== ? Maintainer : tux ? Pad : https://pad.n39.eu/p/2014_Gatekeeper ? Git-Repo : https://github.com/netz39/space_notification ? Git-Repo : https://github.com/netz39/rollladensteuerung ? Git-Repo : https://github.com/netz39/xmpp_space_control.git ? Git-Repo : https://github.com/netz39/i2cbridge * Update auf RPi2 bringt [[projects:2020:i2c_foo|I2C-Probleme]] mit sich → gelöst ===== Aufbau und Funktionsweise ===== ==== Software ==== Es gibt ein Failsafe-Script, das die Tür abschließt, wenn die Tür offen ist, aber seit 30 Sekunden die SpaceTime inaktiv (aka Ampel rot/aus) ist. === Komponenten kommunizieren per XMPP === [[https://github.com/netz39/xmpp_space_control/blob/master/space_control/README.protocol.txt|README im GitHub]] ==== Hardware ==== {{:projects:2014:img_20140130_195545.jpg?200|}} {{:projects:2014:img_20140202_190317.jpg?200|}} ==== Authentifizierung==== === Telefon === ? Ansprechpartner : [[user:tux|Tux]] === SSH === ? Ansprechpartner : [[user:bastinat0r|Basti]] === mit einer Webcam und einem QR-Code === ? Ansprechpartner : [[user:eriu|Michel]] * Links: * http://www.jeremyblum.com/portfolio/libetech/ * https://github.com/sciguy14/LibeTech-QR-Entry * https://github.com/sciguy14/LibeTech-QR-WebSystem ==== I3C-Bus ==== Der I3C-Bus besteht aus 5 Leitungen: * SDA und SCL für I²C * einer Interrupt-Leitung INT * Versorgungsspannung 5V * Masse Für die Verbindung zwischen Geräten werden Steckverbinder oder [[http://www.reichelt.de/index.html?ARTICLE=11171|5-polige DIN-Buchsen (Reichelt MAB 5)]] verwendet. === Belegung Steckverbinder === - SDA - SCL - INT - Vcc (5V) - GND === Belegung DIN-Buchse === {{:projects:2014:din_buchse.gif?200|}} (Draufsicht) - GND - INT - SDA - Vcc (5V) - SCL ==== I3C-Kommandos ==== Wenn kein data-Wert spezifiziert wird, ist der Parameter nicht relevant. Wenn kein output spezifiziert wird, bedeutet 1 Erfolg. 0 bedeutet immer Fehler einen Parity-Fehler und sollte zum erneuten Aufruf führen. === Device 0x20: Ampel === #define CMD_I3C_RESET 0x00 #define CMD_GETLIGHT 0x01 #define CMD_SETLIGHT 0x02 * I3C_RESET: Interrupt-Leitung zurücksetzen (sollte bei der Ampel derzeit nicht nötig sein) * GETLIGHT: Ampelstatus zurückliefern * SETLIGHT: Ampelstatus setzen data (DDDD) 1 bit blink-Status 3 bit Farbe: 0=keine, 1=rot, 2=grün {{ :projects:2014:ampel_gruen.jpg?direct&400 |}} {{ :projects:2014:ampel_rot.jpg?direct&400 |}} === Device 0x21: Controller Rollläden === #define CMD_ALL_STOP 0x0 #define CMD_STOP 0x1 #define CMD_UP 0x2 #define CMD_DOWN 0x3 * ALL_STOP: alle Rollläden stoppen * STOP: Rollladen aus //data// anhalten * UP: Rollladen aus //data// hochfahren * DOWN: Rollladen aus //data// herunterfahren //data// gibt jeweils die Nummer des Rollladens (0: fenster bastelbereich, 1: tür bastelbereich, 2: tür lounge, 3: fenster lounge) an Ausgabe: 0 == fehler, 1 == erfolg {{ :projects:2014:controller_rollladen_mit_pi.jpg?direct&400 |}} === Device 0x22: Manuellsteuerung === #define CMD_RESET 0x00 #define CMD_BEEP 0x01 #define CMD_MANUAL_MODE 0x02 #define CMD_GET_SWITCH 0x03 #define CMD_MANUAL_SW 0x05 * RESET: I3C-Interrupt-Status zurücksetzen * BEEP: Summer nach Muster aktivieren * data enthält das Bitmuster für die Aktivierung * MANUAL_MODE: LED-Anzeige setzen * data: 0 = aus, 1 = langsam blinken, 2 = schnell blinken, 3 = an * GET_SWITCH: Schalterstellung auslesen * data: Nummer des Schalters, korrespondierend zur Rollladen-Nummer * output: 1 = hoch, 2 = runter, 3 = neutral * MANUAL_SW: Status des Tasters setzen/auslesen * data: 1 = Blockstatus löschen, 2 = Blockstatus setzen, sonst keine Änderung * output: 1 = Blockstatus gesetzt, 2 = Blockstatus gelöscht (Wert vor Manipulation) {{ :projects:2014:rollladen_manuellsteuerung.jpg?direct&400 |}} === Device 0x23: Tür-Controller === #define CMD_RESET 0x00 #define CMD_OPEN 0x01 #define CMD_CLOSE 0x02 #define CMD_STATE 0x03 * RESET: Tür-Status zurücksetzen, inklusive I3C-Interrupt * OPEN: Tür öffnen * CLOSE: Tür schließen * STATE: Tür-Status zurückliefern. Löscht auch den I3C-Interrupt * output enthält Bitmaske: Input Status Byte (ISB) +-----+----+----+----+----+----+----+ | 7-6 | 5 | 4 | 3 | 2 | 1 | 0 | | res | GB | RB | DC | LO | FC | FO | +-----+----+----+----+----+----+----+ GB Green Button active (Force-open door) RB Red Button active (Force-close door) DO Door Open LC Lock Closed FC Force Close FO Force Open * Bit-Bedeutung * DO: Tür steht offen (1) oder ist geschlossen (0) * LC: Schloss verriegelt (1) / offen (0) * FC: Force Close – Signalleitung "Verriegeln" ist aktiv * FO: Force Open – Signalleitung "Öffnen" ist aktiv * RB, GB sind die beiden Buttons (rot/grün) an der Tür {{ :projects:2014:tuercontroller_buttons.jpg?direct&400 |}} {{ :projects:2014:tuermechanik_1.jpg?direct&400 |}} {{ :projects:2014:tuermechanik_2.jpg?direct&400 |}} === Device 0x24: SpaceStatus-Switch === #define CMD_RESET 0x00 #define CMD_GETSTATE 0x01 #define CMD_SETSTATE 0x02 * RESET: Tür-Status zurücksetzen, inklusive I3C-Interrupt * GETSTATE: Aktivierten SpaceStatus zurückgeben (1 closed, 2 open, 3 unbekannt) * SETSTATE: Setzt einen SpaceStatus (verhindert Notifications über Änderungen, wenn der eig. Status schon angepasst ist) ===== Schließanlagen reboot ===== Die letzten Monate hat die PCB der Schließanlage große Verlässligkeitsprobleme gehabt. Häufigster Fehler ist das konstante Neustarten des Microprozessors wenn der Motor anfährt. Es konnte auf Ground-Bounce zurückgeführt werden und wurde [Foto einfügen] provisorisch repariert. 2018-10-14 ist/war das erste Treffen für die Überarbeitung der Technik. Das Pad für Verbesserungen befindet sich [[https://pad.n39.eu/p/4Q9oKB0bvu|hier]]. ===== Ideen ===== * USV * https://hackaday.com/2016/11/26/diying-a-raspberry-pi-power-bank/