Hallo
ich würde gerne mit Autoit eine Fritz DECT 200 Steckdose schalten. Hierzu gibt es eine API
http://avm.de/fileadmin/user…P-Interface.pdf
Wie kann ich also die anfrage als Http Get request senden ?
Hallo
ich würde gerne mit Autoit eine Fritz DECT 200 Steckdose schalten. Hierzu gibt es eine API
http://avm.de/fileadmin/user…P-Interface.pdf
Wie kann ich also die anfrage als Http Get request senden ?
Wo ist das Problem? Du hast doch bereits mindestens 2 andere Threads erstellt in denen es ebenfalls um die Automatisierung von Webseiten ging. Ohne diese Threads nochmal gelesen zu haben würde ich vermuten, dass du sowohl auf die Funktionen der ie.au3 als auch auf die UDF winhttp.au3 hingewiesen wurdest. Für einfache GET Requests braucht man aber nicht wirklich die winhttp.au3 und prinzipiell noch nicht einmal die ie.au3. Man kann stattdessen auch einfach nur die URL im Standardbrowser öffnen oder was vielleicht noch wesentlich eleganter wäre wäre wohl der Einsatz von inetread.
EDIT:
Man sollte AVM vielleicht auch mal darauf hinweisen, das die externe Referenz bzgl. dem Aufbau der SID in ihrer Dokumentation auf einen nicht (mehr) existierenden Link verweist...
ok dann liegt es wohl doch an der Sensor id warum ich die Steckdose nicht schalten kann. Ich wusste nicht genau was mit http get request gemeint ist.
Dann muss ich mal schauen warum es nicht geht.
SID steht nicht für Sensor ID sondern für Session ID. Dieser Teil des GET commandos wird sich also vermutlich bei jedem Aufruf der API ändern. Ohne Dokumentation der Session ID kann man aber kaum etwas dazu sagen wie man diese erhält/ermittelt oder ob man diesen Parameter überhaupt zwingend angeben muss. Die AIN ist wohl eher das was du unter Sensor ID verstehst und identifiziert das zu steuernde Gerät.
Habe was gefunden. Hier fehlt aber doch die DECT 200
http://www.autoitscript.com/forum/topic/13…ox-from-autoit/
Wlan Aus und An habe ich getestet und geht. SID wir auch ausgelesen
Hallo
ich habe die API im FB_Tool angepasst
Func _FB_GetRequestDECT200($Kommando)
_FB_Logfile("Executing GetRequestDECT200", 3)
;_ArrayDisplay($fields)
$mode = "GET"
$result =_FB_Request('//webservices/homeautoswitch.lua?ain=087410622157&switchcmd='&$Kommando&'&sid=' & _FB_GetSID(), "GET")
if $Kommando = 'getswitchpower' THEN
_FB_Logfile('wert')
EndIf
Return $result
EndFunc ;==>_FB_GetRequest
Hiermit kann ich die Steckdosen steueurn.
Wie kann ich eime http.responseText empfangen ?
Verwende die WinHttp.include
Naja ich würde mal vermuten, dass die Funktion _FB_Request() dir genau das zurückgibt was die FB auf dein GET antwortet. Sprich das was du suchst dürfte wohl in der Variable $result stehen, zumindestens wenn dein Request erfolgreich war.
Hallo
nein eben nicht erhalte von $result nur den wert 0. Es musste aber der Stromverbrauch von ca 30 herauskommen.
hier noch mal die Funktionen
[autoit]
Func _FB_GetRequestDECT200($Kommando)
_FB_Logfile("Executing GetRequestDECT200", 3)
;_ArrayDisplay($fields)
$mode = "GET"
$result =_FB_Request('//webservices/homeautoswitch.lua?ain=087610122457&switchcmd='&$Kommando&'&sid=' & _FB_GetSID(), "GET")
if $Kommando = 'getswitchpower' THEN
_FB_Logfile('wert'&$result& @CRLF)
EndIf
Return $result
EndFunc
;do the actual request withnthe FB
Func _FB_Request($page, $fields, $mode = "GET")
_FB_Logfile("Executing _FB_Request", 3)
$mode = StringUpper($mode)
If $mode <> "POST" And $mode <> "GET" Then
_FB_Logfile("Error: _FB_Request called with wrong mode parameter: " & $mode)
SetError(1)
Return ""
EndIf
If UBound($fields) >= 1 And $mode = "GET" Then;add post fields if any
_FB_Logfile(UBound($fields) & " fields found, adding query to request", 3)
$page = $page & _FB_HttpBuildQuery($fields)
EndIf
If $enable_remote_config = 1 Then;when ssl is used add flag
_FB_Logfile("Using SSL mode", 3)
$hRequest = _WinHttpOpenRequest($hConnect, $mode, $page, Default, Default, "*/*", BitOR($WINHTTP_FLAG_SECURE, $WINHTTP_FLAG_ESCAPE_DISABLE))
Else
$hRequest = _WinHttpOpenRequest($hConnect, $mode, $page, Default, Default, "*/*")
EndIf
If @error Or $hRequest = 0 Then
_FB_Logfile("Error: _WinHttpOpenRequest failed")
Return ""
EndIf
If $enable_remote_config = 1 And $use_lua_login = 0 Then;when ssl is used and old login methode is active, add basic auth
$scResult = _WinHttpSetCredentials($hRequest, $WINHTTP_AUTH_TARGET_SERVER, $WINHTTP_AUTH_SCHEME_BASIC, $remote_config_user, $remote_config_password)
If @error Or $scResult = 0 Then
_FB_Logfile("Error: _WinHttpSetCredentials failed")
Return ""
EndIf
EndIf
If $enable_remote_config = 1 And $check_cert = 0 Then;when ssl is used and we do not want to chech the certificate for validity, we add options to ignore errors
$allow_unknownCA_wrongCN = BitOR($SECURITY_FLAG_IGNORE_UNKNOWN_CA, $SECURITY_FLAG_IGNORE_CERT_CN_INVALID)
$soResult = _WinHttpSetOption($hRequest, $WINHTTP_OPTION_SECURITY_FLAGS, $allow_unknownCA_wrongCN);handle invalid ssl cerificate used by fritzbox
If @error Or $soResult = 0 Then
_FB_Logfile("Error: _WinHttpSetOption failed with code " & @error)
Return ""
EndIf
EndIf
If UBound($fields) >= 1 And $mode = "POST" Then;add post fields if any
_FB_Logfile(UBound($fields) & " fields found, adding query to request", 3)
$srResult = _WinHttpSendRequest($hRequest, "Content-Type: application/x-www-form-urlencoded" & @CRLF, _FB_HttpBuildQuery($fields))
Else
$srResult = _WinHttpSendRequest($hRequest)
EndIf
If @error Or $srResult = 0 Then
_FB_Logfile("Error: _WinHttpSendRequest failed")
Return ""
EndIf
$RecResResult = _WinHttpReceiveResponse($hRequest)
If @error Or $RecResResult = 0 Then
_FB_Logfile("Error: _WinHttpReceiveResponse failed")
Return ""
EndIf
Local $result = ""
While _WinHttpQueryDataAvailable($hRequest)
Local $sChunk = _WinHttpReadData($hRequest)
If @error Then ExitLoop
$result &= $sChunk
WEnd
If $result = "" Then
_FB_Logfile("Error: _WinHttpReadData failed")
Return ""
EndIf
_WinHttpCloseHandle($hRequest)
If @error Or $result = "" Then
_FB_Logfile("Error: GetRequest failed")
Else
FileDelete(@ScriptDir & "\Request.txt")
_FB_Logfile("Response: " & $result, 3, @ScriptDir & "\Request.txt")
EndIf
Return $result
EndFunc ;==>_FB_Request
Kann mir jemand sagen wie ich die antort erhalten kann ?
nein eben nicht erhalte von $result nur den wert 0. Es musste aber der Stromverbrauch von ca 30 herauskommen.
also ich würde zum Testen mal einen Fön oder Wasserkocher mit ca. 1000 Watt an diese Steckdose hängen und nicht einen Verbraucher, der 30 Milliwatt "zieht".
Btw. ermittelt getswitchpower die Leistung und nicht den Strom....
Hallo
habe ich gemacht auch der wert 0.
Welcher befehl in WinHttp liest den "http.responseText" rückgabewert aus ?