VBS Codeübersetzung Yamaha AV

emilio20

Level-1
Beiträge
835
Reaktionspunkte
20
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
ich möchte einen Yamaha AV Receiver mit VBS steuern. Ich habe einen Autoit Code der mit WinHTTP Funktioniert. Nun möchte ich diesen in VBS umwandeln.
Hier mal der Autoit Code


Code:
#include <WinHTTP.au3>


Global $port=80
Global $ip="192.168.178.46"
Global $response=""

Global $PostDaten='<YAMAHA_AV cmd="PUT"><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>'


$hOpen = _WinHttpOpen()

$hConnect = _WinHttpConnect($hOpen, $ip, $port)

$hRequest = _WinHttpOpenRequest($hConnect, "POST", "/YamahaRemoteControl/ctrl")


_WinHttpSendRequest($hRequest, 'Content-type: text/xml'&@CRLF, $PostDaten)


_WinHttpReceiveResponse($hRequest)


_WinHttpCloseHandle($hRequest)

_WinHttpCloseHandle($hConnect)

_WinHttpCloseHandle($hOpen)

exit

Mein bisheriger VBS Code funktioniert noch nicht

Code:
Yamaha()


Sub Yamaha()
Dim result 
Dim URL , postData 
Dim winHttpReq 
Set winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")

URL = "http://192.168.178.46:80/YamahaRemoteControl/ctrl"
postDaten="<YAMAHA_AV cmd="PUT"><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>"

winHttpReq.Open "POST", URL, false
winHttpReq.SetRequestHeader "Content-type","text/xml" 
winHttpReq.Send postDaten


End Sub

Es liegt noch ein Fehler in postDaten "PUT" vor die Anführungszeichen habe ich schon mal entfern aber dies funktioniert auch nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
Dim URL , postData 
. . .
postDaten="<YAMAHA_AV cmd="PUT"><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>"
1: ist mit postData und postDaten dasselbe gemeint?
2: statt "PUT" evtl. ""PUT""?
3: was sollen die < und die > bewirken? Wie soll der komplette String aussehen?
 
Hallo
ja sorry was ein Schreibfehler. Habe es mal so abgeändert. Geht aber auch nicht kommt der Fehler
"Der Server liefert eine ungültige Rückmeldung "

3. Das Commando basiert auf einer XML Syntax
https://www.heimkino-praxis.com/yamaha-netzwerk-steuerung/


Code:
Dim result 
Dim URL , postData 
Dim winHttpReq 
Set winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")

URL = "http://192.168.178.46:80/YamahaRemoteControl/ctrl"
postData = "<YAMAHA_AV cmd=""PUT""><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>"

winHttpReq.Open "POST", URL, false
winHttpReq.SetRequestHeader "Content-type","text/xml",postData
winHttpReq.Send 

result = winHttpReq.ResponseText

Ich habe sowas änliches schon mal mit Philips Hue gemacht. Anwort war hier ein Json String. CLIP Api war aber auf dem Gerät selbst
https://www.youtube.com/watch?v=Nh-mDkHZ13Q

Code:
Dim result 
Dim MyURL 
Dim winHttpReq 
Set winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
     
MyURL = "http://192.168.178.48/api/1234567890/lights/1"

winHttpReq.Open "GET", MyURL, False

winHttpReq.Send 

result = winHttpReq.ResponseText


Bei Philips Hue musste ich mir nur die UHL zusammensetzen. Bei Yamaha benötige ich noch das Commando.
z.B der String

Code:
'<YAMAHA_AV cmd="PUT"><Main_Zone><Volume>' .
   '<Lvl><Val>-455</Val><Exp>1</Exp><Unit>dB</Unit></Lvl>' .
   '</Volume></Main_Zone></YAMAHA_AV>'
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
In Autoit wir ein Zeilnumbruch verwendet.
Code:
_WinHttpSendRequest($hRequest, 'Content-type: text/xml'&@CRLF, $PostDaten)
Kann es daran liegen ? In autoit funktioniert der Inhalt auch.
 
Habs hin bekommen
Das postData musste bei winHttpReq.Send rein


Code:
Dim result 
Dim URL , postData 
Dim winHttpReq 
Set winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")

URL = "http://192.168.178.46:80/YamahaRemoteControl/ctrl"
postData = "<YAMAHA_AV cmd=""PUT""><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>"

winHttpReq.Open "POST", URL, false
winHttpReq.SetRequestHeader "Content-type","text/xml"
winHttpReq.Send postData

result = winHttpReq.ResponseText
 
Zuletzt bearbeitet:
Zurück
Oben