DECT200 via TR-064 schalten / SOAP

Kukachu

Neuer User
Mitglied seit
27 Aug 2019
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Hi,
ich habe mich über die Entwickler Umgebung bei AVM eingelesen und kann via einer SOAP Anfrage über das TR-064 Protokoll Daten abfragen.
Leider gelingt es mir nicht einen DECT200 zu schalten.
Hier der Code für den SOAP Client:

Code:
$client = new SoapClient(null,array(    'location'        => "http://$ipadresse:49000/upnp/control/x_homeauto",
                                        'uri'            => "urn:dslforum-org:service:X_AVM-DE_Homeauto:1",
                                        'noroot'        => True,
                                        'login'            => $user,
                                        'password'        => $passwort
    ));
$home     = $client3->GetGenericDeviceInfos(new SoapParam(0,"NewIndex"));

Hiermit bekomme ich eine schöne Auflistung über alle Informationen des DECT200.
Leider schaffe ich es nicht den NewSwitchState zu ändern.
Mein Codeschnipsel hierzu lautet:
Code:
$client1->SetSwitch(new SoapParam("13096 0002966","NewAIN"),new SoapParam("ON","NewSwitchState"));

Ich bekomme immer den Fehler:
Fatal error: Uncaught SoapFault exception: [s:Client] UPnPError in C:\xampp\htdocs\fritz.php:76
Stack trace:
#0 C:\xampp\htdocs\fritz.php(76): SoapClient->__call('SetSwitch', Array)
#1 C:\xampp\htdocs\fritz.php(76): SoapClient->SetSwitch(Object(SoapParam), Object(SoapParam))
#2 {main}
thrown in C:\xampp\htdocs\fritz.php on line 76

Was mache ich falsch, bzw. wie lautet die Syntax richtig?
 
Lt. Spec sind in der AIN keine Leerzeichen erlaubt.
 
Ausprobiert ohne Leerzeichen. Fehler ist der selbe! :(
 
Als studierter Techniker liebe ich natürlich Forscherdrang ...
Nur wozu soll die Schaltung der Steckdose (die per DECT geschaltet wird und nicht per Ethernet oder WiFi) mit TR-064 dienen bzw. gut sein?
 
Ich habe es gerade mal bei getestet. Allerdings habe ich meine eigene Umgebung in Perl und kenne nicht, was du benutzt. Aber ich kann dir versichern, dass
SetSwitch funktioniert. Und natürlich mit dem Leerzeichen in der AIN, denn die AIN ist als String definiert und Leerzeichen gehören dazu:
1584545322196.png
Auch wenn du es nicht unmittelbar benutzen kannst, folgendes funktioniert bei mir tadellos:

my $serviceId = 1;
my $service = 'X_AVM-DE_Homeauto'.$serviceId;
my $servicMethod = 'SetSwitch';
if (my $serviceObj = ELA::UPnP::Service::getServiceByIp( $service,$ip ) ) {
$serviceObj->setMethod($servicMethod);
$serviceObj->setParameter( NewAIN => '11657 0019066' );
$serviceObj->setParameter( NewSwitchState => 'ON' );
$serviceObj->sendRequest();
}
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.