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