smartVISU Problem mit Kalender und Anruferliste aus Fritzbox - gelöst

Begonnen von Fistandantilus, 22 April 2015, 20:57:15

Vorheriges Thema - Nächstes Thema

Fistandantilus

So, nachdem ich mich gerade in das Thema smartVISU einarbeite, bin ich bereits auf die ersten Probleme gestoßen:

1. Kalender funktioniert nicht: hier konnte ich dank dieses Threads: http://knx-user-forum.de/forum/supportforen/smartvisu/40313-google-calendar-update-f%C3%BCr-neue-googleapi bereits die Lösung finden

2. Auslesen der Anrufliste eine Fritzbox 7390:
in der FB habe ich einen neuen User angelegt und diesen in der config angegeben, ebenso diesen Link: http://fritz.box:49000/upnp/control/x_contact
Wenn ich die Startseite aufrufe sehe ich weder einen Fehler, noch irgendwelche Einträge (nur die Überschrift). Der Aufruf von http://192.168.1.39/smartvisu/lib/phone/service/fritz!box.php?debug=1 liefert nur:
login
--------------------------------------------------------------------------------

table
--------------------------------------------------------------------------------

data
--------------------------------------------------------------------------------

null


Habt Ihr eine Idee?
Hab schon versucht, die Anmeldung in der Box zu deaktivieren, was aberauch nix gebracht hat.

VG
F.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

Fistandantilus

#1
Kurze Rückmeldung, an der FritzBox liegt es nicht. Ich hab mal die Anleitung von hier: http://knx-user-forum.de/forum/supportforen/smartvisu/38552-fritz-box-telefonliste-via-tr-064 - ab Post 9 durchgeführt. Wenn ich mir dann die callist.lua mit der generierten SID ausgeben lasse, hab ich meine Liste. Vielleicht hilft das, die Ursache in smartvisu schneller zu identifizieren?

VG

PS: Wie bekomme ich Icons im Kalender angezeigt? Hab einen Abfallkalender angelegt und dort alle Termine importiert.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

redlav

Hallo,

hast du zum Thema Kalender das hier http://www.fhemwiki.de/wiki/SmartVisu/ical gesehen.
Ist zwar ein anderer Ansatz, hat aber glaube ich schon in mehreren Installationen funktioniert.

Gruß Norbert

Fistandantilus

#3
Danke für den Tipp, das schau ich mir mal an. Ich dachte, dass funktioniert schon im "Standard". Weißt Du, ob das mit der neuen google API funktioniert, sonst ist dort zusätzlicher Aufwand nötig.

VG
F.

PS: Hat noch jemand für die FritzBox einen Tipp?


Nachtrag: Ich hab gerade mal, die offline.php angeschaut, dort werden icons dargestellt. Basierend darauf werd ich meine googleV3.php anpassen. Fix ein Icon einzutragen ist einfach, es muss nur das array erweitert werden: 'icon' => 'icons/ws/message_garbage.png', Das ganze dann noch dynamisch abhängig vom Titel machen - fertig :)
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

Fistandantilus

#4
So, neuer Stand.
Kalender läuft erstmal, wie er soll:
$icon= '';
if (strpos((string)($entry["summary"]),'Gelbe') !== false)
{
$color = '#c0ef27';
$icon = 'icons/ws/message_garbage.png';
}
else if (strpos((string)($entry["summary"]),'Restabfall') !== false)
{
$color = '#8c290b';
$icon = 'icons/ws/message_garbage.png';
}
else if (strpos((string)($entry["summary"]),'Papier') !== false)
{
$color = '#275cef';
$icon = 'icons/ws/message_garbage.png';
}


Beim Auslesen der Fritzbox bin ich auch weitergekommen. Aufruf per soap funktioniert bestens, aktuell hab ich Anmeldung in der FB deaktiviert, ist im Script also nicht drin:

    $client = new SoapClient(
        null,
        array(
            'location'   => "http://192.168.1.1:49000/upnp/control/x_contact",
            'uri'        => "urn:dslforum-org:service:X_AVM-DE_OnTel:1",
            'soapaction' => "",
            'noroot'     => True
        )
    );

$result = $client->GetCallList();
$result = $result.'&days=5';
$xml = @simplexml_load_file($result);

foreach ($xml->Call as $value) {
  echo $value->Type.'|'.$value->Called.'|'.$value->Caller.'|'.$value->CallerNumber.'|'.$value->Name.'|'.$value->Date.'|'.$value->Duration.'<br>';
}



Das letzte Problem, was es jetzt noch gibt, das ganze in smartVISU zum Laufen zu bekommen. Aber sobald ich versuche die URL per soap abzurufen läuft es nicht mehr. Kommentiere ich die Zeile $url = $client->GetCallList(); aus, steht im array auch mein dummy Eintrag drin:

<?php
/**
 * -----------------------------------------------------------------------------
 * @package     smartVISU
 * @author      Martin Gleiß
 * @copyright   2012
 * @license     GPL [http://www.gnu.de]
 * -----------------------------------------------------------------------------
 */

require_once '../../../lib/includes.php';
require_once 
const_path_system.'phone/phone.php';

/**
 * This class reads the phonelist of an fritz!box phonesystem
 */
class phone_fritzbox extends phone
{
public function run()
{
$this->debug'Fritz!Box Call via Soap');
$client = new SoapClient(
    
null,
    
array(
        
'location'   => "http://fritz.box:49000/igdupnp/control/x_contact",
        
'uri'        => "urn:dslforum-org:service:X_AVM-DE_OnTel:1",
        
'soapaction' => "",
        
'noroot'     => True
    
)
);
$url $client->GetCallList();
$url $url.'&days=5';
$xml = @simplexml_load_file($url);
$i 1;
foreach ($xml->Call as $value) {
                                
$this->data[] = array(
                                        
'pos' => $i++,
                                        
'dir' => $value->Type,
                                        
'date' => $value->Date,
                                        
'number' => $value->Caller,
                                        
'name' => $value->Name,
                                        
'duration' => $value->Duration
);
}

//hier nur noch ein dummy eintrag zu debuggen            
                                
$this->data[] = array(
                                        
'pos' => $i++,
                                        
'dir' => '',
                                        
'date' => '',
                                        
'number' => '123456',
                                        
'name' => 'ich',
                                        
'duration' => '0:02');

}
}


// -----------------------------------------------------------------------------
// call the service
// -----------------------------------------------------------------------------

$service = new phone_fritzbox(array_merge($_GET$_POST));
echo 
$service->json();

?>


Hat irgendjemand eine Idee, wie ich das lösen kann? Verwendet sonst niemand eine FB und smartVISU?

VG
F.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

Fistandantilus

Kurze Nacht (3h  :o),dafür aber die Lösung. Per include funktioniert es. Im Code ist alles noch fest verdrahtet, müsste wieder dynamisch gemacht werden (Username+Password+Server+Anzahl abzufragende Tage) und Fehlerbehandlung einbauen.

das include soap.php:
<?php
    $client 
= new SoapClient(
        
null,
        array(
            
'location'   => "http://192.168.1.1:49000/upnp/control/x_contact",
            
'uri'        => "urn:dslforum-org:service:X_AVM-DE_OnTel:1",
            
'soapaction' => "",
            
'noroot'     => True
        
)
    );

$result $client->GetCallList();
$result $result.'&days=5';
$xml = @simplexml_load_file($result); 

$soap xml2array ($xml);
  
function 
xml2array($xml)
{
    
$arr = array();
 
    foreach (
$xml->children() as $r)
    {
        
$t = array();
        if(
count($r->children()) == 0)
        {
            
$arr[$r->getName()] = strval($r);
        }
        else
        {
            
$arr[$r->getName()][] = xml2array($r);
        }
    }
    return 
$arr;
}
?>



die fritz!box.php
<?php
/**
 * -----------------------------------------------------------------------------
 * @package     smartVISU
 * @author      Martin Gleiß
 * @copyright   2012
 * @license     GPL [http://www.gnu.de]
 * -----------------------------------------------------------------------------
 */

require_once '../../../lib/includes.php';
require_once 
const_path_system.'phone/phone.php';

/**
 * This class reads the phonelist of an fritz!box phonesystem
 */
class phone_fritzbox extends phone
{
        public function 
run()
        {
                        
$this->debug'Fritz!Box Call via Soap');
                        include(
"soap.php");

                        foreach (
$soap as $type => $properties) {
                                if (
$type == 'Call') {
                                        
$i 1;
                                        foreach (
$properties as $type2 => $properties2) {
                                                
$this->data[] = array(
                                                        
'pos' => $i++,
                                                        
'dir' => '',
                                                        
'date' => $soap['Call'][$type2]['Date'],
                                                        
'number' => $soap['Call'][$type2]['Caller'],
                                                        
'name' => $soap['Call'][$type2]['Name'],
                                                        
'duration' => $soap['Call'][$type2]['Duration']);
                                        }
                                }
                        }

        }
}


// -----------------------------------------------------------------------------
// call the service
// -----------------------------------------------------------------------------

$service = new phone_fritzbox(array_merge($_GET$_POST));
echo 
$service->json();

?>



Direction muss noch angepasst werden, dazu hatte ich um 5:00Uhr keine Lust mehr :D Aber ansonsten funktioniert es bestens und ich hoffe hilft auch anderen, war ein ziemlich zäher Weg. Bei anderen scheint es zu funktionieren, oder niemand braucht das Feature, deshalb gab es kaum Infos.

VG
F.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage