Ankündigung

Einklappen
Keine Ankündigung bisher.

Anrufername in Anruferliste von Fritzbox (LBS19000454/455/...)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Blaky1612
    antwortet
    Läuft jetzt bei mir auch
    Dankeschön

    Einen Kommentar schreiben:


  • Winni
    antwortet
    Leider nein, ich hab den Kern des Bausteins mit der SOAP Kommunikation auch nur kopiert. Fehlermeldungen krieg ich jedoch keine.

    Einen Kommentar schreiben:


  • NorbertB
    antwortet
    Jo, startet jetzt fehlerfrei

    Eine andere Frage noch, beim LBS 457 bekomme ich bei jedem Start:
    2019-12-02 17:23:28 312026 22628 1 SOAP-Fehler: (Fehlernummer: s:Client, Fehlermeldung: UPnPError)
    Im Log der Fritzbox steht dann nur:
    Anmeldung einer App des Benutzers edomi von IP-Adresse 192.168.xxx.xxx.
    Kannst Du mir einen Tipp geben?

    Einen Kommentar schreiben:


  • HappyJack
    antwortet
    Hallo Winni,
    ich habe es bei mir eben probiert und keine Fehlermeldung erhalten. Edomi ist sauber gestartet und läuft !
    Danke dafür !

    Einen Kommentar schreiben:


  • Winni
    antwortet
    Wer will, kann nochmal probieren (bei mir läufts unter CentOS 6.5 und 7), das ist allerdings keine Garantie für andere, wie ich schon bitter feststellen musste.

    Einen Kommentar schreiben:


  • Winni
    antwortet
    Ich hab' mit dem Baustein noch diverse Probleme..... ich hoffe ich krieg's irgendwann gebacken. Problem ist, dass ich irgendwie nicht alle Szenarien nachstellen kann. Blöd ist auch, dass ich damals keinen EXEC-Baustein gemacht habe und er im Fehlerfall alles lahmlegt. Lust und Zeit alles neu zu machen hab' ich im Moment nicht.Bitte um etwas Geduld (wer zu früh upgedated hat soll aus einem Backup die alte Version rausholen)

    Einen Kommentar schreiben:


  • NorbertB
    antwortet
    Winni, kann es sein, dass dieses Update unter CentOS 6.5 nichtmehr funktioniert?
    Hier startet Edomi nichtmehr, bleibt bei:
    2019-12-02 12:54:04 161700 MAIN 2193 INIT Ok
    2019-12-02 12:54:04 168124 MAIN 2193 Logik-Bausteine initialisieren... Ok
    hängen.

    Einen Kommentar schreiben:


  • Winni
    antwortet
    So, hab noch schnell den alten Code reingewurschtelt.... Hoffe es gibt nicht wieder Ärger mit irgendeiner Endlosschleife... Falls doch im Quellcode den Bereich

    // muss umgewandelt werden ?
    if ($db_selected) {
    $start = 1;
    .........
    $result = mysqli_query($mysqli,$query);
    };
    entfernen.
    Zuletzt geändert von Winni; 02.12.2019, 00:19.

    Einen Kommentar schreiben:


  • Winni
    antwortet
    Version 0.5 sollte nun bei Neuinstallation funktionieren. Habe einen Bereich entfernt, der ein DB-Struktur-Update gemacht hat. Wer noch eine Version vor 0.3 am Laufen hat müsste die entsprechende Datenbank löschen und neu anfangen.
    vtl. kann auch die Structur mit SQL korrigiert werden: Die Spalte Date ist in der aktuellen Version im Format INT(11), also groben Anhaltspunkt der Quellcode den ich damals in Version 0.3 zum Upgrade eingebaut hatte:
    $start = 1;
    while ($start > 0) {
    $query = "SELECT * FROM ".$tabelle." where id >= ".$start.' order by id asc';
    $result = mysqli_query($mysqli,$query);
    $row = mysqli_fetch_row($result);
    if ($row === false) {$start = 0; continue;};
    $start = $row[0];
    if (!is_numeric($row[1])) {
    $query = "UPDATE ".$tabelle." SET Date = '".strtotime(substr($row[0],0,6).strftime("%C",time()).substr($row[0],6,10))."' WHERE ID = ".$row[0];
    $result = mysqli_query($mysqli,$query);
    $start++;
    } else { // bereits umgestellt
    $start = 0;
    };
    };
    $query = "ALTER TABLE ".$tabelle." CHANGE COLUMN Date Date INT(11)";
    $result = mysqli_query($mysqli,$query);

    Sollten viele noch die alte Version haben, bitte melden, dann versuche ich das wieder einzubauen.

    Einen Kommentar schreiben:


  • ThomasCologne
    antwortet
    Hier der LBS 19000455 in der version 0.2


    Code:
    ###[DEF]###
    [name        =    FRITZ!Box Anrufliste Eintrag Lesen / Einfügen / Updaten (0.2)]
    
    [e#1 trigger        = Trigger aus CALLMONITOR Baustein LBS19000456 oder System-KO 15 (selbsterkennend)]
    [e#2 trigger        = Id zum Lesen]
    [e#3 trigger        = Id zum Löschen]
    [e#4 trigger        = Ergebnis Rückwärtssuche (erweitert) ]
    [e#5 option         = Device Übersetzung Text / Icon #init=NULL|undefined|0]
    [e#6 option         = eigene Nummer Übersetzung Text / Icon #init=NULL|undefined|0]
    [e#7 option         = Anruftyp Übersetzung Text / Icon #init=10|calling|0|20|ringing|0|15|out connected|0|25|in connected|0|16|out missed|0|26|in missed|0|17|outgoing closed|0|27|incoming closed|0|NULL|undefined|0]
    [e#10 option        = Debugging aktivieren]
    
    [a#1        =    Ausgabe aktuelle Daten JSON-Format ]
    [a#2        =    Id ]
    [a#3        =    Date ]
    [a#4        =    Type ]
    [a#5        =    TypeText ]
    [a#6        =    TypeIcon ]
    [a#7        =    Device ]
    [a#8        =    DeviceName ]
    [a#9        =    DeviceIcon ]
    [a#10        =    OwnNumber ]
    [a#11        =    OwnName ]
    [a#12        =    OwnIcon ]
    [a#13        =    ExtNumber ]
    [a#14        =    ExtName ]
    [a#15        =    Duration in seconds ]
    [a#16        =    Port ]
    
    [v#1        =    ] Speichern der Daten 
    [v#2        =    ] Initialisierung nur einmal 
    
    Versionshistorie:
    0.1        initiale Version
    0.2        Umstellung auf neue Funktionsaufrufe, stabilere Objektprüfungen
    
    ###[/DEF]###
    
    
    ###[HELP]###
    
    
    Eingang 1: Daten aus LBS1900456, ein neuer Eintrag führt hier zum Insert. Falls Datensatz bereits vorhanden werden bestimmte Felder upgedated
    Eingang 2: ID zum Lesen,  die Daten dieser ID werden an den Ausgängen bereitgestellt.
    Eingang 3: ID zum Löschen, die Daten dieser ID werden an den Ausgängen bereitgestellt.
    Eingang 4: Daten aus Rückwärtssuche, werden der entsprechenden Nummer im Speicher und Datenbank zugeordnet, sofern Daten gefunden wurden
    Eingang 5: Daten um Device-Nummer in Text bzw. Icon (EDOMI-Nr) umzusetzen (Nr|Text|Icon|Nr|Text|Icon) NR='NULL' wird bei unbekannten Werten verwendet
    Eingang 6: Daten um eigene Rufnummer in Text bzw. Icon (EDOMI-Nr) umzusetzen (Nr|Text|Icon|Nr|Text|Icon) NR='NULL' wird bei unbekannten Werten verwendet
    Eingang 7: Daten um Status in Text bzw. Icon (EDOMI-Nr) umzusetzen (Nr|Text|Icon|Nr|Text|Icon) NR='NULL' wird bei unbekannten Werten verwendet
    Eingang 10: Debugging aktivieren !
    
    ###[/HELP]###
    
    
    ###[LBS]###
    <?
    function LB_LBSID($id) {
        if (($E = logic_getInputs($id)) && !logic_getvar($id,2)) {
            $debug = $E[10]['value'];
    // Evtl. Datenbank initialisieren
            $con = mysql_connect("localhost","root","");
            if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   CONNECT');
    // select database
            $db_selected = mysql_select_db("LBS_19000455_Fritz_Anrufliste",$con);
            if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   SELECT');
            if (!$db_selected) {
                if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   NOT SELECTED');
                $query = "CREATE DATABASE IF NOT EXISTS LBS_19000455_Fritz_Anrufliste";
                mysql_query($query,$con);
                if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   '.$query);
                mysql_select_db("LBS_19000455_Fritz_Anrufliste",$con);
    // create database tables
                $query = "CREATE TABLE IF NOT EXISTS anrufe (
                    `Id` bigint NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique ID per call',
                    `Date` CHAR(14) DEFAULT '' COMMENT '31.07.12 12:03',
                    `Type` INT(2) NOT NULL DEFAULT 0 COMMENT 'Type Integer',
                    `TypeText` CHAR(25) NOT NULL DEFAULT '' COMMENT 'Name des Anruftyps',
                    `TypeIcon` CHAR(15) NOT NULL DEFAULT '' COMMENT 'EDOMI-Nummer für Icon',
                    `OwnNumber` CHAR(25) NOT NULL DEFAULT '' COMMENT 'Telefonnummer',
                    `OwnName` CHAR(25) NOT NULL DEFAULT '' COMMENT 'Name des Telefonnummer',
                    `OwnIcon` CHAR(15) NOT NULL DEFAULT '' COMMENT 'EDOMI-Nummer für Icon',
                    `ExtNumber` CHAR(25) NOT NULL DEFAULT '' COMMENT 'Telefonnummer',
                    `ExtName` CHAR(255) NOT NULL DEFAULT '' COMMENT 'Name des Telefonnummer',
                    `Device` INT(2) NOT NULL DEFAULT 0 COMMENT 'Device Nr',
                    `DeviceName` CHAR(25) NOT NULL DEFAULT '' COMMENT 'Name des Telefons',
                    `DeviceIcon` CHAR(15) NOT NULL DEFAULT '' COMMENT 'EDOMI-Nummer für Icon',
                    `Duration` CHAR(5) DEFAULT '' COMMENT 'Seconds',
                    `Port` CHAR(5) DEFAULT '' COMMENT 'Port',
                    KEY `Id` (`Id`)
                    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci";
                    mysql_query($query,$con);
                if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   '.$query);
                logic_setVar($id,2,1);
            };
    // Datenbank existiert nun und ist geöffnet
    
    // Ergebnis der Rückwärtssuche zordnen !
            if ( $E[4]['refresh'] ) { 
                $calls = json_decode(logic_getVar($id,1));
                if (!is_object($calls)) return;
                $temp = explode('|',$E[4]['value']);
                foreach ($calls as $call) {
                    if ($call->ExtNumber == $temp[0]) {
                        $call->ExtName = $temp[1];
    //-> Update Datenbank
    //                      $query = "UPDATE anrufe SET ExtName = '".$call->ExtName."' WHERE ID = ".$call->Id;
                          $query = "UPDATE anrufe SET ExtName = '".$call->ExtName."' WHERE ExtNumber = ".$temp[0];
                          $result = mysql_query($query,$con);
                        if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   UPDATE: '.$query);
                        logic_setOutput($id,1,json_encode($call));
                        logic_setOutput($id,14,$call->ExtName);
                        if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,'Update Output:'.json_encode($call));
                        logic_setVar($id,1,json_encode($calls));
                        if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,'   speichern: '.json_encode($calls));
                    };
                };
            };
    
    
    // Lesen - Löschen eines speziellen Anrufs
            if ( $E[2]['refresh'] || $E[3]['refresh'] ) { 
                if ($E[2]['refresh']) $query = "SELECT * FROM anrufe WHERE Id = ".$E[2]['value'];
                if ($E[3]['refresh']) $query = "SELECT * FROM anrufe WHERE Id = ".$E[3]['value'];
                $result = mysql_query($query,$con);
                if (!$result) {
    // Wenn Fehler
                    writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   '.$query);
                    return;
                };
                $row = mysql_fetch_row($result);
                if ($row === false) {
    // Wenn Fehler
                    writeToCustomLog('LBS19000455 Fritz Anrufliste',1,'Datensatz nicht vorhanden: '.$query);
                    return;
                };
    
                $call = (object) array();
                $call->Id = $row[0];
                $call->Date = $row[1];
                $call->Type = $row[2];
                $call->OwnNumber = $row[3];
                $call->OwnName = $row[4];
                $call->OwnIcon = $row[5];
                $call->ExtNumber = $row[6];
                $call->ExtName = $row[7];
                $call->TypeText = $row[8];
                $call->TypeIcon = $row[9];
                $call->Device = $row[10];
                $call->DeviceName = $row[11];
                $call->DeviceIcon = $row[12];
                $call->Duration = $row[13];
                $call->Port = $row[14];
                logic_setOutput($id,1,json_encode($call));
                logic_setOutput($id,2,$call->Id);
                logic_setOutput($id,3,$call->Date);
                logic_setOutput($id,4,$call->Type);
                logic_setOutput($id,5,$call->TypeText);
                logic_setOutput($id,6,$call->TypeIcon);
                logic_setOutput($id,7,$call->Device);
                logic_setOutput($id,8,$call->DeviceName);
                logic_setOutput($id,9,$call->DeviceIcon);
                logic_setOutput($id,10,$call->OwnNumber);
                logic_setOutput($id,11,$call->OwnName);
                logic_setOutput($id,12,$call->OwnIcon);
                logic_setOutput($id,13,$call->ExtNumber);
                logic_setOutput($id,14,$call->ExtName);
                logic_setOutput($id,15,$call->Duration);
                logic_setOutput($id,16,$call->Port);
                if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,'Update Output:'.json_encode($call));
                if ($E[3]['refresh']) $query = "DELETE anrufe WHERE Id = ".$E[3]['value'];
                $result = mysql_query($query,$con);
                if (!$result) {
    // Wenn Fehler
                    writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   '.$query);
                    return;
                };
            };
    
    // Lesen des aktuellen Anrufs
            if ( $E[1]['refresh'] &&  (strlen($E[1]['value'])>10)) {
     //aktuellen Zustand holen (auf Remanenz wurde verzichtet !)
                if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,'   gespeichert: '.logic_getVar($id,1));
                $calls = json_decode(logic_getVar($id,1));
                if ($calls == '') $calls = (object) array();
                $callmon = explode(';',$E[1]['value']);
                if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,'   CALLMON: '.$callmon[1]);
    
                switch ($callmon[1]) {
                case 'CALL':
                case 'RING':
    //CALL RING bedeutet neuer Call mit neuer Call-ID
    //-> Status 10/20 
                    $call = (object) array();
                    $calls->{$callmon[2]} =& $call;  //Eintrag löschen/generieren
                    if ($callmon[1] == 'CALL') {
                        $call->Type = 10;
                        $call->OwnNumber = $callmon[4];
                        $call->ExtNumber = $callmon[5];
                        $call->Port = $callmon[6];
                        $call->Device = $callmon[3];
                    } else {
                        $call->Type = 20;
                        $call->OwnNumber = $callmon[4];
                        $call->ExtNumber = $callmon[3];
                        $call->Port = $callmon[5];
                        $call->Device = 0;
                    };
                    $call->ExtName = 'unknown';
                    $call->Duration = 0;
                    $call->Date = $callmon[0];
    //-> Insert Datenbank
                      $query = "INSERT INTO anrufe (Date,Type,OwnNumber,ExtNumber,Device) VALUES('".
                            $call->Date."',".$call->Type.",'".$call->OwnNumber."','".$call->ExtNumber."',".$call->Device.")";
                      $result = mysql_query($query,$con);
                    if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   INSERT: '.$query);
                    $call->Id = mysql_insert_id();
                    break;
                case 'CONNECT':
    //CONNECT bedeutet es wurde eine Verbindung aufgebaut
    //Ermitteln des richtigen Calls anhand der ID
                    $call =& $calls->{$callmon[2]};
    //-> Status 15/25
                    if ($call->Type == 10) {
                        $call->Type = 15;
                    } else {
                        $call->Type = 25;
                    };
                    $call->Date = $callmon[0];
                    $call->Device = $callmon[3];
    //-> Update Datenbank
                      $query = "UPDATE anrufe SET Type = ".$call->Type.", Date = '".$call->Date."', Device = ".$call->Device." WHERE ID = ".$call->Id;
                      $result = mysql_query($query,$con);
                    if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   UPDATE: '.$query);
                    break;
                case 'DISCONNECT':
    //DISCONNECT bedeutet es wurde eine Verbindung abgebaut
    //Ermitteln des richtigen Calls anhand der ID
                    $call =& $calls->{$callmon[2]};
    //-> Status 16/26 wenn vorher CONNECTED
    //-> Status 17/27 wenn vorher nicht CONNECTED (missed)
                    switch ($call->Type) {
                    case 10:
                        $call->Type = 16;
                        break;
                    case 20:
                        $call->Type = 26;
                        break;
                    case 15:
                        $call->Type = 17;
                        break;
                    case 25:
                        $call->Type = 27;
                        break;
                    };
                    $call->Duration = $callmon[3];
    //-> Update Datenbank
                      $query = "UPDATE anrufe SET Type = ".$call->Type.", Duration = ".$call->Duration." WHERE ID = ".$call->Id;
                      $result = mysql_query($query,$con);
                    if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   UPDATE: '.$query);
                    break;
                };
    // abhängige Texte / Icons ergänzen
    // Device
                $liste = explode('|',$E[5]['value']);
                $index = array_search($call->Device,$liste);
                if (!is_numeric($index)) $index = array_search('NULL',$liste);
                if (is_numeric($index)) {
                    $call->DeviceName = $liste[$index+1];
                    if     (!property_exists($call,'DeviceIcon') || !(strpos($liste[$index+2],$call->DeviceIcon) === 0)) {
                        $query = "SELECT suffix FROM edomiProject.editVisuImg where id =".$liste[$index+2];
                        $result = mysql_query($query,$con);
                        $ext = mysql_fetch_row($result);
                        $call->DeviceIcon = $liste[$index+2].'.'.$ext[0];
                    };
                };
    // eigene Nummer
                $liste = explode('|',$E[6]['value']);
                $index = array_search($call->OwnNumber,$liste);
                if (!is_numeric($index)) $index = array_search('NULL',$liste);
                if (is_numeric($index)) {
                    $call->OwnName = $liste[$index+1];
                    if     (!property_exists($call,'OwnIcon') || !(strpos($liste[$index+2],$call->OwnIcon) === 0)) {
                        $query = "SELECT suffix FROM edomiProject.editVisuImg where id =".$liste[$index+2];
                        $result = mysql_query($query,$con);
                        $ext = mysql_fetch_row($result);
                        $call->OwnIcon = $liste[$index+2].'.'.$ext[0];
                    };
                };
    // Anruftyp            
                $liste = explode('|',$E[7]['value']);
                $index = array_search($call->Type,$liste);
                if (!is_numeric($index)) $index = array_search('NULL',$liste);
                if (is_numeric($index)) {
                    $call->TypeText = $liste[$index+1];
                    if     (!property_exists($call,'TypeIcon') ||!(strpos($liste[$index+2],$call->TypeIcon) === 0)) {
                        $query = "SELECT suffix FROM edomiProject.editVisuImg where id =".$liste[$index+2];
                        $result = mysql_query($query,$con);
                        $ext = mysql_fetch_row($result);
                        $call->TypeIcon = $liste[$index+2].'.'.$ext[0];
                    };
                };
    //-> Update Datenbank
                  $query = "UPDATE anrufe SET TypeText = '".$call->TypeText."', TypeIcon = '".$call->TypeIcon.
                    "', DeviceName = '".$call->DeviceName."', DeviceIcon = '".$call->DeviceIcon.
                    "', OwnName = '".$call->OwnName."', OwnIcon = '".$call->OwnIcon."' WHERE ID = ".$call->Id;
                  $result = mysql_query($query,$con);
                if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,mysql_error().'   UPDATE: '.$query);
                logic_setOutput($id,1,json_encode($call));
                logic_setOutput($id,2,$call->Id);
                logic_setOutput($id,3,$call->Date);
                logic_setOutput($id,4,$call->Type);
                logic_setOutput($id,5,$call->TypeText);
                logic_setOutput($id,6,$call->TypeIcon);
                logic_setOutput($id,7,$call->Device);
                logic_setOutput($id,8,$call->DeviceName);
                logic_setOutput($id,9,$call->DeviceIcon);
                logic_setOutput($id,10,$call->OwnNumber);
                logic_setOutput($id,11,$call->OwnName);
                logic_setOutput($id,12,$call->OwnIcon);
                logic_setOutput($id,13,$call->ExtNumber);
                logic_setOutput($id,14,$call->ExtName);
                logic_setOutput($id,15,$call->Duration);
                logic_setOutput($id,16,$call->Port);
                if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,'Update Output:'.json_encode($call));
                logic_setVar($id,1,json_encode($calls));
                if ($debug) writeToCustomLog('LBS19000455 Fritz Anrufliste',1,'   speichern: '.json_encode($calls));
            };
            mysql_close($con);    
        }
    }
    ?>
    ###[/LBS]###
    
    
    ###[EXEC]###
    <?
    ?>
    ###[/EXEC]###

    Einen Kommentar schreiben:


  • Winni
    antwortet
    nicht der CallMonitor, sondern LBS19000455 ist das Problem... Ich hab wahrscheinlich eine Lösung, aber kämpfe noch mit meinen anderen Fritzbox Bausteinen unter CentOS7....

    Einen Kommentar schreiben:


  • mars
    antwortet
    Zitat von Winni Beitrag anzeigen
    Wenn noch jemand eine alte ohne sqli hat,...
    Woran kann ich das erkennen? Bei mir (EDOMI 2.0 unter CentOS6.5) läuft der LBS seit langem problemlos.

    Falls es weiterhilft:

    PHP-Code:
    ###[DEF]###
    [name        = Fritzbox CallMonitor    ]

    [e#1    trigger        = Starten #init=0]
    [e#2    important    = IP-Adresse #init=192.168.5.99]
    [e#3    important    = Port #init=1012]
    [e#4    optional    = Nutzung System-KO 15]
    [e#10    optional    = Debugging #init=0]

    [v#1        =     ]
    [v#2        =     ]
    [v#3        =     ]
    [v#10       =     ]

    [a#1        = Baustein läuft]
    [a#2        = RAW-Daten]
    [a#3        = Datum]
    [a#4        = Ruf-Kennung]
    [a#5        = Connection ID]
    [a#6        = Nebenstelle]
    [a#7        = genutzte Nummer]
    [a#8        = angerufene Nummer ]
    [a#9        = Anrufer-Nr ]
    [a#10       = Nummer ]
    [a#11       = Dauer ]
    [a#12       = Port ]
    [a#13       = Tel.-Nr.]




    ###[/DEF]###


    ###[HELP]###

    Baustein zum Lesen der CALLMON Daten einer Fritzbox
    Eingang 1 Starten den Baustein im Hintergrund
    Eingang 2 IP-Adresse der Fritzbox
    Eingang 3 Port des CALLMON
    Eingang 4 Verwendung des System KOs 15 (Eingang 1 auf 0 belassen!)
    Eingang 10 Möglichkeit die LOG-Ausgaben zu steuern

    Der Ausgang 1 gibt 1 zurück, sobald der Baustein im Hintergrund läuft.
    Der Ausgang 2 gibt die RAW-Daten des CALLMON zurück (wird für LBS19000455 verwendet)
    Der Ausgang 3-12 gibt die empfangenen Daten entsprechend der CALLMON-Info einzeln zurück.

    A4 =  CALL RING CONNECT DISCONNET
    A13 = Tel.-Nr. für Rückwärtssuche
    ###[/HELP]###


    ###[LBS]###
    <?
    function LB_LBSID($id) {
        if ($E=logic_getInputs($id)) {
            if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
                if (logic_getVar($id,1)!=1) {    //dieses Konstrukt stellt sicher, dass das EXEC-Script nur einmal gestartet wird
                    logic_setVar($id,1,1);
                    logic_setVar($id,2,$E[2]['value']);
                    logic_setVar($id,3,$E[3]['value']);
                    logic_setVar($id,10,$E[10]['value']);
                    logic_callExec(LBSID,$id);
                }
            };
            if ( (strlen($E[4]['value']) > 10) && ($E[4]['refresh']==1) && ($E[1]['value']==0) ) {
    // System-KO15 auf CallMon Format umformatieren
                $callmon = explode(';',$E[4]['value']);
                $temp = substr($callmon[0],0,6).substr($callmon[0],8,2).' '.$callmon[1];
                $callmon[0] = $temp;
                array_splice($callmon, 1, 2);
                switch($callmon[1]) {    
                case 1:
                    $callmon[1] = 'RING';
                    break;
                case 2:
                    $callmon[1] = 'CALL';
                    break;
                case 3:
                    $callmon[1] = 'CONNECT';
                    break;
                case 4:
                    $callmon[1] = 'DISCONNECT';
                    break;
                };
            $line = implode(';',$callmon);
            logic_setOutput($id,2,$line);
            $info = explode(';',$line);
            $datum = $info[0];
            $kennung = $info[1];
            $Id = $info[2];
            $neben = '';
            $genutzt = '';
            $angerufene = '';
            $anrufer = '';
            $nummer = '';
            $dauer = 0;
            $port = '';
            switch ($kennung) {
            case 'CALL':
                $neben = $info[3];
                $genutzt = $info[4];
                $angerufene = $info[5];
                $port = $info[6];
                $rueck = $angerufene;
                break;
            case 'RING':
                $angerufene = $info[4];
                $anrufer = $info[3];
                $port = $info[5];
                $rueck = $anrufer;
                break;
            case 'CONNECT':
                $neben = $info[3];
                if (count($info) < 5) $info[4] = '';
                $nummer = $info[4];
                break;
            case 'DISCONNECT':
                $dauer = $info[3];
                break;
            };
            logic_setOutput($id,3,$datum);
            logic_setOutput($id,4,$kennung);
            logic_setOutput($id,5,$Id);
            logic_setOutput($id,6,$neben);
            logic_setOutput($id,7,$genutzt);
            logic_setOutput($id,8,$angerufene);
            logic_setOutput($id,9,$anrufer);
            logic_setOutput($id,10,$nummer);
            logic_setOutput($id,11,$dauer);
            logic_setOutput($id,12,$port);
            logic_setOutput($id,13,$rueck);
            if ($debug) {
                writeToCustomLog('LBS19000456 Fritzbox CallMonitor',1,'SystemKO15 '.$line);
            }
            };
        }
    };
    ?>
    ###[/LBS]###


    ###[EXEC]###
    <?
    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
    set_time_limit(0);
    sql_connect();
    $v2 = logic_getVar($id,2);
    $v3 = logic_getVar($id,3);
    $debug = logic_getVar($id,10);
    if ($debug) writeToCustomLog('LBS19000456 Fritzbox CallMonitor',1,'IP '.$v2.' Port '.$v3);
    $client=stream_socket_client("tcp://".$v2.":".$v3, $errno, $errorMessage);
    if ($client === false) {
        writeToCustomLog('LBS19000456 Fritzbox CallMonitor',1,$errorMessage);
    };
    if ($debug) writeToCustomLog('LBS19000456 Fritzbox CallMonitor',1,'gestartet');
    logic_setOutput($id,1,1);
    while(!feof($client)) {
        $line=fgets($client);
        logic_dbKeepalive();
        if (strlen($line) > 10) {
            logic_setOutput($id,2,$line);
            $info = explode(';',$line);
            $datum = $info[0];
            $kennung = $info[1];
            $Id = $info[2];
            $neben = '';
            $genutzt = '';
            $angerufene = '';
            $anrufer = '';
            $nummer = '';
            $dauer = 0;
            $port = '';
            switch ($kennung) {
            case 'CALL':
                $neben = $info[3];
                $genutzt = $info[4];
                $angerufene = $info[5];
                $port = $info[6];
                $rueck = $angerufene;
                break;
            case 'RING':
                $angerufene = $info[4];
                $anrufer = $info[3];
                $port = $info[5];
                $rueck = $anrufer;
                break;
            case 'CONNECT':
                $neben = $info[3];
                $nummer = $info[4];
                break;
            case 'DISCONNECT':
                $dauer = $info[3];
                break;
            };
            logic_setOutput($id,3,$datum);
            logic_setOutput($id,4,$kennung);
            logic_setOutput($id,5,$Id);
            logic_setOutput($id,6,$neben);
            logic_setOutput($id,7,$genutzt);
            logic_setOutput($id,8,$angerufene);
            logic_setOutput($id,9,$anrufer);
            logic_setOutput($id,10,$nummer);
            logic_setOutput($id,11,$dauer);
            logic_setOutput($id,12,$port);
            logic_setOutput($id,13,$rueck);
            if ($debug) writeToCustomLog('LBS19000456 Fritzbox CallMonitor',1,'Event '.$line);
        };
        usleep(1000*25);        //CPU-Last verteilen (die Länge der Pause sollte je nach Bedarf angepasst werden - je länger, desto ressourcenschonender)
    }
    fclose($client);
    logic_setOutput($id,1,0);
    sql_disconnect();
    ?>
    ###[/EXEC]###

    Einen Kommentar schreiben:


  • Winni
    antwortet
    In 0.5 hat sich ein Fehler eingeschlichen.... Ich hab's bemerkt als ich bei mir heute CentOS7 neu aufgesetzt habe.
    Bitte um etwas Geduld, da läuft jetzt leider einiges nicht mehr :-((
    Es wird eine neue Version geben. Wenn noch jemand eine alte ohne sqli hat, die sollte funktionieren. Ich hab leider keine alten Versionen mehr hier.

    Einen Kommentar schreiben:


  • HappyJack
    antwortet
    Bei mir ist es das gleiche, neu geladen und nur das nötigste Verknüpft. Der Start dauert mehrere Minuten und haut Fehler raus am laufenden Band.

    LBS 19000455 liefert folgendes:
    Code:
     
    2019-12-01 16:17:50 032736 9898 1 SELECT * FROM anrufe where id >= 1 order by id asc
    2019-12-01 16:17:50 033461 9898 1 UPDATE anrufe SET Date = '' WHERE ID = 1
    2019-12-01 16:17:50 033890 9898 1 SELECT * FROM anrufe where id >= 2 order by id asc
    2019-12-01 16:17:50 034809 9898 1 UPDATE anrufe SET Date = '' WHERE ID = 2
    2019-12-01 16:17:50 035240 9898 1 SELECT * FROM anrufe where id >= 3 order by id asc
    2019-12-01 16:17:50 035938 9898 1 UPDATE anrufe SET Date = '' WHERE ID = 3
    2019-12-01 16:17:50 036365 9898 1 SELECT * FROM anrufe where id >= 4 order by id asc
    2019-12-01 16:17:50 036912 9898 1 UPDATE anrufe SET Date = '' WHERE ID = 4
    2019-12-01 16:17:50 037298 9898 1 SELECT * FROM anrufe where id >= 5 order by id asc
    2019-12-01 16:17:50 037868 9898 1 UPDATE anrufe SET Date = '' WHERE ID = 5
    2019-12-01 16:17:50 038294 9898 1 SELECT * FROM anrufe where id >= 6 order by id asc
    2019-12-01 16:17:50 038856 9898 1 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1UPDATE anrufe SET Date = '' WHERE ID =
    und Fehlerlog meldet:

    Code:
     
    2019-12-01 16:18:28 914602 MAIN 9761 Prozess LOGIC (PID=9898) beenden ERROR
    Ich möchte aber nicht ausschliessen das der Fehler bei mir liegt, hier meine einfache Logik:
    Anmerkung 2019-12-01 163042.png

    ausgefüllt habe ich nur die IP-Adresse und den CallMonitor der Fritzbox eingeschaltet

    Einen Kommentar schreiben:


  • Blaky1612
    antwortet
    Hab den Baustein und die Logik jetz einmal aus Edomi gelöscht, neu runtergeladen und eingefügt.
    Eine neue Logik erstellt wo nur der eine Baustein ohne Verknüpfungen drin ist, aber es ist der selbe.
    Also denk ich das es keine Schleife ist, sondern wo anders der Fehler liegt.
    Zum testen hab ich auch andere Namen im Eingang Schema vergeben.

    Er haut mir jetzt auch den Fehler Log voll:

    Code:
     
    2019-11-30 17:25:51 751004 ? 5453 Datei: /usr/local/edomi/www/data/liveproject/lbs/LBS19000455.php | Fehlercode: 2 | Zeile: 28 | mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given ERROR
    Zuletzt geändert von Blaky1612; 30.11.2019, 17:31.

    Einen Kommentar schreiben:

Lädt...
X