[Modul] Husqvarna Automower Connect

In der App kann ich das anlegen:

Ich habe 4 Arbeitsbereiche, 1 Verbotszone, 4 Transportwege. Die Anzeige in IPS bleibt immer auf Hautbereich. Das ist der erste der 4 konfigurierten Arbeitsbereiche.

Tom

Hmm, solange ich in den Daten aber keine Informationen bekomme, kann ich leider wenig machen. Ausser der genannten API bekomme ich keine Daten.
D.h. wenn in den Daten doch etwas auftaucht, aus denen man unterschiedliche Zonen ableiten kann, kann ich natürlich gerne was draus machen. D.h. ich kann nur empfehlen, das Du dir die Daten anschaust, wenn der Mäher in bestimmten Bereichen ist und eventuell gibt es dann ja dich abweichend von der Beschreibung weitere Info‘s.
Ansonsten gibt die API nach meinem Verständnis leider nicht mehr her.

ok, danke. Komisch. Hab gestern Abend nochmal reingeschaut und da war der Mäher angelegt, neben dem fehlerhaften. Kann ich nicht nachvollziehen, aber Lösung scheint Geduld gewesen zu sein.

Hallo,
ich bekomme folgenden Fehler , Anmeldung sagt er ist Korrekt, bei Zugriff testen, kommt die Meldung:

05.05.2022, 12:21:08 | AutomowerConnectIO | url=https://api.amc.husqvarna.dev/v1/mowers => statuscode=203, err=got http-code 429

der Code 429 bedeutet : zuviele Abrufe

Wie hast du das angeschlossen, via Symcon-Connect? Das ist letzte Wochen ja häufig diskutiert worden, das ist ein Problem der Anzahl der Abrufe.
Wenn du einen eigenen Schlüssel genutzt hast, brauche ich einen ausreichenden Debug (Liniierung aufheben!), von“Löschen des Token incl. 1. Daten-Abruf).

Danke, hab es über connect gemacht, muss jetzt schauen wie das mit der api geht, da braucht man ja die Beta Version ‽

Ja, das Problem ist, das bei dem Zugriff via Symcon alle Anwender sich die Limits eine normalen Users teilen müssen.

Beta ist besser, weis nicht mehr, wie der Stand im Stable ist, bin noch nicht dazu gekommen, wieder neu einzureichen.

Bzgl. eigenem Key: einfach hier mit deinem normalen Husqvarna-Login anmelden, eine „Application“ anlegen und als API Authentification und Automower auswählen.
Kann ggfs. etwas dauern, bis die eingerichtete App verfügbar ist.
Unbedingt „Token löschen““

Hab mal wieder einen :slight_smile:

= Fehler - Kollision

kannst DU mir sagen, welche Version du im Einsatz hast (Konfiguration → Information)?

Eigentlich ist die #110 schon drin …

das wäre

Annotation 2022-05-10 155903

hmm, kannst du mal schauen, ob bei die im Variablenprofil Automower.Error ein Wert 110 enthalten ist?
Und wenn nein, dann bitte mal das Profil aktualisieren (Instanz → Experten-Bereich → Variablenprofil neu anlegen)

habe ich gemacht - bei mir endete die Liste bei 90. Jetzt geht es viel weiter.

Danke

das Profil hatte sich geändert und wurde nicht aktualisiert. Ich habe inzwischen in allen meinen Module eine Update-Funktionalität eingebaut, die es ermöglich auch solche Änderungen bei einem Modul-Update sauber abzudecken.

1 „Gefällt mir“

Moin,

ich spiele wieder mit der Map des Automowers.
Ich würde gerne die Routen der letzten 3 Tage zeichnen.
Ich bin nur nicht sicher wie ich die Tage (zeiten) aus deinen Daten differenzieren kann.

$lastLocations0 = $map['paths'][0]['points']; // Daten des vorvorletzten Tages ? oder der letzten Tour?
$lastLocations1 = $map['paths'][1]['points']; // Daten des vorLetzen Tages ? oder der letzten Tour?
$lastLocations2 = $map['paths'][2]['points']; // Daten des Letzen Tages ? oder der letzten Tour?

Das scheint so aber nicht zu stimmen, geht das irgendwie? Oder sind das fortlaufende Daten ohne Tour o. Tagesdifferentierung?

Gruß
hardlog

wie füllst du denn map[‘paths‘]?

Morgen,

ich habe das aus deinem Beispielscript entnommen:

$paths = [];

$paths_color = ['0xFF4040', '0x7B68EE', '0x00FF00'];

$dt = new DateTime(date('d.m.Y 00:00:00', time()));
$now = (int) $dt->format('U');

for ($i = 2; $i >= 0; $i--) {
    $from = $now - ($i * 24 * 60 * 60);
    $until = $from + (24 * 60 * 60) - 1;

    $values = AC_GetLoggedValues(41474 /*[Archive]*/, 32727 /*[Rasenmäher\Automower\Position]*/, $from, $until, 0);

    $points = [];
    foreach ($values as $value) {
        $pos = json_decode($value['Value'], true);
        $points[] = [
            'lat' => @$pos['latitude'],
            'lng' => @$pos['longitude'],
        ];
    }

    $paths[] = [
        'color'     => $paths_color[$i],
        'weight'    => 2,
        'points'    => $points,
    ];
}

$map['paths'] = $paths;

hardlog

ja
du siehst ja in den Script die for-Schleife, die für heute und 2 Tage zurück zählt (0 … 2)
from ist ja now (0 Uhr des akt. Tages) von dem dann i ( 0 … 2) mal 24h abgezogen werden, until kommt 23h59m59s wieder drauf.
Und das sind die Werte aus dem Archiv der Variable Position und die Pro Tag gesammelt und tageweise dann dem array-Element points zugewiesen
D.h. der erste Wert in points ist der erste Wert des Tages.

Insofern ist deine Annahme soweit richtig, path[0] ist der aktuelle Tag

Zwei Hinweise noch

  1. points[0] ist der erste Wert des Tages, der letzt Wert des Tages wäre dann demzufolge points[count(points) - 1]
  2. Der Zeitstempel der Variabländerung ist nicht 100% der Zeitpunkt, an dem der Mäher an der jew. Position war. Der Mäher sammelt offensichtlich die Positionsdaten und schickt die Blockweise an Husqvarna bzw Husqvarna schickt die Position nicht direkt weiter. Die sind richtigen Reihenfolge, aber zwischen der Position des Mähers und em Speichern in IPS werden sicherlich 5-10 Minuten liegen und es ist auch definitiv so, das eventuell ein Dutzend Positionen zum gleichen Zeitpunkt im IPS gespeichert werden.

Nachtrag: es ist so, das bei jeden API-Aufruf von Husqvarna 50 Positionen geliefert werden, leider ohne Zeitstempel.Ich gehe aber davon aus, das die zumindestens chronologisch sortiert sind.

Dieser Teil der Nachricht wird auch in der Variable LastLocations gespeichert.

Ich „errate“ welche von den 50 Positionen schon im IPS vorhanden sind und speichere die in der (protokollierten) Variable Position und zwar in der chronologisch richtigen Reihenfolge, sodaß zwar häufiger mehrer Positionen in der gleichen Sekunde gespeichert werden, aber in der richtigen Reihenfolge.
Das die Reihenfolge ok ist, habe ich dahingehend verifiziert, das der gezeichnete Pfad passt.

Das lässt sich übrigens nicht durch häufigere Abfragen verbessern. Ich hatte weiter oben schon mal erwähnt, das es auch eine Websocket-API von Husqvarna gibt, bei der man nicht pollt sondern Änderungen unaufgefordert bekommt. Und es war so, das die Positionen auch nur alle 5-10 Minuten eingetrudelt sind, also ganz wie die REST-API.

Korrektur: die Abfrage der Werte ist nicht 0 … 2 sondern 2 … 0, d.h. der aktuelle Tag ist in path[2] (so wie von dir geschrieben)

Was ist genau dein Problem? Evt. hast das selbe wie ich hatte. Ich bekam von Husqvarna soviele Positionsdaten, dass es nur in der Karte für einen Tag reichte. Nachdem demel die Limitierung ins Skript eingebaut hatt und ich mich ans Limit rangetastet hatte geht es so einiger Maßen.

lg
hagi

Moin,
@demel42 An dem API Login wurde wieder eine Änderung gemacht.
Der Token ist jetzt nicht mehr mit key, Benutzername und Passwort sondern mit key und secret zu bekommen.

lg
Marius

@mnb
danke für die Info, dann werde ich mich morgen früh mal dran machen.
sieht aber auf den ersten Blick überschaubar an.

danke

Nachtrag: Änderung ist als 2.7 im Modulstore/Beta veröffentlicht