[Neues Modul] 74_AutomowerConnect, Husqvarnas OpenAPI

Begonnen von Ellert, 17 Januar 2023, 14:33:07

Vorheriges Thema - Nächstes Thema

Ellert

Morgen im Update:
Weniger Nebenefekte bei ungeplanten Auslesen der API-Daten
Events bei mower_wsEvent update, statt change.
Nutzung differentieller Daten beim Update der Karte überarbeitet.
Die Behandlung von disabled verbessert.

towag

Hallo

Vor einigen Tagen habe ich diesen 403 bemerkt.
Einen AccessToken bekomme ich und auch die Status-Abfragen mit den Attributen "mower_activity, ..:" funktionieren.
Was nicht mehr funktioniert ist die Darstellung der Bewegungen des Mower in der Map.

2023.06.11 12:32:30 4: AutomowerConnect Mower_315X Set: called with getNewAccessToken
2023.06.11 12:32:30 4: password Keystore handle for Device (Mower_315X) - Read password from file
2023.06.11 12:32:30 4: AutomowerConnect Mower_315X Get: called with ?
2023.06.11 12:32:30 5: AutomowerConnect Mower_315X getMower: header [ Accept: application/vnd.api+json
X-Api-Key: xxxxxxxxxxx
Authorization: Bearer xxxxx
Authorization-Provider: husqvarna ]
2023.06.11 12:32:31 5: HttpUtils url=https://ws.openapi.husqvarna.dev:443/v1 NonBlocking via https
2023.06.11 12:32:31 4: IP: ws.openapi.husqvarna.dev -> 54.216.229.107
2023.06.11 12:32:31 5: HttpUtils request header:
GET /v1 HTTP/1.1
Host: ws.openapi.husqvarna.dev
User-Agent: fhem
Accept-Encoding: gzip,deflate
Sec-WebSocket-Key: +hKrGRhiX+T4AZ/yTHuVxQ==
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Authorization: Bearer xxxxx

2023.06.11 12:32:31 5: AutomowerConnect Mower_315X getMowerResponse: found 0 => Automower 1877e66d-bd91-4671-ab7e-600521df3b27
2023.06.11 12:32:31 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.06.11 12:32:31 5: HttpUtils https://ws.openapi.husqvarna.dev:443/v1: Got data, length: 150
2023.06.11 12:32:31 5: HttpUtils response header:
HTTP/1.1 403 Forbidden
Date: Sun, 11 Jun 2023 10:32:31 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 150
Connection: keep-alive
x-amz-apigw-id: GWZd7EU0joEFruw=
2023.06.11 12:32:31 2: AutomowerConnect Mower_315X wsCb: failed with error: HTTP CODE 403
2023.06.11 12:32:32 3: Opening Mower_315X device wss:ws.openapi.husqvarna.dev:443/v1
2023.06.11 12:33:31 5: HttpUtils url=https://ws.openapi.husqvarna.dev:443/v1 NonBlocking via https
2023.06.11 12:33:31 4: IP: ws.openapi.husqvarna.dev -> 46.137.24.151
2023.06.11 12:33:31 5: HttpUtils request header:
GET /v1 HTTP/1.1
Host: ws.openapi.husqvarna.dev
User-Agent: fhem
Accept-Encoding: gzip,deflate
Sec-WebSocket-Key: CJSDQpExUasv7D4V9dIJnQ==
Connection: Upgrade
Upgrade: websocket
Authorization: Bearer xxxxx
Sec-WebSocket-Version: 13

2023.06.11 12:33:31 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.06.11 12:33:31 5: HttpUtils https://ws.openapi.husqvarna.dev:443/v1: Got data, length: 150
2023.06.11 12:33:31 5: HttpUtils response header:
HTTP/1.1 403 Forbidden
Date: Sun, 11 Jun 2023 10:33:31 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 150
Connection: keep-alive
x-amz-apigw-id: GWZnWHX7DoEFzLA=
2023.06.11 12:33:31 2: AutomowerConnect Mower_315X wsCb: failed with error: HTTP CODE 403


lg
Thomas

Ellert

Ich denke das Problem kannst Du mit den Hinweisen aus #89 lösen.

Depechem

#123
Zitat von: Ellert am 29 Mai 2023, 22:16:23Vielleicht hilft set <name> getNewAccessToken.


ZitatHTTP response code 403
Sieht für mich nach diesem Problem aus(https://developer.husqvarnagroup.cloud/apis/automower-connect-api#websocket):
ZitatIf you get 403 when using Websocket even if the API call works. Try to renew the API key that should do the trick. If you still get 403 check that you get the correct scope when creating the access token (iam:read amc:api). If you don't have the correct scope you need to connect you API key to the Automower API to get the correct scope.

Stimmt der Scope (get InternalData)?

Wenn device_state auf connected steht, dann trift "If you get 403 when using Websocket even if the API call works." zu.

Und dann müssten diese Vorschläge zum Erfolg führen:
ZitatTry to renew the API key that should do the trick. If you still get 403 check that you get the correct scope when creating the access token (iam:read amc:api). If you don't have the correct scope you need to connect you API key to the Automower API to get the correct scope.

renew the API key https://developer.husqvarnagroup.cloud/docs/get-started

Wichtig auch:
Zitatconnect you API key to the Automower API to get the correct scope

Gibt es doppelte Passkey eines Devices in /opt/fhem/FHEM/FhemUtils/uniqueID, nur zur Sicherheit kontrollieren.





Tja nun nach mehreren Tagen der Versuche, gebe ich es vorerst auf.
Egal welche Modulversion (Das Modul erhält ja fast täglich neue Versionen)
- bleibt mein STATE immer auf disconnected
- batteryPercent wird nur nach einem händischen get Update aktualisiert, ansonsten auch nach Tagen keinerlei Aktualisierung der Readings
- es wird kein Mäherpfad mehr auf der Karte angezeigt
- die userreadings funktionieren nicht mehr
- das einzige was funktioniert ist ein "set start" und "set park"
- hat es tagelang mein log mit Fehlermeldungen zugespamt

leider ist mein Englisch nicht die Bohne und in der Programmierung bin ich auch kein Held.

Anfangs war die Anleitung des Moduls per wiki, fhem Forum und commandref zusammen für mich so weit machbar, das es funktioniert hat. Ich hatte eine schöne Karte mit allen Mähpunkten die der Robi abgefahren hat, die Statistik war auch 1a.

Nun durch die vielen Modulupdates trotz lesen aller Forumbeiträge bekomme ich es nicht mehr ans laufen. Da ich behaupte das zwar Neuerungen dokumentiert werden, aber für Leute wie mich nicht vollständig dokumentiert wurden, glaube ich, ist es aktuell echt schwierig ein brauchbares Modul ans laufen zu bekommen.

Dies ist keine Kritik, da alle froh sein können das sich Ellert so für das Modul einsetzt und hilft, aber für Leute wie mich ist es glaub nicht Sinnvoll dieses zu nutzen.
Ich werde in 2-3 Wochen nochmal schauen ob ich es mit einem aktuellen Update ans laufen bekomme.
Nach tagelangen probieren und sogar komplett neu Aufsetzen des Modules, bin ich nun am Ende und genervt.

Vielleicht erbarmt sich ja mal jemand den kompletten Handlungsablauf ins Wiki oder Forum zu schreiben. Evtl. auch mit einer Referenz.

Viele Grüße


Anhand meines Filelogs erkennt man auch das trotz täglichen Mähens nicht geloggt wird.
./log/RasenroboterAM405X-%Y.log RasenroboterAM405X:mower_activity.*|RasenroboterAM405X:mower_errorCode.*|RasenroboterAM405X:mower_errorCodeTimestamp.*|RasenroboterAM405X:mower_errorDescription.*|RasenroboterAM405X:settings_cuttingHeight.*2023-05-30_21:31:58 RasenroboterAM405X mower_activity: PARKED_IN_CS
2023-05-31_09:19:48 RasenroboterAM405X mower_activity: MOWING
2023-05-31_09:49:51 RasenroboterAM405X mower_activity: GOING_HOME
2023-05-31_09:50:06 RasenroboterAM405X mower_activity: NOT_APPLICABLE
2023-05-31_09:50:06 RasenroboterAM405X mower_activity: CHARGING
2023-05-31_09:50:08 RasenroboterAM405X mower_activity: PARKED_IN_CS
2023-06-02_00:58:08 RasenroboterAM405X settings_cuttingHeight: 6
2023-06-02_10:24:54 RasenroboterAM405X mower_activity: CHARGING
2023-06-02_10:43:12 RasenroboterAM405X mower_activity: NOT_APPLICABLE
2023-06-02_10:43:14 RasenroboterAM405X mower_activity: LEAVING
2023-06-02_10:44:00 RasenroboterAM405X mower_activity: MOWING
2023-06-02_11:36:13 RasenroboterAM405X mower_activity: GOING_HOME
2023-06-02_11:41:14 RasenroboterAM405X mower_activity: NOT_APPLICABLE
2023-06-02_11:41:14 RasenroboterAM405X mower_activity: CHARGING
2023-06-02_11:41:17 RasenroboterAM405X mower_activity: PARKED_IN_CS
2023-06-06_07:20:41 RasenroboterAM405X mower_activity: LEAVING
2023-06-06_07:26:28 RasenroboterAM405X mower_activity: MOWING
2023-06-06_08:07:48 RasenroboterAM405X mower_activity: GOING_HOME
2023-06-06_08:11:11 RasenroboterAM405X mower_activity: CHARGING
2023-06-06_09:12:11 RasenroboterAM405X mower_activity: MOWING
2023-06-06_10:00:12 RasenroboterAM405X mower_activity: NOT_APPLICABLE
2023-06-06_10:00:32 RasenroboterAM405X mower_activity: PARKED_IN_CS
2023-06-06_11:01:59 RasenroboterAM405X mower_activity: MOWING
2023-06-06_11:58:09 RasenroboterAM405X mower_activity: GOING_HOME
2023-06-06_12:02:48 RasenroboterAM405X mower_activity: CHARGING
2023-06-06_13:07:01 RasenroboterAM405X mower_activity: MOWING
2023-06-06_14:10:24 RasenroboterAM405X mower_activity: GOING_HOME
2023-06-06_14:16:05 RasenroboterAM405X mower_activity: NOT_APPLICABLE
2023-06-06_14:16:26 RasenroboterAM405X mower_activity: CHARGING
2023-06-06_14:59:14 RasenroboterAM405X mower_activity: PARKED_IN_CS
2023-06-07_07:05:11 RasenroboterAM405X mower_activity: MOWING
2023-06-07_07:54:43 RasenroboterAM405X mower_activity: GOING_HOME
2023-06-07_07:55:52 RasenroboterAM405X mower_activity: CHARGING
2023-06-07_08:57:42 RasenroboterAM405X mower_activity: LEAVING
2023-06-07_09:01:27 RasenroboterAM405X mower_activity: MOWING
2023-06-07_09:56:39 RasenroboterAM405X mower_activity: GOING_HOME
2023-06-07_09:59:56 RasenroboterAM405X mower_activity: NOT_APPLICABLE
2023-06-07_09:59:58 RasenroboterAM405X mower_activity: CHARGING
2023-06-08_00:54:23 RasenroboterAM405X mower_activity: NOT_APPLICABLE
2023-06-08_00:54:23 RasenroboterAM405X mower_errorCodeTimestamp: 2023-06-07 13:41:07
2023-06-08_00:54:23 RasenroboterAM405X mower_errorCode: 10
2023-06-08_00:54:23 RasenroboterAM405X mower_errorDescription: Upside down
2023-06-09_00:53:45 RasenroboterAM405X mower_activity: PARKED_IN_CS
2023-06-09_00:53:45 RasenroboterAM405X mower_errorCodeTimestamp: -
2023-06-09_00:53:45 RasenroboterAM405X mower_errorCode: -
2023-06-09_00:53:45 RasenroboterAM405X mower_errorDescription: -
2023-06-09_07:50:00 RasenroboterAM405X mower_activity: CHARGING
2023-06-10_00:59:23 RasenroboterAM405X mower_activity: PARKED_IN_CS
2023-06-11_16:01:14 RasenroboterAM405X mower_activity: MOWING
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Ellert

#124
@Depechem:
Leider beschreibst Du nur die Situation, ohne Hinweise zu geben, woran Du genau scheiterst.

STATE ist disconnected weil Du Websocket nicht zum laufen bekommst, alles andere ist die Folge davon.

Ich kann das Problem nachstellen, wenn ich die im Developer Portal angelegte Applikation nicht mit der Automower Connect API verbinde.

Also, wo liegt das Problem, dass Du das noch nicht gemacht hast?

Was hast Du auf den verlinkten Seiten nicht verstanden?

Und beantworte bitte die Frage nach dem Scope.

Depechem

Zitat von: Ellert am 11 Juni 2023, 17:38:12@Depechem:
Leider beschreibst Du nur die Situation, ohne Hinweise zu geben, woran Du genau scheiterst.

STATE ist disconnected weil Du Websocket nicht zum laufen bekommst, alles andere ist die Folge davon.

Ich kann das Problem nachstellen, wenn ich die im Developer Portal angelegte Applikation nicht mit der Automower Connect API verbinde.

Also, wo liegt das Problem, dass Du das noch nicht gemacht hast?

Was hast Du auf den verlinkten Seiten nicht verstanden?

Und beantworte bitte die Frage nach dem Scope.


Hallo Ellert,

vielen Dank das Du mir helfen willst.
Also ich denke schon, dass ich dies richtig verbunden habe. Also einfach beide Buttons auf "Connect APIs" klicken. Und dann werden sie siehe Foto angezeigt. Das habe ich seit 2 Wochen. Bringt aber nix
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Depechem

Zitat von: Ellert am 11 Juni 2023, 17:38:12Und beantworte bitte die Frage nach dem Scope.


Link to APIs Husqvarna Developer
Authentification API URL https://api.authentication.husqvarnagroup.dev/v1
Automower Connect API URL https://api.amc.husqvarna.dev/v1
Client-Id d53f4475-1353-4471-a94d-d81c1c9ff1f4
Grant-Type client_credentials
User-Id d8e435c8-a39e-4be3-bace-cf23120da7f9
Provider husqvarna
Scope iam:read amc:api
Token Type Bearer
Token Expires 2023-06-12 01:00:00
Access Token eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjVlZDU2ZDUzLTEyNWYtNDExZi04ZTFlLTNlNDRkMGVkOGJmOCJ9.eyJqdGkiOiIzYjkyZDNlMy0wNjcxLTQzNDctODRhNy1hNjc4NDYwMmNiOTciLCJpc3MiOiJodXNxdmFybmEiLCJyb2xlcyI6W10sImdyb3VwcyI6WyJhbWMiLCJkZXZlbG9wZXItcG9ydGFsIl0sInNjb3BlcyI6WyJpYW06cmVhZCIsImFtYzphcGkiXSwiY2xpZW50X2lkIjoiZDUzZjQ0NzUtMTM1My00NDcxLWE5NGQtZDgxYzFjOWZmMWY0IiwidXNlciI6eyJmaXJzdF9uYW1lIjoiVGhvbWFzIiwibGFzdF9uYW1lIjoiUmVpY2hlbHQiLCJjdXN0b21fYXR0cmlidXRlcyI6e30sImN1c3RvbWVyX2lkIjoiIn0sImlhdCI6MTY4NjUwODg2NCwiZXhwIjoxNjg2NTk1MjY0LCJzdWIiOiJkOGU0MzVjOC1hMzllLTRiZTMtYmFjZS1jZjIzMTIwZGE3ZjkifQ.hHJB-j_Ydzc81ED3JUj5LA7L7N4A6k07Lgc7P_fag3rvKag8rAsi3yY_jthy7pebL6W7b86cpH2bAczg6hpqd5IMGoh9WgxkR38tZi5ae09kxJIs3KfXU8EbFGnQn5wpgtPiG43FSW-qyCrmnTzfoBToOksoEgcqaxjKVmq5R4pCCiYRK6exnXVq_5Xbcbqb2ICOgfyIlThaFMYXeFsXKtiak6xK89VM28doIdRggcrCLub8o4MKRSgH90svlIy8RBYS3grnvz5rXqNP2tyM4mx6PUm9NkMswpKQ7OMtA35bLuXcsnclVYpNu2Ge8KRevVnGJdEddwqnO57r-gKxIgkff0cY8FTTXJae8iw8lajinJRo7cbznU892YlX3gDYBvGJ9T1-yXSPB8u2EqO94IqbQzJzNmqgpLq0gBp-3P6GTpYTiBcR97fguGK7B7F_MksBVT_Cx-FW-VvXiD4KccKBErO6V8f6xrg6ehIY21q1qRloTGLpAGCWbs8F1i4c
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Depechem

Und das ist meine Raw Definition

defmod RasenroboterAM405X AutomowerConnect d53f4475-1353-4471-a94d-d81c1c9ff1f4
attr RasenroboterAM405X chargingStationImagePosition top
attr RasenroboterAM405X icon automower
attr RasenroboterAM405X mapDesignAttributes areaLimitsColor="#ff8000"\
areaLimitsLineWidth="1"\
areaLimitsConnector=""\
propertyLimitsColor="#33cc33"\
propertyLimitsLineWidth="1"\
propertyLimitsConnector="1"\
errorBackgroundColor="#3d3d3d"\
errorFont="14px Courier New"\
errorFontColor="#ff8000"\
errorPathLineColor="#ff00bf"\
errorPathLineDash=""\
errorPathLineWidth="2"\
chargingStationPathLineColor="#999999"\
chargingStationPathLineDash="6,2"\
chargingStationPathLineWidth="1"\
chargingStationPathDotWidth="2"\
otherActivityPathLineColor="#999999"\
otherActivityPathLineDash="6,2"\
otherActivityPathLineWidth="1"\
otherActivityPathDotWidth="4"\
leavingPathLineColor="#33cc33"\
leavingPathLineDash="6,2"\
leavingPathLineWidth="2"\
leavingPathDotWidth="4"\
goingHomePathLineColor="#0099ff"\
goingHomePathLineDash="6,2"\
goingHomePathLineWidth="2"\
goingHomePathDotWidth="4"\
mowingPathDisplayStart=""\
mowingPathLineColor="#ff0000"\
mowingPathLineDash="6,2"\
mowingPathLineWidth="1"\
mowingPathDotWidth="4"\
mowingPathUseDots=""
attr RasenroboterAM405X mapImagePath ./www/images/1map1360x980.webp
attr RasenroboterAM405X mapImageWidthHeight 1360 980
attr RasenroboterAM405X mapImageZoom 0.7
attr RasenroboterAM405X room AutomowerConnect
attr RasenroboterAM405X scaleToMeterXY 73246 100600
attr RasenroboterAM405X userReadings Seriennummer:device_state:.connected {$defs{$name}->{helper}{mower}{attributes}{system}{serialNumber}},\
letzterStandort_1:mower_wsEvent:.positions-event {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{latitude}},\
letzterStandort_2:mower_wsEvent:.positions-event {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{longitude}},\
Kollisionen:connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{numberOfCollisions}},\
Ladezeit:connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalChargingTime}/3600},\
Schneidzeit:connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalCuttingTime}/3600},\
Gesamtfahrzeit:connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalRunningTime}/3600},\
Suchzeit:connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalSearchingTime}/3600},\
Strecke_Tag:connected {$defs{$name}->{helper}{statistics}{currentDayTrack}},\
Flaeche_Tag:connected {$defs{$name}->{helper}{statistics}{currentDayArea}},\
Strecke_Vortag:connected {$defs{$name}->{helper}{statistics}{lastDayTrack}},\
Flaeche_Vortag:connected {$defs{$name}->{helper}{statistics}{lastDayArea}},\
Strecke_Woche:connected {$defs{$name}->{helper}{statistics}{currentWeekTrack}/1000},\
Flaeche_Woche:connected {$defs{$name}->{helper}{statistics}{currentWeekArea}},\
Strecke_Vorwoche:connected {$defs{$name}->{helper}{statistics}{lastWeekTrack}/1000},\
Flaeche_Vorwoche:connected {$defs{$name}->{helper}{statistics}{lastWeekArea}},\
Ladezyklen:connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{numberOfChargingCycles}}
attr RasenroboterAM405X weekdaysToResetWayPoints 0123456
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Ellert

#128
ZitatScope   iam:read amc:api
Das ist o.k.

Ich würde jetzt diesen Hinweis umsetzen:
ZitatTry to renew the API key that should do the trick.

Wie im Dokument Get started unter 2. im Abschnitt Renew Application API Key beschrieben den Button Renew Application Secret anklicken und dann den neuen Application key durch Ändern der FHEM Definition einpflegen und das neue Application Secret setzen. Wobei sich eigentlich nur das Secret ändert und nicht der API Key.

Eventuell vorher ein Update machen, heute gibt es eine Version.

Depechem

#129
Zitat von: Ellert am 12 Juni 2023, 00:06:15
ZitatScope   iam:read amc:api
Das ist o.k.

Ich würde jetzt diesen Hinweis umsetzen:
ZitatTry to renew the API key that should do the trick.

Wie im Dokument Get started unter 2. im Abschnitt Renew Application API Key beschrieben den Button Renew Application Secret anklicken und dann den neuen Application key durch Ändern der FHEM Definition einpflegen und das neue Application Secret setzen. Wobei sich eigentlich nur das Secret ändert und nicht der API Key.

Eventuell vorher ein Update machen, heute gibt es eine Version.

Natürlich versuche ich seit 2 Wochen auch mittels
,,Renew Application Secret"
ohne Erfolg. FHEM auch neu gestartet

Trotzdem habe ich gerade ein Modulupdate gemacht und ein Renew. Wie schon gedacht ohne Besserung.

Wie schon geschrieben, da stimmt irgend etwas nicht

Nach FHEM Neustart im log:
2023.06.12 09:04:56.649 1: PERL WARNING: Use of uninitialized value $statuscode in concatenation (.) or string at lib/FHEM/Devices/AMConnect/Common.pm line 846, <GEN1467> line 1.
2023.06.12 09:04:56.687 1: PERL WARNING: Use of uninitialized value $statuscode in concatenation (.) or string at lib/FHEM/Devices/AMConnect/Common.pm line 847, <GEN1467> line 1.
2023.06.12 09:04:56.687 1: AutomowerConnect RasenroboterAM405X getMowerResponse: $statuscode []
$err [read from https://api.amc.husqvarna.dev:443 timed out],
 $data []
$param->url https://api.amc.husqvarna.dev/v1/mowers

2023.06.12 09:09:04.637 1: RasenroboterAM405X: Can't connect to wss:ws.openapi.husqvarna.dev:443/v1: HTTP CODE 403
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Zergman

Zitat von: Ellert am 09 Juni 2023, 14:26:33Unterscheiden sich die Events im Log von denen die Wscat liefert, wie hier beschrieben https://developer.husqvarnagroup.cloud/apis/automower-connect-api#websocket?

Ich habe es jetzt endlich geschafft, mir die Nachrichten mit wscat anzuschauen. Dabei stellt sich raus, dass bei mir über WebSocket wirklich nur die Status-Events mit der aktuelle Position kommen. Regelmäßige Positionsupdates gibt es bei mir einfach nicht.  :-\
=> Das Modul macht, was es soll und benutzt die Daten, die es bekommt!

Ellert

#131
Zitat von: Zergman am 12 Juni 2023, 11:04:48
Zitat von: Ellert am 09 Juni 2023, 14:26:33Unterscheiden sich die Events im Log von denen die Wscat liefert, wie hier beschrieben https://developer.husqvarnagroup.cloud/apis/automower-connect-api#websocket?

Ich habe es jetzt endlich geschafft, mir die Nachrichten mit wscat anzuschauen. Dabei stellt sich raus, dass bei mir über WebSocket wirklich nur die Status-Events mit der aktuelle Position kommen. Regelmäßige Positionsupdates gibt es bei mir einfach nicht.  :-\
=> Das Modul macht, was es soll und benutzt die Daten, die es bekommt!

Danke für die Rückmeldung.

Du könntest das Problem über die Supportadresse openapi.servicedesk@husqvarnagroup.com melden, vielleicht erreichst Du damit etwas oder erhältst eine Erklärung.

Ellert

Zitat von: Depechem am 12 Juni 2023, 09:25:07
Zitat von: Ellert am 12 Juni 2023, 00:06:15
ZitatScope   iam:read amc:api
Das ist o.k.

Ich würde jetzt diesen Hinweis umsetzen:
ZitatTry to renew the API key that should do the trick.

Wie im Dokument Get started unter 2. im Abschnitt Renew Application API Key beschrieben den Button Renew Application Secret anklicken und dann den neuen Application key durch Ändern der FHEM Definition einpflegen und das neue Application Secret setzen. Wobei sich eigentlich nur das Secret ändert und nicht der API Key.

Eventuell vorher ein Update machen, heute gibt es eine Version.

Natürlich versuche ich seit 2 Wochen auch mittels
,,Renew Application Secret"
ohne Erfolg. FHEM auch neu gestartet

Trotzdem habe ich gerade ein Modulupdate gemacht und ein Renew. Wie schon gedacht ohne Besserung.

Wie schon geschrieben, da stimmt irgend etwas nicht

Nach FHEM Neustart im log:
2023.06.12 09:04:56.649 1: PERL WARNING: Use of uninitialized value $statuscode in concatenation (.) or string at lib/FHEM/Devices/AMConnect/Common.pm line 846, <GEN1467> line 1.
2023.06.12 09:04:56.687 1: PERL WARNING: Use of uninitialized value $statuscode in concatenation (.) or string at lib/FHEM/Devices/AMConnect/Common.pm line 847, <GEN1467> line 1.
2023.06.12 09:04:56.687 1: AutomowerConnect RasenroboterAM405X getMowerResponse: $statuscode []
$err [read from https://api.amc.husqvarna.dev:443 timed out],
 $data []
$param->url https://api.amc.husqvarna.dev/v1/mowers

2023.06.12 09:09:04.637 1: RasenroboterAM405X: Can't connect to wss:ws.openapi.husqvarna.dev:443/v1: HTTP CODE 403

Die Empfehlung lautete: "Try to renew the API key" das Portal bietet nur den Button "Renew Application Secret". Das scheint nicht ausreichend zu sein.

Ich würde jetzt eine weitere Applikation im Portal anlegen und  sie mit der Api verbinden.

Und in FHEM das bestehende Gerät auf disable 1 setzen, dann ist da erstmal Ruhe.

Als nächstes ein neues Gerät ohne weitere Attribute mit dem API Key der 2. Applikation anlegen und das "Application Secret" als client_secret setzen.

Falls das nicht klappt, dann hier ein List des Gerätes und ein vollständiges Log von dem Vorgang posten.

Ellert

Heute im Update:

Der Loglevel von DevIo für Websocketmeldungen kann mit dem Benutzerattribut loglevelDevIo angepasst werden.
Warnings für $statuscode behoben.
Mit den Benutzerattributen timeout.* kann der Timeout für API Aufrufe festgelegt werden, falls es zu häufigen Timeouts kommt. Zusätzlich kann die Antwortzeit gemessen werden. Vorrangig sollten jedoch die Ursachen für eine lange Antwortzeit des API Aufrufs beseitigt werden, solange sie im Bereich des Benutzers liegen. Diese Attribute sind bei einem störungsfreien Betrieb des Moduls nicht erforderlich und werden nicht vom Modul bereitgestellt sondern nur unterstützt. Sie müssen im Bedarfsfall über das Attribut userattr bereitgestellt werden, mehr in der Befehlsreferenz.
Datentransfer für Kartenupdates über FHEMWEB Extension.
Weiter reduzierte Nebeneffekte bei manuellen Datenabrufen von der API.

Nach dem Update und FHEM Restart, muss der Browsercache gelöscht und die Seite neu geladen werden.

Ellert

Ab heute im Update:

Mit dem Attribut addPollingMinIntervall wird zusätzlich zu den Websocketevents die API periodisch abgefragt, wenn ein Statusevent eintritt und mindestens die im Attribut angegebene Zeit in Sekunden seit der letzten Abfrage verstrichen ist. Dadurch werden zusätzlich die Statistikdaten des Mähers aktualisiert. Kurze Intervalle können dazu führen, dass die API gedrosselt wird, wenn 10000 API Aufrufe im Monat überschritten werden. Um die API Abrufe im Blick zu behalten und ggf. gegen zu steuern, zeigt das Reading api_callsThisMonth die im Monat bisher ausgeführten API Aufrufe. Damit sollte das Problem aus #113 zu lösen sein.

Mit dem Attribut addPositionPolling, das nur zusätzlich zum Attribut addPollingMinInterval wirksam ist, werden die GPS Daten statt über Websocket über das Polling bezogen. Das adressiert das Problem aus dem Beitrag #115 bzw. #131.