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

    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
    179

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

Name:	Capture7.JPG 
Hits:	106 
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
    179

    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,426

    Und daran das ptts.vbs vielleicht die Datei nach dem Schreiben nicht sauber schließt, hast du gedacht und ausgeschlossen?
    Michael
    on Win10VM (ESXi): I7, 32GB RAM, HW-RAID5, 2xSat | HW: pivccu + ca.130 Geräte (ca.550ch), EM1000, CUL, 1Wire, FritzBox Cable, Android Phone + Tablet, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, RoundCube, Win2016 Ess., MediaPortal, Kodi

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

    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 (03.07.20 um 13:29 Uhr)

  6. #196
    Registriert seit
    May 2012
    Ort
    Braunfels
    Beiträge
    787

    Standard Tür öffnen #9

    Ich bastel gerade mit dem SIP Modul ... Verbindung bekomme ich hin, aber in kann irgendwie kein #9 absetzen.

    PHP-Code:
    <?php

    if($_IPS['SENDER'] == "Execute") {
        
    $id VoIP_Connect(31362"**613");
     
        
    //Maximal 10 Sekunden warten, dass einer abnimmt
        
    for($i 0$i 4$i++) {
            
    IPS_Sleep(1000);
            
    $c VoIP_GetConnection(31362$id);
            if(
    $c['Connected']) {
                echo 
    "connect";
                
    VoIP_SendDTMF(31362,$id ,"#9");
                
    VoIP_Disconnect(31362$id);
                return;
            }
        }
     
        
    //Auflegen, falls keiner abnimmt
        
    VoIP_Disconnect(31362$id);
        echo 
    "keiner hat abgenommen";
    }
    Was mache ich hier noch falsch. Die Telefonanlage ist ein Fritzbox und das Endgerät die Doorline Dect Türsprechanlage. Der Anruf mit dem Telefon und die manuelle Eingabe von #9 gehen. Symcon ist aktuell auf 5.4.
    Geändert von BommelPommel (05.07.20 um 10:13 Uhr)
    Symcon 5 beta auf Symbox, 110+ HomeMatic Komponenten (Alle Funk - Rolladen, Licht, Schalter, Taster, KeyMatic, Fenster, Regensensor etc.), Davis Vantage Pro (via Meteobridge Nano), Sonos 1 // 4000+ Variablen // 2 WebFronts // iOS // Android clients / Google Home / Unifi / Fritzbox PBX

  7. #197
    Registriert seit
    May 2012
    Ort
    Braunfels
    Beiträge
    787

    Nach ein Sonntag des SIPs habe ich die "Lösung". Des Rätsels Lösung war das Sleep nach dem Connect und nach dem absetzen der DTMF Töne. Jetzt geht es.

    PHP-Code:
    <?php

    if($_IPS['SENDER'] == "Execute") {
        
    $id VoIP_Connect(31362"**613");
     
        for(
    $i 0$i 4$i++) {
            
    IPS_Sleep(1000);
            
    $c VoIP_GetConnection(31362$id);
            if(
    $c['Connected']) {
                
    IPS_Sleep(2000);
                
    VoIP_SendDTMF(31362,$id ,"#9");
                
    IPS_Sleep(1000);
                
    VoIP_Disconnect(31362$id);
                return;
            }
        }
     
        
    //Auflegen, falls keiner abnimmt
        
    VoIP_Disconnect(31362$id);
        echo 
    "keiner hat abgenommen";
    }
    Symcon 5 beta auf Symbox, 110+ HomeMatic Komponenten (Alle Funk - Rolladen, Licht, Schalter, Taster, KeyMatic, Fenster, Regensensor etc.), Davis Vantage Pro (via Meteobridge Nano), Sonos 1 // 4000+ Variablen // 2 WebFronts // iOS // Android clients / Google Home / Unifi / Fritzbox PBX

Ä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