Einspielen einer .wav Datei im Rufzustand

  • Hallo Thomas,
    toll, wieder von Dir zu hören und das es vielleicht wieder weiter geht mit dem DoorPi.


    Es geht um das Einspielen einer .wav Datei im Rufzustand. Das Thema habe ich im Hauptforum auf Seite 78 #1157 geschildert. Das ganze war ziemlich aufwendig und ich möchte es daher nicht erneut hier beschreiben. Vielleicht bist Du damit einverstanden, wenn Du dir den genannten Beitrag noch einmal im Hauptforum anschaust.
    Im nächsten Tag, Seite 78 #1158 hattest Du mir aufgrund des Beitrages angeboten, mir eine .log Datei vom DoorPi zu erstellen, damit ich meine Erkenntnisse mit Deiner Umgebung gegenfahren kann. Dazu ist es dann leider nicht mehr gekommen, da Du aus sicherlich wichtigen Gründen eine Auszeit vom DoorPi genommen hast.


    Mittlerweile habe ich im Hauptforum auch wahrgenommen, daß das Problem auch bei anderen vorhanden ist. Hierzu hatte ich Kontakt mit "DasPi" (Joachim) auf der Seite 86 #1288. Dort ist dann auch ein Workaround geschildert, mit dem man das Problem umgehen kann.


    Im Beitrag Seit 78 #1157 habe ich auch noch angesprochen, daß die Aufzeichnung während der Rufphase, "record while dialing" = "True" ebenfalls nicht funktioniert.


    Worüber wir bisher nicht gesprochen hatten ist der Fritzbox Softwarestand. Der ist bei mir mittlerweile 6.51. Das gleiche Problem konnte ich auch mit dem Release 6.24 nachweisen.


    Vor einigen Tagen habe DooPi noch einmal mit dem aktuellen "nightlly snapshot" aufgesetzt. Die Probleme sind geblieben.


    In Summe, DoorPi ist ein ganz tolles Projekt. Für mich funktioniert alles, was ich mir vorgestellt habe, bis auf die beschriebenen Punkte.


    Es funktioniert:
    - Anruf einer Türklingelgruppe in der Fritzbox mit einem Kamera Snapshot auf dem Fritz DECT Telefon.
    - Erzeugen einer E-Mail mit Snapshot (mailto.py hierfür bearbeitet, siehe Hauptforum Seite 87 #1293)
    - Erzeugen eines Snapshot (take_snapshot.py Bearbeitung im gleichen Beitrag Seite 87 #1293 beschrieben)
    - Einbinden eines RFID Lesers für die Garagentorsteuerung. DoorPi sendet hierfür ein Telegramm zur Haussteuerung FHEM


    - take_snapshot.py modifiziert, damit die .jpg rollierend ersetzt werden. (Nicht im Forum beschrieben oder nicht gefunden). Im aktuellen Modul werden die Dateien 1.jpg - 10.jpg erzeugt, dann nur noch die Datei 10.jpg ersetzt. 1.jpg - 9.jpg werden nicht ersetzt.


    In den Modulen mailto.py und take_snapshot.py arbeite ich im übrigen nicht mit dem command "fswebcam" sonder mit php. Das ermöglicht mir die Verwendung von beliebigen IP-Kameras, die irgendwo im Netz hängen. Die Raspi Kamera kann ebenfalls mit php angesprochen werden. Das FHEM Telegramm erzeuge ich ebenfalls mit php.



    Viele Grüße
    Ewald

    • Offizieller Beitrag


    Es geht um das Einspielen einer .wav Datei im Rufzustand


    Meine Log gibt folgendes aus:

    Code
    2016-03-13 17:08:11,703 [INFO]   [doorpi.sipphone.from_linphone] Op [0x7312db60] receiving call response [183], dialog is [0xe06a30] in state [BELLE_SIP_DIALOG_EARLY]


    Aber von Anfang an - interessanter wäre diese Stelle:

    Code
    2016-03-13 17:07:50,963 [TRACE]   [doorpi.action.handler] fire Event OnPlayerCreated from doorpi.sipphone.linphone_lib.Player asyncron
    2016-03-13 17:07:50,965 [DEBUG]   [doorpi.sipphone.from_linphone] [PYLINPHONE] >>> pylinphone_Core_set_ringback(0x751129e0 [0xd7b078], "/usr/local/etc/DoorPi/media/ShortDialTone.wav")
    2016-03-13 17:07:50,966 [DEBUG]   [doorpi.sipphone.from_linphone] [PYLINPHONE] <<< pylinphone_Core_set_ringback -> 0
    2016-03-13 17:07:50,967 [DEBUG]   [doorpi.action.handler] no actions for event OnPlayerCreated - skip fire_event OnPlayerCreated from doorpi.sipphone.linphone_lib.Player



    Im Beitrag Seit 78 #1157 habe ich auch noch angesprochen, daß die Aufzeichnung während der Rufphase, "record while dialing" = "True" ebenfalls nicht funktioniert.


    Für das Thema Records:

    Code
    2016-03-13 17:08:11,431 [DEBUG]   [doorpi.sipphone.from_linphone] [PYLINPHONE] >>> pylinphone_CallParams_set_record_file(0x76cce5d0 [0x73105430], "/usr/local/etc/DoorPi/records/2016-03-13_17-08-11.wav")


    Code
    2016-03-13 17:08:11,521 [DEBUG]   [doorpi.sipphone.linphone_lib.Recorder] starting recording to /usr/local/etc/DoorPi/records/2016-03-13_17-08-11.wav
    2016-03-13 17:08:11,523 [DEBUG]   [doorpi.sipphone.from_linphone] [PYLINPHONE] >>> pylinphone_Call_instance_method_start_recording(0x76cce730 [0x7312f748])
    2016-03-13 17:08:11,523 [DEBUG]   [doorpi.sipphone.from_linphone] [PYLINPHONE] <<< pylinphone_Call_instance_method_start_recording -> None


    Bei mir funktioniert die Aufzeichnung während dialing genauso wie erst mit Gesprächsbeginn.



    Worüber wir bisher nicht gesprochen hatten ist der Fritzbox Softwarestand. Der ist bei mir mittlerweile 6.51. Das gleiche Problem konnte ich auch mit dem Release 6.24 nachweisen.


    Bei meiner FritzBox 7490 ist es aktuell OS 06.51



    mailto.py hierfür bearbeitet,


    Ungünstig da nicht updatesicher - Eher Pull Request auf GitHub erstellen oder Datei mir zukommen lassen und ich versuche die Änderungen einzubinden.



    sonder mit php


    Klingt interessant - würde ich mich für den Quellcode interessieren...



    PS: Ich schätze Deine Art und Deine Durchhaltevermögen, an diesem Thema dran zu bleiben, sehr - Danke dafür!

    • Offizieller Beitrag

    Ich hab mir jetzt Stück für Stück Deine Logdatei angesehen und kann einfach keinen Unterschied / Fehler erkennen.


    Kannst Du mir bitte Deine wav-Datei schicken?
    Kannst Du bitte mal diese Datei testen:
    /usr/local/lib/python2.7/dist-packages/linphone/share/sounds/linphone/rings/bigben.wav

  • Danke für Deine Antworten.


    Zu den Themen:
    Das Deine .log nicht von meiner abweicht, habe ich jetzt auch festgestellt. Es ist jedoch so, dass ich bei der ersten Bearbeitung im Hauptforum von "cubeschrauber" eine .log bekommen habe, in der zu sehen ist, das als SIP Server mit einer "Asterisk" gearbeitet wird. Als SIP Value wird 180 zurückgegeben, nicht 183 wie bei uns. Dort funktioniert das Abspielen der .wav Datei, auch für mich nachvollziehbar.


    Hier der meines Erachtens wichtige Teil der Logdatei:
    Entscheidend sind die Zeilen:
    2015-10-08 19:12:53,417 [INFO]
    2015-10-08 19:12:53,431 [INFO]
    denn dort ist zu erkennen, dass die .wav tatsächlich abgespielt wird.




    Einen Verdacht hierzu habe ich noch: Bitte nicht verärgert sein, aber ich frage es trotzdem einmal.
    Besteht die Möglichkeit, dass Deine .wav Datei keine vom Standardrufton abweichende Melodie beinhaltet, Du also lediglich einen Rufton während der Rufphase hörst?
    Sollte das so sein, könnte das der Rufton der Fritzbox sein, nicht der Deiner .wav Datei.
    Meine .wav habe ich als Anhang beigelegt. Die Lautstärke habe ich um 25dB reduziert, da der Ton sonst noch einige Häuser weiter zu hören wäre.


    Zum Record File:
    Es werden auch bei mir Recordfiles erzeugt und zwar wird vom Klingeltasterdruck an aufgezeichnet. Jedoch ist während der Rufphase nur der Rufton zu hören. Das Mikrofon ist leider nicht scharfgeschaltet.


    Fehler in der mailto.py
    Die Anweisung "import subprocess as subprocess" passt nicht zur Programmzeile "retcode = sub.call(command, shell=True)". Dort muss "sub.call" durch "subprocess.call" ersetzt werden.

    Code
    import subprocess as subprocess
    
    
    def createSnapshot():
        snapshot_file = '/tmp/doorpi.jpg'
        size = doorpi.DoorPi().config.get_string('DoorPi', 'snapshot_size', '1280x720')
        #command = "fswebcam --no-banner -r " + size + " " + snapshot_file
        command = "php /usr/local/etc/DoorPi/tools/take_snapshot_doorpi.php" + " " + snapshot_file
        try:
            retcode = sub.call(command, shell=True)



    Modifikation in der mailto.py für den Einsatz von php anstelle von fswebcam

    Code
    #command = "fswebcam --no-banner -r " + size + " " + snapshot_file
        command = "php /usr/local/etc/DoorPi/tools/take_snapshot_doorpi.php" + " " + snapshot_file


    Fehler in der take_snapshot.py
    Mit jedem Aufruf von take_snapshot wird ein Snapshot erzeugt und im vorgesehenen Verzeichnis abgelegt. Die Anzahl habe ich auf 10 Snapshots begrenzt. Das Problem taucht auf, wenn der 11. Snapshot erzeugt wird. Dann wird die alte Datei 10.jpg ersetzt und nicht die 1.jpg. Das bleibt auch bei allen weiteren Snapshots so. Ich habe das so verstanden, dass die Dateien 1.jpg - 10.jpg rollierend ersetzt werden sollen.
    Hierfür habe ich dann bei mir den Zweig:


    elif (lastNr == max) :
    lastNr = 1


    eingefügt. Damit werden die .jpg dann rollierend ersetzt.



    Modifikation in der take_snapshot.py für den Einsatz von php anstelle von fswebcam

    Code
    # command = "fswebcam --top-banner -b --font luxisr:20 -r " + size + " " + imageFilename
        command = "php /usr/local/etc/DoorPi/tools/PHP5/take_snapshot_doorpi.php" + " " + imageFilename


    Abschließend noch die php Scripts.
    Da ich nicht wirklich ein Programmierer bin, bitte ich um Nachsicht bei der Bewertung der Scripts. Es geht nur geradeaus mit dem, was ich mir zusammen gesucht habe.
    take_snapshot_doorpi.php
    Hier wird ein Snapshot der raspicam erzeugt. Über argv[1] wird beim Aufruf mitgegeben, wo der Snapshot abgelegt werden soll. Dadurch kann das Script sowohl für mailto.py als auch take_snapshot.py verwendet werden.


    PHP
    <?php
    #! /usr/bin/php -q
    $snapshot_file = $argv[1];
    $url="http://192.168.xxx.xxx:9000/?action=snapshot";
    copy($url,$snapshot_file);


    fhem_Rolltor.php


    Der FHEM Host erhält eine UDP und erzeugt letztendlich einen Tastendruck zur Betätigung des Rolltors.


    Hoffentlich habe ich die Punkte verständlich rüberbringen können.


    Gruß
    Ewald

    • Offizieller Beitrag


    Besteht die Möglichkeit, dass Deine .wav Datei keine vom Standardrufton abweichende Melodie beinhaltet, Du also lediglich einen Rufton während der Rufphase hörst? Sollte das so sein, könnte das der Rufton der Fritzbox sein, nicht der Deiner .wav Datei.


    Das wäre ulkig und peinlich für mich, denn das habe ich, glaube ich zumindest, wirklich noch nie ausprobiert :)

    • Offizieller Beitrag

    Fehler gefunden, aber ich kann den aktuell noch nicht beheben:
    http://pythonhosted.org/linpho…e.html#linphone.Core.ring


    Ich weiß nicht, warum die Zuweisung der Parameter nicht genutzt wird, sondern immer der Standard-Klingelton abgespielt wird...

  • Ein Grund könnte darin liegen, dass das SIP Alert Value nicht den Wert 180 sondern 183 hat. Wo das letztendlich zu einem Fehlverhalten führt, linphone oder doorpi, kann ich leider nicht bewerten.
    Beide Alert Values sind zulässig, im Falle von doorpi könnte man beide gleich bewerten.


    Trotzdem super, dass das Problem erkannt und bearbeitet wird.


    Danke

    • Offizieller Beitrag

    OK - wer von den Leuten mit Asterisk kann bitte seinen ringback Tone ändern und testen?


    Code
    [SIP-Phone]
    dialtone = /usr/local/lib/python2.7/dist-packages/linphone/share/sounds/linphone/rings/bigben.wav
    dialtone_renew_every_start = False


    Dann bitte Taster drücken um zu Klingeln und an der Türsprechstation darf in dieser Zeit kein Tut Tut Geräusch, sondern der BigBen zu hören sein.


    Ansonsten hab ich im Quellcode von Linphone noch folgenden Hinweis gefunden:

    Code
    int sal_call_notify_ringing(SalOp *op, bool_t early_media){
     int status_code =early_media?183:180;



    // EDIT \\


    Andere Programme, gleiche Probleme :)


    Auf der Wiki-Seite von liblinphone gibt es diesen Hinweis:
    https://wiki.linphone.org/wiki…he_linphone_python_module


    Also schau ich in das Repository rein:
    https://github.com/lelandg/Raspberry-Pi-Security-Camera


    und sehe:


    Aber ob mir die Lösung gefällt mit pygame zu arbeiten? Eher nicht...


    Umso interessanter wäre die Aussage von unseren Asterisk-Usern ob bei denen der ringback-Tone geändert werden kann!


    Aus meiner Sicht ist das ein Bug und sollte im liblinphone selbst behoben werden anstelle mit pygame zu arbeiten.

  • Ich melde mich freiwillig, werde es aber erst morgen testen können da jetzt mein Bett ruft. Ich bin gespannt.


    Jetzt hat es mir doch keine Ruhe gelassen.


    Getestet und für gut befunden. Der Big Ben hört sich gut an. Funktioniert einwandfrei!!!!!

  • Hat jemand von Euch 2 solcher wav mit einer sexy Frauenstimme "Die Tür wird gleich geöffnet" und "Bitte leicht gegen die Tür drücken und eintreten"


    Hehe. oder hat einer eine Freundin/Frau, mit einer sexy Stimme, die sich zur Verfügung stellt hier 2 solcher wav aufzunehmen.

  • Probier mal hier.


    Da kannst du Text eingeben und hinterher eine Sounddatei (Text-To-Speech) runterladen. Wichtig ist die richtige Sprache auszuwählen.
    Ob die Stimme dir sexy genug ist musst du selber entscheiden :cool: :D


    Das File am besten noch in wav umwandeln, dann kommt jeder Player damit klar.


    P.S.: "Bitte leicht gegen die Tür drücken und eintreten" kann man auch als "Tür eintreten" verstehen. Da wär ich vorsichtig :D

    • Offizieller Beitrag

    hier dein Log

    Damit ist die Vermutung von @RaspiEHU bestätigt, dass es an dem Signal 180 bzw. 183 liegt. Den Fehler konnte ich auf liblinphone eingrenzen und jegliche Konfiguration hat zum gleichen Ergebnis geführt.
    Aktuell erarbeite ich eine Demo-Python-Datei, die ohne DoorPi läuft und dem Hersteller das Problem verdeutlicht, damit man es als Bug melden kann.


    @RaspiEHU - Riesen Respekt vor dieser Detektiv-Arbeit!!


    Merker:
    https://supportforums.cisco.co…-and-183-session-progress

  • Das Problem existiert schon lange.
    Liegt an einer Meldung im SIP Protokoll.
    An einen Asterisk Server betrieben funktioniert der Eintrag "dialtone".
    An der FritzBox leider nicht.
    Habe deshalb noch zusätzlich den Asterisk Server auf meinen Doorpi installiert.