[Frage] Türsprechanlage + Video (Sip + IP Cam) mit Asterisk realisieren. Geht das ?

rubinho

Mitglied
Mitglied seit
3 Aug 2004
Beiträge
222
Punkte für Reaktionen
1
Punkte
18
Hallo Asterisk Gurus

Da die nativen SIP-Video Türsprechanlagen wie z.B. von 2N für mich unerschwingliche Preise haben, wollte ich nach einer anderen Lösung suchen, eine IP-Fähige TFE mit Video zu realisieren.

Alle nötigen Hardwarekomponenten habe ich bereits, jedoch muß SIP und Video noch vereint werden...

Ich habe hier eine Ritto TFE nach FTZ123D12 die an einen ISTEC ISDN Türmanager angebunden ist. Dieser Türmanager ist wiederum an mein Lancom LC1722Voip angebunden der das ganze halt in SIP konvertiert. (Später soll dieses Konvertieren entweder ein Asterisk Server oder eine Fritzbox übernehmen)
Zusätzlich habe ich noch eine IP Kamera, die meine Haustür im Auge hat (Level One FCS-5030).

Ist es irgendwie möglich einen Anruf von dem Türmanager mit dem Kamera-Stream zu kombinieren und als Video-Call zu einem Sip-VideoCall fähigen Endgerät zu schicken ?

Ich hab da schon in einigen Digium Listen das Zauberwort app_rtsp gelesen, jedoch konnte ich mit den Informationen wenig anfangen. (Bin kein Asterisk Spezialist)

Hat jemand einen Lösungsvorschlag wie das mit Asterisk funktioniert, oder ist es einfach nicht möglich ?

Gruß
Rubinho
 
Ich denke die Mobotix sendet ab Werk einen Videocall wenn ich mich nicht irre. Von daher sind es nicht die gleichen Vorraussetzungen.
Sollte ich falsch liegen, könnt ihr mich berichtigen.
 
Die Konfiguration der Mobotix ist äußerst flexibel. Es lässt sich einstellen ob ein Call mit oder ohne Video (oder auch beides zugleich an verschiedene Destinationen) gesendet wird. Weiters hat die Mobotix selbst einen videofähigen SIP Server mit drauf. Man kann also entscheiden, ob man die Mobotix an einer Asterisk/Fritzbox etc. registriert und so die Calls absetzt, man kann aber auch das videofähige Telefon direkt an der Mobotix registrieren und so anrufen lassen (oder auch beides) und vieles mehr. Bei unseren Abnehmern kam auch die ipad/iphone App recht gut an. So wird zum Beispiel beim Klingeln das ipad aufgeweckt, man sieht das Video und kann sprechen / Türöffnen etc. Zusätzlich wird ein reiner Audiocall an einen Asterisk abgesetzt (weil keine Bildtelefone vorhanden). Reagiert man auf das Klingeln am ipad, hören die Telefone zu bimmeln auf - und umgekehrt.

Das Ding ist zwar ein Konfigurationsmonster, aber relativ intuitiv. Und es lassen sich wirklich sehr viele Szenarien damit abbilden.
 
Das ist ja alles gut und schön was die Mobotix kann. Die haben ja auch sehr gute Produkte. Jedoch liegen Diese nicht in meiner Preisliga.
Für den Preis eines T25er Kit (Nachfolger der T24) habe ich mir gestern ein 5m breites Sektionaltor von Hörmann eingebaut ;)
Bei dem Tor sehe ich wenigstens was für mein Geld :mrgreen:
 
Ist es irgendwie möglich einen Anruf von dem Türmanager mit dem Kamera-Stream zu kombinieren und als Video-Call zu einem Sip-VideoCall fähigen Endgerät zu schicken ?

Ich hab da schon in einigen Digium Listen das Zauberwort app_rtsp gelesen, jedoch konnte ich mit den Informationen wenig anfangen. (Bin kein Asterisk Spezialist)

Cute; an sowas denke ich auch grade (mal wieder). Bei mir ist es ein RITTO 17630-Haustelefon, welches ich per Arzberger TFE5 und FritzBox um 2009 schon ersetzt/ergänzt hatte ... Nicht wirklich schön, wenn z. B. DHL bei mehreren Parteien klingelt (ab »Annahme« durch den TFE, der dann über die FB per SIP Asterisk/eine andere FB anruft, schaltet RITTO die Verbindung durch, vor der Tür hört man dann Tuuuut usw., und andere Parteien können nicht mehr antworten, da "ich" ja schon mit der Tür spreche), aber prinzipiell funktional.

Ich habe auch eine Cam, die auf den Eingangsbereich zeigt. Bei einem Klingeln jetzt das Bild der Cam mit dem Ton via TFE zu einem SIP-Video-Call zu machen, wäre schon schick ... nur leider scheint »app_rtsp« nicht die Lösung zu sein. Nach meinem Verständnis der entsprechenden Seiten spielt »app_rtsp« einen kompletten (fremden) RTSP-Stream ein, und macht eben kein Mixing eines Voice- (von der Türsprechstelle) und eines Videodatenstroms (von der Kamera), was wir aber benötigten. Unklar ist mir im Moment auch, denn die Türsprechstelle ist ja nicht videofähig, ob Video ein nur eine Richtung in SIP vorgesehen/technisch funktional ist (oder ob das durch »app_rtsp« im Zweifel gelöst würde).

Im Prinzip müßte man den SIP-Call der Türsprechstelle (über welchen Umweg auch immer erzeugt) »irgendwo« annehmen, das Videobild (bei mir ein MJPEG-Stream) hinzufügen und das zu einem neuen SIP-Call machen. Klingt nach reichlich Aufwand, auch bezüglich der CPU (MJPEG => H.264) :-(
 
Für app_rtsp braucht man einen RTSP-Datenstrom, ja. Der besteht im Prinzip aber (im Asterisk-Kontext) aus Video UND Audio. Nun hätte meine Cam zwar auch Audio, aber derzeit ist die ca. 5m von der Haustür entfernt, mit DEM Ton werde ich also nix.

Tendentiell kann wohl VLC solche Mischereien machen, aber hier brauche ich ja den Ton der Türsprechstelle, der per VoIP schon bei Asterisk ankommt, da komme ich so gar nicht zwischen; »same => n,rtsp(rtsp://192.168.1.2/live.sdp)« würde nun den Ton der Sprechstelle gegen den anderen RTSP-Stream austauschen (Audio & Video), zumindest verstehe ich es bislang so. Mangels dpkg für Debian und den eher negativen Kritiken bzgl. der Stabilität von app_rtsp habe ich mir das bislang nicht angetan ...

app_rtsp könnte aber ggf. eine Basis sein, genau das gewünschte zu tun, indem man es um RTSP-Muxing erweitert: Stream aufspalten, Audio wegwerfen und durch Audio des anliegenden Calls ersetzen, müßte alles in vlc schon drin sein -- any volunteers? ;)

Bridge() hingegen verbindet zwei Calls (d. h. technisch RTSP-Streams) miteinander.

Update, 2014-04-21 00:47: Nach etwas »Quellenstudium« habe ich auf meinem Asterisk 1.8 grade mal ConfBridge() ausprobiert. Gedankenspiel: was, wenn man bei einem SIP-Anruf von der Türklingel einen SIP-Anruf einer Kamera nahe der Türklingel initiieren könnte, diese Anrufe dann zu einer Konferenz (Türklingel: SIP, Audio only; Kamera: SIP, Audio & Video) zusammenschalten? Da müßte sich dann noch ein Dritter, nämlich die »Videosprechstelle« ebenfalls reinwählen, aber das wäre ggf. ja auch machbar.

Mittels 1 Tablet und 1 Telefon habe ich meine ConfBridge()-Konferenz angerufen, Ergebnis: jeder sah und hörte den anderen. Dann per DECT-Handset (== simulierte Türklingel) ebenfalls in die Konferenz reingewählt. Ergebnis: Video-Übertragung hielt an, Audio lief weiter. Nach dem Beenden des DECT-Calls wurde der Videostrom wieder zwischen Tablet und Telefon ausgetauscht -- mit erneuter Einwahl von DECT hielt er wieder an. FTR, der Auszug aus meinem Dialplan:

Code:
exten => 999,1,Answer()
same  => n,Wait(1)
same  => n,Set(CHANNEL(musicclass)=default)
same  => n,Set(CHANNEL(language)=de)
same  => n,Wait(1)
same  => n,ConfBridge(${EXTEN},Mc,123)
same  => n,Hangup

Und beim erneuten Verlassen der Konferenz per DECT stiegt dann auch Asterisk aus (known Bug in 1.8, wobei der eigentlich ja nur getriggert werden soll, wenn >1 Parteien gleichzeitig die Konferenz verlassen) ...

Quintessenz: ConfBridge() ist ggf. ein möglicher Weg, aber erst ab Asterisk 10 sicher nutzbar. Dazu muß man dann die Kamera mit einem SIP-Client verheiraten und den auch noch fernsteuern können -- alles nicht trivial. Dennoch werde ich mir das mal näher ansehen (ein Asterisk 11 LTS auf einem RasPi mag für ein lokales PoC ja reichen).
 
Zuletzt bearbeitet:
Ausgangsfrage war:
Ich habe hier eine Ritto TFE nach FTZ123D12 die an einen ISTEC ISDN Türmanager angebunden ist. Dieser Türmanager ist wiederum an mein Lancom LC1722Voip angebunden der das ganze halt in SIP konvertiert. Zusätzlich habe ich noch eine IP Kamera, die meine Haustür im Auge hat (Level One FCS-5030).

Ist es irgendwie möglich einen Anruf von dem Türmanager mit dem Kamera-Stream zu kombinieren und als Video-Call zu einem Sip-VideoCall fähigen Endgerät zu schicken ?

Dazu habe ich keine wirkliche Lösung gefunden (aber da es genug OSS-Ansätze in der Richtung gibt, ist es für einen engagierten Coder sicherlich lösbar); was aber faktisch funktionieren würde: Asterisk 11 (hier: Debian Wheezy inkl. Backports auf einem Cubietruck) mit ConfBridge (Grundidee von leifmadsen.wordpress.com):
Code:
[tuer-example]
exten => 623,1,NoOP(Eingehender Anruf via FB von ${CALLERID(all)} auf ${EXTEN})
 same => n,system("cp -p /var/spool/asterisk/callfile-Tuer*.call /var/spool/asterisk/tmp/")
 same => n,system("mv /var/spool/asterisk/tmp/callfile-Tuer*.call /var/spool/asterisk/outgoing/")
 same => n,Playback(silence/1)
 same => n,Set(ConferenceRoom=12345);
 same => n,Goto(ConferenceRooms,${ConferenceRoom},1)
 same => n,Hangup()

[ConferenceRooms]
exten => 12345,1,Answer()
 same => n,Verbose(2,${CALLERID(all)} is joining the wideband public conference room with ${CONFBRIDGE_INFO(parties,12345)} people)
 same => n,Set(GROUP(conference)=12345)
 same => n,ConfBridge(12345,default_bridge)
 same => n,Hangup()
 
exten => no_conf_room,1,Verbose(2,${CALLERID(all)} attempted to join an non-existant conference room)
 same => n,Playback(conf-invalid)
 same => n,Hangup()

exten => h,1,NoOp()
 same => n,GotoIf(($[0${CONFBRIDGE_INFO(parties,12345)} < 2]?DissolveConf,1:noop,1)

exten => DissolveConf,1,NoOp()
 same => n,SoftHangup(SIP/623,a)
 same => n,SoftHangup(SIP/sip1,a)
 same => n,SoftHangup(SIP/sip2,a)
 same => n,Hangup()

exten => noop,1,NoOp()

/var/spool/asterisk/callfile-TuerKamera.call verbindet hier zu SIP/sip2, was ein SIP-(Soft-)Phone mit AutoAnswer sein sollte und das Bild der »Türkamera« liefern; Audio ist vorzugsweise muted. /var/spool/asterisk/callfile-TuerAnzeige.call ruft bei mir SIP/sip1, was z. B. ein Android-Tablet ist, was neben der Türsprechstelle montiert wurde. /var/spool/asterisk/callfile-TuerTelefon.call würde bei mir (DECT-) Telefone, die an der lokalen FritzBox hängen, anrufen -- ein Ziel ist es ja, nicht mehr ins EG zur Türsprechstelle rennen zu müssen. SIP/623 ist der ankommende Anruf der Türsprechstelle (Ritto TwinBus => Artzberger TFE5 => FritzBox => SIP => zentrale FritzBox).

Einheitlicher Inhalt der .call-Files:
Code:
Callerid: 0000
MaxRetries: 1
RetryTime: 5
WaitTime: 20
Context: ConferenceRooms
Extension: 12345

Hope that helps ...
 
Ach du sch**** ... sry

Da war ich paar Tage nicht ON weil ich dachte es tut sich hier nix mehr (wie peinlich) und dann sowas.

Erstmal danke für den Brainstorm. Ich werde mir das anschauen.

Nochwas zum RTSP Stream, meine Cam hat einen rtsp Stream den ich via url (rtsp://192.168.1.234/live.sdp) aufrufen kann. Falls das weiterhilft...
 
meine Cam hat einen rtsp Stream den ich via url (rtsp://192.168.1.234/live.sdp) aufrufen kann.

Wie gesagt, dazu habe ich nix direkt gefunden (von app_rtsp), aber sobald Du den RTSP-Stream nach SIP bekommst, könnte es mit ConfBridge() klappen.

Ich suche nach wie vor nach einem SIP-Client mit Autoanswer für Android, dann kommt ein Android-Stick samt USB-Cam in die Nähe des Einganges, Netz per WLAN, und fertig ist die/meine Laube.
 
Hat es jmd hingekriegt?
Der Thread ist ja nun schon etwas älter....
 
So mehr oder weniger, ich beschäftige mich auch seit längerem mit so einem Aufbau, verfolge aber einen etwas anderen Weg. Ich verwende v4l2loopback und gst-launch, um den MJPEG Stream meiner IP-Kamera als Video-Device (/dev/video0) auf meinem Raspberry zu simulieren. Auf dieses greife ich mit linphonec zu, dass ich wiederum per linphonecsh steuere. Man könnte als Videoquelle auch einen RTSP-Stream verwenden, hat meine Kamera aber nicht.

linphone unterstützt Konferenzen scheinbar direkt am "Endgerät" ohne Zutun von Asterisk. Entweder damit oder mittels Asterisk-Conference sollte sich das irgendwie basteln lassen, die drei Stellen zusammen zu bekommen. Wird bei mir nicht notwendig, weil meine Türsprechanlage keine VoIP ist sondern eine ganz normale mit Außeneinheit und Sprechstelle im Haus. Ich plane, den Ton dazwischen abzugreifen und per USB-Soundkarte direkt per ALSA ins linphone zu füttern.

Das door-berry Projekt macht das ziemlich ähnlich, nur dass nicht linphone sondern PJSIP und Python verwendet werden. Das hat aber bei mir gar nicht funktioniert. Außerdem habe ich nicht verstanden, wie man in das Pyton Zeug (PJSIP) eine Video-Unterstützung einbauen kann.

Mein Aufbau hat aber leider auch einen Haken, mit dem ich schon seit Tagen dem Verzweifeln nahe bin. Um nicht den ganzen Tag sinnlos den Videostream durchs Netzwerk zu jagen wollte ich gst-launch immer erst starten, wenn jemand klingelt und nach Ende des "Anrufs" wieder beenden. Das führt aber dazu, dass ich eine 50/50 Chance habe, tatsächlich Video zu empfangen oder nur Schwarz. Die Pipe dauert wohl einen Moment, bis sie bereit steht, und wenn linphone in der Zeit schon das Video-Device öffnet, geht nichts. Ich habe schon 1-10 Sekunden gewartet, bevor ich nach dem Starten der Pipe den Anruf initiiere, aber es bleibt Glückssache.

Was dafür schon mal geht ist der Türöffner. Der wird per GPIO gesteuert und ich habe ein custom feature in der features.conf angelegt, über das ich ihn per DTMF während des "Gesprächs" betätigen kann. Ich seh zwar nicht immer, wer draußen steht, sprechen kann ich auch noch nicht mit ihm, aber zumindest kann ich die Tür vom Wohnzimmer aus aufmachen ;-)
 
Falls jemand Interesse hat und sein Smartphone oder Tablet auf Android basiert, kann diese Apps mal ausprobieren.

Die folgenden Intercom Apps kann man via Sip anbinden und mit externen IP-Cams. Beide sind wohl vom gleichen Programmierer und unterscheiden sich ausschließlich vom Skin.
Es funktioniert bei mir jedenfalls alles was ich benötige, incl. Türöffner.

https://play.google.com/store/apps/details?id=com.domoticalabs.intercom
https://play.google.com/store/apps/details?id=eu.divus.videophone
 
Ich bekomme das Teil noch nicht mal an meinem Asterisk registriert, außerdem hab ich nichts gefunden, wie man da die Kamera konfiguriert. :noidea:
 
Unter Einstellungen / Konfiguration Innen u. Außeneinheiten findest du den schlecht übersetzten Bereich "Telefonbuch" Dort kann man Cams konfigurieren.
Warum das Teil sich nicht an Asterisk registrieren will weiß ich allerdings auch nicht.
 
Es funktioniert, ich bin begeistert.

Leider gibt es aber einen kleinen Wermutstropfen, die App sendet im 2 Sekunden Takt ein OPTIONS Paket an Asterisk. Durch eine s-extension im [default] beantwortet Asterisk die zwar mit 200 anstatt mit einem 404, aber die App ist damit scheinbar nicht zufrieden. Entweder ist das ein sehr gut gemeintes Keepalive, oder die App hätte gerne eine andere Antwort?

So geht mir die Sache nämlich einigermaßen auf den Akku. :-(

Ansonsten aber echt ein super Tipp :!:
 
@rentier-s

Ich hab jetzt auch endlich den Asterisk produktiv laufen und habe wohl das gleiche Problem wie du mit dem Client.
Wenn ich das Sip debugging aktiviert habe, werde ich von 2 Intercom Clients zugemüllt.
Hast du eine Lösung mittlerweile gefunden oder hast du es unter dem Motto "Ist halt so" abgehakt. ?
 
Ich hatte deswegen mit dem Entwickler (sehr freundlich und hilfsbereit!) Kontakt aufgenommen. Die App verwendet den nativen Android SIP Stack und bei dem gibt es keine Möglichkeit, das Keepalive abzuschalten. Er meinte, es sei geplant, einen anderen Stack zu verwenden, aber konkret absehbar sei das noch nicht.

Nachdem meine Bastellösung aus #14 meistens nicht funktioniert hat, nutze ich zwar die App, aber nur sporadisch zB. draußen am Balkon (WLAN geht, Türglocke hört man nur schlecht) quasi als Funk-Video-Türglocke.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.