Türschloss: Difference between revisions
(Dokumentation auf die dritte Hardware-Version angepasst) |
|||
Line 1: | Line 1: | ||
== |
== Geschichte== |
||
Dieser Artikel beschreibt die aktuelle Situation. Die Dokumentationen der Vorgänger-Versionen finden sich unter: |
|||
* [[Türschloss/Erster-Versuch]] (Umgebauter kommerzieller Antrieb mit Raspi Zero) |
|||
* Raspberry Pi Zero W |
|||
* [[Türschloss/Zweiter-Versuch]] (Schrittmotor mit Stall-Erkennung, direkt am Raspi) |
|||
* «Eqiva BLUETOOTH SMART» Türschlossantrieb |
|||
* Lichtschranke im Türrahmen |
|||
* Pogopin-«Kontaktsensor» |
|||
==Hardware== |
|||
=== Türschlossantrieb === |
|||
# Das Bluetooth-Modul (zu sehen in Abb. 5) wurde entfernt. Lötarbeiten sind nicht notwendig, der Chip lässt sich einfach mit einem Seitenschneider vom PCB trennen. |
|||
# An die folgenden Testpads wurden Drähte angelötet und ins Batteriefach geführt: |
|||
#* MP10 (Taster «Öffnen») |
|||
#* MP11 (Taster «Schliessen) |
|||
#* MP16 (GND) |
|||
#* MP17 (Vcc) |
|||
*Raspberry Pi 3B+, per Ethernet im LAN, sendet "Door-WLAN" als Backup aus |
|||
*Türsteuerung mit ESP32-C3 und ein paar Relais, angebunden per USB an den Raspi |
|||
* Selbst konstruierter Türschlossantrieb, bestehend aus DC-Motor und 3d-gedruckten Zahnrädern |
|||
*Näherungssensor im Türrahmen, M8 induktiv NPN, Typ Heschen LJ8A3-2-Z/BX |
|||
<gallery> |
<gallery> |
||
File:Türschloss-CAD.png|Mechanik im CAD |
|||
File:Eqiva1.jpg|thumb|Der unmodifizierte Türschlossantrieb mit 2 Knöpfen und einem '''sehr''' unhandlichen Knauf zur manuellen Bedienung. |
|||
File:Türschloss-Motor.jpg|Mechanik vor dem Einbau |
|||
File:Eqiva6.jpg|thumb|Detailansicht des Teils, der über das bestehende Schloss mit Schlüssel gesteckt wird. |
|||
File:Türschloss-Platine.jpg|Platine mit ESP32-C3 und 3 Relais |
|||
File:Eqiva2.jpg|thumb|Der Türschlossantrieb mit entfernter Abdeckung. |
|||
File:Türschloss-Testaufbau.jpg|Testaufbau |
|||
File:Eqiva3.jpg|thumb|Detailansicht der PCB-Vorderseite, im Gehäuse eingebaut und mit den anderen Komponenten verbunden. |
|||
File:Türschloss-Schaltplan.jpg|Schaltplan |
|||
File:Eqiva4.jpg|thumb|Detailansicht der PCB-Rückseite, besonders prominent sind hier der Microcontroller sowie das Bluetooth-Modul. |
|||
</gallery>Die Getriebe sind 3d-gedruckt und auf die Welle bzw den Knauf aufgepresst. Der Motor wir dann von der Innenseite an die Klammplatte angeschraubt. Anschließend wird die ganze Konstuktion mittels zweier lagen Schrauben um den herausstehenden Teil des Schlosses geklemmt. |
|||
File:Eqiva5.jpg|thumb|Detailansicht des mechanischen Aufbaus. |
|||
File:Eqiva7.jpg|thumb|Drähte werden aus dem Innenraum in das Batteriefach geführt, und von dort weiter nach aussen. |
|||
File:Setup1.jpg|thumb|Experimentelles Setups aus modifiziertem Türschlossantrieb, einem Raspberry Pi und 2 MOSFETs. |
|||
</gallery> |
|||
== Elektronik und Programmierung der Steuerung == |
|||
=== Lichtschranke === |
|||
Die Platine steuert über 2 Relais den Links-Rechtslauf des Antriebsmotors und erfasst über einen Messwiderstand den Motorstrom. Der Riegelkontakt wird über ein Koppelrelais abgefragt. Die Programmierung erfasst seriell eingehende Kommandos (Öffnen, Schließen, Abfrage des Sperrzustands, ...) |
|||
===== Öffnen ===== |
|||
* Die beiden Lichtschrankenteile wurden in einer 3D-gedruckte Halterung befestigt. |
|||
Zum Öffnen der Türe wir der Motor so lange gedreht, bis der Knauf auf den mechanischen Endanschlag läuft. Dabei Blockiert der Motor, was durch einen Anstieg des Motorstroms über einen programmierten Schwellwert erfasst wird. Anschließend wird für eine kurze Zeit zurück gedreht, um die Klinke freizugeben. |
|||
* Die Halterung wurde durch das Loch für den Riegel in den Rahmen geführt und von aussen durch bereits existierende Löcher mit Schrauben befestigt. |
|||
* Die Kabel der Lichtschranke wurden durch ein ebenfalls bereits existierendes Loch nach aussen geführt. |
|||
===== Schließen ===== |
|||
<gallery> |
|||
Beim Öffnen mit Schlüssel von außen sorgt ein Mechanismus im Schloss dafür, dass der Knauf ausgekuppelt wird. Daher wird beim Schließen immer ein Zurückdrehen auf den Offenen Zustand ausgelöst, was den Knauf wieder einkuppeln lässt. Nun startet der Schließvorgang, der durch Auslösen des induktiven Sensors durch den Riegel beendet wird. |
|||
File:Sensor1.jpg|thumb|Eine Hälfte der Lichtschranke, innerhalb des Türrahmens montiert. |
|||
</gallery> |
|||
===== Störungen ===== |
|||
Die Laufzeit des Motors wird überwacht, um den Motor auch bei Versagen der Endlagenerkennung zu stoppen. Wird beim Öffnen kein Stromanstieg durch Erreichen der Endlage oder beim Schließen kein Erreichen des Riegels im Türrahmen erkannt, wird der Motor gestoppt und es wird eine Laufzeitfehler-Störtmeldung ausgegeben. Fährt die Klinke beim Schließen auf das Schließblech auf oder wir andersweitig blockiert, schaltet die Stromüberwachung den Motor ab und weist per Störmeldung auf das Erreichen der Endlage ohne Erfassen des Riegelsensors hin. |
|||
== |
==Software auf dem Raspberry Pi 3B+== |
||
* |
*Python-Skript zum öffnen/schliessen via Raspi-GPIO-Pins |
||
* |
*Ansteuerung via SSH Pubkey + ForceCommand |
||
** |
**<code>ssh open@<door></code> → öffnet das Schloss |
||
** |
**<code>ssh close@<door></code> → schliesst das Schloss |
||
** |
**<code>ssh status@<door></code> → Status-Abfrage des Schlosses |
||
* |
*Ansteuerung via SSH (Alternative für Kompatibilität mit der «Trigger»-App) |
||
** |
**<code>ssh door@<door> open</code> → öffnet das Schloss |
||
** |
**<code>ssh door@<door> close</code> → schliesst das Schloss |
||
** |
**<code>ssh door@<door> status</code> → Status-Abfrage des Schlosses |
||
* |
*Ansteuerung via TLS Client Certificate + HTTP cgi-bin |
||
** |
**<code>https://<door>/door/open.py</code> → öffnet das Schloss |
||
** |
**<code>https://<door>/door/close.py</code> → schliesst das Schloss |
||
** <code>https://<door>/door/status.py</code> → Status-Abfrage des Schlosses |
** <code>https://<door>/door/status.py</code> → Status-Abfrage des Schlosses |
||
=== |
===Clients=== |
||
Siehe [[/Client-Einrichtung]]. |
Siehe [[/Client-Einrichtung]]. |
||
=== |
===Status-Anzeige === |
||
Format: JSON |
Format: JSON |
Revision as of 18:48, 1 January 2025
Geschichte
Dieser Artikel beschreibt die aktuelle Situation. Die Dokumentationen der Vorgänger-Versionen finden sich unter:
- Türschloss/Erster-Versuch (Umgebauter kommerzieller Antrieb mit Raspi Zero)
- Türschloss/Zweiter-Versuch (Schrittmotor mit Stall-Erkennung, direkt am Raspi)
Hardware
- Raspberry Pi 3B+, per Ethernet im LAN, sendet "Door-WLAN" als Backup aus
- Türsteuerung mit ESP32-C3 und ein paar Relais, angebunden per USB an den Raspi
- Selbst konstruierter Türschlossantrieb, bestehend aus DC-Motor und 3d-gedruckten Zahnrädern
- Näherungssensor im Türrahmen, M8 induktiv NPN, Typ Heschen LJ8A3-2-Z/BX
Die Getriebe sind 3d-gedruckt und auf die Welle bzw den Knauf aufgepresst. Der Motor wir dann von der Innenseite an die Klammplatte angeschraubt. Anschließend wird die ganze Konstuktion mittels zweier lagen Schrauben um den herausstehenden Teil des Schlosses geklemmt.
Elektronik und Programmierung der Steuerung
Die Platine steuert über 2 Relais den Links-Rechtslauf des Antriebsmotors und erfasst über einen Messwiderstand den Motorstrom. Der Riegelkontakt wird über ein Koppelrelais abgefragt. Die Programmierung erfasst seriell eingehende Kommandos (Öffnen, Schließen, Abfrage des Sperrzustands, ...)
Öffnen
Zum Öffnen der Türe wir der Motor so lange gedreht, bis der Knauf auf den mechanischen Endanschlag läuft. Dabei Blockiert der Motor, was durch einen Anstieg des Motorstroms über einen programmierten Schwellwert erfasst wird. Anschließend wird für eine kurze Zeit zurück gedreht, um die Klinke freizugeben.
Schließen
Beim Öffnen mit Schlüssel von außen sorgt ein Mechanismus im Schloss dafür, dass der Knauf ausgekuppelt wird. Daher wird beim Schließen immer ein Zurückdrehen auf den Offenen Zustand ausgelöst, was den Knauf wieder einkuppeln lässt. Nun startet der Schließvorgang, der durch Auslösen des induktiven Sensors durch den Riegel beendet wird.
Störungen
Die Laufzeit des Motors wird überwacht, um den Motor auch bei Versagen der Endlagenerkennung zu stoppen. Wird beim Öffnen kein Stromanstieg durch Erreichen der Endlage oder beim Schließen kein Erreichen des Riegels im Türrahmen erkannt, wird der Motor gestoppt und es wird eine Laufzeitfehler-Störtmeldung ausgegeben. Fährt die Klinke beim Schließen auf das Schließblech auf oder wir andersweitig blockiert, schaltet die Stromüberwachung den Motor ab und weist per Störmeldung auf das Erreichen der Endlage ohne Erfassen des Riegelsensors hin.
Software auf dem Raspberry Pi 3B+
- Python-Skript zum öffnen/schliessen via Raspi-GPIO-Pins
- Ansteuerung via SSH Pubkey + ForceCommand
ssh open@<door>
→ öffnet das Schlossssh close@<door>
→ schliesst das Schlossssh status@<door>
→ Status-Abfrage des Schlosses
- Ansteuerung via SSH (Alternative für Kompatibilität mit der «Trigger»-App)
ssh door@<door> open
→ öffnet das Schlossssh door@<door> close
→ schliesst das Schlossssh door@<door> status
→ Status-Abfrage des Schlosses
- Ansteuerung via TLS Client Certificate + HTTP cgi-bin
https://<door>/door/open.py
→ öffnet das Schlosshttps://<door>/door/close.py
→ schliesst das Schlosshttps://<door>/door/status.py
→ Status-Abfrage des Schlosses
Clients
Siehe /Client-Einrichtung.
Status-Anzeige
Format: JSON
{ "latch": "OPEN|CLOSED|UNKNOWN", "lock": "UNLOCKED|LOCKED|UNKNOWN" }