[Neues Modul] 74_AutomowerConnect, Husqvarnas OpenAPI

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

Vorheriges Thema - Nächstes Thema

stobor

#225
Ich habe heute AutomowerConnect zum ersten mal ausprobiert (Husqvarna Aotomower 430X):

define HusqvarnaMower AutomowerConnect 20xxxf
attr HusqvarnaMower icon automower
attr HusqvarnaMower room Aussen,AutomowerConnect
attr HusqvarnaMower userReadings [attach id=178828]beim Mähen.jpg[/attach]lastLatitude :mower_wsEvent:.positions-event {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{latitude}},\ lastLongitude:mower_wsEvent:.positions-event {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{longitude}}

Nun ergeben sich ein paar Fragen:

  • Internals/STATE zeigt "disconnected". Allerdings kann ich trotzdem Befehle senden (bspw. Set Mower Start 30, und er fährt los). Es scheint sich auch nur das Readings/mower_commandSend zu aktualisieren. Ist das so gewollt?
  • Wie kann ich denn die aktuelle geograpgische Position (GPS) abfragen? Das userReading habe ich wie beschrieben hinzugefügt. Allerdings wird es nicht angezeigt.
  • Wie häufig werden die Daten aktualisiert? Kann das eingestellt werden?

Im Log habe ich gerade noch diesen Fehler entdeckt:
 AutomowerConnect HusqvarnaMower wsCb: failed with error: HTTP CODE 403
Was bedeutet dies?

Du darfst diesen Dateianhang nicht ansehen.
Du darfst diesen Dateianhang nicht ansehen. 
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

stobor

Nachdem ich eine neue Application bei Husqvarna angelegt und diese in FHEM eingepflegt habe, klappt es jetzt wieder mit der Datenaktualisierung. Es schien irgend etwas mit dem vorherigen Key falsch gewesen zu sein.
Die Daten aktualisieren sich nun alle 30sec.

Wie muss ich jetzt aber die UserReadings eintragen, damit ich die Koordinaten bekomme?
attr HusqvarnaMower userReadings lastLatitude:mower_wsEvent:.positions-event {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{latitude}},\ lastLongitude:mower_wsEvent:.positions-event {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{longitude}}

{Dumper $defs{HusqvarnaMower}{helper}{mower}} liefert mir
$VAR1 = {
          'attributes' => {
                            'system' => {
                                          'serialNumber' => xxxx,
                                          'name' => 'Automower',
                                          'model' => "HUSQVARNA AUTOMOWER\x{ae} 430X"
                                        },
                            'mower' => {
                                         'mode' => 'MAIN_AREA',
                                         'errorCodeTimestamp' => 0,
                                         'errorCode' => 0,
                                         'inactiveReason' => 'NONE',
                                         'state' => 'IN_OPERATION',
                                         'activity' => 'MOWING'
                                       },
                            'battery' => {
                                           'batteryPercent' => 37
                                         },
                            'calendar' => {
                                            'tasks' => [
                                                         {
                                                           'tuesday' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                                                           'monday' => $VAR1->{'attributes'}{'calendar'}{'tasks'}[0]{'tuesday'},
                                                           'saturday' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
                                                           'friday' => $VAR1->{'attributes'}{'calendar'}{'tasks'}[0]{'tuesday'},
                                                           'sunday' => $VAR1->{'attributes'}{'calendar'}{'tasks'}[0]{'tuesday'},
                                                           'wednesday' => $VAR1->{'attributes'}{'calendar'}{'tasks'}[0]{'tuesday'},
                                                           'start' => 720,
                                                           'duration' => 375,
                                                           'thursday' => $VAR1->{'attributes'}{'calendar'}{'tasks'}[0]{'tuesday'}
                                                         }
                                                       ]
                                          },
                            'metadata' => {
                                            'connected' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                                            'statusTimestamp' => '1721997193574'
                                          },
                            'planner' => {
                                           'restrictedReason' => 'NOT_APPLICABLE',
                                           'override' => {
                                                           'action' => 'NOT_ACTIVE'
                                                         },
                                           'nextStartTimestamp' => 0
                                         },
                            'settings' => {
                                            'cuttingHeight' => 6,
                                            'headlight' => {
                                                             'mode' => 'EVENING_AND_NIGHT'
                                                           }
                                          },
                            'statistics' => {
                                              'totalRunningTime' => 10324800,
                                              'numberOfChargingCycles' => 1077,
                                              'totalDriveDistance' => 4026672,
                                              'numberOfCollisions' => 64652,
                                              'totalChargingTime' => 3189600,
                                              'totalCuttingTime' => 9867600,
                                              'totalSearchingTime' => 457200
                                            },
                            'positions' => [
                                             {
                                               'longitude' => '10.984715',
                                               'latitude' => '52.7687033',
                                               'act' => 'M'
                                             }
                                           ],
                            'capabilities' => {
                                                'workAreas' => $VAR1->{'attributes'}{'calendar'}{'tasks'}[0]{'saturday'},
                                                'headlights' => $VAR1->{'attributes'}{'calendar'}{'tasks'}[0]{'tuesday'},
                                                'position' => $VAR1->{'attributes'}{'calendar'}{'tasks'}[0]{'tuesday'},
                                                'stayOutZones' => $VAR1->{'attributes'}{'calendar'}{'tasks'}[0]{'saturday'}
                                              }
                          },
          'id' => '0d788b',
          'type' => 'mower'
        };

Ich habe nun keine Idee, wie ich das USerReading codieren muss. Kann mir da jemand helfen?
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

stobor

Hab's nun alles hinbekommen. in den UserReadings war es ein fehlender Zeilenumbruch.

Da ich FHEM nun ein paar mal neu gestartet haben, aktualisiert sich nun wieder der HusqvarnaMower nicht mehr :(
State: closed
device_state: error statuscode

Trotz des kompletten Neustarts des Servers, musste ich noch einmal einen Shutdown restart durchführen, damit sich das Modul wieder fängt.
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

stobor

#228
Welche Bedeutung haben denn die Farben in der erzeugten Weg-Karte?
Bei mir gibt es:
  • Grau gestrichelt
  • Rot gestrichelt
  • Grün gestrichelt
  • Blau durchgezogen

Und wie auch in der Husqvarna App, ist leider die Karte etwas verschoben. Gibt es Parameter, über die ich die Karte etwas schieben kann, oder mache ich das einfach über das Anpassen der Koordinaten bzw. ein leichtes Schieben der Karte, bevor ich sie speichere?
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

Ellert

So, ich bin wieder zurück und stelle fest, dass die aufgetretenen Fragen durch die Befrehlsreferenz, die Listen im Modul, den Wiki Beitrag oder im Forum beantwortet wurden.

ZitatGibt es Parameter, über die ich die Karte etwas schieben kann, oder mache ich das einfach über das Anpassen der Koordinaten bzw. ein leichtes Schieben der Karte, bevor ich sie speichere?
Ich würde das über die Bildregistrierung anpassen (mapImageCoordinatesToRegister).

Ellert

Ab morgen im Update:

Es gibt einen neuen Setter zum Synchronisieren der Uhrzeit im Mäher.

Damit kann z.B. bei einer Zeitumstellung die Uhrzeit im Mäher umgestellt werden.

Ellert

Heute im Update:

Bei einer Zeitumstellung wird die Zeit im Mähroboter automatisch synchronisiert, wenn das Attribut mowerAutoSyncTime auf 1 gesetzt wird.
Grundlage ist die Zeitzoneneinstellung des Rechners, auf dem der Mäher definiert ist.

Mit
set <name> dateTime <timestamp>kann eine beliebige Zeit im Mäher gesetzt werden.
Timestamp, ist die Zeit in Sekunden seit  1. Januar 1970, 00:00 Uhr UTC unter Berücksichtigung der Zeitzone und DST.
Der Standardwert (leeres Eingabefeld) verwendet die lokale Zeit des Rechners auf dem der Mäher definiert ist.

stobor

Ich bekomme immer mal wieder Fehler im Log:

2024.10.14 22:04:03 2: error while requesting https://amc-api.dss.husqvarnagroup.net/app/v1/mowers/1xxxxxxx9-1xxxxxxx0/status - connect to https://amc-api.dss.husqvarnagroup.net:443 timed out

Woran kann dies liegen? Kann das zu Problemen führen? Was sollte ich ggf. tun?

Rufe ich die URLs selber im Browser auf, erscheint , für:
allerdings teste ich das natürlich nicht exakt zum Zeitpunkt der Fehlermeldung im Log.






_______________
xxxxxxx: habe ich ersetzt
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

Ellert

Welche Module benutzt Du, die auf Husquvarnas API zugreifen mit welcher Version?

stobor

Hallo Ellert,

wie finde ich das genau heraus?
Bei mir wird als TYPE AutomowerConnect angezeigt:
DEF        bxxxxxxxxxxxx8
   DeviceName wss:ws.openapi.husqvarna.dev:443/v1
   FD         57
   FUUID      6xxxxxxxxxxxxxxb
   First_Read 0
   Host       ws.openapi.husqvarna.dev
   LIBRARY_VERSION 29238 2024-10-13 23:29:51
   NAME       HusqvarnaMower
   NR         1310
   PARTIAL   
   Port       443/v1
   SSL        1
   STATE      opened
   TYPE       AutomowerConnect
   VERSION    29238 2024-10-13 23:29:51
   WEBSOCKET  1
   devioNoSTATE 1
   eventCount 97
   READINGS:
     2024-07-25 18:04:19   api_MowerFound  0 => Automower 0dxxxxxxxxxxxxx3b
     2024-10-15 00:48:51   api_token_expires 2024-10-16 00:48:50
     2024-10-14 19:02:59   batteryPercent  100
     2024-10-15 00:48:52   device_state    connected
     2024-10-15 08:26:39   lastLatitude    0.00000
     2024-10-15 08:26:39   lastLongitude   0.00000
     2024-10-14 14:08:36   model           HUSQVARNA AM 430X
     2024-10-14 18:20:55   mower_activity  PARKED_IN_CS
     2024-09-29 00:26:11   mower_commandSend -
     2024-09-27 16:14:08   mower_commandStatus cleared
     2024-08-16 18:18:55   mower_errorCode -
     2024-08-16 18:18:55   mower_errorCodeTimestamp -
     2024-08-16 18:18:55   mower_errorDescription -
     2024-09-28 03:02:18   mower_mode      MAIN_AREA
     2024-10-14 18:20:55   mower_state     RESTRICTED
     2024-10-15 08:26:39   mower_wsEvent   positions-event
     2024-10-14 18:16:40   planner_nextStart 2024-10-16 12:00:00
     2024-07-26 19:13:43   planner_overrideAction NOT_ACTIVE
     2024-10-14 18:20:55   planner_restrictedReason WEEK_SCHEDULE
     2024-07-25 18:04:19   settings_cuttingHeight 6
     2024-07-25 18:04:19   settings_headlight EVENING_AND_NIGHT
     2024-10-15 07:19:43   state           opened
     2024-10-15 00:58:39   statistics_newGeoDataSets 1
     2024-10-14 14:08:36   statistics_numberOfCollisions (0/0/2246)
     2024-10-15 08:26:39   status_Timestamp 2024-10-15 08:26:38
     2024-10-15 08:26:39   status_TimestampDiff 839.927
     2024-07-25 18:04:19   status_connected CONNECTED(1)
     2024-07-25 18:04:19   system_name     Automower
     2024-07-25 18:03:22   third_party_library hull.js downloaded to: ./www/automowerconnect/
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

Ellert

#235
Den ersten Teil meiner Frage kannst nur Du selbst beantworten, denn nur Du kennst die Module, die Du im Zusammenhang mit einer Husqvarna  API installiert hast.

Zur Beantwortung des zweiten Teils der Frage gibt es den FHEM Befehl version.

Für das Modul AutomowerConnect stehen die Versionen auch in den Internals.

Dieses Modul ist für den Logeintrag nicht verantwortlich, da das Modul die URL https://amc-api.dss.husqvarnagroup.net/app/v1/... nicht verwendet.
Das kommt aus einem anderen Modul, das auf die nicht offizielle API zugreift.

Zitat von: stobor am 14 Oktober 2024, 22:28:01Woran kann dies liegen? Kann das zu Problemen führen? Was sollte ich ggf. tun?

Zur ersten Frage: Die Antwort des Servers dauert zu lange.

Zur Zweiten: Ja, die angefragten Daten fehlen.

Zur Dritten: Gib dem Server mehr Zeit und erhöhe den Timeout der Anfrage in dem Modul, das den Aufruf durchführt.

Ellert

@stobor: Wie ich sehe, verwendest Du das Modul HusqvarnaAutomower, die dazu gehörenden Fagen solltest Du dort https://forum.fhem.de/index.php?topic=83416.0 stellen

stobor

Hallo Ellert,

Ich hatte ursprünglich das Modul 74_HusqvarnaAutomower in Betrieb, dann aber zu Deinem gewechselt - übergangsweise im Parallel-Betrieb. Wo siehst Du denn hier noch das 74_HusqvarnaAutomower Modul?

Version zeigt mir übrigens:
74_AutomowerConnect.pm   29238 2024-10-13 23:29:51Z Ellert

Ein Klick auf das Internal Version "AutomowerConnect" liefert mir übrigens :
Internals:
   DEF        b95caf3b-ab62-454d-ae83-311e41423858
   DeviceName wss:ws.openapi.husqvarna.dev:443/v1
   FD         55
   FUUID      66a2774a-f33f-2cfb-fd06-075c50a65addba7b
   First_Read 0
   Host       ws.openapi.husqvarna.dev
   LIBRARY_VERSION 29238 2024-10-13 23:29:51
   NAME       HusqvarnaMower
   NR         1310
   PARTIAL   
   Port       443/v1
   SSL        1
   STATE      opened
   TYPE       AutomowerConnect
   VERSION    29238 2024-10-13 23:29:51
   WEBSOCKET  1
   devioNoSTATE 1
   eventCount 403
   READINGS:
     2024-07-25 18:04:19   api_MowerFound  0 => Automower 0d7886e3-b7b9-4f5e-a89c-629cbf72953b
     2024-10-16 00:48:13   api_token_expires 2024-10-17 00:48:12
     2024-10-16 09:51:36   batteryPercent  100
     2024-10-16 00:48:15   device_state    connected
     2024-10-16 10:33:37   lastLatitude    53.7686733
     2024-10-16 10:33:37   lastLongitude   9.9845716
     2024-10-14 14:08:36   model           HUSQVARNA AM 430X
     2024-10-16 09:29:00   mower_activity  PARKED_IN_CS
     2024-09-29 00:26:11   mower_commandSend -
     2024-09-27 16:14:08   mower_commandStatus cleared
     2024-08-16 18:18:55   mower_errorCode -
     2024-08-16 18:18:55   mower_errorCodeTimestamp -
     2024-08-16 18:18:55   mower_errorDescription -
     2024-09-28 03:02:18   mower_mode      MAIN_AREA
     2024-10-16 09:29:00   mower_state     RESTRICTED
     2024-10-16 10:33:37   mower_wsEvent   status-event
     2024-10-16 09:27:12   planner_nextStart 2024-10-16 12:00:00
     2024-07-26 19:13:43   planner_overrideAction NOT_ACTIVE
     2024-10-16 09:29:00   planner_restrictedReason PARK_OVERRIDE
     2024-07-25 18:04:19   settings_cuttingHeight 6
     2024-07-25 18:04:19   settings_headlight EVENING_AND_NIGHT
     2024-10-16 09:17:37   state           opened
     2024-10-16 01:00:38   statistics_newGeoDataSets 1
     2024-10-14 14:08:36   statistics_numberOfCollisions (0/0/2246)
     2024-10-16 10:33:37   status_Timestamp 2024-10-16 10:33:37
     2024-10-16 10:33:37   status_TimestampDiff 839.939
     2024-07-25 18:04:19   status_connected CONNECTED(1)
     2024-07-25 18:04:19   system_name     Automower
     2024-07-25 18:03:22   third_party_library hull.js downloaded to: ./www/automowerconnect/

Es ist ok, dass hier auf die dev-url (ws.openapi.husqvarna.dev) zugegriffen wird?

Ich werde parallel mal probieren, Objekte, die das andere Modul (74_HusqvarnaAutomower) verwenden, zu entfernen.
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 29003
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

Ellert

Ab morgen im Update:

Neue Setter:

- getMessages läd die gespeicherten Meldungen vom Mäher, wenn es unterstützt wird.

- resetCuttingBladeUsageTime setzt die Nutzungszeit der Messer zurück, wenn es unterstützt wird.

Die heruntergeladenen Meldungen werden mit dem Getter errorStack angezeigt.

Die Zeiten upTime und downTime erscheinen in der Statistik, sie zeigen die Zeit der Verbindung und Trennung des Mähers von der API an.