Türschloss: Difference between revisions

From CCC Basel Wiki
Jump to navigation Jump to search
mNo edit summary
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:


== Hardware ==
== Bedienung ==


Siehe [[/Bedienung]].
* Raspberry Pi Zero W
* «Eqiva BLUETOOTH SMART» Türschlossantrieb
* Lichtschranke im Türrahmen
* Pogopin-«Kontaktsensor»


== Geschichte==
=== Türschlossantrieb ===
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)
# 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.
* [[Türschloss/Zweiter-Versuch]] (Schrittmotor mit Stall-Erkennung, direkt am Raspi)
# An die folgenden Testpads wurden Drähte angelötet und ins Batteriefach geführt:
#* MP10 (Taster «Öffnen»)
#* MP11 (Taster «Schliessen)
#* MP16 (GND)
#* MP17 (Vcc)


==Hardware==
<gallery>
File:Eqiva1.jpg|thumb|Der unmodifizierte Türschlossantrieb mit 2 Knöpfen und einem '''sehr''' unhandlichen Knauf zur manuellen Bedienung.
File:Eqiva6.jpg|thumb|Detailansicht des Teils, der über das bestehende Schloss mit Schlüssel gesteckt wird.
File:Eqiva2.jpg|thumb|Der Türschlossantrieb mit entfernter Abdeckung.
File:Eqiva3.jpg|thumb|Detailansicht der PCB-Vorderseite, im Gehäuse eingebaut und mit den anderen Komponenten verbunden.
File:Eqiva4.jpg|thumb|Detailansicht der PCB-Rückseite, besonders prominent sind hier der Microcontroller sowie das Bluetooth-Modul.
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>

=== Lichtschranke ===

* Die beiden Lichtschrankenteile wurden in einer 3D-gedruckte Halterung befestigt.
* 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.


*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:Sensor1.jpg|thumb|Eine Hälfte der Lichtschranke, innerhalb des Türrahmens montiert.
File:Türschloss-Motor.jpg|Mechanik vor dem Einbau
</gallery>
File:Türschloss-Platine.jpg|Platine mit ESP32-C3 und 3 Relais
File:Türschloss-Testaufbau.jpg|Testaufbau
File:Türschloss-Schaltplan.jpg|Schaltplan
</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.


== 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, ...)


== Software ==
===== Ö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 =====
* Python-Skript zum öffnen/schliessen via Raspi-GPIO-Pins
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.
* Ansteuerung via SSH Pubkey + ForceCommand
** <code>ssh open@<door></code> &rarr; öffnet das Schloss
** <code>ssh close@<door></code> &rarr; schliesst das Schloss
** <code>ssh status@<door></code> &rarr; Status-Abfrage des Schlosses
* Ansteuerung via SSH (Alternative für Kompatibilität mit der «Trigger»-App)
** <code>ssh door@<door> open</code> &rarr; öffnet das Schloss
** <code>ssh door@<door> close</code> &rarr; schliesst das Schloss
** <code>ssh door@<door> status</code> &rarr; Status-Abfrage des Schlosses
* Ansteuerung via TLS Client Certificate + HTTP cgi-bin
** <code>https://<door>/door/open.py</code> &rarr; öffnet das Schloss
** <code>https://<door>/door/close.py</code> &rarr; schliesst das Schloss
** <code>https://<door>/door/status.py</code> &rarr; Status-Abfrage des Schlosses


=== Clients ===
===== 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+==
{|class="wikitable"
! Name
! Plattform
! Installation
|-
| Trigger
| Android
| [https://f-droid.org/en/packages/com.example.trigger/ F-Droid] [https://github.com/mwarning/trigger GitHub]
|}


*Python-Skript zum öffnen/schliessen via Raspi-GPIO-Pins
=== Status-Anzeige ===
*Ansteuerung via SSH
**<code>ssh open@door.lan.kabelsalat.ch</code> &rarr; öffnet das Schloss
**<code>ssh close@door.lan.kabelsalat.ch</code> &rarr; schliesst das Schloss
**<code>ssh status@door.lan.kabelsalat.ch</code> &rarr; Status-Abfrage des Schlosses
*Ansteuerung via SSH (Alternative für Kompatibilität mit der «Trigger»-App)
**<code>ssh door@door.lan.kabelsalat.ch open</code> &rarr; öffnet das Schloss
**<code>ssh door@door.lan.kabelsalat.ch close</code> &rarr; schliesst das Schloss
**<code>ssh door@door.lan.kabelsalat.ch status</code> &rarr; Status-Abfrage des Schlosses


Format: JSON
<pre>
{
"latch": "OPEN|CLOSED|UNKNOWN",
"lock": "UNLOCKED|LOCKED|UNKNOWN"
}
</pre>


[[Category:Projekt]]
[[Category:Projekt]]

Latest revision as of 21:26, 4 January 2025

Bedienung

Siehe /Bedienung.

Geschichte

Dieser Artikel beschreibt die aktuelle Situation. Die Dokumentationen der Vorgänger-Versionen finden sich unter:

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
    • ssh open@door.lan.kabelsalat.ch → öffnet das Schloss
    • ssh close@door.lan.kabelsalat.ch → schliesst das Schloss
    • ssh status@door.lan.kabelsalat.ch → Status-Abfrage des Schlosses
  • Ansteuerung via SSH (Alternative für Kompatibilität mit der «Trigger»-App)
    • ssh door@door.lan.kabelsalat.ch open → öffnet das Schloss
    • ssh door@door.lan.kabelsalat.ch close → schliesst das Schloss
    • ssh door@door.lan.kabelsalat.ch status → Status-Abfrage des Schlosses