Hallo Sirius3, das geht ja echt schnell bei dir.
zum Glück ist heute Freitag und ich kann zeitig in der Arbeit gehen.
Jetzt bin ich am PC mit den scripten:
Hier mal die nr. 1. Das wäre das was eine Verbindung zum Lautsprecher aufbauen kann.
Code: Alles auswählen
# -*- coding: utf-8 -*-
import websocket
import thread
import time
from hashlib import sha1
import hmac
import urllib
def on_connectionState():
print ("update vom Bose")
return()
## Ab hier ist der Socket aufgebaut und die Antworten können ausgewertet werden.
def on_Bose_message(Bose_ws, message):
##deviceID //Herausfinden um die richtige URL anzusprechen.
deviceID = message[message.find("deviceID=")+10:message.find("'",message.find("deviceID=")+10)]
##updated //message kürzen auf die noch verbleibende nutzinfo
updated = message[message.find("<updates deviceID")+33:message.find("</updates>")]
##whoUpdated //Herausfinden was Upgedated wurde
whoUpdated = updated[1:updated.find("Updated")]
if whoUpdated == "connectionState":
on_connectionState()
else:
print ("es geht um etwas anders")
def on_Bose_error(Bose_ws, error):
print(error)
def on_Bose_close(Bose_ws):
print ("closed")
def on_Bose_open(Bose_ws):
print('opened')
if __name__ == "__main__":
websocket.enableTrace(True)
Bose_ws = websocket.WebSocketApp("ws://192.168.41.40:8080",
subprotocols = ["gabbo"],
on_message = on_Bose_message,
on_error = on_Bose_error,
on_close = on_Bose_close)
Bose_ws.on_open = on_Bose_open
Bose_ws.run_forever()
Das hier ist die Verbindung zum Miniserver
Code: Alles auswählen
# -*- coding: utf-8 -*-
import websocket
import thread
import time
from hashlib import sha1
import hmac
import urllib
def on_Lox_message(Lox_ws, message):
# Autentifizierung und struktuerdatei downloaden
if message.find("LL")!= -1:
control = message[message.find("\"",message.find("control")+9)+1:message.find("/",message.find("control")+9)]
if control == "jdev":
key = message[message.find("\"",message.find("value")+7)+1:message.find("\",",message.find("value")+7)]
raw_key = key.decode('hex')
raw = "admin:admin" #Benutzer und Passwort
hashed = hmac.new(raw_key, raw, sha1)
encoded = hashed.digest().encode("hex").rstrip('\n')
encoded = '%s%s' % ("authenticate/", encoded)
Lox_ws.send(encoded)
elif control == "authenticate":
Lox_ws.send("jdev/sps/enablebinstatusupdate")
elif control =="dev":
print ("jetzt kommt der download")
Lox_ws.send("data/LoxAPP3.json")
else:
raw_message = message.encode('hex')
#Testknopf auswerten
if raw_message == "4e29570e3f008413ffff1239b12ff514000000000000f03f":
print("test = Ein")
elif raw_message == "4e29570e3f008413ffff1239b12ff5140000000000000000":
print("test = Aus")
print ("fertig")
return()
def on_Lox_error(Lox_ws, error):
print (error)
def on_Lox_close(Lox_ws):
print ("### closed ###")
def on_Lox_open(Lox_ws):
print ("Key anfordern:")
Lox_ws.send("jdev/sys/getkey")
if __name__ == "__main__":
websocket.enableTrace(True)
Lox_ws = websocket.WebSocketApp("ws://192.168.41.130:80/ws/rfc6455",
subprotocols = ["remotecontrol"],
on_message = on_Lox_message,
on_error = on_Lox_error,
on_close = on_Lox_close)
Lox_ws.on_open = on_Lox_open
Lox_ws.run_forever()
und hier noch die Variante wo ich versucht habe beides in 1 zu mischen. es sind zwei Kommentare enthalten was ich versucht habe und was die Ergebnisse dabei waren.
Code: Alles auswählen
# -*- coding: utf-8 -*-
import websocket
import thread
import time
from hashlib import sha1
import hmac
import urllib
def on_Lox_message(Lox_ws, message):
# Autentifizierung und struktuerdatei downloaden
if message.find("LL")!= -1:
control = message[message.find("\"",message.find("control")+9)+1:message.find("/",message.find("control")+9)]
if control == "jdev":
key = message[message.find("\"",message.find("value")+7)+1:message.find("\",",message.find("value")+7)]
raw_key = key.decode('hex')
raw = "admin:admin" #Benutzer und Passwort
hashed = hmac.new(raw_key, raw, sha1)
encoded = hashed.digest().encode("hex").rstrip('\n')
encoded = '%s%s' % ("authenticate/", encoded)
Lox_ws.send(encoded)
elif control == "authenticate":
Lox_ws.send("jdev/sps/enablebinstatusupdate")
elif control =="dev":
print ("jetzt kommt der download")
Lox_ws.send("data/LoxAPP3.json")
else:
raw_message = message.encode('hex')
#Testknopf auswerten
if raw_message == "4e29570e3f008413ffff1239b12ff514000000000000f03f":
print("test = Ein")
elif raw_message == "4e29570e3f008413ffff1239b12ff5140000000000000000":
print("test = Aus")
print ("fertig")
return()
def on_connectionState():
print ("update vom Bose")
return()
## Ab hier ist der Socket aufgebaut und die Antworten können ausgewertet werden.
def on_Bose_message(Bose_ws, message):
##deviceID //Herausfinden um die richtige URL anzusprechen.
deviceID = message[message.find("deviceID=")+10:message.find("'",message.find("deviceID=")+10)]
##updated //message kürzen auf die noch verbleibende nutzinfo
updated = message[message.find("<updates deviceID")+33:message.find("</updates>")]
##whoUpdated //Herausfinden was Upgedated wurde
whoUpdated = updated[1:updated.find("Updated")]
if whoUpdated == "connectionState":
on_connectionState()
else:
print ("es geht um etwas anders")
#so wird er geöffnet wenn der Bose offen ist. Antworten vom Bose werden aber nicht mehr gesehen
Lox_ws = websocket.WebSocketApp("ws://192.168.41.130:80/ws/rfc6455",
subprotocols = ["remotecontrol"],
on_message = on_Lox_message,
on_error = on_Lox_error,
on_close = on_Lox_close)
Lox_ws.on_open = on_Lox_open
Lox_ws.run_forever()
def on_Lox_error(Lox_ws, error):
print (error)
def on_Lox_close(Lox_ws):
print ("### closed ###")
def on_Lox_open(Lox_ws):
print ("Key anfordern:")
Lox_ws.send("jdev/sys/getkey")
def on_Bose_error(Bose_ws, error):
print(error)
def on_Bose_close(Bose_ws):
print ("closed")
#hier wird er erst geöffnet wenn Bose geschlossen
def on_Bose_open(Bose_ws):
print('opened')
if __name__ == "__main__":
websocket.enableTrace(True)
Bose_ws = websocket.WebSocketApp("ws://192.168.41.40:8080",
subprotocols = ["gabbo"],
on_message = on_Bose_message,
on_error = on_Bose_error,
on_close = on_Bose_close)
Bose_ws.on_open = on_Bose_open
Bose_ws.run_forever()
#So wird er gar nicht geöffnte wenn der Bose geschlossen wurde......
Lox_ws = websocket.WebSocketApp("ws://192.168.41.130:80/ws/rfc6455",
subprotocols = ["remotecontrol"],
on_message = on_Lox_message,
on_error = on_Lox_error,
on_close = on_Lox_close)
Lox_ws.on_open = on_Lox_open
Lox_ws.run_forever()
Ich hoffe man kann über die sonstigen schönheitsmankos im Code ein bisschen hinwegsehen

.
Danke