ich versuche nun schon seit ein paar Tagen via API / WebSocket auf den Miniserver zuzugreifen. Leider bisher ohne Erfolg. Das Forum oder andere Stellen im Internet schweigen sich auch dazu aus, wie das am besten geht, oder ich habe bis dato einfach falsch gesucht.
Gefunden habe ich das offizielle Dokument von Loxone, aber das hat mich auch nicht weiter nach vorne gebracht.
Zudem ein guten Ansatz aus dem Forum, aber da bekomme ich selbst auch immer ein HTTP 401 Unauthorized.
Hatte versucht das Skript auch mal anzupassen, aber wie gesagt, ich sehe entweder den Wald vor lauter Bäumen nicht, oder in meinem Kopf ist es einfach dunkel ;-)
import urllib.request
from hashlib import sha1
import hmac
import json
import codecs
base_url="https://<adresseDesMiniservers>"
pw = "<benutzerkennwort>"
user ="<benutzer>"
uuid="<uuid des Benutzers>"
### STEP1: acquire Key and salt
r = urllib.request.urlopen(base_url+"/jdev/sys/getkey2/<benutzer>")
jm = json.loads(r.read())
key=jm['LL']['value']['key']
salt=codecs.decode(jm['LL']['value']['salt'],'hex')
print("key",key)
print("key_hex",codecs.decode(key,'hex'))
print("salt",salt)
print("salt_hex",salt)
### STEP2: generate PwHash
hash=pw+":"+codecs.decode(salt)
print("to be hashed",hash)
hashed = hmac.new(codecs.decode(key,'hex'), hash.encode(), sha1)
hashed_upp=str.upper(hashed.hexdigest())
print("PWhash finished :",hashed_upp)
### STEP3: generate USER:PwHash
user_pwhash="<benutzer>"+":"+hashed_upp
hashed = hmac.new(codecs.decode(key,'hex'), user_pwhash.encode(), sha1)
hashed_hex=hashed.hexdigest()
print("user:pwhash HASH: finished :",hashed_hex)
### STEP4: Get Token URL
build_url="/jdev/sys/gettoken/"+hashed_hex+"/"+user+"/2/"+uuid+"/pypy"
url=base_url+build_url
print("URL:",url)
r = urllib.request.urlopen(url)
jm = json.loads(r.read())
print(jm)
Viele Grüße & besten Dank
Frank
Kommentar