NEWS
Ich baue eine Türsprechstelle ohne Cloud !
-
Einführung
Da ich vor ca. 4 Jahren eine neue Sprechanlage anschaffen musste, es aber keine gab die meinen Bedürfnissen entsprach, fand ich übers Inet das Projekt "DoorPi" und beschloss, das ich das haben "will".
Ohne Cloud, Sip Client und vor allem erweiterbar. Leider ist das Projekt in Python 2.7 entwickelt, das bald nicht mehr von Debian unterstützt wird. Das Gleiche gilt für die Sip-Client Python Wrapper von Linphone und PJSip.
Ich begann deshalb eine Sip-Client zu suchen der aktuell ist und fand Baresip. Ich habe mir einen ioBroker-Adapter erstellt. Falls jemand auf die Idee kommt das auch umzusetzten, möchte ich hier eine Hilfestellung geben.Hardware
Sprechstellenrahmen kommt aus meinem 3D-Drucker.
Schalter sind links angebracht, damit der Besucher näher an die Sprechstelle muß.Mein System,
Fritzbox
Fritz Fon
Raspberry 3
Piface2
USB-Hub
USB-Kabel 5m
USB-Cam
Fisheye
Led-Taster
Relaiskarte
USB-Seriell
Nextion 3,2"
Lautsprecher
Plantronics Calisto 610Software
pi-mqtt-gpio von flyte
Der ioBroker-Piface-Adapter brachte bei mir zeitweise Phantomklingeln (Input kam ohne betätigt zu werden), deshalb wurde das Piface über den MQTT-Adapter eingelesen.
Baresip als Sip-Client.
MJPG-Streamer für die Kamera. -
Tip1 "Senden einer Mail/Telegramm-Nachricht incl. Bild beim Klingeln"
var request = require('request'); var fs = require('fs'); var bell = true; function sendImage() { request.get({url: 'http://mjpegstreamer:9100/?action=snapshot', encoding: 'binary'}, function (err, response, body) { fs.writeFile("/tmp/snap.jpg", body, 'binary', function(err) { if (err) { console.error(err); } else { console.log('Snapshot sent'); sendTo('telegram.0', {text: '/tmp/snap.jpg', caption: 'Jemand klingelt an der Haustür !!!'}); sendTo("email", { to: "deinname@gmx.de", subject: "Message from ioBroker", text: "Jemand klingelt an der Haustür !!!", attachments: [{path: "/tmp/snap.jpg"}] }); } }); }); } on({id: "mqtt.0.piface.input.DoorBell_1", val: true}, function (obj) { if (bell) sendImage(); bell = false; timer = setTimeout(function() { bell = true; }, 120000); });
-
Tip2 "mute/unmute mit dem Shell Action Adapter"
Die Befehle lauten bei meiner Sprechstelle:
/usr/bin/amixer -D pulse set Master 1+ mute /usr/bin/amixer -D pulse set Master 1+ unmute
Wir installieren den Shell Action Adapter und legen uns zwei Befehle an mit euren Daten. Die Befehle vorher auf dem DoorIO testen.
Wir erstellen uns ein Blockly, Beispiel :
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="on" id="G)7BMnpJ9@XD2NPVU5tg" x="63" y="38"> <field name="OID">doorio.0.CALL_ACTIVE</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="8NqX8gsH-d2i?MQsCIg!"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="8Z0$)Rp+{T/N8)rp~bKt"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="KaLH)!{C}ds~e_{c0,!Y"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="1%0O|,.g^NkNruxYCgJL"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="-l~lN)G@gQf(04L8iJUg"> <mutation delay_input="false"></mutation> <field name="OID">shellaction.0.DoorIO_unmute</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="^g:^7U+|!c265KbQFHHE"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="control" id="0!c{b^0-+6[G^=T0,Yzi"> <mutation delay_input="false"></mutation> <field name="OID">shellaction.0.DoorIO_mute</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="J%%.p#SP2n,d?kp7X@cy"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </statement> </block> </xml>
In dem Blockly eure Objekte einfügen.
Edit: Das Blockly-Script wird nicht mehr benötigt, der DoorIO-Adapter kann das jetzt direkt.
-
@Wal
Guten Abend walWie schwer ist es das ganze umzusetzen bzw kann man da noch einen USB fingerprinter und oder einen rfid Empfänger anschließen?
-
@schmid_no1
umsetzen ist ganz einfach, das was am meisten aufhält ist die Frontplatte.
Fingerprinter oder RFID hat ja nichts mit Klingeln oder sprechen zu tun, wenn es ein Adapter für ioBroker dafür gibt (weiss ich jetzt nicht) geht das.
Ich nutze z.B. ein Nextion Display an der Sprechstelle das ich mit einer Pineingabe programmiert habe um das Garagentor zu öffnen. Das läuft aber nicht über den DoorIO-Adapter, sondern über den MQTT-Adapter.Edit: Der Adapter ist nur für die Kommunikation zuständig und kümmert sich für den Ruf und kann auch bei bestimmten Ereignissen Aktionen ausführen. Was du zum rufen nimmst (Bewegungsmelder, Klingeltaster auf GPIO oder PiFace, Sonoffschalter u.s.w) muß im ioBroker eingelesen sein und wird dem DoorIO-Adapter zugewiesen.
-
@Wal alles klar
Dann werde ich mal alles besorgen.
Und mit deiner Hilfe werde ich bestimmt alles zum laufen bringen -
Ich bin begeistert!
Seit 2015 betreibe ich Doorberry. Das System ist etwas in die Jahre gekommen. Inzwischen nutze ich auch IOBroker und würde daher gerne auf DOORIO umsteigen. Gibt es eine Anleitung zur Konfiguration von Baresip (die Installation ist ja ganz einfach). Den Mjpg-Streamer nutze ich ohnehin schon. Über eine kurze Hilfestellung mit kommentierten Konfigurationsdateien würde ich mich sehr freuen. -
@Andreas-Pässler sagte in Ich baue eine Türsprechstelle ohne Cloud !:
Über eine kurze Hilfestellung mit kommentierten Konfigurationsdateien würde ich mich sehr freuen.
da gibt es nicht viel zu sagen, die Dateien sind in .baresip zu finden.
Anmeldung an den Sipserver:
accounts -> sip:doorio2sip@fritz.box;auth_pass=passwort;answermode=autoTCP-Socket aktivieren:
config-> module_app ctrl_tcp.so
Soundkarte konfigurieren.das wars auch schon.
hier meine config:
# # baresip configuration # #------------------------------------------------------------------------------ # Core poll_method epoll # poll, select, epoll .. # SIP sip_listen 0.0.0.0:5060 #sip_certificate cert.pem # Call call_local_timeout 20 call_max_calls 2 # Audio #audio_path /usr/local/share/baresip audio_player pulse,noecho.sound_out audio_source pulse,noecho.mic_in audio_alert pulse,null #ausrc_srate 48000 #auplay_srate 48000 #ausrc_channels 0 #auplay_channels 0 #audio_txmode poll # poll, thread audio_level no ausrc_format s16 # s16, float, .. auplay_format s16 # s16, float, .. auenc_format s16 # s16, float, .. audec_format s16 # s16, float, .. # Video #video_source v4l2,/dev/video0 #video_display x11,nil video_size 352x288 video_bitrate 500000 video_fps 25.00 video_fullscreen yes videnc_format yuv420p # AVT - Audio/Video Transport rtp_tos 184 #rtp_ports 10000-20000 #rtp_bandwidth 512-1024 # [kbit/s] rtcp_mux no jitter_buffer_delay 5-10 # frames rtp_stats no #rtp_timeout 20 # Network #dns_server 10.0.0.1:53 #net_interface eth0 # BFCP #bfcp_proto udp #------------------------------------------------------------------------------ # Modules module_path /usr/local/lib/baresip/modules # UI Modules #module stdio.so #module cons.so #module evdev.so #module httpd.so # Audio codec Modules (in order) #module opus.so #module amr.so #module g7221.so module g722.so #module g726.so #module g711.so #module gsm.so #module l16.so #module bv32.so #module mpa.so #module codec2.so #module ilbc.so #module isac.so # Audio filter Modules (in encoding order) #module vumeter.so #module sndfile.so #module speex_aec.so #module speex_pp.so #module plc.so # Audio driver Modules #module alsa.so module pulse.so #module jack.so #module portaudio.so #module aubridge.so #module aufile.so # Video codec Modules (in order) #module avcodec.so #module vp8.so #module vp9.so #module h265.so # Video filter Modules (in encoding order) #module selfview.so #module snapshot.so #module swscale.so #module vidinfo.so # Video source modules #module v4l2.so #module v4l2_codec.so #module avformat.so #module x11grab.so #module cairo.so #module vidbridge.so # Video display modules #module directfb.so #module x11.so #module sdl2.so #module fakevideo.so # Audio/Video source modules #module rst.so #module gst1.so #module gst_video1.so # Media NAT modules #module stun.so #module turn.so #module ice.so #module natpmp.so #module pcp.so # Media encryption modules #module srtp.so #module dtls_srtp.so #module zrtp.so #------------------------------------------------------------------------------ # Temporary Modules (loaded then unloaded) #module_tmp uuid.so module_tmp account.so #------------------------------------------------------------------------------ # Application Modules #module_app auloop.so #module_app b2bua.so #module_app contact.so module_app debug_cmd.so #module_app dtmfio.so #module_app echo.so #module_app gtk.so module_app menu.so #module_app mwi.so #module_app presence.so module_app syslog.so #module_app mqtt.so module_app ctrl_tcp.so #module_app vidloop.so #------------------------------------------------------------------------------ # Module parameters # UI Modules parameters cons_listen 0.0.0.0:5555 # cons http_listen 0.0.0.0:8000 # httpd - server ctrl_tcp_listen 0.0.0.0:4444 # ctrl_tcp evdev_device /dev/input/event0 # Opus codec parameters opus_bitrate 28000 # 6000-510000 #opus_stereo yes #opus_sprop_stereo yes #opus_cbr no #opus_inband_fec no #opus_dtx no #opus_mirror no #opus_complexity 10 #opus_application audio # {voip,audio} # Opus Multistream codec parameters #opus_ms_channels 2 #total channels (2 or 4) #opus_ms_streams 2 #number of streams #opus_ms_c_streams 2 #number of coupled streams vumeter_stderr yes # Selfview video_selfview window # {window,pip} #selfview_size 64x64 # ICE ice_turn no ice_debug no ice_nomination regular # {regular,aggressive} ice_mode full # {full,lite} # ZRTP #zrtp_hash no # Disable SDP zrtp-hash (not recommended) # Menu #menu_bell yes #redial_attempts 3 # Num or <inf> #redial_delay 5 # Delay in seconds #ringback_disabled yes #statmode_default off # avcodec #avcodec_h264enc libx264 #avcodec_h264dec h264 # h265 #h265_encoder libx265 #h265_decoder hevc # MQTT #mqtt_broker_host localhost #mqtt_broker_port 1883 #mqtt_broker_clientid baresip #mqtt_broker_user pi #mqtt_broker_password raspberry #mqtt_basetopic doorio
Wird Baresip über den Paketmanager installiert, müssen die Ordner mit "/usr/share/..." beginnen.
Wird Alsa genutzt lauten die Audioeinstellungen "Alsa,default", für Pulseaudio gibt es eine Anleitung im DoorIO Thread, da gibt es auch ein Image für RPI3 und 4. -
Hab ne Frage:
Was passiert da genau wenn's klingelt?
Wird dann per SIP-Protokoll ein SIP-Client angerufen? Ist das dann "nur audio" oder ist das "video-sip"?
D.h. man kann am SIP-fähigen Telefon auch das Bild sehen?Hintergrund:
Ich suche seit 10 Jahren nach einer Videotürsprechanlage. Hab auch keine kommerzielle Anlage gefunden die das macht was ich will:Ich will keine Push-Benachrichtigung. (denn die hört man nicht gut, und ich habe auch keine Lust das iPhone noch entsperren zu müssen)
Aber ich habe einen SIP Client auf dem iPhone und würde gern dahin angerufen werden - und zwar MIT Videobild.
Und das Videobild soll angezeigt werden BEVOR man das Gespräch annimmt.Ich habe auch schon im Internet gesehen wo RTSP Streams an SIP Verbindungen angebunden werden. (soll mit irgendeiner neueren Asterisk-Version angebeblich schon von Haus aus gehen)
Danke!
-
@Roelli
das kann ich dir so nicht beantworten. Du musst dir Baresip anschauen, alles was damit gemacht werden kann würde mit dem Adapter auch gehen. Ich nutze halt die Fritzbox mit Fritzphone, da funktioniert das was du möchtest. Ich habe das Bild vor der Annahme des Gesprächs.Die Fritzbox ist mein Sipserver und die Sprechstelle ist ein Sipclient. Wird das dem Adapter zugeortnete Klingelereigniss erkannt, wird Baresip der Befehl erteilt die Rufnummer in deinem Fall das IPhone zu rufen.
Wenn du abnimmst, kommt das Gespräch zustande. Man kann auch direkt mit der Sprechstelle kommunizieren. -
@Wal
Hallo,spiele schon länger mit dem Gedanken, meine Klingel und Türsprechanlage Smart zu machen, da die bestehende sowieso nicht mehr richtig funktioniert und man z.B. im Garten nicht mitbekommt, wenn es geklingelt hat.
Da ich gerade eine iobroker Installation für weitere Automationszwecke ans laufen gebracht habe, wäre die hier gezeigte Lösung eigentlich genau das Richtige für mich, da die meisten Fertiglösungen entweder Cloud Zwang mitbringen oder schlicht ein Vermögen kosten. Jetzt stellen sich mir aber noch ein paar Detailfragen, die für mich aus diesem und dem Thread des Adapters noch nicht ganz klar hervor gingen.
Ich habe in dem Unterputzkasten meiner bisherigen Klingel relativ wenig Platz, müsste aber den Raspberry Pi auch dort mit unterbringen. Von daher kommt wahrscheinlich nur ein Pi 3A+ in Frage. Als Kamera könnte ich ja die Raspberry Cam verwenden, dann hätte ich den einen vorhandenen USB-Anschluss noch für das Mikrofon zur Verfügung. Lautsprecher kann ja wahrscheinlich auch irgendwie an den Klinkenanschluss, falls er nicht sowieso in der Mikrofon Lösung integriert ist. Bildschirm wäre für mich verzichtbar oder ggf. über GPIO zu lösen. Aus Platzgründen wäre es auch gut auf das PiFace verzichten zu können. Ist das essenziell oder macht es den Aufbau lediglich einfacher?
EDIT: Was die Platzverhältnisse zusätzlich einschränkt, ist auch die zusätzliche Elektronik, um den Pi über den Klingeltrafo mit Strom versorgen zu können.
Vielen Dank schon mal für die Hilfe!
Grüße
-
@genau_der ,
Piface braucht man nicht unbedingt, du kannst auch die GPIOs nehmen oder irgend ein Schalter(sonoff,HM-IP u.s.w.) der ein Objekt in ioBroker setzt. Für Audio ist z.B. ein RPI von Nöten, alles andere kannst du auch autark machen. WLan-Kamera fürs Video, Funkschalter für die Klingel, Sonoff für den Türöffner u.s.w. -
Hallo,
ich hatte auch vor ca. zwei Jahren noch DoorPi am laufen. Irgendwann gab es ein Update und dann ging leider nichts mehr. Habe vor vier Wochen meinen alten DoorPi zum ioBroker umgewandelt. Jetzt habe ich den Doorio Adapter entdeckt und möchte gerne auch das Projekt nachbauen bzw. inbetriebnehmen, da ja alles schon vorhanden ist.
Ein Frage ist aber mir noch nicht ganz klar, vielleicht könnt ihr mir da weiterhelfen.
Benutze ich ich jetzt zwei Pi's einer für den ioBroker und einen als Slave mit dem PiFace oder kann ich beide in einem Pi betreiben.
Was sind so eure Empfehlungen?
Gruß
-
@gerei ,
bei mir läuft ioBroker auf einem Proxmox Server und auf dem RPI4 läuft Baresip und der mjpg-streamer für die Kamera.
ioBroker muß nicht auf dem RPI4 laufen auch nicht als Slave. -
@wal
Moin Dir, mal eine Frage, wozu nutzt du das piface2 und eine Relaiskarte? Wäre es nicht einfacher die Relais vom piface zu nutzen, bzw. falls diese nicht reichen von der Schaltleistung die GPIO direkt auf die Relaiskarte zu verbinden?mfG
da rene -
@renegade-0 ,
ich nutze das Relais autark vom Piface, damit der Gong noch gongt auch wenn alles andere versagt. Hatte ich zwar noch nicht, aber siiicher ist siiicher. -
also würde der piface alleine reichen, wenn man keine doppelte Sicherheit benötigt? Ich würde halt auch gerne den Status der Türe (offen/geschlossen) und das Schloss überwachen. Kontakte sind türseitig da. Darum gefällt mir das piface eigentlich sehr gut. 2 Relais und genug Eingangskontakte.
-
@renegade-0 ,
ja das würde reichen. -
@wal
super, dann läufts soweit zumindest aufm Pi 3 und 4. Komischerweise auf dem Pi 4 Compute Modul hab ich Probleme mim Pulseaudio. Da muss ich nochmal forschen. -
@renegade-0 ,
es gibt auch eine neue Anleitung.