+ Antworten
Seite 20 von 20 ErsteErste ... 10 18 19 20
Ergebnis 191 bis 195 von 195
  1. #191
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    23,089

    Genau die ips.exe ist die, die ich suche. Dort kannst du im Task Manager noch eine Spalte für Threads einblenden. Stegen die immer weiter an, wenn du anrufen machst?

    Kannst du das mit dem Timeout oder nicht Timeout ausprobieren? Denn ich habe genau diesen Code Schnippsel verwendet und konnte es bei mir leider nicht nachstellen. Irgendwas muss also bei dir noch anders sein - ggf. passiert es nur bei dem Timeout?

    paresy

  2. #192
    Registriert seit
    Dec 2007
    Ort
    Stuttgart
    Beiträge
    178

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Capture7.JPG 
Hits:	69 
Größe:	15.6 KB 
ID:	54486
    Ja pro festhängender Wav Datei zählt der Threadcounter eins hoch und bleibt auf dem Level.
    Das mit dem Timeout kann ich ausschließen, ich habe für die Versuche die Scriptlaufzeit unter 30s gehalten (gleich rangehen und nach 5s wieder auflegen).

    Um Wechselwirkungen zu dem Wave-generieren auszuschließen habe ich einfach mal manuell wav's erstellt und dann mit dem Anrufscript vorlesen lassen. In 20% der Fälle gehe ich ran und es kommt nichts (außer einem Echo), dann wird aber die Wav aber auch nicht blockiert. In 80% der Fälle wird die Wave abgespielt und ist danach blockiert (bis ich symcon abschieße).

    Ich dachte mir so lösch ich die Wave doch mal gleich nach dem abspielen:
    Code:
    01.07.2020, 15:18:09 | ScriptEngine         | Result for Script 37978
    Anrufscript gestartet!Anruf entgegen genommen!Spiele Wav ab!Breche anruf ab, nachdem Ansage abgespielt wurde!<br />
    <b>Warning</b>:  unlink(C:\ProgramData\Symcon\\webfront\user\Sprachausgabe\WaveOut98.wav): Resource temporarily unavailable in <b>C:\ProgramData\Symcon\scripts\37978.ips.php</b> on line <b>32</b><br />
    Trenne Verbindung!
    (Habe natürlich geprüft das der unlink-Befehl unter normalen Bedingungen funktioniert.)
    Geht nicht, was VOIP_PlayWave einmal hat gibt es nicht mehr her
    Geändert von brausepaul (01.07.20 um 14:28 Uhr)

  3. #193
    Registriert seit
    Dec 2007
    Ort
    Stuttgart
    Beiträge
    178

    Wenn wir das Problem mit den gesperrten Wav's nicht lösen können, evtl. hat ja jemand eine Idee für einen Workaround. Eine maßgebliche Anforderung ist es das keine Clouddienste verwendet werden können (also AWS ect.). Das muss alles lokal passieren.

    Ziel ist es ein Monitoring zu installieren das bei einem Geräteproblem einen Anruf tätigt und durchsagt welches Gerät das Problem hat.
    PRTG überwacht die Geräte, über das PRTG Modul ist der Status auch in Symcon verfügbar. Sobald es zu einem Problem kommt, wird folgendes Script getriggert:
    PHP-Code:
    <?php
    include_once "Standard.ips.php";

    check_timer(false,15460); //Scripttimer löschen 
    check_timer(true,15460,120); //Scripttimer auf x Sekunden setzen

    $liste_prtg_objekte IPS_GetChildrenIDs(55186);    //Root bzw. hier sind alle PRTG Objekte drin

    foreach($liste_prtg_objekte as $nr => $ebene0){                 //alle PRTG-Objekte durchgehen Ebene0
        
    $liste_prtg_objekt IPS_GetChildrenIDs($ebene0);            
        
        foreach(
    $liste_prtg_objekt as $nr => $ebene1){              //alle PRTG-Objekte durchgehen Ebene1
            
    $liste_prtg_sensor IPS_GetChildrenIDs($ebene1);
            
            foreach(
    $liste_prtg_sensor as $nr => $ebene2){          //alle PRTG-Objekte durchgehen Ebene2

                
    if(IPS_GetName($ebene2)== "Sensoren Fehlerhaft"){
                    
                    if(
    GetValueInteger($ebene2)>0){
       
                        
    $Verursacher=IPS_GetName($ebene0); 
                        
    tts_generate('<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="de-DE">Hallo, leider wurde für folgendes Gerät ein Fehler gemeldet   '.$Verursacher.'. Ich wiederhole den Gerätenamen <prosody rate="-50.00%"><say-as interpret-as="characters">'.$Verursacher.'</say-as></prosody></speak>'); //Legt eine Wav mit gesprochenem Text ab
                        
    ips_sleep(5000);
                        
    IPS_RunScriptEx(37978,array("Verursacher" => IPS_GetName($ebene0))); //Anruf triggern und Verursachername übergeben
                        
    return;                                                                     //Script abbrechen um keine weiteren Anrufe auszulösen

                    
    }
                        
                }
                    
            }
            
        }

    }

    ?>
    Die Funktion tts_generate enthält folgendes:
    PHP-Code:
    function tts_generate($ansagetext)
         {
            
    $datei fopen(IPS_GetKernelDir() . "webfront\user\Sprachausgabe\Textausgabe.txt","w+");
            
    $ansagetext=iconv("UTF-8""ISO-8859-1"$ansagetext);
            
    fwrite($datei$ansagetext);
            
    rewind($datei);
            
    fclose($datei);
            
    IPS_ExecuteEx(IPS_GetKernelDir() . "webfront\user\Sprachausgabe\generate_wave.bat","",false,true,-1);
        } 
    Das heißt sobald das Anruf/Callscript aufgerufen wird liegt bereits eine Wav mit Ansagetext vor die nur noch abgespielt werden muss.
    Die generate_wave.bat sieht so aus:
    Code:
    @echo off
    C:\Windows\syswow64\cscript.exe "C:\Program Files\Jampal\ptts.vbs" -u C:\ProgramData\Symcon\webfront\user\Sprachausgabe\Textausgabe.txt -s 8000 -c 1 -r -0 -w C:\ProgramData\Symcon\webfront\user\Sprachausgabe\WaveOut98.wav -voice "Microsoft Hedda Desktop"
    So und am Ende kommt das Call-Script was nun anruft und die Wave abspielt:
    PHP-Code:
    <?php
    include_once "Standard.ips.php";
    $anzahl_bisheriger_anrufe=getvalue(30449);          //soll verhindern das dieses Script Telefonterror auslösen kann
    if($anzahl_bisheriger_anrufe >= 5){return;}                               //nach 5 Anrufen ist Schluss (braucht noch einen Timer der die Variable zurück setzt)
    setvalue(30449,$anzahl_bisheriger_anrufe+1);        //Anruf hochzählen
    check_timer(false,15460);    //normalen Aufruftimer löschen
    check_timer(true,15460,1800);     // Aufruftimer für Prüfscript auf höheren Wert setzen (also eine Pause in der erstmal nicht geprüft wird) 1800s=30min
    //$Verursacher=$_IPS['Verursacher']; //Wird aus dem Script "PRTGObjekte nach fehlerhaften Sensoren durchsuchen" geliefert
    //$Verursacher="P.S.T.R.F.8.1.9"; //Nur zum Test, wenn dieses Script manuell ausgeführt wird
    //IPS_Sleep(5000); //gib dem TTS-Generator 5s Zeit die Wav zu erstellen

     
    $id VOIP_Connect(56647"+49123456789");

     for(
    $i 0$i <= 30$i++) {
         
    IPS_Sleep(1000);
         
    $c VOIP_GetConnection(56647$id);
         if(
    $c['Connected']) {
            
    IPS_Sleep(1000);
            
    VOIP_PlayWave(56647$idIPS_GetKernelDir() . "/webfront/user/Sprachausgabe/WaveOut98.wav");
            
    IPS_Sleep(20000);
            break;
         }
     }
     
    unlink(IPS_GetKernelDir() . "\webfront\user\Sprachausgabe\WaveOut98.wav"); 
     
    VOIP_Disconnect(56647$id);  

    ?>
    So und alles scheitert daran das die erstellte Wav von Voip_PlayWave dauerhaft blockiert wird. Nachfolgend kann die weder gelöscht, noch durch eine neue Ansage überschrieben werden bis ich Symcon neu starte. Vielleicht hat ja jemand eine Idee wie man es lösen könnte ohne Wav's zu generieren.

  4. #194
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,139

    Und daran das ptts.vbs vielleicht die Datei nach dem Schreiben nicht sauber schließt, hast du gedacht und ausgeschlossen?
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  5. #195
    Registriert seit
    Dec 2007
    Ort
    Stuttgart
    Beiträge
    178

    Und daran das ptts.vbs vielleicht die Datei nach dem Schreiben nicht sauber schließt, hast du gedacht und ausgeschlossen?
    Ja und nein. Ich habe auf deinen Hinweis hin mal andere Wav-Dateien (z.b. willkommen.wav aus dem MegaVoteEvent) ausprobiert.
    Damit hat dann alles sauber funktioniert. Ich dachte dem Fehler auf der Spur zu sein, aber nun läuft plötzlich auch mit meinen generierten Wav's alles sauber. Werden abgespielt und sind danach nicht mehr dauerhaft blockiert.

    Unschön irgendwie , jetzt funktioniert zwar alles wie ichs gern hätte, aber fragt sich wie lange und von welchen Faktoren das abhängt. Codebasis ist immer noch die gleiche wie zuvor gepostet.

    Werde nun den Windows-Server mal booten, SymconDienst mehrfach neustarten usw. um zu schauen wie stabil der Status jetzt ist.
    Angehängte Dateien Angehängte Dateien
    Geändert von brausepaul (Gestern um 13:29 Uhr)

Ähnliche Themen

  1. Antworten: 211
    Letzter Beitrag: 18.02.20, 07:09
  2. XPort Direct Support mit Raspberry und Symcon 4.1 ?
    Von babba im Forum Allgemeine Diskussion
    Antworten: 3
    Letzter Beitrag: 19.11.16, 17:52
  3. Türsprechanlage mit SIP und Gesichtserkennung
    Von oheidinger im Forum Schaufenster
    Antworten: 5
    Letzter Beitrag: 05.07.14, 09:40
  4. iP-Symcon CUL Support
    Von mdbrean im Forum Sonstige Funkkomponenten / Wetterstationen
    Antworten: 17
    Letzter Beitrag: 13.12.11, 21:40