Kurz erklären hilft nur, wenn Du Python Experte bist und bereits in der Lage bist Plugins für SmartHomeNG zu schreiben.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Interesse an HomeConnect Plugin?
Einklappen
X
-
Hallo,
ich habe gerade mal hier geschaut:
https://github.com/DavidMStraub/home...nt-homeconnect
ob man sich wg. OAuth bedienen kann.
Das geht da so:
Code:from homeassistant.helpers import config_entry_oauth2_flow
https://github.com/home-assistant/co...oauth2_flow.py
Darin sind aber auch einige home-assistant imports.
Ich weiß nicht, ob es sich lohnt, dort abzugucken, was OAuth angeht.
Anderes vielleicht eher.
Gruß,
Hendrik
Kommentar
-
Ich denke ich bin mit dem pypi paket https://pypi.org/project/homeconnect/ jetzt eine spur weiter.. der oauth prozess scheint ähnlich wie bei withings_health zu sein. Ich versuche mal den prozess nachzuimplementieren und würde das ohne weitere funktionen mal in den develop pushen.
danach schaue ich, was mit der kaffeemaschine geht.. weitere funktionen kann ich derzeit mangels devices aber nicht selber dazubauen.
Update:
Aktuell scheitere ich leider daran, dass der OAUTH2 Prozess einen HTTPS Endpunkt erwartet:
File "/usr/local/lib/python3.7/dist-packages/oauthlib/oauth2/rfc6749/parameters.py", line 262, in parse_authorization_code_response
raise InsecureTransportError()
oauthlib.oauth2.rfc6749.errors.InsecureTransportEr ror: (insecure_transport) OAuth 2 MUST utilize https.
Mein SHNG steht leider nicht direkt bzw. über den ReverseProxy im Internet. Mal sehen, ob die URL tatsächlich erreichbar sein muss. Etwas suboptimal.
Update2: ich habs es jetzt geschafft, die Kaffeemaschine abzufragen. Clou war via
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
das https abzuschalten. Werde das wohl noch dynamisch je nach SHNG Setup dann abschalten oder anlassen.
Update 3: nach einem neustart von SHNG ist zwar das Token gecached, offenbar kann er aber nicht mehr authentifizieren.. ich hoffe, dass man nicht jedes mal theoretisch den oauth prozess via browser bedienen muss..Zuletzt geändert von psilo; 11.05.2021, 15:55.
Kommentar
-
Hallo,
das klingt doch schonmal nicht gut. Danke dafür.
Ich habe mal "nebenan" geschaut:
I was looking for the integration of my HOME CONNECT devices (SIEMENS, but fully compatible with BOSCH), but somehow the integrations needed SSL and/or exposing HA to the web.
Das Auth funktioniert so:
- Register an application. Pick Device flow for OAuth flow.
- Once you start the following sequence, you have 5 minutes to complete it (or you’ll have to restart from here):
- LINUX Console:
- export CLIENT_ID="YOUR_CLIENT_ID"
- curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "client_id=${CLIENT_ID}" https://api.home-connect.com/securit..._authorization | tee tmp.json
- Go to verification_uri in a browser, type in user_code . Log in using your (end user, not developer) Home Connect account and approve.
- export DEVICE_CODE=$(jq -r .device_code tmp.json)
- curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=urn:ietf
arams
auth:grant-type:device_code&device_code=${DEVICE_CODE}&client _id=${CLIENT_ID}" https://api.home-connect.com/security/oauth/token | tee access_token.json
- jq .refresh_token access_token.json
und auch hier Zeile 38
Gruß,
Hendrik
Kommentar
-
henfri Der Auth Workflow via Web geht ja bereits.Das ist ähnlich wie beim Withings Health. Theoretisch muss man den einmal nach der Einbindung des Plugins in SHNG aus dem Webif des Plugins starten und Zugriff erlauben. Danach erhält man Tokens, inkl einem Refresh Token. Der Refresh müsste eigentlich auch schon gehen. Den web Workflow sollte man nur dann wieder brauchen, wenn SHNG so lange "down" ist, dass die Expiry des Tokens überschritten wird.
So lange SHNG läuft, ist alles gut.
Stoppt man nun SHNG und lade ich das Token aus dem JSON wieder rein, sehe ich die Daten. Leider scheitert dann aber die Anfrage an HomeConnect mit dem 401.
Laut Autor der LIB sollte das aber gehen. Vielleicht ists auch nur ein Bug bei mir. Ich versuch mal das was ich habe heute zu pushen. Doku fehlt dann aber noch.
Mal muss als developer bei HomeConnect registriert sein. Einen normalen User braucht man natürlich auch.
Vielleicht kann man ja gemeinsam schauen, woran es hakt.
Kommentar
-
Ich habe gerade alten Code vom Autor der Lib integriert. Dieser scheint zu gehen. Ich teste das jetzt in Ruhe und baue die Implementierung direkt ein, ohne die Lib zu verwenden. Bis heute abend sollte ich eine Version pushen, die dann eure Appliances auflistet. Doku schaffe ich aber noch nicht. D.h. für die Inbetriebnahme müsst ihr etwas mitdenken ;-P
Kommentar
-
Habe es gerade gepusht. Wenn ihr versucht, in der README stehen ein paar Details, was ihr tun müsst. Aber sehr rudimentär. Ihr braucht zusätzlich zu eurem HomeConenct Account noch einen Developer Account, mit dem ihr Client ID und Client Secret anlegt. Diese braucht das Plugin für die Konfiguration.
Bei mir klappt es, dass das Token nach einem Neustart von SHNG "renewed". Wie es sich verhält, wenn SHNG läuft, sehe ich morgen. Bisher sieht man auch nur seine Appliances, man hat keine Items oder ähnliches.
Bitte testen aber bedenkt, dass ich hier keinen großflächigen Support machen kann derzeit. Ich kenne ja die Baustellen. Wenn jemand verständlichere Doku schreiben will: feel free!
Kommentar
-
Im Develop Branch, da wo man sowas hinpusht?
https://github.com/smarthomeNG/plugi...op/homeconnect
PS: der Token Renew geht grade noch nicht. Ist leider etwas doof testbar, da ein Token ca 1 Tag gilt. Ich vermute, sobald ich ein Item im Statusupdate drin habe, sollte er renewen.. So weit bin ich aber noch nicht ganz.
Kommentar
-
Patzi das kann ich Dir nicht beantworten, da ich meist auf relativ neuem Code von SHNG aufbaue und die von Dir genutzt Version nicht kenne und das auch nicht prüfen kann. Mit dem letzten Release solltest Du aber auf der sicheren Seite sein.
Wie gesagt: das Plugin ist auch noch komplett in Entwicklung. Man sollte schon wissen, was man macht ;-)
Kommentar
-
Vorhin habe ich das Thema noch mal ausgegraben und das neue plugin aufgesetzt.
leider kann ich nicht allzuviel erkennen, was das Teil macht, ich habe schon das logging auf DEBUG gesetzt: da scheint etwas zu laufen.
Code:2021-05-18 13:21:06 WARNING lib.smarthome.main -------------------- Init SmartHomeNG 1.8.2.master (5c3f6d20) -------------------- 2021-05-18 13:21:06 WARNING lib.smarthome.main Running in Python interpreter 'v3.7.3 final', from directory /usr/local/smarthome 2021-05-18 13:21:06 WARNING lib.smarthome.main - on Linux-5.10.11-v7l+-armv7l-with-debian-10.8 (pid=21267) 2021-05-18 13:21:06 WARNING lib.smarthome.main - Nutze Feiertage für Land 'DE', Provinz 'NW', benutzerdefinierte(r) Feiertag(e) nicht definiert 2021-05-18 13:21:09 INFO lib.network Initializing a connection to 127.0.0.1 on TCP port 6720 with autoreconnect 2021-05-18 13:21:09 DEBUG lib.network 127.0.0.1 is a valid IP address 2021-05-18 13:21:21 INFO plugins.hue2 Discoverd bridge = {'mac': 'b827eb0f180f', 'ip': '192.168.178.47', 'port': '81', 'friendlyName': 'Philips hue (192.168.178.47)', 'manufacturer': 'Royal Philips Electronics', 'manufacturerURL': 'http://www.philips.com', 'modelDescription': 'Philips hue Personal Wireless Lighting', 'modelName': 'Philips hue bridge 2015', 'modelURL': 'http://www.meethue.com', 'modelNumber': 'BSB002', 'serialNumber': 'b827eb0f180f', 'UDN': 'uuid:2f402f80-da50-11e1-9b23-b827eb0f180f', 'gatewayName': '', 'URLBase': 'http://192.168.178.47:81/', 'version': 'v2', 'datastoreversion': '', 'apiversion': '1.19.0', 'swversion': '9999999999'} 2021-05-18 13:21:21 INFO plugins.hue2 Discoverd bridge = {'mac': '001788762a60', 'ip': '192.168.178.50', 'port': '80', 'friendlyName': 'Philips hue (192.168.178.50)', 'manufacturer': 'Signify', 'manufacturerURL': 'http://www.philips-hue.com', 'modelDescription': 'Philips hue Personal Wireless Lighting', 'modelName': 'Philips hue bridge 2015', 'modelURL': 'http://www.philips-hue.com', 'modelNumber': 'BSB002', 'serialNumber': '001788762a60', 'UDN': 'uuid:2f402f80-da50-11e1-9b23-001788762a60', 'gatewayName': '', 'URLBase': 'http://192.168.178.50:80/', 'version': 'v2', 'datastoreversion': '103', 'apiversion': '1.44.0', 'swversion': '1945091050'} 2021-05-18 13:21:21 INFO plugins.hue2 get_bridgeinfo: self.bridge = {'mac': '001788762a60', 'ip': '192.168.178.50', 'port': '80', 'friendlyName': 'Philips hue (192.168.178.50)', 'manufacturer': 'Signify', 'manufacturerURL': 'http://www.philips-hue.com', 'modelDescription': 'Philips hue Personal Wireless Lighting', 'modelName': 'Philips hue bridge 2015', 'modelURL': 'http://www.philips-hue.com', 'modelNumber': 'BSB002', 'serialNumber': '001788762a60', 'UDN': 'uuid:2f402f80-da50-11e1-9b23-001788762a60', 'gatewayName': '', 'URLBase': 'http://192.168.178.50:80/', 'version': 'v2', 'datastoreversion': '103', 'apiversion': '1.44.0', 'swversion': '1945091050', 'username': '57hrgCztUAnA94-a4w9ymNLyW20Wmm5tCBugeLqj'} 2021-05-18 13:21:21 INFO plugins.hue2 Bridgeinfo for configured bridge '001788762a60' = {'mac': '001788762a60', 'ip': '192.168.178.50', 'port': '80', 'friendlyName': 'Philips hue (192.168.178.50)', 'manufacturer': 'Signify', 'manufacturerURL': 'http://www.philips-hue.com', 'modelDescription': 'Philips hue Personal Wireless Lighting', 'modelName': 'Philips hue bridge 2015', 'modelURL': 'http://www.philips-hue.com', 'modelNumber': 'BSB002', 'serialNumber': '001788762a60', 'UDN': 'uuid:2f402f80-da50-11e1-9b23-001788762a60', 'gatewayName': '', 'URLBase': 'http://192.168.178.50:80/', 'version': 'v2', 'datastoreversion': '103', 'apiversion': '1.44.0', 'swversion': '1945091050', 'username': '57hrgCztUAnA94-a4w9ymNLyW20Wmm5tCBugeLqj'} 2021-05-18 13:21:21 DEBUG plugins.homeconnect WebIf found, callback is homeconnect 2021-05-18 13:21:26 DEBUG lib.network Starting connection cycle for 127.0.0.1 2021-05-18 13:21:26 DEBUG lib.network Connecting to 127.0.0.1 using IPv4 127.0.0.1 on TCP port 6720 with autoreconnect 2021-05-18 13:21:26 INFO lib.network Connected to 127.0.0.1 on TCP port 6720 2021-05-18 13:21:26 DEBUG plugins.hue2 Run method called 2021-05-18 13:21:26 DEBUG plugins.hue2 scheduler_add: name = plugins.hue2.update_bridge, parameters: prio=3, cycle=90 2021-05-18 13:21:26 DEBUG plugins.homeconnect scheduler_add: name = plugins.homeconnect.poll_data, parameters: prio=3, cycle=300 2021-05-18 13:21:26 WARNING lib.smarthome.main -------------------- SmartHomeNG initialization finished -------------------- 2021-05-18 13:21:26 ERROR plugins.smartvisu Removed widget usage (used in # sv_widgets): {'basic.button': 2, 'basic.switch': 10} 2021-05-18 13:21:31 INFO logics.hello Hello World! 2021-05-18 13:21:36 DEBUG plugins.homeconnect Starting update loop
sobald ich das webif in der Administration anklicke kommt diese 500 Fehlermeldung:
homeconnect1.JPG
Kommentar
-
#28
- ich betreibe 1.8.2 master auf einem Raspberry Pi 4
- ja, die beiden Werte habe ich eingetragen, jedoch von meinen früheren Experimenten
kann dies gerne nochmal erneuern, weiß nicht mehr, was ich damals alles gemacht habe.
würde aber im log entspr. Fehlermeldungen erwarten, wenn etwas nicht passt.
Nachtrag:
- habe gerade eine neue Applikation bei HomeConnect registriert und clinetID und clientsecret angepasst.
- was hat es denn mit der "renonnectURL" auf sich; da habe ich einfach was eingetragen.
lande aber immer wieder bei diesem blöden 500; das muss doch was anderes sein, weil ich das ja beim hue2 auch habe.Zuletzt geändert von whe; 18.05.2021, 13:51.
Kommentar
-
whe die redirect uri sieht man im web interface des pluginsm bspw sowas: http://192.168.178.100:1234/plugin/homeconnect.
das ist eine lokale adresse vom plugin auf die einen der oauth prozess dann weiterleitet. Wichtig: diese URI muss NICHT vom Internet aus erreichbar sein. Da wirst Du nur einmal in Deinem lokalen Browser hingeführt, wenn Du den Prozess aus dem Webinterface aus startest.
client id und secret braucht man aber eben initial, um das plugin zu nutzen. wie gesagt: die doku ist noch nicht super, gerne mitwirken..
was für ein fehler steht denn in log, wenn der http 500 kommt?Zuletzt geändert von psilo; 18.05.2021, 14:35.
Kommentar
Kommentar