Wenn Du ein Einsteigerbuch zum RasPi hast, solltest Du Dich zuerst mit der Ansteuerung der GPIO-Ports beschäftigen. Im Asterisk richtest Du in der extensions.conf ein, dass bei Anrufen einer internen Nummer (z.B. 771) ein Skript aufgerufen wird, das einen GPIO-Pin für einen Moment aktiviert. Testweise kannst Du eine LED mit Vorwiderstand anschließen. Als nächster Schritt im Wählplan lässt Du den Text "Tor wird geöffnet" sprechen.
Wenn Du schon ein Tor mit Motorantrieb und Fernbedienung hast, kannst Du parallel zur Öffnentaste in der Fernbedienung einen Optokoppler löten (Fototransistor und LED in einem Gehäuse). Der LED-Teil des Optokopplers wird statt der LED an den RasPi angeschlossen.
Gleiches Spiel mit z.B. 770 fürs Schließen.
Um den Zustand abzufragen, kannst Du ein kleines Skript schreiben, das in Intervallen den Zustand eines PINs der GPIO, welcher am Taster hängt, abfragt. Ändert sich der Zustand seit der letzten Abfrage, so wird dieser wie folgt einfach im Asterisk abfragbar:
Du legst zwei Dateien an, toroffen.wav und torzu.wav. Das Skript kopiert bei Zustandsänderung toroffen.wav bzw. torzu.wav zu zustand.wav. Im Asterisk richtest Du z.B. 777 für die Zustandsabfrage ein, diese spielt immer nur die zustand.wav ab.
EIn Türinterface ist nicht so ganz einfach selbst herzustellen. Hier ist die Hardware das Problem, nämlich die absolut erforderliche Rückkopplungsunterdrückung. Da es aus China für rund 100€ eine SIP-Türsprechstelle gibt, kann man beim Eigenbau auch nix sparen.
Allerdings hat die nur eine Klingeltaste. Genau hier kann man dann mit dem RasPi tätig werden: Per Skript werden mehrere Eingänge abgefragt, wird einer betätigt, kopiert man ein callfile, das eine Verbindung zwischen einer Nebenstelle und der Türsprechstelle herstellt. So kann man einfach die Ziele wechseln. Läd man die Türsprechstelle in einen Konferenzraum und läd die jeweils zur Klingeltaste passenden Teilnehmer in die Konferenz ein, löst man auch das Paketboten-Problem: Klassische Lösungen brechen beim Drücken einer anderen Klingeltaste den ersten Anruf ab. Der Paketbote drückt aber spätestens nach 10 Sekunden auf die Taste eines Nachbarn. Man hechtet also bei den Fertiglösungen oft vergeblich von einem Meeting mit Villeroy und Boch zum Telefon... Durch die Konferenzlösung kann man das Problem lösen, auch wenn der Paketbote schon beim nächsten Nachbarn geklingelt hat, wird man noch mit der TFE verbunden.
Natürlich kann man das ganze noch komplexer gestalten, indem man Variablen im Asterisk in der AstDB definiert und vom Skript aus ändert. Auch kann man alles über eine Nummer abwickeln, z.B. mit der features.conf und Wahl der Funktion via dtmf. Hat man eine oder mehrere freie externe Festnetznummern, kann man auch Toröffnen per Handy machen. Asterisk prüft erst die Anrufer-CallerID, wenns ein Handy auf der Liste der zugelassenen Geräte ist, öffnet er das Tor. Entweder nutzt man mehrere Nummern (dann braucht der Asterisk den Ruf nicht anzunehmen, kostet also nix), oder man nutzt eine Nummer mit dtmf (dann kann man auch den Zustand abhören).
Auf die Art ersetzt man auch die Fernbedienung, die man sonst wahrscheinlich im Auto liegen hatte...
Nimmt man die AstDB zur Zustandsspeicherung, kann man die auch über weitere Skripte ändern, z.b. php/Webserver und vom Smartphone den Zustand online sehen und ändern.