(Gelöst) Telefonlisten funktionieren nicht mehr TR064 Setting?

Begonnen von Hackstall, 29 Juli 2020, 20:23:22

Vorheriges Thema - Nächstes Thema

wvhn

Der einzige Unterschied, den ich feststelle, wenn ich den Service bei mir aufrufe, ist, dass die Meldung "auth. failed" bei mir nicht erscheint - wohl aber der UPnPError 503. Vielleicht liegt das an Deiner fritz!OS-Version? Ich habe die neueste v7.28 installiert. smartVISU Version ist bei mir v3.1.0. Da Du aber eine gültige Calllist-URL erhältst, würde ich das erstmal nicht beachten.

Welche Versionen friitz!OS und SV hast Du bei Dir laufen und welche PHP-Version?
Bricht die Ausgabe nach dem oben geposteten Code ab, oder wird noch mehr angezeigt?
Gibt das Apache error.log mehr Auskunft?
Was passiert, wenn Du die callist-URL in die Browser-Zeile einfügst? Bei mir kommt dann die Anrufliste in xml-Format.

EDIT : der Aufruf der Calllist muss zeitnah nach dem Anmelden bei der FB erfolgen.

Gruß
Wolfram

Upside_Down

Hallo Wolfram,

vielen Dank für deine Mühen.
Habe Smartvisu 2.9 am laufen und auch die 3.1 testweise.
Fritzbox ist eine 7490 mit der Version 7.27.
PHP Version 7.0.33 auf Nginx als Server
Der gepostete Code ist die gesamte Ausgabe.
Wenn ich die callist-URL in den Browser eingebe, bekomme ich einen 404 Not Found.

Schöne Grüße,

Karl Heinz


wvhn

Hattest Du die Calllist-URL frisch gezogen, bevor Du sie in den Browser eingegeben hast?

http://IP/smartVISU/lib/phone/service/fritz!box_TR-064.php?debug=1
dann unmittelbar die empfangene Callist-URL in die Browser-Zeile kopieren.

Die Anrufliste für den Benutzer fhem ist aktiviert (siehe Screenshot in Antwort #10)?

In v2.9 war noch ein Bug im stream context, der in manchen Umgebungen zu Fehlern geführt hat. Um das richtig zu stellen, musst Du in der ./lib/phone/service/fritz!box_TR-064.php die Zeile 136 ändern in
$GetCallListXml = file_get_contents($url, false, stream_context_create(array('http://' => array('ssl' => $this->context_ssl))));
In v3.1 ist das schon so gefixt. Allerdings benötigt die v3.1 mindestens PHP7.3.2.

Gruß
Wolfram

Upside_Down

#18
Hallo Wolfram,

die Liste ist für den Benutzer aktiviert.
Trotzdem bekomme ich einen 404 wenn ich die Calllist-URL unmittelbar nach Aufruf in die Browser Zeile kopiere.

Wenn ich ins log vom Nginx schaue  denkt sich das auch.

2021/08/01 10:11:58 [error] 644#644: *1742 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function simplexml_load_string() in /var/www/smartVISU/lib/phone/service/fritz!box_TR-064.php:137
Stack trace:
#0 /var/www/smartVISU/lib/phone/service/fritz!box_TR-064.php(187): phone_fritzbox_TR064->TransformCallList()
#1 /var/www/smartVISU/lib/service.php(86): phone_fritzbox_TR064->run()
#2 /var/www/smartVISU/lib/phone/service/fritz!box_TR-064.php(200): service->json()
#3 {main}
  thrown in /var/www/smartVISU/lib/phone/service/fritz!box_TR-064.php on line 137" while reading upstream, client: 192.168.178.67, server: xxxxx.xxx.xx, request: "GET /smartVISU/lib/phone/service/fritz!box_TR-064.php?debug=1 HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "192.168.178.6"



Ich bin ja schon drauf und dran die Fritzbox auf Werkseinstellungen zu setzen.

Schöne Grüße,
Karl Heinz

wvhn

Hm ...
Du solltest Deine DynDNS vielleicht in dem obigen Post anonymisieren. Das bringt mich aber auf die Frage, wie der nginx konfiguriert ist und "wer" sich tatsächlich bei der Fritzbox anmeldet. Das sieht man in der Fritz!Box im Ereignisprotokoll.
Hab jetzt doch mal unter "UPnPError 503 auth. failed" gegoogelt, weil sich das von den Antworten bei mir unterscheidet, aber ich habe noch nichts relevantes gefunden.

Der Service ./lib/phone/service/fritz!box_TR-064.php aus der Version v3.1 läuft übrigens auch unter v2.9. Du kannst ihn einfach rüber kopieren und hast dann schon verbesserte Fehlermeldungen innerhalb von smartVISU.

Gruß
Wolfram

Upside_Down

Habe mir die Version aus der 3.1 rüberkopiert, aber leider ohne Erfolg und auch keine besseren Fehlermeldungen.
Bei der Fritzbox sehe ich im Ereignislog folgendes: " Anmeldung einer App des Benutzers fhem von IP-Adresse 192.168.178.6.

Wenn ich in FHEM direkt tr064 ausführe, klappt das ohne Probleme.

get Fritzbox tr064Command WANPPPConnection:1 wanpppconn1 GetInfo
liefert mir brav die Verbindungsdaten.

Anbei meine Konfiguratio von nginx


server {
        listen 80 default_server;
        listen [::]:80 default_server;
        listen 443 ssl default_server;

        server_name xxxxx.ddns.net;
        ssl_certificate /etc/letsencrypt/live/xxxxx.ddns.net/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/xxxxx.ddns.net/privkey.pem;


        root /var/www;
        index index.php index.html index.htm index.nginx-debian.html;
        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
        location ~ \.php$ {
                 try_files $uri =404;
                 fastcgi_split_path_info ^(.+\.php)(/.+)$;
                 fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                 fastcgi_index index.php;
                 include fastcgi.conf;
                 fastcgi_read_timeout 600;
         }
         location ~* \.(js|css|png|jpg|jpeg|gif|ico|eot|otf|ttf|woff)$ {
                 access_log off; log_not_found off; expires 30d;
         }
         location = /robots.txt { access_log off; log_not_found off; }
         location ~ /\. { deny all; access_log off; log_not_found off; }
location /radicale/ { #Der / am Ende ist wichtig!
                proxy_pass        http://localhost:5232/; #Der / am Ende ist wichtig!
                include proxy_params;
                proxy_set_header  X-Script-Name /radicale;
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass_header Authorization;
                proxy_ssl_certificate         /etc/letsencrypt/live/xxxxx.ddns.net/fullchain.pem;
                proxy_ssl_certificate_key     /etc/letsencrypt/live/xxxxx.ddns.net/privkey.pem;
        }
        }



wvhn

Tut mir leid. Mir gehen die Ideen aus. Du kannst mir gerne per PN einen Link auf eine Dropbox mit Deiner kompletten Smartvisu-Installation (smartVISU-Ordner mit allen Unterordnern) schicken. Dann kann ich die mal auf meinem Testsystem laufen lassen und überprüfen.

Gruß
Wolfram

Upside_Down

Hallo Wolfram,

danke für deine Unterstützung.
Ich habe es jetzt gefunden.
Habe php 7.4 installiert und schon bekomme ich die Liste.

Schöne Grüße,

Karl Heinz

wvhn

Super.  Danke für die Info.
Noch eine blöde Frage: war das ein Zufallstreffer, oder hattest Du die Lösung (und eine Erklärung dazu) irgendwo gefunden?
Hintergrund der Frage: der Service lief schon unter PHP 5.6 und ich würde gerne verstehen, was zu dem ,,Ausfall" geführt hat, um ggfs. die Programmierung robuster zu gestalten.

Danke und Gruß
Wolfram

Upside_Down

Hallo Wolfram,

das war ein Zufallstreffer. Habe einfach aus Verzweiflung 7.4 installiert und jetzt rennt es. Vielleicht deinstalliere ich die 7.0 und installiere neu um zu prüfen ob vielleicht die 7.0 einen Fehler in der Installation hatte.

Schöne Grüße,

Karl Heinz