ice987987/ioBroker.husqvarna-automower

Feature request

JauntyJosef opened this issue · 34 comments

Feature or idea description

Es wäre praktisch, wenn Meldungen, die unter den Log Daten unter "info", wie zB "No connection between the cloud service and the mower product. Nothing set." oder "Accepted. Command PARKUNTILFURTHERNOTICE Set.", als Datenpunkt im Adapter aufscheinen würden. Dann könnte man diese Meldungen darstellen bzw auswerten ohne die Log Daten extra auswerten zu müssen.

Version of "husqvarna-automower"-adapter

0.3

Additional information & file uploads

No response

wenn der Adapter die Verbindung zu Husqvarna verliert, sollte dieser auf gelb gehen bzw. .metadata.connected auf false. Die letzte Verbindung wird unter metadata.statusTimestamp gelistet.

Alle Befehle werden mittels den GROSSGESCHRIEBENEN Objekte im Ordner .ACTIONS. ... gesendet. Die aktuellen Werte werden anschliessend durch die API zurückgemeldet:

ACTIONS.PARKUNTILFURTHERNOTICE -> .mower.mode` mit "Mower goes home and parks forever. Week schedule is not used. Cannot be overridden with forced mowing."

ACTIONS.CUTTINGHEIGHT -> settings.cuttingHeight

Aus meiner Sicht braucht es keine extra Auswertung eines Logs.

Vielen Dank für deine Antwort.
Ich habe gerade ein Problem mit dem Connect Modul im Mäher. Dieses fällt immer wieder mal aus. metadata.connected bleibt allerdings immer auf true.
Im log sehe ich aber nach dem Senden eines Befehles, die oben beschriebene Meldung. ("No connection between the cloud service and the mower product. Nothing set.")

Welche Adapterversion? Welcher Mäher? welcher Befehl wurde gesendet? komplettes Log?

V 0.3.0
Husqvarna 430x

Wenn man einen Befehl sendet und keine Verbindung mehr zw Cloud und Mäher ist, dann kommt diese Meldung im Log unter "Info":
"No connection between the cloud service and the mower product. Nothing set." Sonst steht nichts.
metadata.connected bleibt auf true.

Wie ist das log dazu auf stufe debug?

Hier ein Bild von dem was ich meine. Ich hoffe, man kann es sehen.
https://ibb.co/k4djYc7

Die Fehlermeldung sehe ich. Die Frage ist was vor und nach dieser Meldung steht, auf Stufe debug.

Das muss ich sicherheitshalber noch einmal beobachten, aber ich habe ich habe sonst keinerlei Eintrag im Log.

Ich habe jetzt die Log Daten gelöscht und den Adapter neu gestartet. Mal sehen ob dan brauchbare Log Einträge kommen.

Also ich habe das in den letzten Tagen beobachtet. Heute in der Nacht ist dann die Verbindung zwischen meinem Mäher und der Cloud wieder abgerissen. Gestern konnte ich den Mäher noch über den Adapter parken. Heute in der Früh um 06:18 Uhr konnte ich ihn allerdings nicht mehr starten. Hier die letzten Log Einträge:

2022-08-31 16:53:40.219 - info: husqvarna-automower.0 (924) Accepted. Command PARKUNTILFURTHERNOTICE Set.
2022-09-01 06:18:10.680 - info: husqvarna-automower.0 (924) No connection between the cloud service and the mower product. Nothing set.

Im Adapter unter metadata.connected steht aber noch true. metadata.Timestamp ist Thu Sep 01 2022 04:55:29 GMT+0200 (Mitteleuropäische Sommerzeit)

Gibts noch mehr Zeilen aus dem log im debug mode?

Nein, dazwischen gibt es keine Log Meldungen.

der accessToken muss seitens des Adapters regelmässig aktualisiert werden, da dieser seitens der API ungültig wird. Nun kann es sein, dass das Timing des sendens der Anfrage ungünstig ist: der Adapter hat noch nicht „gemerkt“ dass der accessToken ungültig ist (darum grün) und die Anfrage kann somit nicht ausgeführt werden. Um diese These zu bestätigen, sollte innerhalb der nächsten 10min nach der Anfrage ab 2022-09-01 06:18:10.680 der accessToken automatisch aktualisiert werden.
Darum: bitte den Adapter auf LOG-Stufe debug stellen und das entsprechende LOG posten.

Nein, es liegt nicht daran, dass der accesstoken ungültig ist. Der Mäher verliert die Verbindung zur Cloud und der Adapter zeigt trotzdem metadata.connected true. Die Verbindung Adapter - Cloud steht, aber Cloud - Mäher nicht.
Es ist auch nach 06:18 Uhr kein accesstoken erneuert worden, sondern ich habe das Connect Modul am Mäher neu gestartet ... danach hat gleich wieder alles richtig funktioniert.

Wenn

der Mäher verliert die Verbindung zur Cloud

bzw.

Die Verbindung Adapter - Cloud steht, aber Cloud - Mäher nicht.

dann ist das nicht ein Problem des Adapters. Wenn die Cloud nicht mitbekommt, dass der Mäher keine Verbindung hat, müsste ein issue bei Husqvarna erstellt werden. Der Adapter holt nur das, was die Cloud seitens Husqvarna zur Verfügung stellt.

Doch, die Cloud bekommt es mit, denn die Husqvarna App zeigt es an.
Wie auch immer, wenn es die API nicht hergibt, dann ist es halt so. Ist halt bei mir vielleicht ein Spezialfall.

Mein ursprünglicher Gedanke war ja auch nur, dass mit die Antwort der API, die auch im Log aufscheint (No connection between the cloud service and the mower product. Nothing set.) vielleicht irgendwie verwerten könnte. Darum hatte ich diesen Issue ja eröffnet.

Ich hab‘ nach wie vor das Gefühl, dass es sich hier um dieses Problem handelt. Ohne ausführliches LOG auf Stufe debug kommen wir hier aber nicht weiter.

Ich würde somit hier schliessen.

Habe den Adapter nun umgestellt (da hatte ich was falsch verstanden - mein Fehler ... sorry)
Falls du noch Interesse hast, kann ich das gerne noch beobachten und posten die Verbindung wieder einmal weg ist. Das passiert leider recht unregelmäßig.

Interesse hab ich schon...

Dann lasse ich jetzt den Adapter mit Debug laufen und warte bis der Mäher sich das nächste Mal "verabschiedet".

Ich habe nicht vergessen, nur der Mäher hat bis dato nie die Verbindung verloren.

kein Problem.
Ich hab‘ noch etwas mit dem Code rumgespielt, evtl. könnte man den entsprechenden Datenpunkt auf false setzen beim Verlust der Verbindung „Cloud-Mäher“. Ggf. sollte/könnte man dies mal noch ausführlich testen wann und wie dieser dann wieder auf true kommt…

Ich habe den letzten Ausfall nun zeitlich eingrenzen können. Bevor ich hier aber die Log Daten poste:
Ich habe mowerID und die Geokoordinaten durch x ersetzt. Könnte sonst noch was in den Log Daten stehen, dass ich hier eventuell nicht öffentlich machen sollte?

ich denke, id und positions zu ersetzen sollte reichen.

Ich habe noch Bearer und API Key mit x ersetzt.

Zur Erklärung: Der Mäher war wegen Regens bis auf weiteres geparkt.
Am 07.09. bis 18:11 Uhr steht noch bei Batterie 100%. Ab 19:02 Uhr steht die Batterie plötzlich bei 0%. Irgendwo in dieser Zeit scheint der Mäher die Verbindung verloren zu haben.
Am 08.09. um 01:06 Uhr wurde durch eine Automation ein "bis auf weiteres Parken" über den Adapter ausgelöst. Da sieht man dann auch die Meldung No connection between the cloud service and the mower product. Nothing set.

Es wäre praktisch, wenn man dies irgendwie in einem Datenpunkt des Adapters ersichtlich machen könnte.

Und hier der Auszug aus der Log Datei:

2022-09-07 17:40:59.216 - debug: husqvarna-automower.0 (924) [sendPingToServer]: WebSocket sends ping to server...
2022-09-07 17:40:59.257 - debug: husqvarna-automower.0 (924) [wss.on - pong]: WebSocket receives pong from server.

2022-09-07 17:43:43.536 - debug: husqvarna-automower.0 (924) [wss.on - message]: {"id":"xxxxxxx","type":"status-event","attributes":{"battery":{"batteryPercent":100},"mower":{"mode":"HOME","activity":"PARKED_IN_CS","state":"RESTRICTED","errorCode":0,"errorCodeTimestamp":0},"planner":{"nextStartTimestamp":0,"override":{"action":null},"restrictedReason":"NOT_APPLICABLE"},"metadata":{"connected":true,"statusTimestamp":1662565423446}}}
2022-09-07 17:43:43.547 - debug: husqvarna-automower.0 (924) [wss.on - message]: {"id":"xxxxxxx","type":"positions-event","attributes":{"positions":[{"latitude":xx.xxxx,"longitude":yy.yyyy}]}}

2022-09-07 17:50:29.217 - debug: husqvarna-automower.0 (924) [sendPingToServer]: WebSocket sends ping to server...
2022-09-07 17:50:29.260 - debug: husqvarna-automower.0 (924) [wss.on - pong]: WebSocket receives pong from server.

2022-09-07 17:57:47.265 - debug: husqvarna-automower.0 (924) [wss.on - message]: {"id":"xxxxxx","type":"status-event","attributes":{"battery":{"batteryPercent":100},"mower":{"mode":"HOME","activity":"PARKED_IN_CS","state":"RESTRICTED","errorCode":0,"errorCodeTimestamp":0},"planner":{"nextStartTimestamp":0,"override":{"action":null},"restrictedReason":"NOT_APPLICABLE"},"metadata":{"connected":true,"statusTimestamp":1662566267172}}}
2022-09-07 17:57:47.267 - debug: husqvarna-automower.0 (924) [wss.on - message]: {"id":"xxxxxx","type":"positions-event","attributes":{"positions":[{"latitude":xx.xxxx,"longitude":yy.yyyy}]}}

2022-09-07 17:59:59.218 - debug: husqvarna-automower.0 (924) [sendPingToServer]: WebSocket sends ping to server...
2022-09-07 17:59:59.262 - debug: husqvarna-automower.0 (924) [wss.on - pong]: WebSocket receives pong from server.

2022-09-07 18:09:29.219 - debug: husqvarna-automower.0 (924) [sendPingToServer]: WebSocket sends ping to server...
2022-09-07 18:09:29.260 - debug: husqvarna-automower.0 (924) [wss.on - pong]: WebSocket receives pong from server.

2022-09-07 18:11:47.409 - debug: husqvarna-automower.0 (924) [wss.on - message]: {"id":"xxxxxx","type":"status-event","attributes":{"battery":{"batteryPercent":100},"mower":{"mode":"HOME","activity":"PARKED_IN_CS","state":"RESTRICTED","errorCode":0,"errorCodeTimestamp":0},"planner":{"nextStartTimestamp":0,"override":{"action":null},"restrictedReason":"NOT_APPLICABLE"},"metadata":{"connected":true,"statusTimestamp":1662567107319}}}
2022-09-07 18:11:47.420 - debug: husqvarna-automower.0 (924) [wss.on - message]: {"id":"xxxxxx","type":"positions-event","attributes":{"positions":[{"latitude":xx.xxxx,"longitude":yy.yyyy}]}}

2022-09-07 18:18:59.220 - debug: husqvarna-automower.0 (924) [sendPingToServer]: WebSocket sends ping to server...
2022-09-07 18:18:59.261 - debug: husqvarna-automower.0 (924) [wss.on - pong]: WebSocket receives pong from server.

2022-09-07 18:28:29.220 - debug: husqvarna-automower.0 (924) [sendPingToServer]: WebSocket sends ping to server...
2022-09-07 18:28:29.261 - debug: husqvarna-automower.0 (924) [wss.on - pong]: WebSocket receives pong from server.

2022-09-07 18:37:59.221 - debug: husqvarna-automower.0 (924) [sendPingToServer]: WebSocket sends ping to server...
2022-09-07 18:37:59.262 - debug: husqvarna-automower.0 (924) [wss.on - pong]: WebSocket receives pong from server.

2022-09-07 18:47:29.221 - debug: husqvarna-automower.0 (924) [sendPingToServer]: WebSocket sends ping to server...
2022-09-07 18:47:29.262 - debug: husqvarna-automower.0 (924) [wss.on - pong]: WebSocket receives pong from server.

2022-09-07 18:56:59.221 - debug: husqvarna-automower.0 (924) [sendPingToServer]: WebSocket sends ping to server...
2022-09-07 18:56:59.263 - debug: husqvarna-automower.0 (924) [wss.on - pong]: WebSocket receives pong from server.

2022-09-07 19:02:51.858 - debug: husqvarna-automower.0 (924) [wss.on - message]: {"id":"xxxxxx","type":"status-event","attributes":{"battery":{"batteryPercent":0},"mower":{"mode":"HOME","activity":"PARKED_IN_CS","state":"RESTRICTED","errorCode":0,"errorCodeTimestamp":0},"planner":{"nextStartTimestamp":0,"override":{"action":null},"restrictedReason":"NOT_APPLICABLE"},"metadata":{"connected":true,"statusTimestamp":1662570171770}}}
2022-09-07 19:02:51.871 - debug: husqvarna-automower.0 (924) [wss.on - message]: {"id":"xxxxxx","type":"positions-event","attributes":{"positions":[{"latitude":xx.xxxx,"longitude":yy.yyyy}]}}
2022-09-07 19:02:59.158 - debug: husqvarna-automower.0 (924) [wss.on - close]: this.wss.readyState: 3
2022-09-07 19:02:59.158 - debug: husqvarna-automower.0 (924) [wss.on - close]: data: 1001
2022-09-07 19:02:59.158 - debug: husqvarna-automower.0 (924) [autoRestart]: WebSocket connection terminated by Husqvarna-Server. Reconnect again in 5 seconds...

2022-09-07 19:03:04.442 - debug: husqvarna-automower.0 (924) [wss.on - open]: Connection to "Husqvarna WebSocket" re-established. Ready to get data...
2022-09-07 19:03:04.442 - debug: husqvarna-automower.0 (924) [sendPingToServer]: WebSocket sends ping to server...
2022-09-07 19:03:04.482 - debug: husqvarna-automower.0 (924) [wss.on - pong]: WebSocket receives pong from server.
2022-09-07 19:03:04.587 - debug: husqvarna-automower.0 (924) [wss.on - message]: {"ready":true,"connectionId":"YGU_VcPRDoECFDA="}

2022-09-07 19:12:34.443 - debug: husqvarna-automower.0 (924) [sendPingToServer]: WebSocket sends ping to server...
2022-09-07 19:12:34.485 - debug: husqvarna-automower.0 (924) [wss.on - pong]: WebSocket receives pong from server.
.
.
.
2022-09-08 01:06:19.671 - debug: husqvarna-automower.0 (972) [onStateChange]: id: husqvarna-automower.0.xxxxxx.ACTIONS.PARKUNTILFURTHERNOTICE; state: {"val":true,"ack":false,"ts":1662591979669,"q":0,"from":"system.adapter.node-red.0","user":"system.user.admin","lc":1659890725611}
2022-09-08 01:06:19.671 - debug: husqvarna-automower.0 (972) [onStateChange]: idSplit.length: 5
2022-09-08 01:06:19.671 - debug: husqvarna-automower.0 (972) [onStateChange]: mowerId: xxxxxx
2022-09-08 01:06:19.671 - debug: husqvarna-automower.0 (972) [onStateChange]: command: PARKUNTILFURTHERNOTICE
2022-09-08 01:06:19.671 - debug: husqvarna-automower.0 (972) [onStateChange]: parentPath : husqvarna-automower.0.xxxxxx.ACTIONS
2022-09-08 01:06:19.847 - debug: husqvarna-automower.0 (972) [onStateChange]: HTTP status response: 404; headers: {"content-type":"application/vnd.api+json","content-length":"206","connection":"close","date":"Wed, 07 Sep 2022 23:06:19 GMT","x-amzn-requestid":"85a49ca3-439f-4c17-92bc-4b5253489b35","x-amzn-remapped-content-length":"206","x-amzn-remapped-connection":"keep-alive","x-amz-apigw-id":"YHKM3ELKjoEFuoA=","x-amzn-remapped-date":"Wed, 07 Sep 2022 23:06:19 GMT","x-cache":"Error from cloudfront","via":"1.1 f1944380c787841c28b16df91c1ec34e.cloudfront.net (CloudFront)","x-amz-cf-pop":"VIE50-C1","x-amz-cf-id":"dz_tI48Y6iYIxNSGtx6Cx1tP-MHkGtDrph2gl8UdD5Cd2hb3UKDRlA=="}; data: {"errors":[{"id":"d237e8c2-e82d-4f49-83a4-6f7f7228a81e","status":"404","code":"no.mower.connection","title":"No mower connection","detail":"No connection between the cloud service and the mower product."}]}
2022-09-08 01:06:19.847 - info: husqvarna-automower.0 (972) No connection between the cloud service and the mower product. Nothing set.
2022-09-08 01:06:19.847 - debug: husqvarna-automower.0 (972) [onStateChange]: error.config: {"transitional":{"silentJSONParsing":true,"forcedJSONParsing":true,"clarifyTimeoutError":false},"transformRequest":[null],"transformResponse":[null],"timeout":0,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1,"maxBodyLength":-1,"env":{},"headers":{"Accept":"application/json, text/plain, /","Content-Type":"application/vnd.api+json","Authorization":"Bearer xxxxxxxxx","X-Api-Key":"xxxxxxx","Authorization-Provider":"husqvarna","User-Agent":"axios/0.27.2","Content-Length":42},"method":"post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxxx/actions","data":"{\"data\":{\"type\":\"ParkUntilFurtherNotice\"}}"}

2022-09-08 01:11:48.106 - debug: husqvarna-automower.0 (972) [sendPingToServer]: WebSocket sends ping to server...
2022-09-08 01:11:48.147 - debug: husqvarna-automower.0 (972) [wss.on - pong]: WebSocket receives pong from server.

wunderbar, vielen Dank!

  • das mit der Batterie 100% -> 0% habe ich auch bereits festgestellt. Bei mir ist es aber dann so, dass auch in der App auf dem iPhone der Wert auf 0% geht. Ist das bei dir auch so?
  • in der neuen Version hab' ich folgendes geändert: die Werte metadata.connected und metadata.statusTimestamp werden auch im vorgegebenen Intervall zusammen mit der Statistik aktualisiert. Weiter werden die beiden Werte aktualisiert wenn die Verbindung beim senden eines Befehles nicht erfolgreich war bzw. die Verbindung wird neu aufgebaut. Der Befehl wird aber nicht neu gesendet.

ggf. könnte diese mal getestet werden

Bei mir in der iOS App steht: keine Verbindung zum Mäher

Vielen Dank, ich kann die neue Version gerne mal in den nächsten Tagen testen.

Wie installiere ich den Adapter aus dem development tree nochmal?

den folgenden Link in ioBroker (im Expertenmodus) unter "Adapter" -> "Katzenbutton" -> "Benutzerdefiniert" einfügen:

https://github.com/ice987987/ioBroker.husqvarna-automower/tree/development

Ich scheitere seltsamerweise an der Installation. Muss ich den "normalen" Adapter ev vorher löschen? Oder hat der development tree die gleiche Versionsnummer mit v0.3.0?

Ja. Erst deinstallieren.

gibt's erste Erkenntnisse aus dem Test?

Ich habe die dev Version installiert. Wie so oft, wenn man etwas testen möchte, funktionierte die Verbindung zwischen Mäher und Cloud, warum auch immer, in den letzten 2 Wochen anstandslos.
Ich kann dies leider jetzt aber nicht mehr weiter teste, da ich den Mäher aufgrund der Witterung einwintere. Das heißt, ich würde erst im Frühjahr wieder was dazu sagen können.

da demnach hier kein weiteres Feedback mehr zu erwarten ist, schliesse ich hier.