FHEM-Wiki: Modul: AutomowerConnect (https://wiki.fhem.de/wiki/AutomowerConnect)
Das Modul AutomowerConnect ist eine weitere Möglichkeit Mähroboter von Husqvarna in FHEM einzubinden.
Es gibt schon einige Module, die den Automower bedienen können:
- Das Robonect Modul kommt nicht in Frage da die Mähfläche nicht mit WLAN abgedekt ist und der Mäher ohnehin ein integriertes Connect Modul hat.
- Mit dem Gardena-Modul wäre es ein Umweg, falls es funktioniert. Ich habe es probiert - hat nicht geklappt. Falls es dennoch funktioniert, lasst es mich wissen, dann spare ich mir die weitere Arbeit.
- Das Modul HusqvarnaAutomower ist o.k., ein paar Sachen haben mich gestört, der Mähplan, Scheinwerfer und Schnitthöhe kann nicht bedient werden, das Passwort liegt offen vor, die Fehlermeldungen fehlten.
Das Modul AutomowerConnect greift auf die offizielle Husqvarna Automower Connect Api zu und bildet das Device (FHEM-Gerät) für einen Automower ab.
Mit der Nutzung einer Websocket Verbindung werden Daten auch ereignisnah übertragen.
VoraussetzungenAnmeldung im Husqvarna Developer Portal: https://developer.husqvarnagroup.cloud/docs/get-started
- Dort eine Application anlegen. Der Benutzername und das Passwort der Smartphone App sollten funktionieren.
- Die Authentifizierungs Api und die Automower Connect Api der Application zuweisen.
- Der erzeugte Application Key und das Application Secret bilden die Zugangsdaten für das AutomowerConnect Modul.
Definition des ersten Mähers:
define MyMower AutomowerConnect <Application Key>
set MyMower client_secret <Application Secret>
Weitere Mäher:
define MyMower_1 AutomowerConnect <Application Key> 1
set MyMower_1 client_secret <Application Secret>
Wesentliche Eigenschaften- Das Modul kann parallel zu einer anderen Definition des gleichen Mähroboters parallel genutzt und getestet werden.
- Der Pfad des Mähroboters kann dargestellt werden, mit oder ohne Hintergrundbild. Auf die Liveeinbindung von Google Earth habe ich verzichtet, Google weiß schon genug.
- Die Lage der Mähfläche muss angegeben werden (obere linke Ecke und untere rechte Ecke).
- Die Angabe Longitude und Latitude erfolgt in Dezimalgrad, z.B. aus Google Earth.
- Die gewünschte Größe der Anzeigefläche, bzw des Hintergrundbildes muss in Pixel angegeben werden.
- Die Position der Ladestation kann angegben werden als Dezimalgrad.
- Der Verbindungspunkt der Ladestation zum Pfad kann festgelegt werden (links, rechts, oben, unten und mitte).
- Die Grundstücksgrenze und die Mähbereichsgrenze können angegeben werden als Liste in Dezimalgrad (Longitude,Latitude+Linefeed). Die letzte Zeile darf kein Linefeed enthalten.
- Fehlermeldungen des Mähroboters werden angezeigt.
- Der Mähplan kann editiert werden.
- Alle über die API angebotenen Aktionen können ausgeführt werden.
- Scheinwerfer und Schnitthöhe können bedient werden.
Einige Statistische Daten werden angezeigt oder berechnet.
- Geschwindigkeit im letzten Interval
- gefahrene Strecke und übermähte Fläche für den aktuellen Tag, die aktuelle Woche, sowie für den letzten Tag und die letzte Woche.
Im Wirbetrieb kann der Mäherpfad mit beliebig vielen Wegpunkten angezeigt werden.
Weitere Hinweise gibt es in der Commandref.
Wie eine Karte mit Hintergrundbild Grenze, Mähbereich und Pfad des Mähroboter zu erstellen ist, steht jetzt im FHEM-Wiki: Modul: AutomowerConnect (https://wiki.fhem.de/wiki/AutomowerConnect)
Es ist ein Bild angehängt mit Grenze, Mähbereich und Mäherpfad (sieht aus als schleiche er sich heraus, um die Umgebung zu erkunden)
Das Modul wird über das offizielle Update verteilt.TippsFrontend für die RaumansichtEs lässt sich mit
webCmd und
webCmdLabel ein einfaches Frontend für die Raumansicht basteln, wenn der Name geändert wird kann es über
Raw definition (das
+ vor der Befehlszeile) eingespielt werden.
attr am430x0 webCmd Pause:ParkUntilFurtherNotice:Park:ParkUntilNextSchedule:Start:ResumeSchedule:cuttingHeight:headlight
attr am430x0 webCmdLabel Stop:\
:Park for:min\
:Run for:min ; ; ;\
:Height (1,5+:x0,5) cm Light
Readings ergänzenEinige Daten des Mähers werden in Readings angezeigt. Wem das nicht genügt kann Readings über das Attribut userReadings ergänzen.
Der Trigger für die userReadings ist
connected.
Den Hashpfad findet man in den Listen MowerData und StatisticsData.
Beispiel: Erzeugen des Reading serialnumber mit dem Hashpfad $hash->{helper}{mower}{attributes}{system}{serialNumber}
attr <name> userReadings serialnumber:connected {$defs{$name}->{helper}{mower}{attributes}{system}{serialNumber}}
Widget für TabletUI/FTUI Version 2Im SVN unter contrib/AutomowerConnect/ befindet sie ein Widget (widget_automowerconnect.js) zur Kartendarstellung in FTUI 2
Es kann, wie im FHEM Wiki beschrieben geladen werden, siehe: https://wiki.fhem.de/wiki/Update#Einzelne_Dateien_aus_dem_SVN_holen
Die Einbindung erfolgt auf folgende Weise:
<head>
.
.
.
<script src="../pgm2/jquery.min.js"></script>
<script src="../pgm2/automowerconnect.js"></script>
.
.
.
</head>
<body>
.
.
.
<div
data-type="automowerconnect"
data-device="<device name>"
data-jsonurl="/fhem/AutomowerConnect/<device name>/json"
>
</div>
.
.
.
</body>
Die Dateien jquery.min.js und automowerconnect.js aus dem Verzeichnis pgm2 müssen im Head-Tag eingebunden werden und das Widget wie üblich als Div-Tag im Body.
<device name> ist durch den Namen des FHEM-Gerätes zu ersetzen, das den Mäher abbildet.
TabletUI/FTUI Version 3Wie die Karte in FTUI3 eingebunden werden kann ist im FHEM Wiki beschrieben:
https://wiki.fhem.de/wiki/AutomowerConnect#Tablet-UI/FTUI_Version_3
Positionsdaten speichern und wiederherstellenWer sich am Verlust der Positionsdaten nach einem Update stört, der kann mit den nachstehenden Subs für die 99_myUtils.pm vor dem Update die Daten speichern und nach dem Update wiederherstellen:
use Storable;
sub store_areapos {
my ( $name ) = @_;
my $hash = $defs{$name};
store \$hash->{helper}{areapos}, 'areapos';
}
sub retrieve_areapos {
my ( $name ) = @_;
my $hash = $defs{$name};
my $ref = retrieve( 'areapos' );
$hash->{helper}{areapos} = $$ref;
}
Für die BefehlszeileSpeichern vor dem Update
{store_areapos '<name>'}
Laden nach dem Update
{retrieve_areapos '<name>'}
<name> ist durch den Gerätenamen des Gerätes das den Mäher abbildet zu ersetzen.
Das Speichern und Wiederherstellen sollte unmittelbar vor bzw. nach dem Update erfolgen.
Steigerung der Rate für PositionseventsBei der Benutzung des Modul 98_AMConnectTools.pm wird ca. alle 30s während der Aktivitäten LEAVING, MOWING und GOING_HOME über die Websocketverbindung ein Positonsevent empfangen.
Das bedeutet es wird während des Mähens alle 30 s eine Position gesendet.
Um die Eventrate aufrecht zu erhalten, wird die inoffizielle API für den 1. Mäher alle 440 s abgefragt.
Das Modul schaltet sich inaktiv wenn sich alle Mäher in der Ladestation befinden.
Es ist nur aktiv, wenn mindestens ein Mäher die Station verlässt bis sich alle Mäher in der Station befinden.
Der Benutzername bzw. Emailadresse und das Passwort der Smartphoneapp wird für die Definition benötigt.
Vorbereitung
Mit
{ Svn_GetFile('contrib/AutomowerConnect/98_AMConnectTools.pm', 'FHEM/98_AMConnectTools.pm') }
in der FHEM Befehlszeile das Modul laden.
Danach reicht ein Reload des Moduls damit das Gerät definiert werden kann.
reload 98_AMConnectTools.pm
Definition
define AMConnectTools AMConnectTools <Emailadresse>
set AMConnectTools password <Passwort>
Hallo Ellert,
Es gibt zum speichern von Passwörtern in Modulen das offizielle Core Modul Passwords
https://git.cooltux.net/FHEM/mod-Password
Ist für eine einfachere Integration in FHEM Modulen gedacht.
Grüße
Marko
Das ist sinnvoll, danke für den Hinweis.
Es gibt jetzt einen Eintrag im FHEM-Wiki: Modul: AutomowerConnect (https://wiki.fhem.de/wiki/AutomowerConnect).
Die Module gibt es ab morgen im Update, das macht das Testen einfacher.
Super! Ich hab noch das alte Modul und check dann gleich mal d
Vielen lieben Dank für dieses Modul!
Ich habe es bereits eingerichtet, kann allerdings noch kein weiteres Feedback da lassen, da sich unser Mäher derzeit in der Winter-Wartung befindet. Sobald er wieder da ist, werde ich weiter testen.
Beim Anlegen ist mir aber aufgefallen das sich die fhem Instanz aufhängt, nachdem das Gerät definiert wurde. Kam also erst gar nicht dazu den Secret Key einzutragen. Habs dann direkt in die fhem.cfg geschrieben, seitdem läufts ohne Probleme. Connected ist er, zeigt aber wegen der Wartung derzeit einen Fehler an, was aber mit der App überein stimmt.
LG
Robert
Danke für die Rückmeldung.
Aufhänger habe ich noch nicht beobachtet, schaue ich mir aber nochmal an.
Danke für das neue Modul! Klingt vielversprechend ;D
Momentan kann ich zwar noch nicht testen, da sich mein Mäher noch im Winterschlaft befindet, aber ich habe es schon einmal installiert.
Dabei musste ich allerdings feststellen, dass meine komplette fhem-Installation (auf RaspBerryPI 3) nach der Installation des Moduls sehr langsam auf alle Eingaben reagiert oder sich sogar komplett aufhängt. Nach deaktivieren des Moduls (nur extern über putty möglich) läuft alles flüssig wie vorher.
Da es beim state "authenticated" anzeigt, gehe ich 'mal davon aus, dass es das "client_secret" eingelesen hat.
So, der Absturz beim Define ist behoben und die Fehlerbehandlung ist verbessert, ab jetzt im SVN und morgen im Update.
Der Bug beim Define ist mir leider nicht aufgefallen, weil ich mit einem bereits definierten Gerät gearbeitet habe und das client secret schon gespeichert war.
Ja, die meisten Mähroboter sind jetzt wohl noch im Winterschlaf. Wer auf eine Karte mit dem Weg des Mähers wert legt, könnte in Ruhe alles vorbereiten.
@Team-Menge, das träge Verhalten hängt möglicher Weise mit dem Bug beim Define zusammen, und in dem Zusammenhang wurde auch "authenticated" falsch angezeigt. Ich teste auf einem Pi B da läuft alles flüssig.
Ich rate daher dringend zu einem Update.
Danke an alle die testen, das ist hilfreich.
Bei mir auch installiert - läuft.
Aber wie bei den Anderen - Winterruhe :D
Hallo Ellert,
bei mir läuft es jetzt auch erst einmal. Danke für die Anpassungen. Weitere Test folgen demnächst nach der Winterruhe.
LG
Zitat von: Ellert am 27 Januar 2023, 19:03:44
Ja, die meisten Mähroboter sind jetzt wohl noch im Winterschlaf. Wer auf eine Karte mit dem Weg des Mähers wert legt, könnte in Ruhe alles vorbereiten.
Habe gerade mal das mit der Karte gemacht und muss sagen, das ging einfacher als erwartet. Lediglich den Screenshot so zu setzen, das es am Ende mit den Koordinaten wieder 100% übereinstimmt war etwas tricky. Ging aber auch nach zwei Versuchen ganz gut. Danke für diese Art der Lösung!
P.S.: Zum bearbeiten/anpassen der Koordinaten aus der kml-Datei, kann man sehr gut mit Notepad++ und dessen Suchen/Ersetzen Funktion arbeiten um weniger händische Arbeit zu verrichten.
Ab heute gibt es noch ein Featureupdate. So langsam gehen mir die Ideen aus.
Es sind ein paar Readings weniger und dafür die Inhalte kompakter.
Es können 2 Listen angezeigt werden, die Fehlernummer mit Bedeutung und ein paar interne Daten.
Ein Reading ist neu: statistics_newGeoDataSets. Es zeigt die Zahl der im Intervall dazu gekommenen Datensätze an. 50 Datensätze werden in der Cloud gespeichert.
Wenn das Reading immer 50 anzeigt, dann könnte das ein Hinweis sein , dass das Intervall zu lang ist und ggf. Datensätze verloren gehen.
Für den eiligen Anwender wird ohne weitere Einstellungen der Mäherpfad und der vermutliche Standort der Ladestation angezeigt.
Mäher mäht: Der Pfad ist rot dargestellt.
Mäher parkt: Der Pfad ist grau dargestellt.
Zum Testen steht mein Mäher in der Ladestation, etwa alle halbe Stunde gibt es eine neue Position, die Wiederholgenauigkeit der Positionsmessung ist hier im Dachgeschoss miserabel, das hatte ich schon erwähnt.
Mit dem heutigen Update lässt sich mit webCmd und webCmdLabel ein einfaches Frontend für die Raumansicht basteln, wenn der Name geändert wird kann es über Raw definition (das + vor der Befehlszeile) eingespielt werden.
attr am430x0 webCmd Pause:ParkUntilFurtherNotice:Park:ParkUntilNextSchedule:Start:ResumeSchedule:cuttingHeight:headlight
attr am430x0 webCmdLabel Stop:\
:Park for:min\
:Run for:min ; ; ;\
:Height (1,5+:x0,5) cm Light
Und Danke für eure Rüchmeldungen.
PS. Und denkt an fheminfo send
damit die Statistik stimmt ;)
Damit die Detailansicht etwas kompakter wird, werden viele Mäherdaten nicht mehr in Readings geschrieben.
Diese Daten können über 4 Listen angezeigt werden InternalData, errorCodes, MowerData und StatisticsData. In den beiden letzten werden die Hashpfade angezeigt, damit können bedarfsweise userReadings angelegt werden.
Der Trigger für die userReadings ist connected.
Beispiel: Erzeugen des Reading serialnumber mit dem Hashpfad $hash->{helper}{mower}{attributes}{system}{serialNumber}
attr <name> userReadings serialnumber:connected {$defs{$name}->{helper}{mower}{attributes}{system}{serialNumber}}
Begründung für die verliebenen Readings
api_MowerFound: In der Liste aller gefundenen Mäher ist die Zuordnung der Mähernummer zum Mähernamen angegeben. Das ist zur Identifizierung notwendig, wenn mehrere Mäher vorhanden sind.
api_token_expires: Das Token ist 24h gültig, hier kann man auf einen Blick erkennen, ob es regelmäßig aktualisiert wird.
batteryPercent: Alle battriebetriebenen Geräte haben irgend ein Batteriereading.
mower_activity, mower_mode, mower_state, planner_overrideAction planner_restrictedReason: Diese Readings begründen den aktuellen Zustand des Mähers und zeigen im Zusammenspiel eine Abweichung vom Sollzustand.
mower_commandStatus: Hier ist zusehen, ob ein Befehl erfolgreich gesendet wurde.
mower_errorCode, mower_errorCodeTimestamp, mower_errorDescription: Diese Readings markieren eine Abweichung vom normalen Betrieb in menschenlesbarer Form und sind die Grundlage zur Fehlerbehebung.
settings_cuttingHeight, settings_headlight: Sie zeigen den Istzustand als Entscheidungsgrundlage für Änderungen.
state: Dieses Readingzeigt den Zustand des Arbeitsfusses im FHEM-Gerät an und dient als Auslöser für AutomowerConnectDevice Geräte.
statistics_newGeoDataSets: Ist notwendig um ggf. die Intervalldauer begründet zu korrigieren.
statistics_numberOfCollisions: Anhaltspunkt zur evtl. Korrektur des Begrenzungkabel.
status_Timestamp, status_TimestampDiff, status_TimestampOld: Ist in der Betrachtung zusammen mit newGeoDataSets sinnvoll.
status_connected: Damit ist erkennbar ob der Mäher mit der Cloud verbunden ist, und liefert eine mögliche Fehlerursache.
system_name: Mit diesem Reading ist die Identifizierung des Mähers im menschenlesbarer Form möglich.
Noch ein Beispiel für zum Erstellen vermisster Readings: lastLatitude lastLongitude
attr <name> userReadings lastLatitude:connected {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{latitude}},\
lastLongitude:connected {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{longitude}}
Ab morgen steht ein Update zur Verfügung.
Die gemeinsam genutzten Subroutinen von AutommowerConnect und AutommowerConnectDevice wurden in ein Bibliotheksmodul verlagert.
Das macht die Module kleiner und vereinfacht die Pflege.
Ein paar Kleinikeiten wurden bereinigt, die sich bei der letzten Überarbeitung eingeschlichen haben.
Bei bei Update ist ein FHEM Restart Pflicht.
shutdown restart
Mit dem Update, das morgen zur Verfügung steht gibt es ein paar Neuerungen.
Die Fehlermeldung und Fehlerort wird auf der Karte angezeigt.
Es kann eine Hintergrundfarbe angegeben werden.
Die Farben und die Art der Linien können geändert werden.
Es werden für alle Aktivitäten die Pfade angezeigt, wie folgt gruppiert:
- MOWING
- CHARGING|PARKED_IN_CS
- Der letzte zum Fehler gehörende Pfad mit Markierung.
- Zusammengefasst alle anderen Aktivitäten UNKNOWN|NOT_APPLICABLE|GOING_HOME|LEAVING|STOPPED_IN_GARDEN
Funktioniert tadellos! Danke dafür!
Hallo Ellert
Aktuell betreibe ich einen Husqvarna 315 mit dem Robonect-Modul und einer Rolltor-Garage (Relais). Das Modul sendet beim Start des Mowers frühzeitig den Befehl, das Tor zu öffnen (bzw. verzögert den Start des Mowers um ein paar wenige Sekunden) und sobald der Mower parkiert hat, es wieder zu schliessen.
Nun möchte ich den 315 mit dem 415x ersetzen und diesen ohne das Zusatzmodul von Robonect (da AutomowerConnect bereits enthalten ist) betreiben.
Damit beim Start des Mowers das Rolltor rechtzeitig öffnet (Tor benötigt ca. 4 Sekungen bis es ganz offen ist), müsste ich wohl - sofort nach dem Start (mittels DOIF etc.) - eine Pause einlegen, den Öffnungsbefehl via notify ans Tor senden und dann den Mower weiter arbeiten zu lassen.
Eine andere Lösung wäre, wenn man das Schleifensignal (Begrenzung) auslesen könnte. Im ECO-Modus schaltet dieses ca. 4 Sekunden vor dem Start des Mowers ein (also ideale Zeit, um das Öffnen des Tores zu veranlassen).
Frage. Kann mit deinem Modul der Start des Schleifensignals ausgelesen werden?
Gruss
Chris
Die API bietet das Schleifensignal nicht an, daher kann das Modul das Schleifensignal nicht auslesen.
Man kann aber den im Mower hinterlegten Zeitplan auslesen und könne dann das Tor vor dem Start öffnen und beim Wechsel zu PARKED_IN_CS oder CHARGING schliessen.
Wenn der Start automatisiert über das Modul erfolgt, könnte das Tor automatisiert entsprechend vorher geöffnet werden.
4 Sekunden zu pausieren ist eine ziemlich sportliche Anforderung.
Die Reaktion des Mowers auf einen vom Modul gesendeten Befehl liegt nach meinen Beobachtungen eher im Bereich von Minuten
Zitat von: Ellert am 26 März 2023, 00:50:57Wenn der Start automatisiert über das Modul erfolgt, könnte das Tor automatisiert entsprechend vorher geöffnet werden.
Hallo Ellert
Danke für die Ausführungen
Chris
Ellert
Ich habe inzwischen das Modul installiert und mit dem neuen 415X verbunden. Der "state" lautet auf connected.
Frage 1: Die API sendet nicht bei jedem Statuswechsel (mähen, Heimweg, parkieren etc.) die neue "mower_activity" an das Modul?
Frage 2: Zum Beispiel beim Befehl "set cuttingHight" erhalte ich beim Reading "mower_commandStatus" den Code "ERROR statuscode 400"
Ist da irgendetwas (noch) nicht richtig verbunden?
Gruss
Chris
Zu 1: Ja, das ist richtig, sie wird alle 10 min abgefragt, da wird schon mal eine Aktivität verschluckt, s. Commandref: Limit Automower Connect API
Zu 2: Kann sein, im Log sollte mehr stehen.
Zu Unnummeriert: Wenn ich dazu etwas Qualifiziertes sagen soll, dann solltest Du mehr Infos liefern, also das Übliche, Logs, List und was sonst noch aussagekräftig ist.
Zitat von: Ellert am 26 März 2023, 00:50:57Zu 1: Ja, das ist richtig, sie wird alle 10 min abgefragt, da wird schon mal eine Aktivität verschluckt, s. Commandref: Limit Automower Connect API
Daher die "sportlichen" 4 Sekunden im Beitrag #19 :)
Wenn ich also den Mower mit dem Modul starte, erhalte ich den neuen Status unter "mower_activity" (im schlechtesten Fall) nach ca. 10 Minuten. Da frage ich mich natürlich, was genau der Nutzen des Moduls - ausser dem Auslesen der Daten - sein soll.
Auf der App des Handys wird der jeweilige neue Status innert wenigen Sekunden angezeigt. Heisst das nicht, dass die "Automower Connect API" den Status aktiv versendet (Sorry, bin völliger Laie was EDV betrifft).
Gruss
Chris
Die App greift auf eine nicht öffentliche API zu, die z.T. gehackt wurde und vom Modul HusqvarnaAutomower genutzt wird.
Zitat von: outhouse am 07 April 2023, 09:33:44Daher die "sportlichen" 4 Sekunden im Beitrag #19 :)
Nein, Befehle werden unabhängig vom Abfrageintervall gesendet. Es sind die Laufzeiten/Antwortzeiten auf dem Weg von FHEM über LAN/WLAN, Internet, Husqvarna Cloud Server, über Mobilfunk zum Mäher und die Verarbeitung im Mäher und zurück.
Im Reading "mower_commandStatus" wird die Antwort aus Sicht des Cloudservers dargestellt (Befehl O.k./Fehler, Befehl im Befehlsstack des Servers). Ob der Befehl im Mower angekommen ist oder gar ausgeführt wurde ist aus der Antwort nicht ersichtlich.
Mein Mähroboter ist jetzt im Wirkbetrieb, dabei habe ich beobachtet das beim Mähen etwa alle 30 s und beim Parken/Laden etwa alle 42 min ein Geodatensatz erzeugt wird.
Damit kann man die benötigten Datensätze für die Darstellung der Mähstrecke abschätzen, um sie im Attribut numberOfWayPointsToDisplay anzugeben, default wird 5000 sein.
Hallo zusammen,
irgendwie werde ich aus den Farben der Pfade auf der Karte nicht schlau. Ich sehe Pfade in Rot, Grün und Grau. Rot scheint der aktuelle Pfad zu sein. Wofür steht dann Grün und Grau?
Rot für Aktivität MOWING
Grau für CHARGING/PARKED_IN_CS
Grün für Alle anderen AKtivitäten, ausser im Fehlerfall
Magenta für NOT_APPLICABLE bei Fehler (der Weg im Intervall in dem der Fehler auftritt).
Grau und Grün sind als experimentell anzusehen, da der Informationsgehalt gegen null geht.
Ein Pfad wird nicht angezeigt, wenn die Zuordnung nicht eindeutig ist, also beim Wechsel einer Aktivität im Intervall, daher können Lücken in der Darstellung entstehen.
Letztlich soll der Pfad beim Mähen ein Bild von Gleichmässigkeit der Abdeckung ergeben, um ggf. Schwachstellen aufzudecken oder Fernstartpunkte festzulegen. Die Genauigkeit ist allerdings nicht sehr hoch, da nicht für jeden Richtungswechsel ein Geodatensatz erzeugt wird.
Es kann also sein, dass auf der Karte Lücken dargestellt werden, die auf dem Rasen nicht vorhanden sind.
Gibt es eine einfache Möglichkeit die mowingAreaLimits in eine definiertze Richtung zu verschieben? Ich hatte die wie in der Anleitung beschrieben aus Google Earth raus gezogen. Das passt auch von Größe und Form soweit ganz gut. Ich müsste ledigloich die ganze Karte um ein klein wenig nach links und nach oben verschieben, damit die eingezeichneten Pfade auch innerhalb der Grenzen liegen. Wäre ideal, wenn es ein Attribut mit X und Y Offset geben würde, wo man die Korrektur einfach eintragen kann. Da ich ein sehr komplexes Grundstück habe, will ich ungern ~50 Koordinaten neu mit einem Offset aufnehmen.
Wegen der mäßigen Genauigkeit der GPS-Daten aus dem Mäher. reicht es vielleicht die Karte zu verschieben, also mapImageCoordinatesToRegister anzupassen, falls keine Gründstücksgrenze eingezeichnet ist, die passt.
Zum Verschieben der Mähbereichsgrenze würde ich eine Tabellenkalkulation verwenden. Die Koordinaten kopieren und daneben mit einer Formel den Offset addieren und die berechneten Werte zurück ins Attribut kopieren oder im CSV-Format exportieren und das kopieren.. Eventuell noch den Dezimaltrenner/Feldtrenner mit suchen und ersetzen anpassen.
So könnte man auch eine Streckung/Dehnung der Grenze realisieren.
Moinsen, vielen Dank für das Erstellen dieses Moduls. Während sein Vorgängermodul nach Eingabe von Benutzername und Passwort einfach mit einem Fehler ausstieg, funktioniert dieses hier und liest die Daten des Mähers aus. Freut mich, danke!
Ich versuche mich nun gerade mal an den Feinheiten. U.a. möchte ich mapImageCoordinatesToRegister setzen. Die Daten habe ich als kml aus Google exportiert. Wenn ich sie eingeben möchte, erhalte ich allerdings einen Fehler:
attr myMower mapImageCoordinatesToRegister 19.01234567890123 50.01234567890123
führt zu
AutomowerConnect myMower Attr: mapImageCoordinatesToRegister has a wrong format use linewise pairs <floating point longitude><one space character><floating point latitude>
Ich habe mal testweise die Punkte durch Kommas ersetzt, ohne Erfolg. Was mache ich falsch, bitte?
Du hast nur eine Ecke angegeben, es fehlt die zweite Zeile mit der Anderen.
Steht so auch in der Befehlsreferenz:
ZitatObere linke und untere rechte Ecke der Fläche ...
Format: Zeilenweise Paare von Longitude- u. Latitudewerten getrennt durch 1 Leerzeichen.
Mit dem aktuellen Update lassen sich die Wochentage festlegen an denen der Wegpunktspeicher gelöscht wird. Voreingestellt ist die Löschung montags.
Die Löschung erfolgt im ersten Intervall nach Mitternacht. Die Einstellung erfolgt über das Attribut weekdaysToResetWayPoints.
Nachtrag zum Beitrag #27:
Mit dem Attribut mapDesignAttributes können einige HTML Attribute gesetzt werden, die das Erscheinungsbild der Kartendarstellung verändern, z.B. die Farben, Strichstärke und der Strichtyp der Pfade und Grenzen.
Zum Bearbeiten können die Vorgabewerte in das Attribut geladen werden, mit:
set <name> defaultDesignAttributesToAttribute
Kann es sein das die Fahrten des Mowers von Ladestation zum Startpunkt des Mähens und wieder zurück nicht geloggt werden?
Beispiel.png
Hier mal ein Beispiel von heute. Der Mower ist oben auf die Wiese gefahren und hat dort gemäht. Nach dem erneuten Aufladen in der Station hat er die Große Wiese unten gemäht. Anstatt die Pfade bis zur Station und dann unten auf die Wiese, wurde eine Linie direkt vom Endpunkt des Mähens oben bis zum Startpunkt auf der unteren Wiese eingezeichnet. Das Gleiche dann als er auf die kleine Fläche vor der Ladestation gewechselt ist nach einem erneuten Ladevorgang.
Ist nicht super wichtig, dass das korrigiert wird, aber es verwirrt doch schon ein wenig. Werden die Positionsdaten währnd der Fahrten einfach nicht geloggt? Oder ist das ein Fehler den man eventuell beheben kann?
Ja, das ist der Zielsetzung der Darstellung geschuldet. Interessant zum Identifizieren vernachlässigter Bereiche ist nur die Aktivität MOWING.
Neue Datensätze können nur eindeutig einer Aktivität zugeordnet werden, wenn im Intervall die Aktivität nicht wechselt. Deshalb werden nur neue Wegpunkte berücksichtigt bei denen die alte und neue Aktivität MOWING ist. Das führt zu den beobachteten Effekten.
Könnte man die anderen Aktivitäten (Verlässt Ladestation und Auf dem Weg zur Ladestation) nicht andersfarbig einzeichnen? Aktuell habe ich dank der neuesten Firmware mal wieder das Problem, dass er manchmal meterweit abdriftet und den vorgesehenen Startpunkt in 8 von 10 Fällen nicht erreicht.
UM dem Problem auf den Grund zu gehen wäre es super interessant für mich, wenn man einfach wählen könnte welche Aktivitäten eingezeichnet werden.
In den Aktivitäten LEAVING und GOING_HOME befindet sich der Mäher nur kurz, so dass sie von der API selten erfasst werden und wenn die Aktivitäten auftauchen nur für 1 Intervall. Dann ist nicht feststellbar in welcher Wegpunkt zur alten und zur aktuellen Aktivität gehört.
Ich denke, das erwähnte Problem löst Du schneller mit der Livebeobachtung und wenn's die Firmware ist nur durch abwarten.
Dass die (Smartphone-) App von Husqvarna grundsätzlich eine Katastrophe ist, darüber brauchen wir nicht zu streiten. Da kann man weltweit Bankaufträge (halbwegs sicher) innert Sekunden ausführen, aber Husqvarna bringt es nicht auf die Reihe, einen Rasenmäher mittels der App sauber zu steuern (ich weiss, die Aussage gehört nicht hier hin).
Was das Modul 74_AutomowerConnect betrifft, frage ich mich noch immer, welchen (Mehr-) Wert mir dieses Modul bringen soll (siehe auch Beitrag #23).
Zitat von: Ellert am 20 April 2023, 13:44:26In den Aktivitäten LEAVING und GOING_HOME befindet sich der Mäher nur kurz, so dass sie von der API selten erfasst werden und wenn die Aktivitäten auftauchen nur für 1 Intervall.
Zitat von: Ellert am 07 April 2023, 13:08:45Nein, Befehle werden unabhängig vom Abfrageintervall gesendet. Es sind die Laufzeiten/Antwortzeiten auf dem Weg von FHEM über LAN/WLAN, Internet, Husqvarna Cloud Server, über Mobilfunk zum Mäher und die Verarbeitung im Mäher und zurück.
Bei FHEM sind somit Befehle, die in Abhängigkeit der Aktivitäten ausgeführt werden sollen, nicht umsetzbar (öffnen/schliessen einer Passage oder eines Garagentores).
Sogar auf der Husqvarna App wird die Aktivität (inklusive LEAVING und GOING_HOME) innert Sekunden anzeigt. Ich denke, die Antwortzeiten nehmen denselben weg (über LAN/WLAN etc.) ...
Auch beim IOBroker funktioniert es problemlos. Alle Aktivitäten werden wie bei der App innert Sekunden angezeigt; nichts wird verschluckt.
Solange die minutenlangen Antwortzeiten nicht behoben sind, sehe ich für mich in diesem Modul keine Anwendungsmöglichkeit.
@Ellert: Verstehe mich nicht falsch. Ich habe grossen Respekt vor Personen die solche Module programmieren können. Auch bin ich mir bewusst, dass du eine Menge Zeit und Schweiss in dieses Modul gesteckt hast und noch stecken wirst.
Gruss
Chris
@outhouse:
Ich kann Deinen Frust verstehen, hätte ich auch, wenn ich mir einen neuen Mäher gekauft hätte und ich das vom alten Mäher gewohnte Robonect Modul nicht einbauen könnte.
Alternativen hast Du ja selbst genannt, also alles halb so schlimm.
Mit dem morgigen Update können Zonen definiert und ein Pfadabschnitt hervorgehoben werden.
Mit der Zonendefinition (Attribut mapZones), soll es möglich werden die Gewichtung der Fernstartpunkte zu bewerten. Die berechnete Gewichtung wird mit dem Getter StatisticsData angezeigt.
Das Reading mower_currentZone zeigt die Zone an , in der der Mäher zuletzt aktiv war inkl. Zahl der Wegpunkte in der Zone und Zahl der Wegpunkte im Intervall.
Mit dem Attribut mowerActivityToHighLight kann ein Pfadabschnitt bezogen auf die Mäheraktivität (Reading mower_activity) hervorgehoben werden.
Der Startpunkt kann bei Bedarf mit der Ergänzung mowingPathDisplayStart="1" im Attribut mapDesignAttributes wieder eingeschaltet werden.
Erläuterungen mit Beispiel stehen in der Befehlsreferez.
Das morgige Update enthält eine erweiterte Zonenstatistik. Es wird zusätzlich zum Verhältnis der Wegpunkte in den Zonen auch der jeweilige Anteil der gemähten Fläche dargestellt.
Mit dem morgigen Update ist es möglich in selbst definierten Zonen die Schnitthöhe automatisch zu setzen, wenn der Mäher sich in der Zone befindet.
Beispiel für den JSON-String aus der Befehlsreferenz:
'{
"01_oben" : {
"condition" : "$latitude > 52.6484600648553 || $longitude > 9.54799477359984 && $latitude > 52.64839739580418",
"cuttingHeight" : "7"
},
"02_unten" : {
"condition" : "undef",
"cuttingHeight" : "3"
}
}'
Hallo,
kann man die Wegstreckengrafik aus fhem rausbekommen? Ich möchte die in einer anderen Visu verwenden.
Grüße
Was mir bekannt ist steht im Wiki https://wiki.fhem.de/wiki/AutomowerConnect.
Grundsätzlich sollte get <device> html funktionieren, wenn die andere Visu das importieren kann.
Hallo zusammen, leider bekomme ich kein ordentliches Hintergrundbild passend zu den Mäher Koordinaten hin...
In der App wurde ja automatische mittels AIM eine super Karte mit Grenzen erstellt. Kann man diese bzw. das AIM evtl. gleich mit in FHEM nutzen?
Siehe Foto.
Danke im Voraus
ZitatKann man diese bzw. das AIM evtl. gleich mit in FHEM nutzen?
Ich wüsste nicht wie. In der Husquvarna API gibt es keinen Hinweis darauf.
Hallo, ich muss noch einmal nachfragen.
Irgendwie klappt es mit der Anleitung nicht so recht mit der Karte.
Sie Anhang.
- Die orangenen Stiche sind die Koordinaten die ich aus der kml Datei in fhem eingetragen habe.
- Das Foto (webp) habe ich extra mal mit den in Google Earth Pro erstellten Punkten aufgenommen
> roter Strich von links oben nach rechts unten = die Koordinaten wurden auch in fhem eingetragen
> rote Umrandung des Mähbereiches extra im Bild gelassen um den Unterschied in FHEM zu sehen
warum ist das so verschoben und wie kann ich das besser hinbekommen?
Vielen Dank im Voraus
Wenn ich nun händisch die Koordinaten bei "mapImageCoordinatesToRegister" anpasse bekomme ich zwar die Karte besser überlappt, nur ist die rote Umrandung des Fotos viel größer als die Koordinaten (orangene Umrandung)
So ungenau kann das doch nicht Sinn des Erfinders sein, oder?
gleich noch die nächsten Fragen:
ich möchte gern die Karte in FTUI einbetten. Laut Wiki soll man dies mit "FTUI Widget Readingsgroup " machen.
Das kann ich mir irgendwie nicht vorstellen, bzw. weis ich nicht wie? DOIF und weblink im fhemweb waren ja kein Problem.
weches data-device muss beim data-type="readingsgroup"
genutzt werden und müssen in FTUI moch andere Attribute rein?
ich hatte vorher einen Bosch Indego, diese weblink Karte wurde mittels data-type="iframe" data-src="http://192.168.2.111:8083/fhem/INDEGO/INDEGO/map/340" data-fill="yes" data-device="INDEGO" data-get="mapsvgcache_ts"></div>
eingefügt.
Nur kann ich nicht sagen welche http dies nun wäre.
--------------------------------------------------------------------------------------------------------------------
weiterhin habe ich userreadings erstellt um Mäherdaten zu erweitern.
Kann mir jemand sagen wie das userreading
Gesamtfahrzeit:connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalRunningTime}},\
erweitert werden muss um aus den Sekunden, wie in der App als Stunden auszugeben?
Also das dieses userreading automatisch gleich :3600 rechnet, oder muss dafür nochmal ein weiteres userreading erstllt werden.
Vieleicht kann mit jemand die Berechnung als code zeigen.
Vielen Dank im Voraus
und schon die nächste Frage.
Ich möchte in FTUI den aktuellen Status des Mähers anzeigen lassen. Scheinbar wird dies aber schwierig, da aktuell 2 verschiedene Readings mit dem Status gefüllt werden.
mower_state
zeigt "IN_OPERATION" oder "PAUSED" an > wenn der Mäher "in der Ladestation ist" wird "IN_OPERATION"oder "PAUSED" angezeigt da dort immer der letzte Status nicht überschrieben wird
mower_activity
zeigt "CHARGING" oder "MOWING" an > wenn der Mäher "Pausiert" wird im Status "NOT_APPLICABLE" angezeigt
ich kann dies somit nicht auswerten. Hat dies einen Hintergrund? Oder könnte man das ändern?
Weil so macht das doch eigentlich gar keinen Sinn
Und die Gesamtstreckenzeit des Mähers kann auch nicht ausgewertet werden?
In der App wird mir diese Angezeigt. Als userreadings finde ich aber nur Tag, Vortag, Woche und Vorwoche
Zitat von: Depechem am 14 Mai 2023, 08:23:25Hallo, ich muss noch einmal nachfragen.
Irgendwie klappt es mit der Anleitung nicht so recht mit der Karte.
Sie Anhang.
- Die orangenen Stiche sind die Koordinaten die ich aus der kml Datei in fhem eingetragen habe.
- Das Foto (webp) habe ich extra mal mit den in Google Earth Pro erstellten Punkten aufgenommen
> roter Strich von links oben nach rechts unten = die Koordinaten wurden auch in fhem eingetragen
> rote Umrandung des Mähbereiches extra im Bild gelassen um den Unterschied in FHEM zu sehen
warum ist das so verschoben und wie kann ich das besser hinbekommen?
Vielen Dank im Voraus
Solche Verzerrungen hatte ich nur, wenn ich das https://wiki.fhem.de/wiki/AutomowerConnect#Koordinaten_ermitteln_mit_Google_Earth_Pro nicht beachtet hatte.
Zitat von: Depechem am 14 Mai 2023, 10:35:24gleich noch die nächsten Fragen:
ich möchte gern die Karte in FTUI einbetten. Laut Wiki soll man dies mit "FTUI Widget Readingsgroup " machen.
Das kann ich mir irgendwie nicht vorstellen, bzw. weis ich nicht wie? DOIF und weblink im fhemweb waren ja kein Problem.
weches data-device muss beim data-type="readingsgroup"
genutzt werden und müssen in FTUI moch andere Attribute rein?
ich hatte vorher einen Bosch Indego, diese weblink Karte wurde mittels data-type="iframe" data-src="http://192.168.2.111:8083/fhem/INDEGO/INDEGO/map/340" data-fill="yes" data-device="INDEGO" data-get="mapsvgcache_ts"></div>
eingefügt.
Nur kann ich nicht sagen welche http dies nun wäre.
--------------------------------------------------------------------------------------------------------------------
weiterhin habe ich userreadings erstellt um Mäherdaten zu erweitern.
Kann mir jemand sagen wie das userreading
Gesamtfahrzeit:connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalRunningTime}},\
erweitert werden muss um aus den Sekunden, wie in der App als Stunden auszugeben?
Also das dieses userreading automatisch gleich :3600 rechnet, oder muss dafür nochmal ein weiteres userreading erstllt werden.
Vieleicht kann mit jemand die Berechnung als code zeigen.
Vielen Dank im Voraus
Für ReadingsGroup und Iframe bin ich nicht der Richtige, im Wiki sind die Widgets aber beschrieben, das Readingsgroupwidget nutzt get html
Umrechnung in Stunden: hash.../3600 , kein neues Userreading erforderlich.
Zitat von: Depechem am 14 Mai 2023, 11:25:57und schon die nächste Frage.
Ich möchte in FTUI den aktuellen Status des Mähers anzeigen lassen. Scheinbar wird dies aber schwierig, da aktuell 2 verschiedene Readings mit dem Status gefüllt werden.
mower_state
zeigt "IN_OPERATION" oder "PAUSED" an > wenn der Mäher "in der Ladestation ist" wird "IN_OPERATION"oder "PAUSED" angezeigt da dort immer der letzte Status nicht überschrieben wird
mower_activity
zeigt "CHARGING" oder "MOWING" an > wenn der Mäher "Pausiert" wird im Status "NOT_APPLICABLE" angezeigt
ich kann dies somit nicht auswerten. Hat dies einen Hintergrund? Oder könnte man das ändern?
Weil so macht das doch eigentlich gar keinen Sinn
Die Readings kommen so aus der API, wenn Du was Individuelles möchtest, mach es mit Userreadings.
Zitat von: Depechem am 14 Mai 2023, 13:03:00Und die Gesamtstreckenzeit des Mähers kann auch nicht ausgewertet werden?
In der App wird mir diese Angezeigt. Als userreadings finde ich aber nur Tag, Vortag, Woche und Vorwoche
Mit einem DOIF sollte es möglich sein die Zeiten für die Aktivität MOWING zu messen oder StatusTimestamp auszuwerten, alternativ gibt es das Statistik Modul, dblog und dbrep.
Ergänzung zu #52
Das Attribut mapImageCoordinatesUTM muss nach mapImageCoordinatesToRegister gesetzt werden, die Standartwerte für die Umrechnung gelten für die Mitte Deutschlands und sind daher eher ungenau.
Vielleicht hilft es auch in Google Earth Pro beim Zeichnen in den Linien(Pfad)eigenschaften mit den Einstellmöglichkeiten der Höhenangaben zu experimentieren. Die Linien sollten am Boden liegen, denke ich.
Der Kartenausschnitt muss natürlich aus der gleichen Sicht erstellt werden in der die Linien gezeichnet werden.
Wird die Karte in der 3D Ansicht erstellt, sind perspektivische Verzerrungen Möglicherweise nicht ganz auszuschliessen.
Zitat von: Ellert am 14 Mai 2023, 23:34:47Für ReadingsGroup und Iframe bin ich nicht der Richtige, im Wiki sind die Widgets aber beschrieben, das Readingsgroupwidget nutzt get html
Tja das habe ich schon alles probiert, nur ohne Erfolg.
Woher hast du die Info das eine html Karte mittels "FTUI Widget Readingsgroup" anzeigbar sein soll
Zitat von: Ellert am 14 Mai 2023, 23:14:27Solche Verzerrungen hatte ich nur, wenn ich das https://wiki.fhem.de/wiki/AutomowerConnect#Koordinaten_ermitteln_mit_Google_Earth_Pro nicht beachtet hatte.
Das habe ich alle beachtet, nur mit der Info "Die Toolbar zum Bild speichern einschalten" konnte ich nichts anfangen. Finde ich im "Google Earth Pro" nicht
Zitat von: Depechem am 15 Mai 2023, 09:43:42Zitat von: Ellert am 14 Mai 2023, 23:34:47Für ReadingsGroup und Iframe bin ich nicht der Richtige, im Wiki sind die Widgets aber beschrieben, das Readingsgroupwidget nutzt get html
Tja das habe ich schon alles probiert, nur ohne Erfolg.
Woher hast du die Info das eine html Karte mittels "FTUI Widget Readingsgroup" anzeigbar sein soll
Readingsgroup bietet den Getter 'get <device> html' , den kann auch AutomowerConnect. Folglich sollte das Widget auch andere Devices die 'get <device> html' als Getter anbieten anzeigen.
Wie hast Du das Widget inFTUI implementiert?
Zitat von: Depechem am 15 Mai 2023, 09:59:57Zitat von: Ellert am 14 Mai 2023, 23:14:27Solche Verzerrungen hatte ich nur, wenn ich das https://wiki.fhem.de/wiki/AutomowerConnect#Koordinaten_ermitteln_mit_Google_Earth_Pro nicht beachtet hatte.
Das habe ich alle beachtet, nur mit der Info "Die Toolbar zum Bild speichern einschalten" konnte ich nichts anfangen. Finde ich im "Google Earth Pro" nicht
"Google Earth Pro" Datei -> Speichern -> Bild speichern
Mit den morgigen Update gilt das Modul 75_AutomowerConnectDevice.pm als veraltet. Dies betrifft nur User, die mehr als einen Automower betreiben und die das Modul AutomowerConnectDevice nutzen.
Laut Statistik gibt es keine User die dieses Modul nutzen. Sollte doch jemand das Modul nutzen, muss er zwingend und umgehend, dh. sofort nach dem Update seine Definitionen auf das Modul AutomowerConnect ändern. Jede Definition benötigt einen eigenen Application Key.
Mit dieser Änderung wird die Nutzung von Websocket zum Datenaustausch vorbereitet. Mit Websocket entfällt das Polling der Schnittstelle und somit kommt die Begrenzung der API auf 10000 Abfragen pro Monat nicht mehr zum tragen. Diese Beschränkung war der Grund für das jetzt veraltete Modul.
Websocket hat den Vorteil, dass die Daten ereignisnah übertragen werden und nicht eine Intervalldauer gewartet werden muss.
Der Vorteil für mich ist, dass ich nur ein Modul warten muss.
Das Update mit Websocketnutzung kommt demnächst, die Tests laufen bisher stabil.
Zitat von: Ellert am 15 Mai 2023, 10:08:15Readingsgroup bietet den Getter 'get <device> html' , den kann auch AutomowerConnect. Folglich sollte das Widget auch andere Devices die 'get <device> html' als Getter anbieten anzeigen.
Wie hast Du das Widget inFTUI implementiert?
Ja so hab ich ihn auch eingebunden, aber das funktioniert leider nicht.
<section>
<header>Karte</header>
<div class="cell">
<div data-type="readingsgroup" data-device="get RasenroboterAM405X html"></div>
</div>
</section>
Ohne get html, so wie im für das widget im wiki beschrieben, ggf. das Polling setzen oder was ftui an eigenen Attributen fordert, da bin ich überfragt.
Zitat von: Ellert am 15 Mai 2023, 10:17:54Zitat von: Depechem am 15 Mai 2023, 09:59:57Zitat von: Ellert am 14 Mai 2023, 23:14:27Solche Verzerrungen hatte ich nur, wenn ich das https://wiki.fhem.de/wiki/AutomowerConnect#Koordinaten_ermitteln_mit_Google_Earth_Pro nicht beachtet hatte.
Das habe ich alle beachtet, nur mit der Info "Die Toolbar zum Bild speichern einschalten" konnte ich nichts anfangen. Finde ich im "Google Earth Pro" nicht
"Google Earth Pro" Datei -> Speichern -> Bild speichern
Ich habe jetzt nochmal mehrmals probiert und etwas angepasst. langsam wird es genauer.
Zitat von: Ellert am 16 April 2023, 19:26:46Mit dem aktuellen Update lassen sich die Wochentage festlegen an denen der Wegpunktspeicher gelöscht wird. Voreingestellt ist die Löschung montags.
Die Löschung erfolgt im ersten Intervall nach Mitternacht. Die Einstellung erfolgt über das Attribut weekdaysToResetWayPoints.
Nachtrag zum Beitrag #27:
Mit dem Attribut mapDesignAttributes können einige HTML Attribute gesetzt werden, die das Erscheinungsbild der Kartendarstellung verändern, z.B. die Farben, Strichstärke und der Strichtyp der Pfade und Grenzen.
Zum Thema Wegpunkte-Anzeige (Striche auf der Karte) habe ich noch eine Frage:
Mit
weekdaysToResetWayPoints 0123456
sehe ich auf der Karte dann nur noch meine täglichen Fahrten? richtg?
Im Umkehrschluss verstehe ich das
attr <name> numberOfWayPointsToDisplay <number of way points>
nicht ganz. was bewirkt dieses dann?
Kannst du bitte nochmal erklären wie beide attr gemeint sind.
Ich möchte gern nur die täglichen Fahrstrecken auf der Karte angezeigt bekommen.
Zitat von: Ellert am 18 Mai 2023, 15:47:55Ohne get html, so wie im für das widget im wiki beschrieben, ggf. das Polling setzen oder was ftui an eigenen Attributen fordert, da bin ich überfragt.
nein ohne get html kann es ja nicht gehen. Wenn dann müsste warscheinlich in fhem erst eine Readingsgroup mit der karte erstellt werden, dessen Karte wird dann mit dem "FTUI Widget Readingsgroup" eingebunden.
Aber selbst in FHEM einen Readingsgroup mit der Karte zu befüllen bekomme ich nicht hin. und dies wäre dann alles doppelt gemoppelt.
Irgendwie müsste man raus bekommen ob deine Karte einen html Pfad hätte, diesen man dann einfügt
ZitatnumberOfWayPointsToDisplay
Legt die max Größe des Wegpunktspeicher (default 5000) fest, wenn voll, wird durchgeschoben.
ZitatweekdaysToResetWayPoints
Richtig erkannt, aber unter Berücksichtigung der max Größe.
Zitat von: Ellert am 18 Mai 2023, 16:34:33ZitatnumberOfWayPointsToDisplay
Legt die max Größe des Wegpunktspeicher (default 5000) fest, wenn voll, wird durchgeschoben.
ZitatweekdaysToResetWayPoints
Richtig erkannt, aber unter Berücksichtigung der max Größe.
aktuell habe ich testeweise
numberOfWayPointsToDisplay
auf 20 eingestellt. trotzdem zeigt es mir auf der karter die gleichen vielen Striche der Fahrwege an.
Zitat von: Depechem am 18 Mai 2023, 16:26:13Zitat von: Ellert am 18 Mai 2023, 15:47:55Ohne get html, so wie im für das widget im wiki beschrieben, ggf. das Polling setzen oder was ftui an eigenen Attributen fordert, da bin ich überfragt.
nein ohne get html kann es ja nicht gehen. Wenn dann müsste warscheinlich in fhem erst eine Readingsgroup mit der karte erstellt werden, dessen Karte wird dann mit dem "FTUI Widget Readingsgroup" eingebunden.
Aber selbst in FHEM einen Readingsgroup mit der Karte zu befüllen bekomme ich nicht hin. und dies wäre dann alles doppelt gemoppelt.
Irgendwie müsste man raus bekommen ob deine Karte einen html Pfad hätte, diesen man dann einfügt
Wie gesagt für Frontends bin ich der falsche Ansprechpartner.
Die Karte hat keinen Html-Pfad, den ich bereitstellen kann, die Zeichenarbeit findet im Browser (canvas) statt nicht im Modul.
Ich bin aber für funktionierende Patches offen.
Zitat von: Depechem am 18 Mai 2023, 16:41:48Zitat von: Ellert am 18 Mai 2023, 16:34:33ZitatnumberOfWayPointsToDisplay
Legt die max Größe des Wegpunktspeicher (default 5000) fest, wenn voll, wird durchgeschoben.
ZitatweekdaysToResetWayPoints
Richtig erkannt, aber unter Berücksichtigung der max Größe.
aktuell habe ich testeweise numberOfWayPointsToDisplay
auf 20 eingestellt. trotzdem zeigt es mir auf der karter die gleichen vielen Striche der Fahrwege an.
20 ist ja auch Unsinn, um den zu vermeiden geht nicht weniger als der default, wenn ich mich recht erinnere.
Zitat von: Ellert am 18 Mai 2023, 16:48:13Zitat von: Depechem am 18 Mai 2023, 16:41:48Zitat von: Ellert am 18 Mai 2023, 16:34:33ZitatnumberOfWayPointsToDisplay
Legt die max Größe des Wegpunktspeicher (default 5000) fest, wenn voll, wird durchgeschoben.
ZitatweekdaysToResetWayPoints
Richtig erkannt, aber unter Berücksichtigung der max Größe.
aktuell habe ich testeweise numberOfWayPointsToDisplay
auf 20 eingestellt. trotzdem zeigt es mir auf der karter die gleichen vielen Striche der Fahrwege an.
20 ist ja auch Unsinn, um den zu vermeiden geht nicht weniger als der default, wenn ich mich recht erinnere.
ok, wäre schön wenn du dies ins Wiki oder commandref noch einfügen könntest.
Nur verstehe ich den Sinn der zwei verschiedenen attr noch nicht ganz.
Mit
weekdaysToResetWayPoints
kann ich sagen wie viele Tage (Max. 7 Tage) die Fahrwege auf der Karte angezeigt werden. bzw. wann die auf der Karte gelöscht werden.
Mit
numberOfWayPointsToDisplay
kann ich mehr als 5000 Wegpunkte einstellen > würde aber bedeuten das der Mäher mehr als 5000 Wegpunkte innerhalb 7 Tagen fahren müsste. Wo anders werden die Punkte ja nicht geloggt bzw. benötigt oder? Also das man eine Karte hätte die mir die Tagesfahrtstrecken anzeigt sowie eine Karte die mir die letzten (Beispilsweise) 5000 Wegstrecken anzeigt!?
Ohne mit welechem Hintergrund hast du beide attr erstellt?
Zitatok, wäre schön wenn du dies ins Wiki
Wohlformulierte und inhaltlich korrekte Ergänzungen im Wiki darf jeder machen.
Aber erst wenn die Beispilse von heute (Vatertag) verstoffwechselt sind ;)
Zitatdie letzten (Beispilsweise)
was bewirkt set ... mapZonesTemplateToAttribute
?
Ist nirgends dokumentiert und scheint auch kein attr zu setzen
Wo hast Du die Schreibweise her?
In dem morgigen Update wurde das Modul 75_AutomowerConnectDevice.pm. wie angekündigt gelöscht.
Wer noch eine Definition mit AutomowerConnectDevice hat sollte vor dem Update die Definition auf AutomowerConnect ändern und je Definition einen anderen Application Key verwenden.
Damit steht der Umstellung vom Polling der API auf eine dauerhafte Websocketverbindung mit ereignisnaher Datenübertragung nichts mehr im Weg.
Die neue Version wird demnächst eingecheckt.
@Depechem: Danke fürs Testen und deine Anregungen, einiges findet sich in der neuen Version wieder.
Ab dem morgigen Update:
Das Modul wurde mit einer Websocketverbindung zur Husqvarna API ergänzt, damit werden Änderungen ereignisnah angezeigt.
Das Attribut mowerActivityToHighLight steht nicht mehr zur Verfügung. Eine Hervorhebung kann über das Attribut mapDesignAttributes eingestellt werden.
Das Attribut interval wird nicht mehr benötigt , da die Websocketverbindung Events mit Datenupdates sendet.
Das Reading status_TimestampOld wird nicht mehr aktualisiert und darf mit deletereading gelöscht werden. Das Reading status_TimestampDiff sollte ausreichend sein zur Beurteilung der letzten Aktualisierung.
Das Reading state zeigt den Zustand der Websocketverbindung an. Das ist durch DevIo vorgegeben.
Das neue Reading device_state übernimmt die Funktion von state, also auch die Triggerung von userReadings, usw.
Das neue Reading mower_wsEvent zeigt die vom Mäher gesendeten Events(status-event, positions-events, settings-events) an.
Das neue Reading mower_commandSend zeigt den letzten erfolgreich gesendeten Befehl an.
Die vorletzten API-Daten werden nicht mehr gespeichert.
Das Mähericon wird in die Hauptbewegungsrichtung (Nord, Süd, Ost, West) positioniert.
ACHTUNG: Möglicherweise funktioniert der bereits verwendete Application Key (client_id) nicht, es muss dann ein neuer Key erzeugt und verwendet werden, siehe https://developer.husqvarnagroup.cloud/apis/automower-connect-api#websocket
Nach einem fehlerfreien Update sollte einmal save config ? im Frontend durchgeführt werden damit die Löschungen gespeichert werden.[/i]
Browsercache löschen und die Webseite neu laden.
Zitat von: Ellert am 23 Mai 2023, 17:09:28Ab dem morgigen Update:
Das Modul wurde mit einer Websocketverbindung zur Husqvarna API ergänzt, damit werden Änderungen ereignisnah angezeigt.
Das Attribut mowerActivityToHighLight steht nicht mehr zur Verfügung. Eine Hervorhebung kann über das Attribut mapDesignAttributes eingestellt werden.
Das Attribut interval wird nicht mehr benötigt , da die Websocketverbindung Events mit Datenupdates sendet.
Das Reading status_TimestampOld wird nicht mehr aktualisiert und darf mit deletereading gelöscht werden. Das Reading status_TimestampDiff sollte ausreichend sein zur Beurteilung der letzten Aktualisierung.
Das Reading state zeigt den Zustand der Websocketverbindung an. Das ist durch DevIo vorgegeben.
Das neue Reading device_state übernimmt die Funktion von state, also auch die Triggerung von userReadings, usw.
Das neue Reading mower_wsEvent zeigt die vom Mäher gesendeten Events(status-event, positions-events, settings-events) an.
Das neue Reading mower_commandSend zeigt den letzten erfolgreich gesendeten Befehl an.
Die vorletzten API-Daten werden nicht mehr gespeichert.
Das Mähericon wird in die Hauptbewegungsrichtung (Nord, Süd, Ost, West) positioniert.
ACHTUNG: Möglicherweise funktioniert der bereits verwendete Application Key (client_id) nicht, es muss dann ein neuer Key erzeugt und verwendet werden, siehe https://developer.husqvarnagroup.cloud/apis/automower-connect-api#websocket
Nach einem fehlerfreien Update sollte einmal save config ? im Frontend durchgeführt werden damit die Löschungen gespeichert werden.[/i]
Browsercache löschen und die Webseite neu laden.
Hallo Ellert,
Ich habe geupdatet. Auch einen neuen Key habe ich erstellt.
Trotzdem kommt immer folgende Fehlermeldung direkt bei öffnen des Moduls.
#FHEMWEB notification:
AutomowerConnectUpdateDetail ( 'RasenroboterAM405X', 'AutomowerConnect', './fhem/AutomowerConnect/RasenroboterAM405X/map', 951, 686, 539, 89, 'top', 65.5998735272603, [ '-', '' ], [ 696,217,605,246,586,161,609,144,647,303,633,282,656,293,641,287,716,226,709,217,667,275,580,266,546,224,482,103,601,107,750,116,746,178,745,108,727,198,760,157,715,124,596,93,609,240,664,271,609,106,554,160,657,164,542,93,573,182,637,295,643,298,639,297,634,267,603,211,587,83,529,122,562,102,583,247,581,181,658,93,608,99,586,212,631,204,608,129,558,139,623,269,620,214,533,93,649,137,647,95,659,167,554,138,602,117,574,260,548,109,541,122,562,123,660,219,548,203,522,127 ], [ 457,76,800,115,739,214,693,184,715,143,709,138,681,183,729,221,675,299,631,268,595,312,585,313,577,322,579,338,570,351,614,390,544,464,516,437,492,468,513,493,385,601,357,586,337,600,315,607,272,577,307,526,307,526,357,563,425,485,443,479,487,422,493,408,492,401,487,396,463,374,500,323,516,321,518,302,496,286,476,267,453,251,477,235,502,220,500,212,489,202,476,194,462,201,452,220,410,194,429,161,437,169,454,146,447,139,469,110,489,136,495,128,477,107,479,101,460,84 ], [ ], [ -951,686 ], [ -14842024,86964963,0,0,-475,343 ], [ -14842024,86964963 ] )
TypeError: null is not an object (evaluating 'div.getAttribute( 'data-'+ type + 'LineDash' ).split')
Und ich sehe nur die Karte aber weder Mäher, noch Fahrstrecke
Hast Du "Browsercache löschen und die Webseite neu laden." durchgeführt?
Da auch das Javascript erneuert wurde muss automowerconnect.js auch neu geladen werden. Wenn der Browsercache nicht gelöscht wird, dann wird ggf. die alte Datei automowerconnect.js geladen. Das führt dann zu Fehlermeldungen.
Da die Farben der Pfade jetzt über das Attribut mapDesignAttributes eingestellt werden, kann im gesetzen Attribut etwas fehlen. Daher einmal das Attribut mit set <name> defaultDesignAttributesToAttribut neu setzen.
Ab dem morgigen Update:
Die Statistik wurde nicht berechnet, behoben.
Beim Update der Karte werden nur noch Differenzdaten übermittelt.
Anzeige der täglichen Kollisionen zusätzlich im Reading statistics_numberOfCollisons (täglich/gesammt)
Ein Fehlerspeicher wurde eingebaut und ein Getter errorStack um ihn anzuzeigen
Der Browsercache muss gelöscht und die Webseite neu geladen werden, damit auch das erneuerte Javascript geladen wird.
Falls es dennoch zu Javascriptfehlern kommt, einmal das Attribut defaultDesignAttribues mit set <name> defaultDesignAttributesToAttribut neu setzen damit ggf. fehlende Attribute ergänzt werden.
Moin Ellert,
bei mir funktioniert das Modul nach dem Update nicht mehr.
- Neuer API Key und neues Secret generiert
- Browser Cache gelöscht, andere Systeme (Linux...) genutzt. Alles gleich
Probleme / Meldungen im Log.
- Das wichtigste ist wohl der 403 Error
AutomowerConnect Shaun wsCb: failed with error: HTTP CODE 403
- Auch wird die Karte nicht mehr gefunden. Das lief bis eben, also mit der Vorversion.
AutomowerConnect Shaun readMap: file "" does not exist.
Das Device bleibt also
STATE disconnected
Ein Test im Terminal mit dem Link aus der Husqvarna Bereich "My Applications"
curl -X POST -d "grant_type=client_credentials&client_id= .......
zeigt eine Menge Daten, keine FM.
Was kann ich noch tun?
VG Helmut
P.S. Nach Fhem restore geht wieder alles.
Bin ein Stück weiter, ein erneutes Löschen des Caches (Windows 11/ Chrome) UND ein FHEM shutdown / restart führt zum connect des Automowers.
Erstaunlich! Man muss nicht alles verstehen, früher haben wir gesagt, manchmal helfen auch Räucherkerzen. -:)
Hallo Ellert,
nach dem das Modul wieder läuft bei mir, habe ich mit den im Attr mapImageCoordinatesToRegister hinterlegten Koordinaten gespielt.
Grund: Die Anzeige des Mähpfades ist zu weit rechts.
Die Koordinaten sind recht lang (u.a. 51.28390226281099) und als erstes habe ich alle 4 verkürzt auf 51.283 (Rest analog).
Beim Anklicken des OK im Bearbeitungsfenster stürzt FHEM komplett ab.
Eingabe sudo systemctl status fhem im Terminal:
Mai 29 10:00:34 fhem systemd[1]: fhem.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Die verkürzten Koordinaten werden nicht gespeichert und ich kann FHEM wieder starten.
Kannst du das nachvollziehen?
Wenn Du die Koordinaten auf 3 Nachkommastellen kürzt liegt die Genauigkeit im Bereich von 60 m und als Nebeneffekt erzeugst Du bei der Berechnung der Skalierungsfaktoren eine Division durch 0, das bringt FHEM zum Absturz.
Die Attribute mapImageCoordinatesToRegister, mapImageCoordinatesUTM, scaleToMeterXY müssen im Zusammenhang betrachtet werden.
Wenn die Koordinaten zur Registrierung (mapImageCoordinatesToRegister) geändert werden, dann muss mapImageCoordinatesUTM vorher gelöscht werden (ggf. auch scaleToMeterXY) und nach mapImageCoordinatesToRegister neu gesetzt werden. Das steht auch in der Befehlsreferenz
ZitatDas Attribut muss nach dem Attribut mapImageCoordinatesToRegister gesetzt werden.
Wenn der Mäherpfad verschoben ist, kann es an den Koordinaten aus dem GPS liegen, das ist wohl vom Mähertyp abhängig. Bei meinem liegt der Pfad auch verschoben, aber jedesmal anders.
Wenn der Pfad systematisch verschoben ist, dann sind die Nachkommastellen im eher in der Nähe der 6. Nachkommastelle synchron zu verschieben.
Ok, werde ich mal testen.
Ist nur Optik.
also ich habe nun das heutige Update gezogen, auch da funktioniert weder die Ansicht des Mähers, noch Fahrstrecke in der Karte.
Seit dem neuen Update bringt das Reading:
state: disconnected
das neue Reading:
device_state: connected
Das angeblich neue Reading:
mower_wsEvent
taucht bei mir gar nicht auf.
Folgendes habe ich gemacht:
- FHEM mehrfach rebootet
- Browsercache mehrfach gelöscht
- Webseite neu geladen
- Application Key bei Husqvarna komplett gelöscht und neu angelgt
- Modul komplett gelöscht und neu angelegt
brachte alles nix....
Zitatstate: disconnected
Ist erstmal nicht ungewöhnlich, das Reading wird durch DevIo verwaltet und ohne Event aktualisiert, daher wird im Frontend die Aktualisierung nicht angezeigt.
Zitatdevice_state: connected
Wenn die Detailansicht geöffnet wird bevor device_state auf connected aktualisiert wird, dann ist keine Karte zu sehen.
Nach einer Aktualisierung von device_state auf connected sollte nach neu laden der Detailseite die Karte mit der Ladestation angezeigt werden.
Du hast nicht erwähnt, ob Du das Attribut mapDesignAttributes auf die Standartwerte gesetzt hast. Hast Du das gemacht? Wenn nicht wird die Ladestation vermutlich nicht angezeigt.
Zitatmower_wsEvent
Erscheint erst, wenn über Websocket ein Event angekommen ist. Wenn der Mäher in der Ladestation steht kann das schon mal 840 s dauern. Das Mähericon wird erst angezeigt, wenn über Websocket ein Positionsevent angekommen ist, das kann, wenn in der LS, auch solange dauern.
Der Mäherpfad wird erst angezeigt, wenn mindestenns zwei Positionen gesendet wurden, das kann dann doppelt solange dauern.
Ist die Websocketverbindung tatsächlich disconnected geblieben?
Da würde ich gern den Logauszug mit verbose 4 sehen.
Poste bitte den Revisionsstand der Module aus den Internals VERSION und LIBRARY_VERSION und vom Javascript automowerconnect.js die Version, um das Update zu verifizieren.
Zitat von: Ellert am 29 Mai 2023, 17:57:56Zitatmower_wsEvent
Erscheint erst, wenn über Websocket ein Event angekommen ist. Wenn der Mäher in der Ladestation steht kann das schon mal 840 s dauern. Das Mähericon wird erst angezeigt, wenn über Websocket ein Positionsevent angekommen ist, das kann, wenn in der LS, auch solange dauern.
Der Mäherpfad wird erst angezeigt, wenn mindestenns zwei Positionen gesendet wurden, das kann dann doppelt solange dauern.
es sind bereits Stunden vergangen und ich habe den Mäher extra raus geschickt....
Zitat von: Ellert am 29 Mai 2023, 17:57:56Du hast nicht erwähnt, ob Du das Attribut mapDesignAttributes auf die Standartwerte gesetzt hast. Hast Du das gemacht? Wenn nicht wird die Ladestation vermutlich nicht angezeigt.
ja habe ich
Zitat von: Ellert am 29 Mai 2023, 17:57:56Nach einer Aktualisierung von device_state auf connected sollte nach neu laden der Detailseite die Karte mit der Ladestation angezeigt werden.
Karte mit Ladestation sehe ich ja auch, nur weder Mäher noch Mäherspuren
Zitat von: Ellert am 29 Mai 2023, 17:57:56Ist die Websocketverbindung tatsächlich disconnected geblieben?
ja immernoch
Zitat von: Ellert am 29 Mai 2023, 17:57:56Poste bitte den Revisionsstand der Module aus den Internals VERSION und LIBRARY_VERSION und vom Javascript automowerconnect.js die Version, um das Update zu verifizieren.
# DEF f629cc55-51f7-4667-be68-5ca82afe6bc0
# DeviceName wss:ws.openapi.husqvarna.dev:443/v1
# FUUID 6459448b-f33f-b0b0-e365-983f2776b380ff35
# Host ws.openapi.husqvarna.dev
# LIBRARY_VERSION 27625 2023-05-29 01:26:46
# MODEL Husqvarna Automower� 405X
# NAME RasenroboterAM405X
# NEXT_OPEN 1685384600.93983
# NR 1889
# PARTIAL
# Port 443/v1
# SSL 1
# STATE disconnected
# TYPE AutomowerConnect
# VERSION 27625 2023-05-29 01:26:46
# eventCount 30
Zitat von: Ellert am 29 Mai 2023, 17:57:56Da würde ich gern den Logauszug mit verbose 4 sehen.
2023.05.29 20:19:31.708 4: AutomowerConnect RasenroboterAM405X Get: called with ?
2023.05.29 20:20:19.523 4: IP: ws.openapi.husqvarna.dev -> 52.49.240.63
2023.05.29 20:20:19.724 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:20:19.725 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:20:29.135 4: AutomowerConnect RasenroboterAM405X Get: called with InternalData
2023.05.29 20:21:20.366 4: IP: ws.openapi.husqvarna.dev -> 52.18.161.199
2023.05.29 20:21:20.603 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:21:20.604 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:22:20.630 4: IP: ws.openapi.husqvarna.dev -> 3.248.74.26
2023.05.29 20:22:20.938 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:22:20.939 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:23:21.434 4: IP: ws.openapi.husqvarna.dev -> 34.250.104.128
2023.05.29 20:23:21.672 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:23:21.673 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:24:22.076 4: IP: ws.openapi.husqvarna.dev -> 34.250.104.128
2023.05.29 20:24:22.302 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:24:22.303 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:25:22.420 4: IP: ws.openapi.husqvarna.dev -> 54.77.195.62
2023.05.29 20:25:22.818 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:25:22.819 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:26:22.942 4: IP: ws.openapi.husqvarna.dev -> 52.209.97.137
2023.05.29 20:26:23.330 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:26:23.331 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:27:23.577 4: IP: ws.openapi.husqvarna.dev -> 54.77.195.62
2023.05.29 20:27:23.901 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:27:23.902 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:28:23.943 4: IP: ws.openapi.husqvarna.dev -> 34.250.104.128
2023.05.29 20:28:24.533 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:28:24.534 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:29:25.342 4: IP: ws.openapi.husqvarna.dev -> 52.18.161.199
2023.05.29 20:29:25.572 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:29:25.573 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:30:25.992 4: IP: ws.openapi.husqvarna.dev -> 3.248.74.26
2023.05.29 20:30:26.190 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:30:26.191 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:31:03.344 4: AutomowerConnect RasenroboterAM405X Get: called with ?
2023.05.29 20:31:26.291 4: IP: ws.openapi.husqvarna.dev -> 52.18.161.199
2023.05.29 20:31:26.515 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:31:26.516 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:32:26.543 4: IP: ws.openapi.husqvarna.dev -> 52.209.97.137
2023.05.29 20:32:26.803 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:32:26.804 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:33:27.662 4: IP: ws.openapi.husqvarna.dev -> 52.49.240.63
2023.05.29 20:33:27.895 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:33:27.896 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
2023.05.29 20:34:28.018 4: IP: ws.openapi.husqvarna.dev -> 52.49.240.63
2023.05.29 20:34:28.237 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 403
2023.05.29 20:34:28.238 2: AutomowerConnect RasenroboterAM405X wsCb: failed with error: HTTP CODE 403
Vielleicht 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.
Mit dem morgigen Update:
Verhindert Division durch 0 beim Attribut mapImageCoordinatesToRegister, wenn die Koordinatendifferenz 0 ergibt.
Verzögerte Websocketöffnung.
Erzwingen eines Access Token wenn ein Client Secret gesetzt wird.
Hallo Ellert,
mit dieser Seite geht es recht einfach, die Koordinaten für die Karte zu ermitteln.
Evtl. in die Doku mit aufnehmen, wenn nicht schon bekannt.
https://www.koordinaten-umrechner.de/decimal/51.000000,10.000000?karte=EsriSat&zoom=8
Man zoomt auf sein Grundstück und mit 2 Klicks sind die Koordinaten im richtigen Format ermittelt.
Man kann dann auch fix etwas hin und her schieben, um das Bild zu verbessern.
Danke für den Hinweis.
Kommt aber nicht in die Befehlsreferenz, weil es eine kommerzielle Seite ist.
Mit dem morgigen Update:
Schnelleres Laden des Hintergrundbildes und korrektes Laden nach defmod.
Hinweis in der Befehlsreferenz, dass der Application Key im Developer Portal mit der Automower Connect API verbunden werden muss.
Nur dann kann die Websocketverbindung erfolgreich hergestellt und die damit vebundene HTTP Antwort 403 verhindert werden.
Danke für die Fehlerhinweise und Ergänzungen.
Hallo!
Mir war aufgefallen, dass das Modul nicht mehr lief. Also habe ich nachgeschaut und festgestellt, das die Funktion timelocal nicht aufgerufen werden konnte. Es wäre also sinnvoll, dies hier am Anfang des Modulcodes aufzurufen.
use Time::Local;
Nachdem ich das dem Modul oben hinzugefügt habe, gab es keine Fehlermeldung im Log mehr und fhem stürzt auch nicht mehr ab.
Danke für die ganze Mühe und für dieses tolle Modul!
LG
Robert
Danke für den Hinweis, hab's eingecheckt, ab morgen im Update und jetzt im Repository.
Bekomme keine Mower Daten. Erst wenn ich getUpdate aktiviere wird aktualisiert.
Was mach ich falsch?
Mit den Infos die Du geliefert hast, würde ich sagen Du bist zu ungeduldig.
Poste mal ein List des Mähers, den Logauszug ab FHEM Restart bis vor getUpdate mit verbose 4 und die Versionen der 3 Dateien 74_AutomowerConnect.pm, lib/FHEM/Devices/AMConnect/Common.pm und automowerconnect.js.
Hat der Mäher gemäht als Du keine Daten bekommen hast?
Alle 3 Files sind von Heute.
Hier das List:
Internals:
DEF 051749ee-a43d-4848-a1ab-93d449bfc9a2
DeviceName wss:ws.openapi.husqvarna.dev:443/v1
FUUID 6475fa7f-f33f-bb28-27cf-0a590636237f1bc1
Host ws.openapi.husqvarna.dev
LIBRARY_VERSION 27625 2023-05-29 01:26:46
MODEL HUSQVARNA AM 315X
NAME MyMower
NEXT_OPEN 1685467741.19556
NR 1141
PARTIAL
Port 443/v1
SSL 1
STATE disconnected
TYPE AutomowerConnect
VERSION 27628 2023-05-29 22:49:13
eventCount 34
READINGS:
2023-05-30 15:31:31 api_MowerFound 0 => Automower f81bfefc-0e25-46c1-b680-30d3d98bf19d
2023-05-30 15:31:30 api_token_expires 2023-05-31 01:00:00
2023-05-30 19:06:54 batteryPercent 35
2023-05-30 19:06:54 device_state connected
2023-05-30 19:06:54 mower_activity CHARGING
2023-05-30 18:00:32 mower_commandSend ResumeSchedule
2023-05-30 18:37:34 mower_commandStatus cleared
2023-05-30 15:31:31 mower_errorCode -
2023-05-30 15:31:31 mower_errorCodeTimestamp -
2023-05-30 15:31:31 mower_errorDescription -
2023-05-30 15:31:31 mower_mode MAIN_AREA
2023-05-30 18:37:34 mower_state IN_OPERATION
2023-05-30 17:30:23 planner_nextStart -
2023-05-30 15:31:31 planner_overrideAction NOT_ACTIVE
2023-05-30 15:31:31 planner_restrictedReason NOT_APPLICABLE
2023-05-30 15:31:31 settings_cuttingHeight 1
2023-05-30 16:04:41 settings_headlight ALWAYS_OFF
2023-05-30 19:28:01 state disconnected
2023-05-30 15:31:31 statistics_newGeoDataSets 0
2023-05-30 15:31:31 statistics_numberOfCollisions (0/5591)
2023-05-30 19:06:54 status_Timestamp 2023-05-30 18:55:18
2023-05-30 19:06:54 status_TimestampDiff 691.616
2023-05-30 15:31:31 status_connected CONNECTED(1)
2023-05-30 15:31:31 system_name Automower
header:
Authorization Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjVlZDU2ZDUzLTEyNWYtNDExZi04ZTFlLTNlNDRkMGVkOGJmOCJ9.eyJqdGkiOiIzNTgzYjM3OS0wYmUxLTQ0ODYtOTMzNS1lNGZhZDE2Mjc4MTEiLCJpc3MiOiJodXNxdmFybmEiLCJyb2xlcyI6W10sImdyb3VwcyI6WyJhbWMiLCJkZXZlbG9wZXItcG9ydGFsIiwiZmQ3OGIzYTQtYTdmOS00Yzc2LWJlZjktYWE1YTUwNTgzMzgyIl0sInNjb3BlcyI6WyJpYW06cmVhZCJdLCJjbGllbnRfaWQiOiIwNTE3NDllZS1hNDNkLTQ4NDgtYTFhYi05M2Q0NDliZmM5YTIiLCJ1c2VyIjp7ImZpcnN0X25hbWUiOiJNaWNoYWVsIiwibGFzdF9uYW1lIjoiRW1taW5nZXIiLCJjdXN0b21fYXR0cmlidXRlcyI6e30sImN1c3RvbWVyX2lkIjoiIn0sImlhdCI6MTY4NTQ2NDY1NCwiZXhwIjoxNjg1NTUxMDU0LCJzdWIiOiJiMjZmMzEwZS1lZWYyLTQ2YzUtYWRlZS0xOWRlNjI2YWExNzYifQ.nXao-G4ytXaG67ahJAUBm2qOKibqqSF3gZ5WhWZOyZRH2zWRFPdG5ocbtf6F77aa4AR2xq8ZhWRmHr8MybBuna1jS01hQ0oUj-bRHB4mIfq0h8tTQkeDMjLcIL793GC70LVLVR5ITmQB5TFpT--L8cSGeWWOW4RgjI7pQdxwubG1I7L4bbD9Za5NjdNNIusopSih69mVU9GPUvNCDKwXbA8Bz87Z3vmuIMXKuVV09nASXf4NnveqkwNFlRiQ-L5A2QBRP_8cFE5tVYUZXOk2ZJS71U8AHjN_w4nwOcbaMF4C6q9kxCsJpFxpE9R4R0VBqUmeb8dlbM25xx7KM1RY20kwm0UpTkHgu-paoqWhtXzp0k9psuvPPYxHk898TAJBxftd4tENjT-8loIporBfBLOJwID7fZgKCHijCudVejuPkRitMldm_Hhog-WlBfxbbbzcofcOqqIhibxHH6Y0tjYUWDqxv9vCFDnmDB8I-GIOcIcSaGrPgUpOvCWDXFD0
helper:
MAP_CACHE
MAP_MIME
MAP_PATH
client_id 051749ee-a43d-4848-a1ab-93d449bfc9a2
detailFnAttrMaxPos 5000
detailFnFirst 0
detailFnNewPos 0
grant_type client_credentials
imageHeight 650
imageWidthHeight 1119 650
interval 420
interval_auth 86345
interval_ping 60
interval_ws 7110
mapZonesTpl {
"01_oben" : {
"condition" : "$latitude > 52.6484600648553 || $longitude > 9.54799477359984 && $latitude > 52.64839739580418",
"cuttingHeight" : "7"
},
"02_unten" : {
"condition" : "undef",
"cuttingHeight" : "3"
}
}
mapdesign 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"
otherActivityPathLineColor="#999999"
otherActivityPathLineDash="6,2"
otherActivityPathLineWidth="1"
leavingPathLineColor="#33cc33"
leavingPathLineDash="6,2"
leavingPathLineWidth="2"
goingHomePathLineColor="#0099ff"
goingHomePathLineDash="6,2"
goingHomePathLineWidth="2"
mowingPathDisplayStart=""
mowingPathLineColor="#ff0000"
mowingPathLineDash="6,2"
mowingPathLineWidth="1"
maxLat 48.4816829
maxLon 16.5850883
minLat 48.4813616
minLon 16.584535
mowerNumber 0
mower_commandSend ResumeSchedule
mower_commandStatus OK - control
mower_id f81bfefc-0e25-46c1-b680-30d3d98bf19d
newdatasets 0
newzonedatasets 0
posMinMax 16.584535 48.4816829
16.5850883 48.4813616
positionsTime 0
scaleToMeterLatitude 108886
scaleToMeterLongitude 67425
statusTime 0
storediff 691616
CHARGING:
arrayName cspos
callFn
cnt 0
maxLength 100
short C
CMDResponse:
data:
attributes
id a4568dfc-aa92-40a1-b401-a9ff3bff63c4
type control
GOING_HOME:
arrayName
callFn
cnt 0
maxLength 50
short G
LEAVING:
arrayName
callFn
cnt 0
maxLength 50
short L
MOWING:
arrayName areapos
callFn
cnt 0
maxLength 5000
maxLengthDefault 5000
short M
NOT_APPLICABLE:
arrayName
callFn
cnt 0
maxLength 50
short N
PARKED_IN_CS:
arrayName cspos
callFn
cnt 0
maxLength 100
short P
STOPPED_IN_GARDEN:
arrayName
callFn
cnt 0
maxLength 50
short S
UNKNOWN:
arrayName
callFn
cnt 0
maxLength 100
short U
areapos:
auth:
access_token eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjVlZDU2ZDUzLTEyNWYtNDExZi04ZTFlLTNlNDRkMGVkOGJmOCJ9.eyJqdGkiOiIzNTgzYjM3OS0wYmUxLTQ0ODYtOTMzNS1lNGZhZDE2Mjc4MTEiLCJpc3MiOiJodXNxdmFybmEiLCJyb2xlcyI6W10sImdyb3VwcyI6WyJhbWMiLCJkZXZlbG9wZXItcG9ydGFsIiwiZmQ3OGIzYTQtYTdmOS00Yzc2LWJlZjktYWE1YTUwNTgzMzgyIl0sInNjb3BlcyI6WyJpYW06cmVhZCJdLCJjbGllbnRfaWQiOiIwNTE3NDllZS1hNDNkLTQ4NDgtYTFhYi05M2Q0NDliZmM5YTIiLCJ1c2VyIjp7ImZpcnN0X25hbWUiOiJNaWNoYWVsIiwibGFzdF9uYW1lIjoiRW1taW5nZXIiLCJjdXN0b21fYXR0cmlidXRlcyI6e30sImN1c3RvbWVyX2lkIjoiIn0sImlhdCI6MTY4NTQ2NDY1NCwiZXhwIjoxNjg1NTUxMDU0LCJzdWIiOiJiMjZmMzEwZS1lZWYyLTQ2YzUtYWRlZS0xOWRlNjI2YWExNzYifQ.nXao-G4ytXaG67ahJAUBm2qOKibqqSF3gZ5WhWZOyZRH2zWRFPdG5ocbtf6F77aa4AR2xq8ZhWRmHr8MybBuna1jS01hQ0oUj-bRHB4mIfq0h8tTQkeDMjLcIL793GC70LVLVR5ITmQB5TFpT--L8cSGeWWOW4RgjI7pQdxwubG1I7L4bbD9Za5NjdNNIusopSih69mVU9GPUvNCDKwXbA8Bz87Z3vmuIMXKuVV09nASXf4NnveqkwNFlRiQ-L5A2QBRP_8cFE5tVYUZXOk2ZJS71U8AHjN_w4nwOcbaMF4C6q9kxCsJpFxpE9R4R0VBqUmeb8dlbM25xx7KM1RY20kwm0UpTkHgu-paoqWhtXzp0k9psuvPPYxHk898TAJBxftd4tENjT-8loIporBfBLOJwID7fZgKCHijCudVejuPkRitMldm_Hhog-WlBfxbbbzcofcOqqIhibxHH6Y0tjYUWDqxv9vCFDnmDB8I-GIOcIcSaGrPgUpOvCWDXFD0
expires 1685487600
expires_in 86399
provider husqvarna
scope iam:read
token_type Bearer
user_id b26f310e-eef2-46c5-adee-19de626aa176
chargingStation:
cspos:
errorstack:
lasterror:
errordate
errordesc -
timestamp 0
positions:
mower:
id f81bfefc-0e25-46c1-b680-30d3d98bf19d
type mower
attributes:
battery:
batteryPercent 35
calendar:
tasks:
HASH(0x55b6c0b128)
metadata:
statusTimestamp 1685465718823
mower:
activity CHARGING
errorCode 0
errorCodeTimestamp 0
mode MAIN_AREA
state IN_OPERATION
planner:
nextStartTimestamp 0
restrictedReason NOT_APPLICABLE
override:
action NOT_ACTIVE
positions:
HASH(0x55b6b45fa0)
HASH(0x55b6eea670)
HASH(0x55b6b468e8)
HASH(0x55b67bad70)
HASH(0x55b67e6748)
HASH(0x55b6e911f8)
HASH(0x55b67ed870)
HASH(0x55b6b6a3d0)
HASH(0x55b6be2628)
HASH(0x55b6b1f760)
HASH(0x55b6cf1840)
HASH(0x55b7003a08)
HASH(0x55b6e16ef8)
HASH(0x55b58497f0)
HASH(0x55b67cbd60)
HASH(0x55b681ca18)
HASH(0x55b68e0e78)
HASH(0x55b6a5d3c8)
HASH(0x55b69dd028)
HASH(0x55b6e1acc0)
HASH(0x55b6ee0920)
HASH(0x55b7004038)
HASH(0x55b6843020)
HASH(0x55b7179b10)
HASH(0x55b6e20af8)
HASH(0x55b6a53a98)
HASH(0x55b6a53710)
HASH(0x55b67cfde8)
HASH(0x55b712bd38)
HASH(0x55b6cf22b8)
HASH(0x55b7128058)
HASH(0x55b7153cd8)
HASH(0x55b7178f60)
HASH(0x55b6f2ecd0)
HASH(0x55b6be3838)
HASH(0x55b712b368)
HASH(0x55b6e0ee58)
HASH(0x55b68e10b8)
HASH(0x55b6b118a0)
HASH(0x55b6ee6f78)
HASH(0x55b6f1c818)
HASH(0x55b6be3130)
HASH(0x55b6c13ff0)
HASH(0x55b6e1a978)
HASH(0x55b7152550)
HASH(0x55b61af8d0)
HASH(0x55b6cf04e0)
HASH(0x55b6e0e3f0)
HASH(0x55b6afdd90)
HASH(0x55b6e1a0c8)
settings:
cuttingHeight 1
headlight:
mode ALWAYS_OFF
statistics:
numberOfChargingCycles 642
numberOfCollisions 5591
totalChargingTime 10357200
totalCuttingTime 9349200
totalRunningTime 10440000
totalSearchingTime 1090800
system:
model HUSQVARNA AUTOMOWER� 315X
name Automower
serialNumber 180607639
mowerold:
attributes:
metadata:
statusTimestamp 1685465027207
mower:
activity MOWING
statistics:
numberOfCollisions 5591
mowers:
HASH(0x55b71e1cc8)
statistics:
currentDayArea 0
currentDayTime 0
currentDayTrack 0
currentSpeed 0
currentWeekArea 0
currentWeekTime 0
currentWeekTrack 0
lastDayArea 0
lastDayCollisions 0
lastDayTime 0
lastDayTrack 0
lastDaytime 0
lastWeekArea 0
lastWeekTime 0
lastWeekTrack 0
wsResult:
Attributes:
event-on-update-reading .*
icon automower
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"
otherActivityPathLineColor="#999999"
otherActivityPathLineDash="6,2"
otherActivityPathLineWidth="1"
leavingPathLineColor="#33cc33"
leavingPathLineDash="6,2"
leavingPathLineWidth="2"
goingHomePathLineColor="#0099ff"
goingHomePathLineDash="6,2"
goingHomePathLineWidth="2"
mowingPathDisplayStart=""
mowingPathLineColor="#ff0000"
mowingPathLineDash="6,2"
mowingPathLineWidth="1"
mowerSchedule [
{
"wednesday" : true,
"saturday" : true,
"friday" : true,
"sunday" : false,
"start" : 0,
"duration" : 1440,
"monday" : true,
"thursday" : true,
"tuesday" : true
}
]
room ,HusqvarnaAutomower
weekdaysToResetWayPoints 0123456
Letzter Akkustand ist schon 24 Minuten alt.
jetzt funktioniert es. ich musst im husqvarna developer portal noch die notwendigen apis hinzufügen.
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.
ich habe gerade noch einmal ein
set <name> getNewAccessToken
ausgeführt und auf einmal funktioniert es wieder. Die letzten Tage gin es nicht.
Wer weis
Zitat von: Ellert am 17 Mai 2023, 17:56:40Mit dieser Änderung wird die Nutzung von Websocket zum Datenaustausch vorbereitet. Mit Websocket entfällt das Polling der Schnittstelle und somit kommt die Begrenzung der API auf 10000 Abfragen pro Monat nicht mehr zum tragen. Diese Beschränkung war der Grund für das jetzt veraltete Modul.
Websocket hat den Vorteil, dass die Daten ereignisnah übertragen werden und nicht eine Intervalldauer gewartet werden muss.
Der Vorteil für mich ist, dass ich nur ein Modul warten muss.
Damit steht der Umstellung vom Polling der API auf eine dauerhafte Websocketverbindung mit ereignisnaher Datenübertragung nichts mehr im Weg.
Was bedeutet dies genau? Werden nun die Aktualisierungsintervalle kürzer, also nicht mehr nur ca. alle 10min sonder ähnlich wie in der App? Aktuell sieht dies aber nicht danach aus.
Zitat von: Ellert am 23 Mai 2023, 17:09:28Das neue Reading mower_wsEvent zeigt die vom Mäher gesendeten Events(status-event, positions-events, settings-events) an.
muss mal dumm Fragen für was genau ist dieses Reading genau? Was kann ich mir daraus nehmen?
Zitat von: Ellert am 14 Mai 2023, 23:41:43Zitat von: Depechem am 14 Mai 2023, 11:25:57und schon die nächste Frage.
Ich möchte in FTUI den aktuellen Status des Mähers anzeigen lassen. Scheinbar wird dies aber schwierig, da aktuell 2 verschiedene Readings mit dem Status gefüllt werden.
mower_state
zeigt "IN_OPERATION" oder "PAUSED" an > wenn der Mäher "in der Ladestation ist" wird "IN_OPERATION"oder "PAUSED" angezeigt da dort immer der letzte Status nicht überschrieben wird
mower_activity
zeigt "CHARGING" oder "MOWING" an > wenn der Mäher "Pausiert" wird im Status "NOT_APPLICABLE" angezeigt
ich kann dies somit nicht auswerten. Hat dies einen Hintergrund? Oder könnte man das ändern?
Weil so macht das doch eigentlich gar keinen Sinn
Die Readings kommen so aus der API, wenn Du was Individuelles möchtest, mach es mit Userreadings.
Möchte das Thema gern nochmal aufgreifen, wäre es nicht sinnvoll dies gleich als festes Reading in das Modul einzubauen? Also das man ein Reading mit dem aktuellen Staus hätte, so wie in der App. Mit Userreading könnte dies evtl für mich und den ein oder anderen schwer werden, da einige Bedingungen hinterlegt werden müssten, wann welches Reading ausgewertet werden muss. Vielleicht kannst da ja nochmal überlegen ob du es evtl. doch einbauen wölltest.
Aus alle Fälle erst einmal vielen Dank für dieses Modul und dessen schnelle Erweiterungen
ZitatWas bedeutet dies genau? Werden nun die Aktualisierungsintervalle kürzer, also nicht mehr nur ca. alle 10min sonder ähnlich wie in der App?
muss mal dumm Fragen für was genau ist dieses Reading genau? Was kann ich mir daraus nehmen?
Zur Beantwortung Deiner Fragen, solltest Du die Dokumentation im Developer Portal studieren, mehr Infos habe ich auch nicht.
Weitere Erfahrungen kannst Du machen, wenn Du die Schnittstelle beobachtest im Log, im Eventmonitor oder das Reading wsEvent und andere Readings, und das in verschiedenen Betriebssituationen zu Tages- und Nachtzeiten.
ZitatMit Userreading könnte dies evtl für mich und den ein oder anderen schwer werden, da einige Bedingungen hinterlegt werden müssten, wann welches Reading ausgewertet werden muss.
Das ist für mich genau so schwer, daher finde ich es besser, wenn ich das nicht mache.
Du könntest federführend ein Gemeinschaftsprojekt zur Erstellung eines userReadings starten, in einem neuen Thema. Das Ergebnis könnte dann ins Wiki.
Hallo Ellert,
ich habe heute morgen die aktuelle Version 27632 2023-05-30 15:12:02 deines hervorragenden Moduls geladen.
Es scheint so zu sein, als ob die Anzeige der Fahrspuren mit der aktuellen Version anders läuft als mit der Vorversion.
Ohne Gewähr: Ca 30m nach Osten verschoben und 20m nach Süden. Keine Änderung meiner Koordinaten im Attribut mapImageCoordinatesToRegister oder in der hinterlegten Grafik.
Der Standort der Ladestation war gestern auch korrekt, heute wird er nicht angezeigt. Es kann aber sein, dass das Modul den Standort außerhalb der Grafik legt (siehe obige Verschiebung) und ich ihn deshalb in der Karte nicht sehen kann.
Gestern hat die Grafik ausgezeichnet gepasst.
VG Helmut
P.S. Ich justiere gerade die Grafik neu, das geht mit oben genannter Seite super schnell.
Ich habe jetzt auch das Attribut für die LS gesetzt, auch deutlich verschoben, sie wird aber angezeigt mit der Eingabe in das Attribut chargingStationCoordinates. Da der Mower seit dem Update des Moduls nicht an der LS angedockt war, kann es sein, dass das Modul die Position der LS auch nicht ermitteln konnte. Das werde ich später mal checken.
Noch ein P.S.
Mit den Readings ist für mich alles prima so. U.a. mit dem Reading batteryPercent überwache ich seit Jahren die Laufzeit des Mähers mit einer Ladung, um damit Rückschlüsse auf die verbleibende Kapazität des Akkus zu ziehen.
Bei mir sieht mit der heutigen Version alles aus wie vorher.
Ich schätze das hat mit Deiner Koordinatenschieberei zu tun.
Ich würde die Schieberei rückgängig machen.
Wenn das nicht hilft, dann alle Attribute mit Koordinaten und Skalierung löschen und neu aufbauen, so wie in der Befehlsreferenz und im Wiki beschrieben.
Bin mir nicht sicher mit deiner Begründung. Es gab nur den einen Change, also die Installation der neuen Modul-Version.
Ich habe jetzt die Version 27625 2023-05-29 01:26:46 geladen und mit den Koordinaten von gestern versorgt.
Sieht wieder normal aus.
Jetzt zurück zur heutigen Version mit den gestrigen Koordinaten: Alles verschoben.
Eingabe den heutigen, geänderten Koordinaten: Wieder ok.
Das deutet darauf hin, dass evtl. in der Programmlogik eine Berechnung geändert wurde.
Meinen Post hatte ich als Hinweis auf einen möglichen Bug verstanden.
Die Grafik ist für mich eine schöne Ergänzung und sie lässt sich ja leicht verschieben.
Das ist also keine Problematik, die die Funktion des Moduls beeinträchtig.
An der Berechnung der Positionen hat sich nichts geändert, aber es werden nicht mehr immer alle Daten aktualisiert.
Beim ersten Aufbau der Detailansicht werden die mapDesignAttributes übertragen, die Ladestationskoordinaten, die Grundstücksgrenzkoordinaten, die Mähbereichsgrenzkoordinaten und die Koordinaten des bereits vorhanden Mäherpfades.
Wenn neue Positions oder es eine Fehlermeldung gibt werden nur noch die Positionsdifferenzdaten oder Fehlerdaten zur Aktualisierung der Karte übertragen. Vorher wurden bei jeder Aktualisierung alle Daten übertragen.
Als Koordinaten der Ladestation wird zuerst die Mitte Deutschlands genommen, wenn es Koordinaten des Mähers in der Ladestation gibt, dann werden die genommen. Falls aber das Attribut für die Ladestationskoordinaten gesetzt ist, dann wird die LS mit diesen Koordinaten angezeigt. Die berechnete Position der Ladestation verändert sich nur, wenn die Detailansicht neu geladen wird, dass ist aber nur nach einem Neustart oder bei Definition der Fall und nicht im eingeschwungenen Zustand. Wenn das stört, könnte ich das zurück bauen.
Wenn die Bildgröße mapImageWidthHeight nicht angegeben ist, wird '350 650' genommen.
Wenn mapImageCoordinatesToRegister nicht angegeben ist, werden die Extremwerte der vorhandenen Positionsdaten genutzt.
Wenn scaleToMeterXY nicht angegeben ist, dann wird die Skalierung verwendet, die in der Mitte Deutschlands gilt (67425, 108886).
Wenn mapImageCoordinatesUTM angegeben wird und vorher mapImageCoordinatesToRegister angegeben wurde dann wird scaleToMeterXY für die Lage des Mähbereiches berechnet.
Also, je nachdem was vorher gesetzt war oder nicht kann es zu unterschieden in der Skalierung oder Registrierung kommen.
Einen Fehler kann ich nicht erkennen.
Über die Genauigkeit der GPS-Daten sagt Husqvarna hier etwas: GPS-Verfolgung in der Automower® Connect-App (https://www.husqvarna.com/at/support/husqvarna-self-service/so-aktivieren-sie-geo-fence-und-gps-tracking-ihres-automower-mahroboters-ka-01568/#what%20is%20geofence)
Diese Genauigkeit kann ich bestätigen für den AM430x. Ich würde mich wundern, wenn es keine Abweichungen beim Mäherpfad gibt. Mit AIM (Genauigkeit 1m) oder EPOS soll es wohl besser sein.
Zitat von: Ellert am 30 Mai 2023, 17:14:37Danke für den Hinweis, hab's eingecheckt, ab morgen im Update und jetzt im Repository.
Moin Ellert!
Könntest du an der Stelle nochmal nachhelfen? Du hast zwar den Aufruf in dein Package eingefügt, leider an einer Stelle, wo es nichts bringt. Du müsstest das einmal vor das package (Zeile 27), also beispielsweise in Zeile 26 setzen. Den Fehler haben wahrscheinlich eh nicht viele, denn sobald ein Modul die Funktion schon mal eingebunden hat, dann ist sie überall verfügbar. Allerdings, wenn du eine neue FHEM Instanz aufsetzt und dann das AutomowerConnect Modul einsetzt, dann fehlt eben diese Funktion noch. Deshalb muss sie bereits global eingebunden werden, sonst meckert er über die fehlende Sub Routine und stürzt ab.
Auszug der Fehlermeldung im Log:
Undefined subroutine &main::timelocal called at ./FHEM/74_AutomowerConnect.pm line 248
Wenn die Zeile vor dem package eingefügt wird, verschwindet diese Meldung und das Modul funktioniert einwandfrei.
Gruß
Robert
Danke nochmal für Deine Hilfe, hab's korrigiert und eingecheckt.
timelocal wird jetzt im Package aufgerufen.
Diese Fehler fallen bei mir nicht auf, weil ich kein frisches System habe.
Morgen im Update:
Es besteht die Möglichkeit statt des Mäherpfades nur die Wegpunkte anzuzeigen.
Der Browsercache muss gelöscht und die Detailseite neugeladen werden.
Dann sind mapDesignAttibutes mit
set <name> defaultDesignAttributesToAttribute
auf die Standardwerte zu setzen, um die zusätzlichen Designattribute einzufügen.
Wenn das Designattribut mowingPathUseDots="1" gesetzt wird werden nur die Wegpunkte des Mäherpfades angezeigt. Das kann bei einer hohen Zahl von Linien die Übersichtlichkeit steigern.
Hier die kompletten Standarddesignattribute, falls jmd. sie vorher setzen möchte:
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=""
Hallo Ellert,
nach dem Update vom 23.5. aktualisieren sich bei mir die userReadings leider nicht mehr. Du schreibst dazu:
Zitat von: Ellert am 23 Mai 2023, 17:09:28Das neue Reading device_state übernimmt die Funktion von state, also auch die Triggerung von userReadings, usw.
Könntest du bitte noch ein Beispiel hier einstellen, wie die userReadings geändert werden müssen, damit sie wieder funktionieren.
Vielen Dank!
Zitat von: Zergman am 05 Juni 2023, 11:14:04Hallo Ellert,
nach dem Update vom 23.5. aktualisieren sich bei mir die userReadings leider nicht mehr. Du schreibst dazu:
Zitat von: Ellert am 23 Mai 2023, 17:09:28Das neue Reading device_state übernimmt die Funktion von state, also auch die Triggerung von userReadings, usw.
Könntest du bitte noch ein Beispiel hier einstellen, wie die userReadings geändert werden müssen, damit sie wieder funktionieren.
Vielen Dank!
Da es kein Abfrageintervall mehr gibt, bzw. die Api nachts einmal gelesen wird ist es nur noch eingeschränkt sinnvoll auf
device_state zu triggern.
Je nach dem welchen Wert Du mit userReadings darstellen möchtest gibt es vier grundsätzliche Möglichkeiten:
device_state: connected - alles was nur nachts aktualisiert wird ( https://developer.husqvarnagroup.cloud/apis/automower-connect-api#openapi )
mower_wsEvent: status-event - alle Daten, die mit Statusevents geliefert werden ( https://developer.husqvarnagroup.cloud/apis/automower-connect-api#websocket )
mower_wsEvent: positions-event - alle Daten, die mit Positonsevents geliefert werden ( https://developer.husqvarnagroup.cloud/apis/automower-connect-api#websocket )
mower_wsEvent: settings-event - alle Daten, die mit Settingsevents geliefert werden ( https://developer.husqvarnagroup.cloud/apis/automower-connect-api#websocket )
Welche Daten wie geliefert werden ist aus den vorstehenden Links ersichtlich.
Die Beispiele im Wiki habe ich angepasst, aber nicht getestet. Falls sie nicht funktionieren, hilft die Befehlsreferenz weiter: https://commandref.fhem.de/commandref_DE.html#userReadings
Hallo Ellert,
vielen Dank für die schnelle Antwort.
Bisher habe ich die Werte von $hash->{helper}{mower}{attributes}{statistics}{totalCuttingTime}
und $hash->{helper}{mower}{attributes}{statistics}{numberOfChargingCycles}
als UserReadings ausgegeben und benutzt um die Aktivität des Automowers im Auge zu behalten. Wenn ich deine Nachricht richtig verstehe, werden diese Werte jetzt aber nur noch einmal pro Tag (in der Nacht) aktualisiert. Ist das richtig? Oder kann man den API-Aufruf irgendwie manuell triggern?
Ja.
Regelmäßige Polling der API ist nicht vorgesehen.
Um die Aktivität des Mähers zu beobachten gibt es sicherlich aussagekräftigere Readings, wie zum Beispiel batteryPercent, das wird nach jedem Ladezyklus einmal mit 100% aktualisiert oder besser mower_aktivity zeigt ja direkt die Aktivität.
noch eine Frage / Beobachtung:
Seit der Umstellung auf WebSocket kommen bei mir wesentlich weniger Wegpunkte des Roboters an als zuvor. Das zeigt sich in weniger roten Linien auf der Karte und die Fahrstrecke des Automowers kann nicht mehr so richtig nachvollzogen werden. Wenn der Mäher aktiv ist, sehe ich zwar in regelmäßigen Abständen "mower_wsEvent: positions-event" Events (ca. aller 3 ... 5 Minuten) aber wenn ich mir die Positionen ausgeben lasse
{Dumper($defs{AutoMower}->{helper}{mower}{attributes}{positions})}
ist in dem Array immer nur eine Position.
Sendet das WebSocket-Interface wirklich nur so wenige Positionen oder gehen die irgendwo anders verloren?
Es geht nichts verloren, im Mowerhash stehen nur die aktuell über Websocket gelieferten Positionen (Reading statistics_newGeoDataSets). Alle Positionen stehen in hash->{helper}{areapos}
Mit verbose 4 kannst Du den Verkehr über Websocket anzeigen.
Die Positionen werden beim Mähen ca. alle 30s im Mäher erfasst. Ob Positionen fehlen könntest Du also überprüfen.
Falls nur noch Punkte statt Linien angezeigt werden, müsstest Du in dem Attribut mapDesignAttributes mowingPathUseDots="0" auf mowingPathUseDots="" ändern, ggf. defaultDesignAttributesTo Attribut setzen.
Mit verbose=4 habe ich bei meinem Mäher (Automower 415X) folgende Beobachtungen gemacht:
- positions-event kommt immer nur kurz vor oder kurz nach einem status-event
- diese positions-events enhalten immer nur eine Position
- neben dieser status/positions Kombination empfängt das Modul zwar einmal pro Minute eine WebSocket-Nachricht, diese ist aber immer leer
- => bei mir kommt nur einen neue Position des Mähers an, wenn sich der Status (Batteriestand, Betriebsmodus, etc.) ändert
Kann diese Beobachtung noch jemand anderes bestätigen oder ist das ein spezielles Problem bei mir und meinem Mäher?
Zitatneben dieser status/positions Kombination empfängt das Modul zwar einmal pro Minute eine WebSocket-Nachricht, diese ist aber immer leer
Das ist die Antwort des Servers auf den Keep Alive Ping des Moduls. Der Ping ist notwendig, damit der Server den Websocket nicht schliesst.
Zusätzlich wird alle 2 h ein Reopen des Websockets durchgeführt, da der Server sonst die Verbindung nach 2 Stunden schliesst.
Ich bekomme bei LEAVING/MOWING/GOING_HOME status-events in verschiedenen Zeitabständen (status_TimestampDiff) zwischen 30 s und 840 s, selten auch kürzer als 30 s.
Zitatpositions-event kommt immer nur kurz vor oder kurz nach einem status-event
Das beobachte ich auch.
Es kommen status_TimestampDiff/30 Positionen mit dem positions-event. Wenn status_TimestampDiff = 30 s, dann wird eine Position und wenn status_TimestampDiff = 840 s, dann werden 28 Positionen geliefert.
Bei PARKED_IN_CS/CHARGING gibt es alle 840 s ein status-event und ein positions-event.
Unter scheidet sich der Pfad in der Smartphone App von dem im Modul angezeigten?
Zitat von: Ellert am 09 Juni 2023, 10:51:24Unter scheidet sich der Pfad in der Smartphone App von dem im Modul angezeigten?
Ja, deutlich. Im der Smartphone APP kann ich den Weg des Roboters nachvollzihen. In FHEM seit dem Umstieg auf Websocket nicht mehr.
Gibt es Fehlermeldungen in der Nähe der Events im Log?
Unterscheiden sich die Events im Log von denen die Wscat liefert, wie hier beschrieben https://developer.husqvarnagroup.cloud/apis/automower-connect-api#websocket?
Wenn ja, dann hätte ich gern einen Logauszug und dazu passend das, was Wscat liefert.
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.
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
Ich denke das Problem kannst Du mit den Hinweisen aus #89 lösen.
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
@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.
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
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
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
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.
Zitat von: Ellert am 12 Juni 2023, 00:06:15ZitatScope 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
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!
Zitat von: Zergman am 12 Juni 2023, 11:04:48Zitat 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.
Zitat von: Depechem am 12 Juni 2023, 09:25:07Zitat von: Ellert am 12 Juni 2023, 00:06:15ZitatScope 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.
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.
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.
Vielen Dank für das Update. Jetzt sehe ich endlich wieder, wo sich mein Mäher den ganzen Tag rumtreibt.
Husvarna habe ich bzgl. meines Problems kontaktiert (openapi.servicedesk@husqvarnagroup.com): Nach ein bisschen Hin und Her haben sie vor einer Woche ein Ticket wegen "missing positions-event" aufgemacht. Seit dem ist aber Ruhe.
Heute bitte kein Update durchführen, es hat sich ein Fehler eingeschlichen der das Laden des Moduls verhindert.
Die Korrektur ist eingecheckt, morgen als Update, und sofort im SVN.
Hallo @Ellert, erstmal vielen Dank für dieses tolle Modul!
Ein kleines Thema hätte ich noch bezüglich dem Reading
'state' des AutomowerConnect Moduls:
Seit dem Umbau auf die Websocket-Kommunikation, wird das
'STATE' Internal vom Modul AutomowerConnect direkt beschrieben (Status
'opened') und die Inhalte von FHEM (Attribut
'stateFormat') überschrieben.
Statt des Mower Status sehe auf der Übersicht dann lediglich den Text '
opened' als Status.
Das Commandref sagt beim Attribut 'stateFormat':
Zitat"Note: some FHEM modules are setting STATE directly (against the guidelines), in this case the attribute may not work as expected."
Gruss,
Stefan
Morgen im Update:
DevIo berücksichtigt stateFormat.
Es ist möglich die Karte in Tablet-UI/FTUI 2 einzubinden.
Das FTUI-Widget befindet sich im Anhang des ersten Beitrag, dort gibt es auch Hinweise zur Einbindung.
Hallo,
ich bekomme seit dem Update heute folgende Fehlermeldung und Map wird auch nicht mehr angezeigt.
AutomowerConnectUpdateJson is not defined
Hast nach dem Update Du den Browsercache gelöscht und ein Reload der Seite durchgeführt?
Positionsdaten speichern und wiederherstellen
Wer sich am Verlust der Positionsdaten nach einem Update stört, der kann mit den nachstehenden Subs für die 99_myUtils.pm vor dem Update die Daten speichern und nach dem Update wiederherstellen:
use Storable;
sub store_areapos {
my ( $name ) = @_;
my $hash = $defs{$name};
store \$hash->{helper}{areapos}, 'areapos';
}
sub retrieve_areapos {
my ( $name ) = @_;
my $hash = $defs{$name};
my $ref = retrieve( 'areapos' );
$hash->{helper}{areapos} = $$ref;
}
Für die Befehlszeile
Speichern vor dem Update
{store_areapos '<name>'}
Laden nach dem Update
{retrieve_areapos '<name>'}
<name> ist durch den Gerätenamen des Gerätes das den Mäher abbildet zu ersetzen.
Das Speichern und Wiederherstellen sollte unmittelbar vor bzw. nach dem Update erfolgen.
ZitatMorgen im Update:
DevIo berücksichtigt stateFormat.
:) Danke !!!
Browserchache hat geholfen! Danke!
Update FTUI-Widget im ersten Beitrag, funktioniert erst mit dem Update automowerconnect.js morgen.
Hallo Ellert,
ich habe nochmals einen kleinen Fehler gefunden:
Habe 2 Automower und auch 2 Instanzen des AutomowerConnect Moduls (Version 27701 - FHEM Update wurde heute durchgeführt).
Wenn ein Reading (z.B. 'mower_mode' oder 'planner_nextStart') eines der beiden Mower aktualisiert wird, so das Reading in beiden Instanzen des AutomowerConnect Moduls aktualisiert, anstelle nur die Instanz des betreffenden Mowers.
Wenn ich jedoch ein 'set getUpdate' ausführe, so wird nur die betreffende Instanz aktualisiert (= korrektes Verhalten).
Für jedes Modul wurde ein separater Husqvarna API Key angelegt und bei den Modulen konfiguriert.
-Stefan
Beide Instanzen erhalten alle Websocketevents. Wenn die Mäher die gleiche Id haben, dann reagieren auch beide Instanzen, die Websocketevents filtere ich nach der Id.
Bei unterschiedlichen Mähern sollte das Verhalten nicht auftreten.
Wenn die API abgefragt (getUpdate) wird, weiss die andere Instanz das natürlich nicht.
Die Mäher hängen auf demselben Account und damit mit demselben <application key>. Jedoch habe ich wie in Commandref beschrieben die [<mower number>] bei beiden Instanzen unterschiedlich vergeben:
Nr. 0 und 1 bzw. xxxxx 0 und xxxxx 1 - so wie im Reading <api_MowerFound> angezeigt.
Ich habe es auch mit einer zweiten Application im Husqvarna Developer Portal versucht; das Verhalten war jedoch genau gleich (es sind ja beide Application ID's mit demselben Account damit mit denselben Mähern verknüpft).
Die Unterscheidung sollte daher doch via die [<mower number>] erfolgen?
Du hast 2 Mäher mit 0=> namex Idx und 1=> namey Idy.
Idx Idy sind das Kriterium mit dem ich die WS-Events filtere, weil ich davon ausgehe (ich habe nur einen Mäher, kann das nicht testen), dass jeder Mäher eine eigene Id hat.
Unterscheiden sich Idx und Idy?
Ja, Idx und Idy sind unterschiedlich. Bei mir sieht dies wie folgt aus:
0 => Shorty West 2d84075a-a676-4375-bfdd-5c7ab927c9cf
1 => Shorty Sued aa1d3c59-aba6-4b7e-8c9f-600b988a8f60
Dann müsste {$defs{<devicename0>}->{helper}{mower_id}}
und {$defs{<devicename1>}->{helper}{mower_id}}
in der Befehlszeile mit Idx Idy übereinstimmen.
Dann könnte es sein, dass für beide Mäher WS-Event zur gleichen Zeit kommen.
Mit verbose 4 könntest Du sehen ob für beide Mäher Id eng beieinander liegende Events kommen, ggf das Attribut global mseclog 1 setzen
Sind die Inhalte der Readings, die gleichzeitig in beiden Mähern aktualisiert werden stimmig, passt die nächste Startzeit zu dem Mäher usw?
Habe die beide Mäher versuchshalber in der Husqvarna Cloud noch umbenannt, um keine Leerzeichen im Namen zu haben. Die Info kam auch korrekt bei den beiden Devices an; das Verhalten bei Reading-Updates hat sich aber leider nicht verbessert.
Es werden immer noch die Readings beider Devices mit demselben Inhalt beschrieben, wenn von einem Mäher ein Update kommt.
0 => Shorty-West 2d84075a-a676-4375-bfdd-5c7ab927c9cf
1 => Shorty-Sued aa1d3c59-aba6-4b7e-8c9f-600b988a8f60
Sorry, hatte dein Update nicht gesehen - werde dies gleich prüfen.
ZitatDann müsste
Code Auswählen
{$defs{<devicename0>}->{helper}{mower_id}}
und
Code Auswählen
{$defs{<devicename1>}->{helper}{mower_id}}
in der Befehlszeile mit Idx Idy übereinstimmen.
=> Ja, stimmt überein!
ZitatDann könnte es sein, dass für beide Mäher WS-Event zur gleichen Zeit kommen.
Mit verbose 4 könntest Du sehen ob für beide Mäher Id eng beieinander liegende Events kommen, ggf das Attribut global mseclog 1 setzen
Sind die Inhalte der Readings, die gleichzeitig in beiden Mähern aktualisiert werden stimmig, passt die nächste Startzeit zu dem Mäher usw?
Man sieht im Log, dass ein Update von einem Mäher jeweils beiden Mäher-Devices zugewiesen wird; d.h. die Readings sind jeweils nur für eines der beiden Devices stimmig. Man sieht im Log auch, dass bei beiden Event-Verarbeitungen jeweils dieselbe Mäher-ID im Log angezeigt wird. Beispiel:
2023.06.29 20:56:29.603 4: AutomowerConnect ShortySued wsRead: received websocket data: >{"id":"aa1d3c59-aba6-4b7e-8c9f-600b988a8f60","type":"status-event","attributes":{"battery":{"batteryPercent":96}
2023.06.29 20:56:29.634 4: AutomowerConnect ShortyWest wsRead: received websocket data: >{"id":"aa1d3c59-aba6-4b7e-8c9f-600b988a8f60","type":"status-event","attributes":{"battery":{"batteryPercent":96}
Die id '
aa1d3c59-aba6-4b7e-8c9f-600b988a8f60' entspricht hierbei dem Mäher/Device '
ShortySued' -
die zusätzliche Zuordnung beim Device 'ShortyWest' ist falsch.Hier noch als Referenz der Wert des Readings '
api_MowerFound':
0 => Shorty-West 2d84075a-a676-4375-bfdd-5c7ab927c9cf
1 => Shorty-Sued aa1d3c59-aba6-4b7e-8c9f-600b988a8f60
Zu dem im angehängten Log abgebildeten Zeitpunkt haben wir folgende Ist-Situation:
- Mäher "ShortySued" ist im Modus "HOME" und kurz vor Ende des Ladevorganges (Akku 96-100%)
- Mäher "ShortyWest" ist im Modus "MAIN_AREA" und noch mitten im Ladevorgang (Akku knapp über 50%)
Ja, jetzt sehe ich das auch. wsRead wird in einer Instanz eines Mähers von DevIo zweimal aufgerufen, einmal mit dem Hash von ShortySued und einmal mit dem Hash von ShortyWest, das hatte ich nicht erwartet. Dann kann der Filter nicht greifen.
Da bisher weniger 98% der aller FHEM Installationen mit Automower nur einen Mäher definieren, wollte ich kein zweistufiges Konzept.
Also werden bis auf Weiteres keine zusätzlichen Mäher unterstützt.
Mir ist immer noch nicht klar was da abläuft.
Beide Module erhalten die gleichen Daten über Websocket (vermute ich) und diese werden geloggt, unabhängig davon, ob diese Daten auch in die Readings geschrieben werden. Das köntest Du prüfen, wenn nur ein Gerät definiert ist und beide Id im Log auftauchen.
Wenn es so ist wie ich vermute, dann erkenne ich hier keinen Fehler.
Zitat2023.06.29 20:56:29.603 4: AutomowerConnect ShortySued wsRead: received websocket data: >{"id":"aa1d3c59-aba6-4b7e-8c9f-600b988a8f60","type":"status-event","attributes":{"battery":{"batteryPercent":96}
2023.06.29 20:56:29.634 4: AutomowerConnect ShortyWest wsRead: received websocket data: >{"id":"aa1d3c59-aba6-4b7e-8c9f-600b988a8f60","type":"status-event","attributes":{"battery":{"batteryPercent":96}
Daher würden mich ein Log nach dem heutigen Update interessieren, da gibt es einen Logeintrag nach dem Filter mit dem batteryPercent Wert als Referenz. Es sollte dann jede Instanz nur ihren Wert loggen.
Wenn DevIo wie vermutet wsRead mit jedem Hash in jedem Gerät aufruft müssten 2 von diesen Logeinträgen zusehen sein.
Hallo Ellert,
wie gewünscht habe ich eines der beiden Devices aus FHEM gelöscht; aktuell ist nur noch ein AutomowerConnect Device definiert ('ShortyWest').
Im Log sieht man Events von beiden Mähern, welche an das Device 'ShortyWest' gesendet werden. Die betreffenden Readings wurden (leider) auch bei allen im Log dargestellten Events aktualisiert (sieht man im Log [noch] nicht, jedoch im FHEM Webinterface).
2023.06.30 12:46:39.351 4: AutomowerConnect ShortyWest wsRead: received websocket data: >{"id":"aa1d3c59-aba6-4b7e-8c9f-600b988a8f60","type":"status-event","attributes":{"battery":{"batteryPercent":95},"mower":{"mode":"MAIN_AREA","activity":"MOWING","state":"IN_OPERATION","errorCode":0,"errorCodeTimestamp":0},"planner":{"nextStartTimestamp":0,"override":{"action":"IPLANNER_OVERRIDE_ACTION_FORCE_MOW"},"restrictedReason":"NOT_APPLICABLE"},"metadata":{"connected":true,"statusTimestamp":1688121999224}}}<
Zeile 32851: 2023.06.30 12:47:19.936 4: AutomowerConnect ShortyWest wsRead: received websocket data: >{"id":"2d84075a-a676-4375-bfdd-5c7ab927c9cf","type":"status-event","attributes":{"battery":{"batteryPercent":100},"mower":{"mode":"HOME","activity":"PARKED_IN_CS","state":"RESTRICTED","errorCode":0,"errorCodeTimestamp":0},"planner":{"nextStartTimestamp":1688130000000,"override":{"action":"IPLANNER_OVERRIDE_ACTION_NOT_ACTIVE"},"restrictedReason":"WEEK_SCHEDULE"},"metadata":{"connected":true,"statusTimestamp":1688122039701}}}<
Da wsRead die Mower ID auch ans Modul übergibt, müsste die Filterung danach doch funktionieren? So wie ich verstanden habe, ist es aktuell implementiert?
Gerne werde ich morgen ein FHEM Update durchführen und den entsprechenden Log Auszug wieder hier posten.
Gruss,
Stefan
Hallo Ellert, hab grad gesehen, dass dein Checkin @27715 schon im heutigen FHEM Update mit drin war. Hier der resultierende Log-Auszug:
2023.06.30 13:20:45.532 4: AutomowerConnect ShortyWest wsRead: select websocket data for $result->{id} 2d84075a-a676-4375-bfdd-5c7ab927c9cf, $hash->{helper}{mower_id} 2d84075a-a676-4375-bfdd-5c7ab927c9cf, battery 90
2023.06.30 13:20:45.618 4: AutomowerConnect ShortyWest wsRead: received websocket data: >{"id":"2d84075a-a676-4375-bfdd-5c7ab927c9cf","type":"status-event","attributes":{"battery":{"batteryPercent":90},"mower":{"mode":"MAIN_AREA","activity":"MOWING","state":"IN_OPERATION","errorCode":0,"errorCodeTimestamp":0},"planner":{"nextStartTimestamp":1688130000000,"override":{"action":"IPLANNER_OVERRIDE_ACTION_NOT_ACTIVE"},"restrictedReason":"NOT_APPLICABLE"},"metadata":{"connected":true,"statusTimestamp":1688124045433}}}<
2023.06.30 13:20:45.659 4: AutomowerConnect ShortyWest wsRead: received websocket data: >{"id":"2d84075a-a676-4375-bfdd-5c7ab927c9cf","type":"positions-event","attributes":{"positions":[{"latitude":47.3466962,"longitude":7.8706346}]}}<
2023.06.30 13:20:46.367 4: AutomowerConnect ShortyWest wsRead: received websocket data: ><
2023.06.30 13:21:10.580 4: AutomowerConnect ShortyWest wsRead: select websocket data for $result->{id} aa1d3c59-aba6-4b7e-8c9f-600b988a8f60, $hash->{helper}{mower_id} 2d84075a-a676-4375-bfdd-5c7ab927c9cf, battery 55
2023.06.30 13:21:10.713 4: AutomowerConnect ShortyWest wsRead: received websocket data: >{"id":"aa1d3c59-aba6-4b7e-8c9f-600b988a8f60","type":"status-event","attributes":{"battery":{"batteryPercent":55},"mower":{"mode":"MAIN_AREA","activity":"MOWING","state":"IN_OPERATION","errorCode":9,"errorCodeTimestamp":1680702307000},"planner":{"nextStartTimestamp":0,"override":{"action":"IPLANNER_OVERRIDE_ACTION_FORCE_MOW"},"restrictedReason":"NOT_APPLICABLE"},"metadata":{"connected":true,"statusTimestamp":1688124070478}}}<
2023.06.30 13:21:10.763 4: AutomowerConnect ShortyWest wsRead: received websocket data: >{"id":"aa1d3c59-aba6-4b7e-8c9f-600b988a8f60","type":"positions-event","attributes":{"positions":[{"latitude":47.3465912,"longitude":7.8706805}]}}<
2023.06.30 13:21:10.790 4: AutomowerConnect ShortyWest wsRead: select websocket data for $result->{id} aa1d3c59-aba6-4b7e-8c9f-600b988a8f60, $hash->{helper}{mower_id} 2d84075a-a676-4375-bfdd-5c7ab927c9cf, battery 55
Beide Mower waren zu dem Zeitpunkt aktiv. Die angegebenen Akkuwerte sind - bezogen auf $result->{id} - korrekt.
Nun müsste das Modul eigentlich "nur" noch nach '$result->{id}' filtern - dann müsste es passen.
Beste Grüsse,
Stefan
Hallo Ellert, ich habe den Fehler gefunden:
Common.pm, Zeile 2530:
if ( defined( $result->{type} && $result->{id} eq $hash->{helper}{mower_id} ) ) {
Die gesamte Zeile ist hier der Input für die Funktion 'defined' - eigentlich sollte ja nur '$result->{type}' auf 'defined' geprüft werden.
Common.pm, Zeile 2530: Vorschlag (verschobene und zusätzliche Klammern):
if ( defined( $result->{type} ) && ( $result->{id} eq $hash->{helper}{mower_id} ) ) {
=> Ein erster Test war erfolgreich; es wird jeweils nur noch das betroffene Mäher-Device aktualisiert.
Könntest du dies bitte so anpassen und einchecken? Vielen Dank!
Gruss,
Stefan
Einen Filter gibt es schon, da stand leider eine Klammer an der falschen Stelle.
Es wäre hilfreich, wenn Du kurz probierst ob die Readings richtig geschrieben werden.
Die Datei im Anhang nach ...fhem/lib/FHEM/Devices/AMConnect/ kopieren.
Fhem neu starten.
Wenn alles o.k. ist, dann gibt es die Änderung morgen im Update.
Ok. Du warst schneller.
Hallo Ellert,
Vielen Dank. Ich habe deine Version von Common.pm eben auch noch getestet; funktioniert einwandfrei! :)
Beste Grüsse
Stefan
Eingecheckt und morgen im Update.
@Stefan H.: Danke für Deine aktive Mitarbeit.
@Ellert Danke ebenso für die schnelle Behebung!
Tipp:
Die per Getter verfügbaren Listen können in userReadings dauerhaft angezeigt werden, z.B. StatisticsData
attr <device name> userReadings A_Stat:mower_wsEvent..status-event {fhem "get $name StatisticsData", 1}
Das funktioniert auch in DOIF uiTable, wenn $name durch den Gerätenamen ersetzt wird.
Ab morgen im Update:
Fall der Websocket geöffnet ist, aber meldet, dass er nicht bereit ist, wird versucht ihn wieder zu öffen.
Nach dem Update und dem anschliessenden FHEM Neustart sollte der Browserchache gelöscht werden und die Seite neu geladen werden.
Falls es dann noch zu Javascriptfehlermeldungen kommt, dann sollten die Standartdesignattribute neu geladen werden, wenn das Attribut mapDesignAttributes verwendet wird.
Im heutigen Update ist folgendes enthalten.
DisableForIntervalls stoppt und startet jetzt den Abfrageprozess.
Kleine Änderungen beim Zuordnen von Positionen zur Aktivität LEAVING bzw. GOING_HOME bei Positionspolling.
Ich habe beobachtet, dass über den Websocket häufiger Events ankommen, wenn die Smartphoneapp gestartet und die Karte angezeigt wird.
Um diese Events auch ohne einen Start der Smartphoneapp über den Websocket zu erzeugen, kann das angehängte Modul verwendet werden.
Die erhöhte Eventrate, ca. alle 30s sollte für die Aktivität LEAVING, MOWING und GOING_HOME zu beobachten sein.
Im Grunde wird während des Mähens alle 30 s eine Position gesendet.
Um die Eventrate aufrecht zu erhalten, wird die inoffizielle API für den 1. Mäher alle 440 s abgefragt. Die Zeit dieser Abfragen kann über das Attribut disabledForIntervals beschränkt werden.
Der Benutzername bzw. Emailadresse und das Passwort der Smartphoneapp wird für die Definition benötigt.
Vorbereitung
Das Modul in den Modulpfad (/opt/fhem/FHEM/) kopieren. Danach reicht ein Reload des Moduls damit das Gerät definiert werden kann.
reload 98_AMConnectTools.pm
Definition
define AMConnectTools AMConnectTools <Emailadresse>
set AMConnectTools password <Passwort>
Mit dem AM430X funktioniert es, wie beschrieben.
Das Modul 98_AMConnectTools.pm und ein passendes Helpericon befinden sich im Anhang des ersten Beitrags.
Was sind Eure Beobachtungen?
Haltet Ihr das Modul 98_AMConnectTools.pm für sinnvoll?
Wird auch die Eventrate für weitere Mährobboter erhöht, das kann ich leider nicht selbst testen?
Das morgige Update enthält:
Die Vermeidung von seltenen decode_json Fehlern, wenn mehr als ein vollständiger JSON String im DevIo Buffer enthalten ist.
Das Attribut addPositionPolling ist nur setzbar oder wird nicht gelöscht, wenn das Attribut addPollingMinInterval auf einen Wert > 0 gesetzt ist.
Hallo,
ich benutze dieses Modul erst seit gestern (Danke an Ellert für die tolle Arbeit) und habe eine simple Frage: was bedeutet das Symbol "E" in der Kartenansicht (M=Mower, CS=Charging Station)?
Gruß
Blueberry63
An der Position hat der Mäher einen Fehler gemeldet. Die Fehlermeldung ist auf der Karte zu sehen, solange der Fehler besteht. Der Fehler sollte auch im Getter errorStack gespeichert sein.
Danke für die Info. Den Fehler konnte ich nachvollziehen.
Ich habe noch eine Frage: gibt es eine Möglichkeit, die Daten des GPS-Trackings von Zeit zu Zeit zu löschen. Ansonsten sieht das Bild des Garten nur noch "rot" aus.
Schaumal das Attribut weekdaysToResetWayPoints.
Habe ich auf 0123456 gesetzt
Die gewählte Menge und die Art der Darstellung der Wegpunkte hängt von der Zielsetzung ab.
Dazu sollte man wissen, das die Linien nicht den tatsächlichen Weg anzeigen, sondern nur die kürzeste Verbindung zwischen 2 Wegpunkten. Ein Wegpunkt wird etwa alle 30 s erzeugt. In diesen 30 s kann der Mäher mehrfach die Richtung wechseln.
Die letzten 5000 Wegpunkte werden dynamisch gespeichert, es sei denn über das Attribut numberOfWayPointsToDisplay wird etwas anderes bestimmt.
Soll nur der ungefähre Weg eines Tages angezeigt werden, dann ist weekdaysToResetWayPoints 0123456 die richtige Wahl, wie isy vorgeschlagen hat.
Soll abgeschätzt werden, wie gleichmäßig die Wegpunkte verteilt sind, dann könnte man numberOfWayPointsToDisplay ausreichend groß wählen und statt Linien nur die Wegpunkte anzeigen, in dem man im Attribut mapDesignAttributes den Wert mowingPathUseDots="" auf mowingPathUseDots="1" setzen, s. Anlage. Falls noch nicht erfolgt, müssen vorher die Standartdesignattribute geladen werden mit set defaultDesignAttributesToAttribute.
Im ersten Beitrag gibt es eine neue Version des Hilfsmoduls 98_AMConnectTools.pm, mit dem die Eventrate während des Mähens erhöht wird.
Das Modul schaltet sich inaktiv wenn sich alle Mäher in der Ladestation befinden. Es ist nur aktiv, wenn mindestens ein Mäher die Station verlässt bis sich alle Mäher in der Station befinden. Damit kann die Nutzung des Attributes disabledForIntervalls entfallen.
Im FHEM Wiki ist eine Möglichkeit beschrieben, wie die Karte in FTUI3 eingebunden werden kann::
https://wiki.fhem.de/wiki/AutomowerConnect#Tablet-UI/FTUI_Version_3
Für die Mäher Modelle Automower® 405X, 415X, 430X NERA, 450X NERA, 435X AWD and 535 AWD wurde Zone control in der API ergänzt.
Im angehängten Modul wurde
set <name> StartInWorkArea <WorkAreaId> <duration>
ergänzt. Der Befehl wird für die unterstützten Mäher angezeigt.
Bitte, testet einmal ob der Befehl funktioniert, ich habe nicht den passenden Mäher und kann daher nicht testen.
Das Modul muss ins Verzeichniss
/opt/fhem/lib/FHEM/Devices/AMConnect/
kopiert und FHEM muss neu gestartet werden.
Das Modul AutomowerConnect zum Testen der Befehle für workArea und stayOutZone gibt es ab morgen im Update.
Im Device muss das userattr testing hinzugefügt werden.
Danach muss das Attribut testing auf 1 gesetzt werden.
Mit get MowerData kann geprüft werden, ob die capabilities für stayOutZones und workAreas gesetzt auf 1 sind.
Dann sollten die Befehle StartInWorkArea, stayOutZone_enable und stayOutZone_disable sichtbar und ausführbar sein.
Die Id bekommt man mit Dumper($defs{<name>}->{helper}{mower}{attributes}{workAreas})
und Dumper($defs{<name>}->{helper}{mower}{attributes}{stayOutZones})
.
Wenn am aktuellen Tag Zonen eingerichtet wurden, müssen mit set getUpdate die Mäherdaten aktualisiert werden.
Getestet werden sollten alle 3 Befehle mit Angabe der Zonenid und dem Zonennamen.
Zitat von: Ellert am 27 Juni 2023, 16:25:09Morgen im Update:
DevIo berücksichtigt stateFormat.
Es ist möglich die Karte in Tablet-UI/FTUI 2 einzubinden.
Das FTUI-Widget befindet sich im Anhang des ersten Beitrag, dort gibt es auch Hinweise zur Einbindung.
Hallo zusammen,
super das die Karte in FTUI2 eingebaut wurde. Ich habe sie auch eingefügt bekommen.
Nun aber folgendes Problem.
1. Die Karte wird in FTUI in Originalgröße angezeigt also viel zu groß.
Gibt es eine Möglichkeit diese in FTUI im Verhäktnis kleiner anzuzeigen?
2. in der normalen fhem Oberfläche habe ich hinter die Karte ein Bild "./www/images/1map1360x980.webp" hinterlegt welches auch angezeigt wird, kann man dieses Hintergrundbild auch mit in FTUI einbinden? Wenn ja hat jemand einen Lößungsansatz
Also wenn man Beispielsweise
mapImageZoom 0.3
im Modul für FTUI2 extra setzen könnte. Ich kann die Größe zwar im Device kleiner setzen, dann ist das Bild aber im webbrowser unter fhem viel zu klein
Vielen Dank im Voraus
zu 1: Erstelle eine 2. Geräteinstanz mit dem gewünschten Zoom
zu 2: Das Bild wird mit ausgeliefert, wenn das bei Dir nicht funktioniert, fallen mir 2 Möglichkeiten ein:
- Das Bild auf die Mähfläche reduzieren.
- Das Bild auf etwa 100 Kb komprimieren.
Zitat von: Ellert am 29 Oktober 2023, 23:40:31zu 1: Erstelle eine 2. Geräteinstanz mit dem gewünschten Zoom
zu 2: Das Bild wird mit ausgeliefert, wenn das bei Dir nicht funktioniert, fallen mir 2 Möglichkeiten ein:
- Das Bild auf die Mähfläche reduzieren.
- Das Bild auf etwa 100 Kb komprimieren.
Danke für die Hilfestellungen. Das Bild (... .webp) habe ich jetzt auf 74kb verkleinert und neu gestartet. Leider blieb es ohne Erfolg.
Hat es denn schonmal jemand geschafft das .webp Foto mit in FTUI einzubinden?
Bei mir funktioniert es ohne Probleme mit Bildern im Format webp, die Datei ist 75 kB groß.
Ich würde prüfen, ob der Browser auf dem Anzeigegerät das Format darstellen kann und ob die FTUI Seite in einem aktuellen Browser mit Bild dargestellt wird.
Hallo Zusammen,
ich habe das Modul auch mal testhalber installiert und es hat bisher auch ohne Auffälligkeiten funktioniert. Mein Mäher ist seit einigen Tagen in der Winterpause. Gestern habe ich mal wieder ein FHEM-Update durchgeführt. Danach hatte ich die folgenden Fehlermeldungen im Log:
2023.11.18 15:32:47 3: Opening My430x device wss:ws.openapi.husqvarna.dev:443/v1
2023.11.18 15:32:47 1: My430x: Can't connect to wss:ws.openapi.husqvarna.dev:443/v1: HTTP CODE 403
2023.11.18 15:32:47 1: AutomowerConnect My430x wsCb: failed with error: HTTP CODE 403
Die letzte Zeile wiederholt sich danach jede Minute. Daraufhin habe ich das Device disabled. Die Fehlermeldungen (letzte Zeile) kommen aber weiterhin minütlich.
Bitte um Unterstützung - danke.
LG
Holger
Eine Lösung für 403 ist im Developerportal beschrieben, ich hatte in der Updateankündigung darauf hingewiesen, siehe #76 ACHTUNG:...
Zum Testen gibt es einen neuen Setter 'confirmError' ab morgen im Update. Siehe auch: #178
Die nachstehend aufgeführten Dateien aus dem ersten Beitrag befinden sich ab jetzt im SVN unter contrib/AutomowerConnect/
widget_automowerconnect.js Widget für TabletUI Version 2
98_AMConnectTools.pm Tool zur Erhöhung der Eventrate der Websocketverbindung zur Husqvarna Cloud
Beispiel zum Laden des Moduls 98_AMConnectTools.pm für die FHEM Befehlszeile, siehe auch: https://wiki.fhem.de/wiki/Update#Einzelne_Dateien_aus_dem_SVN_holen
{ Svn_GetFile('contrib/AutomowerConnect/98_AMConnectTools.pm', 'FHEM/98_AMConnectTools.pm') }
Hallo Ellert
Zuerst möchte ich mich für deine Arbeit bedanken. Ich habe die folgenden Fragen:
Zitat von: Ellert am 08 Oktober 2023, 15:03:32Für die Mäher Modelle Automower® 405X, 415X, 430X NERA, 450X NERA, 435X AWD and 535 AWD wurde Zone control in der API ergänzt.
Im angehängten Modul wurde
set <name> StartInWorkArea <WorkAreaId> <duration>
ergänzt. Der Befehl wird für die unterstützten Mäher angezeigt.
Das Modul muss ins Verzeichniss
/opt/fhem/lib/FHEM/Devices/AMConnect/
kopiert und FHEM muss neu gestartet werden.
Sorry. Aber welches Modul ist da gemeint (finde den erwähnten Anhang nicht)?
Zitat von: Ellert am 13 Oktober 2023, 19:10:52Die Id bekommt man mit
Dumper($defs{<name>}->{helper}{mower}{attributes}{workAreas})
und
Dumper($defs{<name>}->{helper}{mower}{attributes}{stayOutZones})
Wo kommt das hin bzw. wo gebe ich das ein? In der FHEM Befehlszeile erhalte ich eine Fehlermeldung.
Zitat von: outhouse am 20 März 2024, 14:06:55Sorry. Aber welches Modul ist da gemeint (finde den erwähnten Anhang nicht)?
In der Bearbeitungsnotiz des zitierten Beitrags steht, das der Anhang gelöscht wurde.
Und im nachfolgenden Beitrag #178 ist beschrieben, wie die zu testenden Änderungen im aktuellen Modul aktiviert werden können.
Das ist auch in der Befehlsreferenz beschrieben (User Attribut testing).
Wie man einen Perl Ausdruck in die Befehlszeile eingibt sollt eigentlich bekannt sein, zur Erinnerung aus der Befehlsreferenz:
ZitatEs gibt drei Arten von Befehlen: "FHEM" Befehle (werden in diesem Dokument beschrieben), Shell-Befehle (diese müssen von doppelten Anführungszeichen "" eingeschlossen werden) und perl-Ausdrücken (von geschwungenen Klammern {} eingeschlossen).
;)
Also mach {} um den Ausdruck, nicht alles ist Copy & Paste.
Danke im Voraus fürs Testen.
Zitat von: Ellert am 20 März 2024, 18:18:16In der Bearbeitungsnotiz des zitierten Beitrags steht, das der Anhang gelöscht wurde.
Ja. Jetzt steht das da. Alles klar ...
Zitat von: Ellert am 20 März 2024, 18:18:16Also mach {} um den Ausdruck, nicht alles ist Copy & Paste.
Den Beitrag #177 habe ich 1:1 umgesetzt. Funktioniert auch prima. Der Fehler war nicht die geschwungenen Klammern {}, sondern dass ich Klein- und Grossschreibung beim Namen des Mowers nicht beachtet habe.
Ich werde es nun testen und dich informieren.
Noch eine andere Frage:
Einen einzelnen Auftrag, den ich auf
der App erfasse (z.B. mähe <Arbeitsbereich> für 3 Stunden) kann ich nicht bei FHEM mappen (wie SheduleToAtributte)?
Hintergrund: Ich suche noch immer nach einer Möglichkeit, das Garagentor zu öffnen, bevor der Mower losfährt (z.B. dass nach Erhalt des Befehls der Mower sofort auf "Pause" geht, das Tor geöffnet wird, und der Mower nachher den Einzelauftrag weiter ausführt. Beim 2. Start des Auftrages (von 3 Stunden) kann ich die Zeit von "planner_nextStart" abnehmen und so das Tor 10 Sekunden vorher öffnen.
Zitat von: outhouse am 21 März 2024, 06:23:33Einen einzelnen Auftrag, den ich auf der App erfasse (z.B. mähe <Arbeitsbereich> für 3 Stunden) kann ich nicht bei FHEM mappen (wie SheduleToAtributte)?
Die API enthält keine Rückmeldung zu den gesendeten Befehlen, eine Quittung bekommt nur der Sender des Befehls (also was kurz in mower_commandStatus steht).
Die früheste Möglichkeit zu erkennen, dass der Mäher startet ist LEAVING. Das ist für Deinen Zweck zu spät.
Vielleicht gibt es eine indirekte Lösung, z.B.: In der App Scheinwerfer auf ALWAYS_ON && PARKED_IN_CS öffnet das Tor über FHEM und startet über FHEM den Mäher verzögert für 3h
Zitat von: Ellert am 21 März 2024, 09:59:36Zitat von: outhouse am 21 März 2024, 06:23:33Vielleicht gibt es eine indirekte Lösung, z.B.: In der App Scheinwerfer auf ALWAYS_ON && PARKED_IN_CS öffnet das Tor über FHEM und startet über FHEM den Mäher verzögert für 3h
Danke für den Ratschlag. Das hatte ich bereits versucht. Es klappt nur jedes zweite Mal. Tut dem Garagentor nicht so gut ;)
Ich sehe Du verwendest Homematic, da könnte evtl. ein Türkontakt als Rückmeldung, dass die Tür geöffnet ist helfen. Naja, hast Du bestimmt auch schon dran gedacht.
Zitat von: Ellert am 22 März 2024, 10:45:55Ich sehe Du verwendest Homematic, da könnte evtl. ein Türkontakt als Rückmeldung, dass die Tür geöffnet ist helfen.
Verstehe jetzt nicht ganz was du meinst. Die Rückmeldung (offen, geschlossen) erhalte ich auch über das robonect-relais.
Deine Idee der indirekten Lösung (#189) habe ich nochmals genauer angeschaut und festgestellt, dass das Reading "mower_state" 2 bis 3 Sekunden vor dem Reading "mower_activity" den Zustand auf "IN_OPERATION" ändert. Ich werde das mal weiter verfolgen
Zitat von: outhouse am 22 März 2024, 11:16:19Verstehe jetzt nicht ganz was du meinst.
Zitat von: outhouse am 22 März 2024, 09:43:29Das hatte ich bereits versucht. Es klappt nur jedes zweite Mal. Tut dem Garagentor nicht so gut
Wenn der Mäher gegen die Tür fährt könnte man das verhindern in dem er nur startet, wenn die offen ist.
[Mäher geparkt] und als Trigger die Änderung auf [Scheinwerfer an] das öffnet das Tor.
[Mäher geparkt] und [Scheinwerfer sind an] und als Trigger [Tür ist offen] dann [Starte den Mäher für 3h]
Ja. Aber dann ist die ganze Lösung über FHEM. Eigentlich möchte ich die normale App benutzen können und über FHEM dann Tor und Passage öffnen bzw. schliessen. Mit der Passage ist das kein Problem, da genügend Zeit vorhanden ist.
Starten etc. über FHEM ist kein Problem dank deinem sehr guten Modul. Die Zonen habe ich noch nicht ausprobiert. Werde dir aber noch genau Bescheid geben.
Ab morgen im Update:
Neuer Setter cuttingHeightInWorkArea zum Testen.
Automatische Berechnung des Hüllenpolygons der Mähfläche. Die benötigte Javascriptbibliothek wird automatisch von einem externen Server geladen, siehe https://forum.fhem.de/index.php?topic=137791.0
Neues Attribut mowingAreaHull, siehe Befehlsreferenz zur Vorgehensweise bei der Berechnung des Hüllenpolygons.
Einige zusätzliche Infos in den Listen InternalData (Standard Design Attribute, Drittanbietersoftware) und StatisticsData (Fläche, wenn Grenzen angegeben sind)
Nach dem Update den FHEM Server neu starten, den Browsercache löschen und die Seite neu laden.
Morgen im Update:
Befindet sich ein Hüllkurvenpolygon im Attribut mowingAreaHull, dann können Ausreißer reduziert werden.
Das Designattribut hullSubtract muss dazu auf eine natürliche Zahl gesetzt werden. Sie gibt die Rekursionstiefe an, mit der die jeweilig Hüllkurve von der Menge der Wegpunkte abgezogen wird und erzeugt dazu den Button Subtract Hull unterhalb der Karte.
Siehe auch mowingAreaHull in der Befehlsreferenz https://commandref.fhem.de/commandref_DE.html#AutomowerConnect-attr-mowingAreaHull
Im morgigen Update:
Es gibt ein Attribut 'mowerPanel'. Der dort enthaltene HTML Kode kann z.B. Kurzbefehle enthalten.
Er wird unterhalb der Karte angezeigt, kann aber über CSS positioniert werden.
Ein Befehle wird im command Attribut angegeben, ohne set <name> .
command='Start 210'
statt
set <name> Start 210
Nach dem Update den FHEM Server neu starten, den Browsercache löschen und die Seite neu laden.
Beispiele für die Darstellung im Anhang:
Panel auf der Karte 518px x 909px:
<style>
.amc_panel_button {height:50px; width:150px;}
.amc_panel_div {position:relative; left:348px; top:-330px; z-index:2; width:150px; height:1px}
</style>
<div class="amc_panel_div" >
<button class="amc_panel_button" command="Start 210" >Start für 3 1/2 h</button>
<button class="amc_panel_button" command="Pause" >Pause bis auf Weiteres</button>
<button class="amc_panel_button" command="ResumeSchedule" >Weiter nach Plan</button>
<button class="amc_panel_button" command="ParkUntilNextSchedule" >Parken bis nächsten Termin</button>
<button class="amc_panel_button" command="ParkUntilNextSchedule" >Parken bis auf Weiteres</button>
</div>
Panel unter der Karte mit Zeilenumbruch (<br>)
<button command="Start 210" >Start für 3 1/2 h</button><br>
<button command="ParkUntilNextSchedule" >Parken bis nächsten Termin</button>
<button command="ParkUntilNextSchedule" >Parken bis auf Weiteres</button>
Hallo zusammen,
ich bekomme aktuell (seit ca. 04.04.2024) keine Websocket-Events mehr. Ich habe die Applikation bei Husqvarna sowie die Moduldefinition in FHEM bereits testweise vollständig gelöscht und wieder angelegt. Ich habe mich außerdem mit dem Python-Testcode aus dem Developer-Portal mit dem Websocket verbunden. Auch dort bekomme ich keine Events.
Ist ein Problem bei Husqvarna bekannt?
Zitat von: cheanrod am 20 April 2024, 18:45:44Ist ein Problem bei Husqvarna bekannt?
Die Frage solltest Du bei Husqvarna stellen, z.B. hier openapi.servicedesk@husqvarnagroup.com
Ich habe keine Probleme.
Zitat von: Ellert am 21 April 2024, 14:25:02Zitat von: cheanrod am 20 April 2024, 18:45:44Ist ein Problem bei Husqvarna bekannt?
Die Frage solltest Du bei Husqvarna stellen, z.B. hier openapi.servicedesk@husqvarnagroup.com
Ich habe keine Probleme.
Danke für die Rückmeldung! So weiß ich, dass es eigentlich funktionieren sollte. Ich werde eine Mail an den Support senden.
Zitat von: cheanrod am 21 April 2024, 21:26:24Danke für die Rückmeldung! So weiß ich, dass es eigentlich funktionieren sollte. Ich werde eine Mail an den Support senden.
Es gab ein individuelles Problem der Websockets bezogen auf meinen Account. Dieses ist nun behoben und ich empfange wieder Events.
Ab morgen gibt es einen Editor für den Mähplan im Update.
FHEM Neustart, Browsercache löschen und Seite neuladen ist erforderlich.
Bedienung:
Über den Button 'Mower Schedule' unter der Karte kann eine Benutzeroberfläche zur Bearbeitung des Mähplans geöffnet werden.
Eintrag zufügen/ändern: Die gewünschten Angaben eintragen und ± betätigen.
Eintrag löschen: Alle Wochentage abwählen und ± betätigen.
Eintrag zurücksetzen: Irgend ein Zeitfeld mit -- füllen und ± betätigen.
mower_schedule_editor.png
Benötige Hilfe bei der Installation eines Automower Aspire.
Folgende Schritte durchgeführt
Anmeldung im Husqvarna Developer Portal
Application angelegt
Application Key
Application Secret
Sobald ich die Definition
define Kutte AutomowerConnect <Application Key>
Stürzt FHEM auf meinem Life und Testsystem ab.
Erhalte folgenden Eintrag im Log
024.05.03 10:12:07.375 5: Loading ./FHEM/74_AutomowerConnect.pm
2024.05.03 10:12:07.479 2: Registering AutomowerConnect Kutte for URL /AutomowerConnect/Kutte/map...
2024.05.03 10:12:07.480 2: Registering AutomowerConnect Kutte for URL /AutomowerConnect/Kutte/json...
2024.05.03 10:12:07.480 1: PERL WARNING: Use of uninitialized value $attrVal in pattern match (m//) at lib/FHEM/Devices/AMConnect/Common.pm line 338.
2024.05.03 10:12:09.967 4: AutomowerConnect Kutte getMowerResponse: response $statuscode >200<, $err ><, $param->url https://api.amc.husqvarna.dev/v1/mowers
$data >{"data":[{"type":"mower","id":"2817c4c5-3865-43fc-8964-780577fa2a6f","attributes":{"system":{"name":"Automower Aspire","model":"Husqvarna Automower® Aspire™ R4","serialNumber":241011852},"battery":{"batteryPercent":100},"capabilities":{"headlights":false,"workAreas":false,"position":false,"stayOutZones":false},"mower":{"mode":"MAIN_AREA","activity":"PARKED_IN_CS","inactiveReason":"NONE","state":"RESTRICTED","errorCode":0,"errorCodeTimestamp":0},"calendar":{"tasks":[{"start":750,"duration":150,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":true,"sunday":false,"workAreaId":0}]},"planner":{"nextStartTimestamp":1714739400000,"override":{"action":"NOT_ACTIVE"},"restrictedReason":"WEEK_SCHEDULE"},"metadata":{"connected":true,"statusTimestamp":1714723678284},"positions":[],"settings":{"cuttingHeight":null,"headlight":{"mode":null}},"statistics":{"cuttingBladeUsageTime":12185,"numberOfChargingCycles":1,"numberOfCollisions":192,"totalChargingTime":797,"totalCuttingTime":12185,"totalDriveDistance":3634,"totalRunningTime":12532,"totalSearchingTime":226}}}]}<
2024.05.03 10:12:09.968 5: AutomowerConnect Kutte getMowerResponse: found 0 => Automower Aspire 2817c4c5-3865-43fc-8964-780577fa2a6f
Not a reference at lib/FHEM/Devices/AMConnect/Common.pm line 1032.
Vielen Dank für eure Unterstützung.
Zitat"positions":[]
Der Mäher liefert keine Positionsdaten.
Ist das Typ bedingt?
Ich bin bisher davon ausgegangen, dass alle Mäher mit Connectmodul auch Positionsdaten liefern, daher die letzte Fehlermeldung mit Absturz.
Vielen Dank für die schnelle Antwort.
In der App werden keine Positionsdaten angezeigt. Somit gehe ich davon aus das es so ist.
Zu Testzwecken habe ich die Zeile 1032 rausgenommen. Darauf hin wurde das Device angelegt.
Daten des Mowers werden angezeigt. Leider keine Positionen.
Ja, es gibt keine Positionsdaten beim Aspire R4.
Bei genauerem Hinsehen wird das klar:
Zitat"capabilities":{"headlights":false,"workAreas":false,"position":false,"stayOutZones":false}
Das wird ein etwas umfangreicherer Umbau und kann etwas dauern.
Vielen Dank.
Da ich derzeit einen Workaround habe, eilt es nicht so sehr.
Gerne stelle ich mich zum Testen der jeweiligen Versionen zur Verfügung.
Gruß
In der Testversion sind jetzt die in der API definierten Fähigkeiten berücksichtigt und das Modul sollte jetzt auch Unicode tauglich, sein für die experimentelle Einstellung attr global unicode
.
@wieral: Danke für Dein Angebot, Du könntest jetzt testen.
Wenn der Mäher keine Positionen liefern kann, sollten die sich darauf beziehenden Befehle und Attibute ausgeblendet werden, ebenso die Karte, das sollte getestet werden.
Interessant wäre, ob die Getter (StatisticsData, MowerData, InternalData, errorStack) noch ohne Warnung funktionieren.
Die Testversion ist im SVN unter contrib/AutomowerConnect abgelegt.
Sie kann über die Befehlszeile oder über raw definition (das Plus neben dem FHEM-Logo) geladen werden.
{ Svn_GetFile('contrib/AutomowerConnect/Common.pm', 'lib/FHEM/Devices/AMConnect/Common.pm') }
{ Svn_GetFile('contrib/AutomowerConnect/automowerconnect.js', 'www/pgm2/automowerconnect.js') }
Nach dem Laden der Module muss FHEM neu gestartet, der Browsercache gelöscht und die Webseite neu geladen werden.
Guten Morgen Ellert,
vielen Dank für deine Arbeit.
Meine Tests ergaben folgendes.
Das Device zeigt jetzt keine Karte mehr an. Scheduler ist da.
InternalData, StatisticsData, MowerData - liefert Daten
errorStack - No error in stack.
errorCodes - zeigt folgendes
errorCodes.png
Im Logfile befinden sich folgende Meldungen:
2024.05.05 07:26:46.581 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at lib/FHEM/Devices/AMConnect/Common.pm line 2661.
2024.05.05 07:26:46.581 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at lib/FHEM/Devices/AMConnect/Common.pm line 2662.
2024.05.05 07:26:46.582 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at lib/FHEM/Devices/AMConnect/Common.pm line 2663.
2024.05.05 07:26:46.582 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at lib/FHEM/Devices/AMConnect/Common.pm line 2664.
Vielen Dank.
@wieral: Danke fürs Testen, die neue Version liegt im SVN unter contrib/AutomowerConnect/Common.pm
Zum Laden ist nur
{ Svn_GetFile('contrib/AutomowerConnect/Common.pm', 'lib/FHEM/Devices/AMConnect/Common.pm') }
erforderlich.
Nach dem Laden der Module muss nur FHEM neu gestartet werden.
Mich würde interessieren, ob Du mit dem Scheduler den Zeitplan im Mäher setzen kannst.
Es reicht die Startzeit um 1 min zu verändern und die Änderung zum Mäher zu senden.
Dann sollte es nach einiger Zeit ein settings-event geben, danach sollte beim erneuten Aufruf des Schedulers die Änderung angezeigt werden.
Die Änderung sollte auch in der App zusehen sein.
Die Readings settings_cuttingHeight, settings_headlight, statistics_newGeoDataSets können gelöscht werden, sie werden nicht mehr auftauchen.
Hallo Ellert,
vielen Dank für deine Bemühungen.
Folgendes getestet:
- Änderung Tage = OK
- Änderung Uhrzeit und Dauer = OK
Sehe kein Error im Log. Top Arbeit.
Werde den Betrieb beobachten.
Danke und einen schönen Abend.
Es gibt eine neue Version zum Testen, bitte beide Dateien laden.
{ Svn_GetFile('contrib/AutomowerConnect/Common.pm', 'lib/FHEM/Devices/AMConnect/Common.pm') }
{ Svn_GetFile('contrib/AutomowerConnect/automowerconnect.js', 'www/pgm2/automowerconnect.js') }
Nach dem Laden der Module muss FHEM neu gestartet, der Browsercache gelöscht und die Webseite neu geladen werden.
Der Aspire R4 kennt keine Work Area die Tasks haben aber eine WorkAreaId = 0, das ist im Scheduler berücksichtigt.
Wenn es keine Klagen gibt, wird dieser Stand veröffentlicht.
Nach dem heutigen Update muss FHEM neu gestartet, der Browsercache gelöscht und die Webseite neu geladen werden.
Das Update beinhaltet die bisherigen Testversionen und läd hull.js nur bei Bedarf.
Hi, das Modul macht Spaß danke dafür.
vorschlag für die "Common.pm"
my $errorjson = '{"0":"Unexpected error","1":"Outside working area","2":"No loop signal","3":"Wrong loop signal","4":"Loop sensor problem, front","5":"Loop sensor problem, rear","6":"Loop sensor problem, left","7":"Loop sensor problem, right","8":"Wrong PIN code","9":"Trapped","10":"Upside down","11":"Low battery","12":"Empty battery","13":"No drive","14":"Mower lifted","15":"Lifted","16":"Stuck in charging station","17":"Charging station blocked","18":"Collision sensor problem, rear","19":"Collision sensor problem, front","20":"Wheel motor blocked, right","21":"Wheel motor blocked, left","22":"Wheel drive problem, right","23":"Wheel drive problem, left","24":"Cutting system blocked","25":"Cutting system blocked","26":"Invalid sub-device combination","27":"Settings restored","28":"Memory circuit problem","29":"Slope too steep","30":"Charging system problem","31":"STOP button problem","32":"Tilt sensor problem","33":"Mower tilted","34":"Cutting stopped - slope too steep","35":"Wheel motor overloaded, right","36":"Wheel motor overloaded, left","37":"Charging current too high","38":"Electronic problem","39":"Cutting motor problem","40":"Limited cutting height range","41":"Unexpected cutting height adj","42":"Limited cutting height range","43":"Cutting height problem, drive","44":"Cutting height problem, curr","45":"Cutting height problem, dir","46":"Cutting height blocked","47":"Cutting height problem","48":"No response from charger","49":"Ultrasonic problem","50":"Guide 1 not found","51":"Guide 2 not found","52":"Guide 3 not found","53":"GPS navigation problem","54":"Weak GPS signal","55":"Difficult finding home","56":"Guide calibration accomplished","57":"Guide calibration failed","58":"Temporary battery problem","59":"Temporary battery problem","60":"Temporary battery problem","61":"Temporary battery problem","62":"Temporary battery problem","63":"Temporary battery problem","64":"Temporary battery problem","65":"Temporary battery problem","66":"Battery problem","67":"Battery problem","68":"Temporary battery problem","69":"Alarm! Mower switched off","70":"Alarm! Mower stopped","71":"Alarm! Mower lifted","72":"Alarm! Mower tilted","73":"Alarm! Mower in motion","74":"Alarm! Outside geofence","75":"Connection changed","76":"Connection NOT changed","77":"Com board not available","78":"Slipped - Mower has Slipped.Situation not solved with moving pattern","79":"Invalid battery combination - Invalid combination of different battery types.","80":"Cutting system imbalance Warning","81":"Safety function faulty","82":"Wheel motor blocked, rear right","83":"Wheel motor blocked, rear left","84":"Wheel drive problem, rear right","85":"Wheel drive problem, rear left","86":"Wheel motor overloaded, rear right","87":"Wheel motor overloaded, rear left","88":"Angular sensor problem","89":"Invalid system configuration","90":"No power in charging station","91":"Switch cord problem","92":"Work area not valid","93":"No accurate position from satellites","94":"Reference station communication problem","95":"Folding sensor activated","96":"Right brush motor overloaded","97":"Left brush motor overloaded","98":"Ultrasonic Sensor 1 defect","99":"Ultrasonic Sensor 2 defect","100":"Ultrasonic Sensor 3 defect","101":"Ultrasonic Sensor 4 defect","102":"Cutting drive motor 1 defect","103":"Cutting drive motor 2 defect","104":"Cutting drive motor 3 defect","105":"Lift Sensor defect","106":"Collision sensor defect","107":"Docking sensor defect","108":"Folding cutting deck sensor defect","109":"Loop sensor defect","110":"Collision sensor error","111":"No confirmed position","112":"Cutting system major imbalance","113":"Complex working area","114":"Too high discharge current","115":"Too high internal current","116":"High charging power loss","117":"High internal power loss","118":"Charging system problem","119":"Zone generator problem","120":"Internal voltage error","121":"High internal temerature","122":"CAN error","123":"Destination not reachable","124":"Destination blocked","125":"Battery needs replacement","126":"Battery near end of life","127":"Battery problem","128":"Multiple reference stations detected","129":"Auxiliary cutting means blocked","130":"Imbalanced auxiliary cutting disc detected","131":"Lifted in link arm","132":"EPOS accessory missing","133":"Bluetooth com with CS failed","134":"Invalid SW configuration","135":"Radar problem","136":"Work area tampered","137":"High temperature in cutting motor, right","138":"High temperature in cutting motor, center","139":"High temperature in cutting motor, left","141":"Wheel brush motor problem","143":"Accessory power problem","144":"Boundary wire problem","701":"Connectivity problem","702":"Connectivity settings restored","703":"Connectivity problem","704":"Connectivity problem","705":"Connectivity problem","706":"Poor signal quality","707":"SIM card requires PIN","708":"SIM card locked","709":"SIM card not found","710":"SIM card locked","711":"SIM card locked","712":"SIM card locked","713":"Geofence problem","714":"Geofence problem","715":"Connectivity problem","716":"Connectivity problem","717":"SMS could not be sent","724":"Communication circuit board SW must be updated"}';
if ( AttrVal('global','language','EN') eq 'DE') {
$errorjson = '{"0":"Unerwarteter Fehler","1":"Außerhalb des Arbeitsbereichs","2":"Kein Schleifensignal","3":"Falsches Schleifensignal","4":"Schleifensensorproblem, vorne","5":"Schleifensensorproblem, hinten","6":"Schleifensensorproblem, links","7":"Schleifensensorproblem, rechts","8":"Falscher PIN-Code","9":"Eingeklemmt","10":"Auf dem Kopf","11":"Niedriger Batteriestand","12":"Leere Batterie","13":"Kein Antrieb","14":"Mäher angehoben","15":"Angehoben","16":"In Ladestation stecken geblieben","17":"Ladestation blockiert","18":"Kollisions-Sensorproblem, hinten","19":"Kollisions-Sensorproblem, vorne","20":"Radmotor blockiert, rechts","21":"Radmotor blockiert, links","22":"Radantriebsproblem, rechts","23":"Radantriebsproblem, links","24":"Schneidsystem blockiert","25":"Schneidsystem blockiert","26":"Ungültige Kombination von Geräten","27":"Einstellungen wiederhergestellt","28":"Speicherschaltkreisproblem","29":"Zu steile Neigung","30":"Problem mit dem Ladesystem","31":"Problem mit der STOP-Taste","32":"Neigungssensorproblem","33":"Mäher gekippt","34":"Schneiden gestoppt - zu steile Neigung","35":"Radmotor überlastet, rechts","36":"Radmotor überlastet, links","37":"Zu hoher Ladestrom","38":"Elektronikproblem","39":"Problem mit dem Schneidemotor","40":"Begrenzter Bereich der Schnitthöhe","41":"Unerwartete Schnitthöhenanpassung","42":"Begrenzter Bereich der Schnitthöhe","43":"Problem mit der Schnitthöhe, Antrieb","44":"Problem mit der Schnitthöhe, aktuell","45":"Problem mit der Schnitthöhe, Richtung","46":"Schnitthöhe blockiert","47":"Problem mit der Schnitthöhe","48":"Keine Antwort vom Ladegerät","49":"Ultraschallproblem","50":"Führung 1 nicht gefunden","51":"Führung 2 nicht gefunden","52":"Führung 3 nicht gefunden","53":"GPS-Navigationsproblem","54":"Schwaches GPS-Signal","55":"Schwierigkeiten beim Finden des Heimwegs","56":"Führungskalibrierung abgeschlossen","57":"Führungskalibrierung fehlgeschlagen","58":"Vorübergehendes Batterieproblem","59":"Vorübergehendes Batterieproblem","60":"Vorübergehendes Batterieproblem","61":"Vorübergehendes Batterieproblem","62":"Vorübergehendes Batterieproblem","63":"Vorübergehendes Batterieproblem","64":"Vorübergehendes Batterieproblem","65":"Vorübergehendes Batterieproblem","66":"Batterieproblem","67":"Batterieproblem","68":"Vorübergehendes Batterieproblem","69":"Alarm! Mäher ausgeschaltet","70":"Alarm! Mäher gestoppt","71":"Alarm! Mäher angehoben","72":"Alarm! Mäher gekippt","73":"Alarm! Mäher in Bewegung","74":"Alarm! Außerhalb der Geofence","75":"Verbindung geändert","76":"Verbindung NICHT geändert","77":"Com-Board nicht verfügbar","78":"Gerutscht - Mäher ist gerutscht. Situation nicht mit Bewegungsmuster gelöst","79":"Ungültige Batteriekombination - Ungültige Kombination verschiedener Batterietypen","80":"Ungleichgewicht im Schneidsystem - Warnung","81":"Sicherheitsfunktion fehlerhaft","82":"Radmotor blockiert, hinten rechts","83":"Radmotor blockiert, hinten links","84":"Radantriebsproblem, hinten rechts","85":"Radantriebsproblem, hinten links","86":"Radmotor überlastet, hinten rechts","87":"Radmotor überlastet, hinten links","88":"Winkelsensorproblem","89":"Ungültige Systemkonfiguration","90":"Keine Stromversorgung in der Ladestation","91":"Schalterkabelproblem","92":"Arbeitsbereich ungültig","93":"Keine genaue Position von Satelliten","94":"Kommunikationsproblem mit der Referenzstation","95":"Falt-Sensor aktiviert","96":"Rechter Bürstenmotor überlastet","97":"Linker Bürstenmotor überlastet","98":"Ultraschallsensor 1 defekt","99":"Ultraschallsensor 2 defekt","100":"Ultraschallsensor 3 defekt","101":"Ultraschallsensor 4 defekt","102":"Schneidantriebsmotor 1 defekt","103":"Schneidantriebsmotor 2 defekt","104":"Schneidantriebsmotor 3 defekt","105":"Hubsensor defekt","106":"Kollisionssensor defekt","107":"Docking-Sensor defekt","108":"Sensor des klappbaren Mähdecks defekt","109":"Schleifensensor defekt","110":"Kollisionssensorfehler","111":"Keine bestätigte Position","112":"Großes Ungleichgewicht im Schneidsystem","113":"Komplexer Arbeitsbereich","114":"Zu hoher Entladestrom","115":"Zu hoher interner Strom","116":"Hoher Leistungsverlust beim Laden","117":"Hoher interner Leistungsverlust","118":"Problem mit dem Ladesystem","119":"Zonengeneratorproblem","120":"Interner Spannungsfehler","121":"Hohe interne Temperatur","122":"CAN-Fehler","123":"Ziel nicht erreichbar","124":"Ziel blockiert","125":"Batterie muss ersetzt werden","126":"Batterie kurz vor dem Ende ihrer Lebensdauer","127":"Batterieproblem","128":"Mehrere Referenzstationen erkannt","129":"Hilfsschneideinrichtung blockiert","130":"Ungleichgewicht im Hilfsschneidscheibe erkannt","131":"Im Verbindungsarm angehoben","132":"EPOS-Zubehör fehlt","133":"Bluetooth-Kommunikation mit CS fehlgeschlagen","134":"Ungültige SW-Konfiguration","135":"Radarproblem","136":"Arbeitsbereich manipuliert","137":"Hohe Temperatur im rechten Schneidemotor","138":"Hohe Temperatur im mittleren Schneidemotor","139":"Hohe Temperatur im linken Schneidemotor","141":"Problem mit dem Radbürstenmotor","143":"Problem mit der Stromversorgung des Zubehörs","144":"Problem mit dem Begrenzungsdraht","701":"Konnektivitätsproblem","702":"Konnektivitätseinstellungen wiederhergestellt","703":"Konnektivitätsproblem","704":"Konnektivitätsproblem","705":"Konnektivitätsproblem","706":"Schlechte Signalqualität","707":"SIM-Karte erfordert PIN","708":"SIM-Karte gesperrt","709":"SIM-Karte nicht gefunden","710":"SIM-Karte gesperrt","711":"SIM-Karte gesperrt","712":"SIM-Karte gesperrt","713":"Geofence-Problem","714":"Geofence-Problem","715":"Konnektivitätsproblem","716":"Konnektivitätsproblem","717":"SMS konnte nicht gesendet werden","724":"Die SW der Kommunikationsplatine muss aktualisiert werden"}'
}
Gruß
Falk
Danke für den Vorschlag.
Ich habe mich dagegen entschieden in dieses Modul Übersetzungen einzubauen.
Daher mein Gegenvorschlag, den jeder selbst einrichten kann, für Raw definition:
defmod fehlerDE DOIF (["^global$:^INITIALIZED$"]) ({\
my $errorjson = '{"0":"Unerwarteter Fehler","1":"Außerhalb des Arbeitsbereichs","2":"Kein Schleifensignal","3":"Falsches Schleifensignal","4":"Schleifensensorproblem, vorne","5":"Schleifensensorproblem, hinten","6":"Schleifensensorproblem, links","7":"Schleifensensorproblem, rechts","8":"Falscher PIN-Code","9":"Eingeklemmt","10":"Auf dem Kopf","11":"Niedriger Batteriestand","12":"Leere Batterie","13":"Kein Antrieb","14":"Mäher angehoben","15":"Angehoben","16":"In Ladestation stecken geblieben","17":"Ladestation blockiert","18":"Kollisions-Sensorproblem, hinten","19":"Kollisions-Sensorproblem, vorne","20":"Radmotor blockiert, rechts","21":"Radmotor blockiert, links","22":"Radantriebsproblem, rechts","23":"Radantriebsproblem, links","24":"Schneidsystem blockiert","25":"Schneidsystem blockiert","26":"Ungültige Kombination von Geräten","27":"Einstellungen wiederhergestellt","28":"Speicherschaltkreisproblem","29":"Zu steile Neigung","30":"Problem mit dem Ladesystem","31":"Problem mit der STOP-Taste","32":"Neigungssensorproblem","33":"Mäher gekippt","34":"Schneiden gestoppt - zu steile Neigung","35":"Radmotor überlastet, rechts","36":"Radmotor überlastet, links","37":"Zu hoher Ladestrom","38":"Elektronikproblem","39":"Problem mit dem Schneidemotor","40":"Begrenzter Bereich der Schnitthöhe","41":"Unerwartete Schnitthöhenanpassung","42":"Begrenzter Bereich der Schnitthöhe","43":"Problem mit der Schnitthöhe, Antrieb","44":"Problem mit der Schnitthöhe, aktuell","45":"Problem mit der Schnitthöhe, Richtung","46":"Schnitthöhe blockiert","47":"Problem mit der Schnitthöhe","48":"Keine Antwort vom Ladegerät","49":"Ultraschallproblem","50":"Führung 1 nicht gefunden","51":"Führung 2 nicht gefunden","52":"Führung 3 nicht gefunden","53":"GPS-Navigationsproblem","54":"Schwaches GPS-Signal","55":"Schwierigkeiten beim Finden des Heimwegs","56":"Führungskalibrierung abgeschlossen","57":"Führungskalibrierung fehlgeschlagen","58":"Vorübergehendes Batterieproblem","59":"Vorübergehendes Batterieproblem","60":"Vorübergehendes Batterieproblem","61":"Vorübergehendes Batterieproblem","62":"Vorübergehendes Batterieproblem","63":"Vorübergehendes Batterieproblem","64":"Vorübergehendes Batterieproblem","65":"Vorübergehendes Batterieproblem","66":"Batterieproblem","67":"Batterieproblem","68":"Vorübergehendes Batterieproblem","69":"Alarm! Mäher ausgeschaltet","70":"Alarm! Mäher gestoppt","71":"Alarm! Mäher angehoben","72":"Alarm! Mäher gekippt","73":"Alarm! Mäher in Bewegung","74":"Alarm! Außerhalb der Geofence","75":"Verbindung geändert","76":"Verbindung NICHT geändert","77":"Com-Board nicht verfügbar","78":"Gerutscht - Mäher ist gerutscht. Situation nicht mit Bewegungsmuster gelöst","79":"Ungültige Batteriekombination - Ungültige Kombination verschiedener Batterietypen","80":"Ungleichgewicht im Schneidsystem - Warnung","81":"Sicherheitsfunktion fehlerhaft","82":"Radmotor blockiert, hinten rechts","83":"Radmotor blockiert, hinten links","84":"Radantriebsproblem, hinten rechts","85":"Radantriebsproblem, hinten links","86":"Radmotor überlastet, hinten rechts","87":"Radmotor überlastet, hinten links","88":"Winkelsensorproblem","89":"Ungültige Systemkonfiguration","90":"Keine Stromversorgung in der Ladestation","91":"Schalterkabelproblem","92":"Arbeitsbereich ungültig","93":"Keine genaue Position von Satelliten","94":"Kommunikationsproblem mit der Referenzstation","95":"Falt-Sensor aktiviert","96":"Rechter Bürstenmotor überlastet","97":"Linker Bürstenmotor überlastet","98":"Ultraschallsensor 1 defekt","99":"Ultraschallsensor 2 defekt","100":"Ultraschallsensor 3 defekt","101":"Ultraschallsensor 4 defekt","102":"Schneidantriebsmotor 1 defekt","103":"Schneidantriebsmotor 2 defekt","104":"Schneidantriebsmotor 3 defekt","105":"Hubsensor defekt","106":"Kollisionssensor defekt","107":"Docking-Sensor defekt","108":"Sensor des klappbaren Mähdecks defekt","109":"Schleifensensor defekt","110":"Kollisionssensorfehler","111":"Keine bestätigte Position","112":"Großes Ungleichgewicht im Schneidsystem","113":"Komplexer Arbeitsbereich","114":"Zu hoher Entladestrom","115":"Zu hoher interner Strom","116":"Hoher Leistungsverlust beim Laden","117":"Hoher interner Leistungsverlust","118":"Problem mit dem Ladesystem","119":"Zonengeneratorproblem","120":"Interner Spannungsfehler","121":"Hohe interne Temperatur","122":"CAN-Fehler","123":"Ziel nicht erreichbar","124":"Ziel blockiert","125":"Batterie muss ersetzt werden","126":"Batterie kurz vor dem Ende ihrer Lebensdauer","127":"Batterieproblem","128":"Mehrere Referenzstationen erkannt","129":"Hilfsschneideinrichtung blockiert","130":"Ungleichgewicht im Hilfsschneidscheibe erkannt","131":"Im Verbindungsarm angehoben","132":"EPOS-Zubehör fehlt","133":"Bluetooth-Kommunikation mit CS fehlgeschlagen","134":"Ungültige SW-Konfiguration","135":"Radarproblem","136":"Arbeitsbereich manipuliert","137":"Hohe Temperatur im rechten Schneidemotor","138":"Hohe Temperatur im mittleren Schneidemotor","139":"Hohe Temperatur im linken Schneidemotor","141":"Problem mit dem Radbürstenmotor","143":"Problem mit der Stromversorgung des Zubehörs","144":"Problem mit dem Begrenzungsdraht","701":"Konnektivitätsproblem","702":"Konnektivitätseinstellungen wiederhergestellt","703":"Konnektivitätsproblem","704":"Konnektivitätsproblem","705":"Konnektivitätsproblem","706":"Schlechte Signalqualität","707":"SIM-Karte erfordert PIN","708":"SIM-Karte gesperrt","709":"SIM-Karte nicht gefunden","710":"SIM-Karte gesperrt","711":"SIM-Karte gesperrt","712":"SIM-Karte gesperrt","713":"Geofence-Problem","714":"Geofence-Problem","715":"Konnektivitätsproblem","716":"Konnektivitätsproblem","717":"SMS konnte nicht gesendet werden","724":"Die SW der Kommunikationsplatine muss aktualisiert werden"}';;\
$::FHEM::Devices::AMConnect::Common::errortable = eval { JSON::XS->new->decode ( $errorjson ) };;\
return undef;;\
})
attr fehlerDE do always
attr fehlerDE wait 120
Mit set fehlerDE cmd_1
kann man das DOIF manuell auslösen und mit get <name> errorCodes
kann das Ergebnis im Mähergerät überprüft werden.
Über wait kann man einstellen, wie lange nach dem Start von FHEM der deutsche Text den englischen Text überschreibt, falls erforderlich.
Hallo Ellert! Vielen Dank für das Modul. Hilft mir im Alltag sehr.
Eine Bitte/Frage. Ich nutze einen NERA mit EPOS; hier wäre es schön wenn das Attribut "mower_inactiveReason" geliefert würde, die OPENAPI seitens Husquarna sollte es liefern.
Eine zweite Sache; wenn ich mein HTTP Frontend ohne Raum starte kommt folgende Fehlermeldung
"automowerconnect.js line 7:
Uncaught TypeError: Cannot read properties of null (reading 'getAttribute')
"
Hast du eine Idee bzgl. eines Workarounds?
Vielen lieben Dank & Grüße
Günther
@foxjr:
Das Reading wird erst erscheinen, wenn der Inhalt erstmalig ne NONE ist.
Der JS Fehler sollte behoben sein?
Welches Frontend verwendest Du?
Wie die Dateien zum Testen zu laden sind, siehe #213
Funktioniert alles.
Web ist Standard Webfrontend "FHEMWEB". Fehler taucht nicht mehr auf.
Vielen Dank!
Hab die Änderung eingecheckt.
Wie erzeugt man in FHEMWEB eine Seite ohne id="content" und ohne HTML-Attribut room= ?
Wenn ich das weiß kann ich so eine Seite zum Testen verwenden.
Ab morgen im Update:
Mit dem Designattribute hideSchedulerButton="1" kann der Button Mower Schedule ausgeblendet werden.
Mit dem Eintrag <button class="amc_panel_button" onclick="AutomowerConnectSchedule( '<device name>')" >Mower Schedule</button>
kann der Button über das Attribut mowerPanel im Panel erzeugt werden.
Ergänzend zur Antwort 1. im Beitrag #180 kann der Zoom der Karte in anderen Frontends auch per Javascript geändert werden.
z.B. für FTUI 2
<device name> muss natürlich angepasst werden.
<script type="text/javascript" language="Javascript">
window.onload = ( ()=>{
setTimeout("document.querySelector('#AutomowerConnect_<device name>_div').style.transform = 'scale(0.7,0.7)'",2000);
})
</script>
Ich bekomme bei jedem Refresh der Web-Oberfläche die folgende Meldung angezeigt.
automowerconnect.js line 7:
TypeError: null is not an object (evaluating 'room.getAttribute')
Ich hab mir die automowerconnect.js mal angeschaut, kann mir aber keinen Reim darauf machen, wie die Meldung zustande kommt.
LG
Oli
Nach einem Update ist die Meldung verschwunden. Nevermind...
LG
Oli
Ich habe heute AutomowerConnect zum ersten mal ausprobiert (Husqvarna Aotomower 430X). 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)
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?
beim Mähen.jpg
nach Rückkehr in die Ladestation.jpg
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?
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.
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?
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).
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.
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.
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:
- https://amc-api.dss.husqvarnagroup.net/app/v1/mowers/1xxxxxxx9-1xxxxxxx0/status : {"status":"401","code":null,"title":"Missing Authorization header","detail":null}
- https://amc-api.dss.husqvarnagroup.net:443 : {"status":"404","code":null,"title":"HTTP 404 Not Found","detail":null}
allerdings teste ich das natürlich nicht exakt zum Zeitpunkt der Fehlermeldung im Log.
_______________
xxxxxxx: habe ich ersetzt
Welche Module benutzt Du, die auf Husquvarnas API zugreifen mit welcher Version?
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/
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.
@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 (https://forum.fhem.de/index.php?topic=83416.0) stellen
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.
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.
Hallo,
ich habe auch ein Problem mit der Darstellung der Karte in FTUI2. Normale Werte werden vom Mäher angezeigt, aber die Karte nicht.
Die beiden Dateien sind auch im Verzeichnis vorhanden und im Head verlinkt! Im FHEM wird die Karte mit den Linien angezeigt!
<!DOCTYPE html>
<html>
<!-- FHEM Tablet UI 2.6 -->
<head>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<meta name="fhemweb_url" content="http://192.168.0.185:7088/fhem/">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<!meta name="widget_base_width" content="74">
<!meta name="widget_base_height" content="71">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="gridster_disable" content="1">
<meta name="debug" content="3"> <!-- verbose level 1-6 = output to console;0 = not output -->
<meta name='toast' content='0'> <!-- keine Ausgabe von Protokollmeldungen -->
<!link rel="stylesheet" href="tobias_2-ui.css" />
<link rel="stylesheet" href="fhem-mobil-ui.css" />
<!link rel="stylesheet" href="user-tablet-ui.css" />
<!link rel="stylesheet" href="user-tablet-ui-user.css" />
<script src="fhem-tablet-ui.js" defer></script>
<script src="jquery.min.js"></script>
<script src="automowerconnect.js"></script>
<title>SmartHome</title>
</head>
<body>
<div data-type="automowerconnect" data-device="myMower_n" data-jsonurl="http://192.168.0.185:7088/fhem/AutomowerConnect/myMower_n/json">
</div>
</body>
</html>
Der Code ist eine Schmalspur um etwaige Fehler ainzugrenzen!
Vielleicht habt ihr eine Idee. Ein Hintergrundbild habe ich auch nicht gesetzt.
Danke Sig10680
Was wird mit http://192.168.0.185:7088/fhem/AutomowerConnect/myMower_n/map in dem Browser angezeigt der FTUI anzeigt?
Was zeigt das Konsolenlog des Browsers wenn FTUI geladen wird?
Zitat von: Ellert am 14 Januar 2025, 18:28:57Was wird mit http://192.168.0.185:7088/fhem/AutomowerConnect/myMower_n/map in dem Browser angezeigt der FTUI anzeigt?
Das zeigt der Browser an
AutomowerConnect myMower_n: No MAP_MIME for webhook /AutomowerConnect/myMower_n/map
Konsolenlog folgt
Zitat von: Ellert am 14 Januar 2025, 18:28:57Was zeigt das Konsolenlog des Browsers wenn FTUI geladen wird?
Ich habe gerade gesehen im Konsolenlog das er das Widget_automower.js nicht richtig lädt.
Ich denke das wird es sein.
Danke ich melde mich nochmal
ZitatAutomowerConnect myMower_n: No MAP_MIME for webhook /AutomowerConnect/myMower_n/map
deutet auf einen nicht unterstützten Dateityp hin, die Karte wird nicht geladen sein.
Zitat von: Ellert am 15 Januar 2025, 10:00:11ZitatAutomowerConnect myMower_n: No MAP_MIME for webhook /AutomowerConnect/myMower_n/map
deutet auf einen nicht unterstützten Dateityp hin, die Karte wird nicht geladen sein.
Hallo,
ja er findet die Karte nicht. Ich nutze einen Webserver um FTUI2 zu laden!
FHEM ist auf einen anderen RPI. Er will immer die Karte von dem Webserver laden!
GET http://192.168.0.115:8088/fhem/AutomowerConnect/myMower_n/map
<div data-type="automowerconnect" data-device="myMower_n" data-jsonurl="http://192.168.0.185:7088/fhem/AutomowerConnect/myMower_n/json"></div>
Kann ich das irgendwie umstellen?
MFG Sig10680
Das FTUI Widget holt sich das HTML Gerüst und die Karte mit get myMower_n html.
Damit wird auch der Style geliefert.
Den müsstest Du nach dem Einbau des HTML Gerüstes per Script umbauen und damit die
background-image: url('/fhem/AutomowerConnect/myMower_n/map')
auf den gewünschten Server umbiegen.
Oder Du nimmst den Umbau im Widget vor.
Das wären so mal 2 Ideen.
Zitat von: Ellert am 17 Januar 2025, 10:59:41Das FTUI Widget holt sich das HTML Gerüst und die Karte mit get myMower_n html.
Damit wird auch der Style geliefert.
Den müsstest Du nach dem Einbau des HTML Gerüstes per Script umbauen und damit die
background-image: url('/fhem/AutomowerConnect/myMower_n/map')
auf den gewünschten Server umbiegen.
Oder Du nimmst den Umbau im Widget vor.
Das wären so mal 2 Ideen.
Danke ich probier mein glück. Wo im widget wäre das ungefähr?
mfg Sig10680
Direkt nach .done(function (data, dev) {
in data steht das HTML Gerüst.
Zitat von: Ellert am 18 Januar 2025, 01:30:40Direkt nach
.done(function (data, dev) {
in data steht das HTML Gerüst.
Ich habe es gestern mit einen Javascript probiert aber das wollte nicht auf die schnelle. Ich teste weiter und melde mich wenn es geht vielleicht haben andere ja das gleiche Problem!
Mfg Sig10680
Ich bekomme es nicht hin das im Widget zu ändern. Entweder ich sehe das Bild oder die Linien wo der Mäher fährt. Beides bekomme ich nicht hin.
Du kannst versuchen das HTML Gerüst in FTUI einzupflegen und auf das Widget verzichten, aber dann die Update Routine AutomowerConnectUpdateJsonFtui ( path ) alle 30 s per JS-Script aufrufen.
oder Du kodierst die URL im Modul hart (Zeile 468, /opt/fhem/lib/FHEM/Devices/AMConnect/Common.pm).
Zitat von: Ellert am 18 Januar 2025, 19:52:43oder Du kodierst die URL im Modul hart (Zeile 468, /opt/fhem/lib/FHEM/Devices/AMConnect/Common.pm).
das geht auch nicht er setzt es einfach hinten an den get befehl mit ran
GET
http://192.168.0.115:8088/neu/192.168.0.185:7088/fhem/AutomowerConnect/myMower_n/map
Versuche einen IFrame mit der Karte in FTUI einzubauen, direkt ohne widget https://wiki.fhem.de/wiki/FTUI_Widget_Iframe .
und dann per Script die Positionen updaten.
<script type="text/javascript">
$(document).ready(function(){
setTimeout(AutomowerConnectUpdateJsonFtui, 2000, '/fhem/AutomowerConnect/<device name>/json');
setInterval(AutomowerConnectUpdateJsonFtui, 30000, '/fhem/AutomowerConnect/<device name>/json');
});
</script>
siehe auch https://wiki.fhem.de/wiki/AutomowerConnect#Tablet-UI/FTUI_Version_3
Oder probier mal das im Widget einzufügen
var datanew = data.replace( "background-image: url('\/fhem\/AutomowerConnect\/", "background-image: url('http://192.168.0.185:7088/fhem/AutomowerConnect/" );
und das
elem.html(data);
durch das zu ersetzen
elem.html(datanew);
Hi danke für die Hilfe,
ich werde es testen und melde mich bei dir.
Mfg Sig10680
Zitat von: Ellert am 19 Januar 2025, 18:36:24Oder probier mal das im Widget einzufügen
var datanew = data.replace( "background-image: url('\/fhem\/AutomowerConnect\/", "background-image: url('http://192.168.0.185:7088/fhem/AutomowerConnect/" );
und das
elem.html(data);
durch das zu ersetzen
elem.html(datanew);
Hallo,
so das hat funktioniert.
Ich habe es jetzt so eingebaut!
ftui.sendFhemCommand(cmd)
.done(function (data, dev) {
var datanew = data.replace( "background-image: url('\/fhem\/AutomowerConnect\/", "background-image: url('http://192.168.0.185:7088/fhem/AutomowerConnect/" );
elem.html(datanew);
Hoffe das war auch so gedacht!
Danke nochmal......
Im SVN gibt es ein angepasstes Widget unter contrib/AutomowerConnect/widget_automowerconnect.js
Das Widget funktioniert jetzt auch, wenn FTUI und FHEM auf unterschiedlichen Servern laufen.
Das Beispiel im FHEM Wiki enthält eine Möglichkeit zum Skalieren der Karte, s. https://wiki.fhem.de/wiki/AutomowerConnect#Tablet-UI/FTUI_Version_2
Damit spart man sich ggf. eine 2. Definition.
Zitat von: Ellert am 20 Januar 2025, 11:16:45Im SVN gibt es ein angepasstes Widget unter contrib/AutomowerConnect/widget_automowerconnect.js
Das Widget funktioniert jetzt auch, wenn FTUI und FHEM auf unterschiedlichen Servern laufen.
Das Beispiel im FHEM Wiki enthält eine Möglichkeit zum Skalieren der Karte, s. https://wiki.fhem.de/wiki/AutomowerConnect#Tablet-UI/FTUI_Version_2
Damit spart man sich ggf. eine 2. Definition.
Danke das umgebaute Widget funktioniert jetzt Super. Danke für die schnelle Hilfe und Umsetzung!
mfg sig10680
Das morgige Modulupdate bedient die Websocket V2 Events.
Ich gehe davon aus, dass die alten Websocketevents, wie von Husqvarna angekündigt, abgeschaltet werden. Danach wird die Libraryversion bis einschl. 29396 2024-12-03 17:01:07 nicht mehr funktionieren.
Zukünftige Modulversionen benötigen das Perlmodul Readonly.
Wichtig!
Daher ist es wichtig vor einem Update zu prüfen, ob das Perlmodul installiert ist. Jetzt ist die beste Zeit zum Prüfen!
Mit {use Readonly}
in der FHEM Befehlszeile kann die Prüfung erfolgen.
Wenn es eine Fehllermeldung gibt, dann vor einem Update das Debianpaket libreadonly-perl (apt install libreadonly-perl) installieren oder via CPAN das Perlmodul Readonly (cpan install Readonly).
Seit dem Featurerelease 6.2 (Januar 2023) ist das Modul im Debianpaket fhem-6.2.deb enthalten (nicht im FHEM Update). Wer ein älteres Paket als Grundlage für die FHEM Installation benutzt hat, muss das Modul nach installieren.
Das morgige Update benötigt das Perlmodul Readonly, siehe #260 und berücksichtigt einige perlcritic Empfehlungen.
Das morgige Update enthält eine Ergänzung der Fehlercodes und die Übernahme der neuen Schreibweise des headlight-events-v2, siehe auch #260
Ist es möglich, dass aktuell die neue Startzeit nicht mehr ausgelesen wird?
planner_nextStart -
Gruss Chris
Ja, so ist es. Husqvarna hat die neue Websocket API noch nicht komplett fertiggestellt.
Zur Zeit wird für einige Mähertypen kein 'planner-event-v2' gesendet.
Husqvarna begründet es damit, dass manche Mäher keinen 'planner-event-v2' senden und dieser Eventtyp auf dem Cloudserver nachgebildet werden muss, das ist aber noch nicht fertig. Husqvarna priorisiert die Einführung neuer Merkmale.
Jeder der damit ein Problem hat sollte den Mangel an openapi.servicedesk@husqvarnagroup.com melden und freundlich auf die Dringlichkeit hinweisen.
Der Mitarbeiter beim Servicedesk ist sehr hilfsbereit.
Als Zwischenlösung könnte die Startzeit selbst berechnet werden. Der Nachteil ist, es ist nicht eindeutig erkennbar wann dieser Wert gültig ist, z.B. wenn per App bis auf weiteres geparkt wird.
Es könnte auch die REST API zusätzlich, regelmäßig abgefragt werden, s. Attribut addPollingMinInterval.
Bei meinem AM 430X habe ich das Problem auch.
Welche Mähertyp ist es bei dir?
Hallo Ellert
Herzlichen Danke für diese ausführliche Antwort.
Wir haben den 415X.
Die Startzeit wollte ich für das automatische Öffnen des Rolltores der Garage verwenden (leider gibt es kein kein HX-Modul von Robonect für den 415x).
Chris
Wenn Du es vermeidest kurz vor dem geplanten Start den Mähplan zu ändern, dann sollte es reichen das Attribut addPollingMinInterval auf 600 zu setzen.
Dann wird planner_nextStart beim ersten Event aktualisiert, das mindestens 10 min nach der letzten Abfrage der REST API liegt.
OK. Dann werde ich das mal so versuchen ...
Zitat von: Ellert am 23 März 2025, 13:18:03Husqvarna begründet es damit, dass manche Mäher keinen 'planner-event-v2' senden und dieser Eventtyp auf dem Cloudserver nachgebildet werden muss, das ist aber noch nicht fertig.
Wenn der Event-Typ in der Cloud nachgebildet wird, vermute ich, dass es schwierig wird, diese Zeit für das Öffnen des Tores zu verwenden.
Danke für deine Hilfe
Zukünftige Modulversionen benötigen das Perlmodul List::Util.
Wichtig!
Daher ist es wichtig vor einem Update zu prüfen, ob das Perlmodul installiert ist. Jetzt ist die beste Zeit zum Prüfen!
Mit
{use List::Util}
in der FHEM Befehlszeile kann die Prüfung erfolgen.
Wenn es eine Fehllermeldung gibt, dann vor einem Update das Debianpaket libscalar-list-utils-perl (apt install libscalar-list-utils-perl) installieren oder via CPAN das Perlmodul List::Util (cpan install List::Util).
Seit Dezember 2024 ist das Modul im Debianpaket enthalten (nicht im FHEM Update). Wer ein älteres Paket als Grundlage für die FHEM Installation benutzt hat, muss das Modul nach installieren.
Das morgige Update benötigt das Perl Modul List::Util, s. #260 u. #268, und enhält
eine Fehlerbeseitigung im Zusammenhang mit selten auftretenden, mehrfachen JSON Datensätzen im Websocketbuffer,
ein Workaround für evtl. fehlenden planner-event-v2 der die nächste Startzeit überträgt, damit sollte ein zusätzliches Polling nicht erforderlich sein,
eine Übersicht (get InternalData) der Websocketevents (geänderte/duplizierte).
attr <name> calculateReadings nextStart
Berechnet planner_nextStart wenn der Wert nicht per Plannerevent geliefert wird.
Hallo in die Runde,
gestern hat mei mir die Mähsaisongestartet. Alle Updates und auch die Peral Module aus den vorherigen Post sind Installiert!
Trotzdem kommen viele Fehlermeldungen die ich nicht einordnen kann!
PERL WARNING: Use of uninitialized value in numeric eq (==) at lib/FHEM/Devices/AMConnect/Common.pm line 3450.
2025.04.10 11:34:44 1: stacktrace:
2025.04.10 11:34:44 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (3446)
2025.04.10 11:34:44 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.10 11:34:44 1: main::CallFn called by fhem.pl (789)
2025.04.10 11:34:44 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.10 11:34:44 1: stacktrace:
2025.04.10 11:34:44 1: main::__ANON__ called by fhem.pl (5033)
2025.04.10 11:34:44 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2582)
2025.04.10 11:34:44 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.10 11:34:44 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.10 11:34:44 1: main::CallFn called by fhem.pl (789)
2025.04.10 11:34:44 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.10 11:34:44 1: stacktrace:
2025.04.10 11:34:44 1: main::__ANON__ called by fhem.pl (5033)
2025.04.10 11:34:44 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2583)
2025.04.10 11:34:44 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.10 11:34:44 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.10 11:34:44 1: main::CallFn called by fhem.pl (789)
2025.04.10 11:34:44 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.10 11:34:44 1: stacktrace:
2025.04.10 11:34:44 1: main::__ANON__ called by fhem.pl (5033)
2025.04.10 11:34:44 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2584)
2025.04.10 11:34:44 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.10 11:34:44 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.10 11:34:44 1: main::CallFn called by fhem.pl (789)
2025.04.10 11:34:44 1: PERL WARNING: Use of uninitialized value $errc in pattern match (m//) at lib/FHEM/Devices/AMConnect/Common.pm line 2602.
2025.04.10 11:34:44 1: stacktrace:
2025.04.10 11:34:44 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (2602)
2025.04.10 11:34:44 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.10 11:34:44 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.10 11:34:44 1: main::CallFn called by fhem.pl (789)
2025.04.10 11:34:47 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at lib/FHEM/Devices/AMConnect/Common.pm line 3450.
2025.04.10 11:34:47 1: stacktrace:
2025.04.10 11:34:47 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (3446)
2025.04.10 11:34:47 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.10 11:34:47 1: main::CallFn called by fhem.pl (789)
2025.04.10 11:34:47 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.10 11:34:47 1: stacktrace:
2025.04.10 11:34:47 1: main::__ANON__ called by fhem.pl (5033)
2025.04.10 11:34:47 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2582)
2025.04.10 11:34:47 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.10 11:34:47 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.10 11:34:47 1: main::CallFn called by fhem.pl (789)
2025.04.10 11:34:47 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.10 11:34:47 1: stacktrace:
2025.04.10 11:34:47 1: main::__ANON__ called by fhem.pl (5033)
2025.04.10 11:34:47 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2584)
2025.04.10 11:34:47 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.10 11:34:47 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.10 11:34:47 1: main::CallFn called by fhem.pl (789)
2025.04.10 11:34:47 1: PERL WARNING: Use of uninitialized value $errc in pattern match (m//) at lib/FHEM/Devices/AMConnect/Common.pm line 2602.
2025.04.10 11:34:47 1: stacktrace:
2025.04.10 11:34:47 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (2602)
2025.04.10 11:34:47 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.10 11:34:47 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.10 11:34:47 1: main::CallFn called by fhem.pl (789)
2025.04.10 11:34:49 1: PERL WARNING: Use of uninitialized value in multiplication (*) at lib/FHEM/Devices/AMConnect/Common.pm line 3481.
2025.04.10 11:34:49 1: stacktrace:
2025.04.10 11:34:49 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (3481)
2025.04.10 11:34:49 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.10 11:34:49 1: main::CallFn called by fhem.pl (789)
Vielleicht hat einer von euch eine Idee.
mfg Sig10680
Poste mal die Websocketevents mit verbose 4 im Gerät. Die Id kannst Du unkenntlich machen.
Welches Model betrifft das?
Zitat von: Ellert am 10 April 2025, 23:40:53Poste mal die Websocketevents mit verbose 4 im Gerät. Die Id kannst Du unkenntlich machen.
Welches Model betrifft das?
Guten Morgen,
mein Model ist der 415X.
Hier der Log!
2025.04.11 07:21:36 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXXXX","type":"cuttingHeight-event-v2","attributes":{"cuttingHeight":{"height":7}}}<
2025.04.11 07:21:36 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA"}}}<
2025.04.11 07:21:36 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at lib/FHEM/Devices/AMConnect/Common.pm line 3450.
2025.04.11 07:21:36 1: stacktrace:
2025.04.11 07:21:36 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (3446)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:36 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:36 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:36 1: stacktrace:
2025.04.11 07:21:36 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:36 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2583)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:36 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:36 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:36 1: stacktrace:
2025.04.11 07:21:36 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:36 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2584)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:36 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:36 1: PERL WARNING: Use of uninitialized value $errc in pattern match (m//) at lib/FHEM/Devices/AMConnect/Common.pm line 2602.
2025.04.11 07:21:36 1: stacktrace:
2025.04.11 07:21:36 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (2602)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:36 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:36 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXXXX","type":"planner-event-v2","attributes":{"planner":{"nextStartTimestamp":1744376400,"override":{"action":"NOT_ACTIVE"}}}}<
2025.04.11 07:21:36 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:36 1: stacktrace:
2025.04.11 07:21:36 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:36 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2583)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:36 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:36 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:36 1: stacktrace:
2025.04.11 07:21:36 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:36 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2584)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:36 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:36 1: PERL WARNING: Use of uninitialized value $errc in pattern match (m//) at lib/FHEM/Devices/AMConnect/Common.pm line 2602.
2025.04.11 07:21:36 1: stacktrace:
2025.04.11 07:21:36 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (2602)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:36 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:36 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:36 1: stacktrace:
2025.04.11 07:21:36 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:36 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2612)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:36 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:36 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:37 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXXXX","type":"mower-event-v2","attributes":{"mower":{"inactiveReason":"PLANNING"}}}<
2025.04.11 07:21:37 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at lib/FHEM/Devices/AMConnect/Common.pm line 3450.
2025.04.11 07:21:37 1: stacktrace:
2025.04.11 07:21:37 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (3446)
2025.04.11 07:21:37 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:37 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:37 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:37 1: stacktrace:
2025.04.11 07:21:37 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:37 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2582)
2025.04.11 07:21:37 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:37 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:37 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:37 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:37 1: stacktrace:
2025.04.11 07:21:37 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:37 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2583)
2025.04.11 07:21:37 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:37 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:37 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:37 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:37 1: stacktrace:
2025.04.11 07:21:37 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:37 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2584)
2025.04.11 07:21:37 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:37 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:37 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:37 1: PERL WARNING: Use of uninitialized value $errc in pattern match (m//) at lib/FHEM/Devices/AMConnect/Common.pm line 2602.
2025.04.11 07:21:37 1: stacktrace:
2025.04.11 07:21:37 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (2602)
2025.04.11 07:21:37 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:37 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:37 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:37 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:37 1: stacktrace:
2025.04.11 07:21:37 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:37 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2612)
2025.04.11 07:21:37 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:37 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:37 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:38 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXXXX","type":"mower-event-v2","attributes":{"mower":{"activity":"PARKED_IN_CS","inactiveReason":"NONE"}}}<
2025.04.11 07:21:38 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at lib/FHEM/Devices/AMConnect/Common.pm line 3450.
2025.04.11 07:21:38 1: stacktrace:
2025.04.11 07:21:38 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (3446)
2025.04.11 07:21:38 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:38 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:38 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:38 1: stacktrace:
2025.04.11 07:21:38 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:38 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2582)
2025.04.11 07:21:38 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:38 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:38 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:38 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:38 1: stacktrace:
2025.04.11 07:21:38 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:38 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2584)
2025.04.11 07:21:38 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:38 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:38 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:38 1: PERL WARNING: Use of uninitialized value $errc in pattern match (m//) at lib/FHEM/Devices/AMConnect/Common.pm line 2602.
2025.04.11 07:21:38 1: stacktrace:
2025.04.11 07:21:38 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (2602)
2025.04.11 07:21:38 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:38 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:38 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:38 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:38 1: stacktrace:
2025.04.11 07:21:38 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:38 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2612)
2025.04.11 07:21:38 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:38 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:38 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:39 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXXXX","type":"planner-event-v2","attributes":{"planner":{"override":{"action":"NOT_ACTIVE"},"restrictedReason":"WEEK_SCHEDULE"}}}<
2025.04.11 07:21:39 1: PERL WARNING: Use of uninitialized value in multiplication (*) at lib/FHEM/Devices/AMConnect/Common.pm line 3481.
2025.04.11 07:21:39 1: stacktrace:
2025.04.11 07:21:39 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (3481)
2025.04.11 07:21:39 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:39 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:39 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:39 1: stacktrace:
2025.04.11 07:21:39 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:39 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2582)
2025.04.11 07:21:39 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:39 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:39 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:39 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 07:21:39 1: stacktrace:
2025.04.11 07:21:39 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 07:21:39 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2584)
2025.04.11 07:21:39 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:39 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:39 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:39 1: PERL WARNING: Use of uninitialized value $errc in pattern match (m//) at lib/FHEM/Devices/AMConnect/Common.pm line 2602.
2025.04.11 07:21:39 1: stacktrace:
2025.04.11 07:21:39 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (2602)
2025.04.11 07:21:39 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 07:21:39 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 07:21:39 1: main::CallFn called by fhem.pl (789)
2025.04.11 07:21:39 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"PARKED_IN_CS","state":"RESTRICTED","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 07:21:45 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":70}}}<
2025.04.11 07:21:46 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":76}}}<
2025.04.11 07:21:48 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":88}}}<
2025.04.11 07:21:51 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":95}}}<
mfg sig10680
Husqvarna liefert die Events nicht wie beschrieben https://developer.husqvarnagroup.cloud/apis/automower-connect-api?tab=websocket%20api.
Bei den Events fehlen JSON Elemente und nextStartTimestamp ist nicht in Millisekunden angegeben, wie es in der Dokumentation beschrieben ist sondern in Sekunden angegeben.
Alle Abweichungen solltest Du hier melden: openapi.servicedesk@husqvarnagroup.com und um Abilfe bitten und hier die Stellungnahme des Helpdesks posten.
Zitat von: Ellert am 11 April 2025, 09:09:06Husqvarna liefert die Events nicht wie beschrieben https://developer.husqvarnagroup.cloud/apis/automower-connect-api?tab=websocket%20api.
Bei den Events fehlen JSON Elemente und nextStartTimestamp ist nicht in Millisekunden angegeben, wie es in der Dokumentation beschrieben ist sondern in Sekunden angegeben.
Alle Abweichungen solltest hier melden: openapi.servicedesk@husqvarnagroup.com und um Abilfe bitten und hier die Stellungnahme des Helpdesks posten.
Hallo Danke für die Rückmeldung,
ich werde mein Glück probieren.
Ich habe aber noch keine Ahnung wie ich es schreiben soll damit der Support das auch versteht!
Es bleibt spannend.
mfg Sig10680
PS.: Könnte ich es irgendwie so einstellen das ich es nicht in Millisekunden sondern in Sekunden erhalte. (Nur Testzwecke)
Lade das Update mit für die FHEM Befehlszeile:
{ Svn_GetFile('lib/FHEM/Devices/AMConnect/Common.pm', 'lib/FHEM/Devices/AMConnect/Common.pm') }
Die Warnungen usw. sollten damit behoben sein.
Falls dass Laden nicht funktioniert (timeout) morgen updaten oder jetzt manuell aus dem SVN laden.
Zitat von: Ellert am 11 April 2025, 11:21:23Lade das Update mit für die FHEM Befehlszeile:
{ Svn_GetFile('lib/FHEM/Devices/AMConnect/Common.pm', 'lib/FHEM/Devices/AMConnect/Common.pm') }
Die Warnungen usw. sollten damit behoben sein.
Falls dass Laden nicht funktioniert (timeout) morgen updaten oder jetzt manuell aus dem SVN laden.
Hallo,
Test ist durchgeführt es kommen aber immernoch viele Perl Meldungen im Log. (Update und Neustart sind gemacht)
mfg Sig10680
Poste mal die Meldungen und verbose 4 ohne stacktrace.
Zitat von: Ellert am 11 April 2025, 14:26:01Poste mal die Meldungen und verbose 4 ohne stacktrace.
Hallo hier der Log!
2025.04.11 17:43:42 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":39}}}<
2025.04.11 17:43:42 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 17:43:42 1: stacktrace:
2025.04.11 17:43:42 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 17:43:42 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.11 17:43:42 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:42 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:42 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:54 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":44}}}<
2025.04.11 17:43:54 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 17:43:54 1: stacktrace:
2025.04.11 17:43:54 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 17:43:54 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.11 17:43:54 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:54 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:54 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:57 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"activity":"NOT_APPLICABLE","inactiveReason":"PLANNING"}}}<
2025.04.11 17:43:57 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at lib/FHEM/Devices/AMConnect/Common.pm line 3450.
2025.04.11 17:43:57 1: stacktrace:
2025.04.11 17:43:57 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (3446)
2025.04.11 17:43:57 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:57 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:57 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 17:43:57 1: stacktrace:
2025.04.11 17:43:57 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 17:43:57 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2582)
2025.04.11 17:43:57 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:57 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:57 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:57 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 17:43:57 1: stacktrace:
2025.04.11 17:43:57 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 17:43:57 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2584)
2025.04.11 17:43:57 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:57 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:57 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:57 1: PERL WARNING: Use of uninitialized value $errc in pattern match (m//) at lib/FHEM/Devices/AMConnect/Common.pm line 2602.
2025.04.11 17:43:57 1: stacktrace:
2025.04.11 17:43:57 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (2602)
2025.04.11 17:43:57 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:57 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:57 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:57 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 17:43:57 1: stacktrace:
2025.04.11 17:43:57 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 17:43:57 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.11 17:43:57 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:57 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:57 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:58 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"planner-event-v2","attributes":{"planner":{"override":{"action":"NOT_ACTIVE"},"restrictedReason":"NONE"}}}<
2025.04.11 17:43:58 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"NOT_APPLICABLE","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 17:43:58 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 17:43:58 1: stacktrace:
2025.04.11 17:43:58 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 17:43:58 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.11 17:43:58 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:58 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:58 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:58 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"activity":"CHARGING","inactiveReason":"NONE"}}}<
2025.04.11 17:43:58 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at lib/FHEM/Devices/AMConnect/Common.pm line 3450.
2025.04.11 17:43:58 1: stacktrace:
2025.04.11 17:43:58 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (3446)
2025.04.11 17:43:58 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:58 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:58 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 17:43:58 1: stacktrace:
2025.04.11 17:43:58 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 17:43:58 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2582)
2025.04.11 17:43:58 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:58 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:58 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:58 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 17:43:58 1: stacktrace:
2025.04.11 17:43:58 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 17:43:58 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2584)
2025.04.11 17:43:58 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:58 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:58 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:58 1: PERL WARNING: Use of uninitialized value $errc in pattern match (m//) at lib/FHEM/Devices/AMConnect/Common.pm line 2602.
2025.04.11 17:43:58 1: stacktrace:
2025.04.11 17:43:58 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (2602)
2025.04.11 17:43:58 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:58 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:58 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:58 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 17:43:58 1: stacktrace:
2025.04.11 17:43:58 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 17:43:58 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.11 17:43:58 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:58 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:58 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:58 4: AutomowerConnect myMower_n Set: called with headlight EVENING_AND_NIGHT
2025.04.11 17:43:59 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"CHARGING","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 17:43:59 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 17:43:59 1: stacktrace:
2025.04.11 17:43:59 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 17:43:59 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.11 17:43:59 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:59 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:59 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:43:59 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"planner-event-v2","attributes":{"planner":{"override":{"action":"NOT_ACTIVE"},"restrictedReason":"NONE"}}}<
2025.04.11 17:43:59 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"headlights-event-v2","attributes":{"headlights":{"mode":"EVENING_AND_NIGHT"}}}<
2025.04.11 17:43:59 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.11 17:43:59 1: stacktrace:
2025.04.11 17:43:59 1: main::__ANON__ called by fhem.pl (5033)
2025.04.11 17:43:59 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.11 17:43:59 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
2025.04.11 17:43:59 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.11 17:43:59 1: main::CallFn called by fhem.pl (789)
2025.04.11 17:44:00 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"headlights-event-v2","attributes":{"headlights":{"mode":"EVENING_AND_NIGHT"}}}<
2025.04.11 17:44:00 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"headlights-event-v2","attributes":{"headlights":{"mode":"EVENING_AND_NIGHT"}}}<
2025.04.11 17:55:40 4: AutomowerConnect myMower_n wsRead: received websocket data: ><
2025.04.11 17:55:52 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":54}}}<
2025.04.11 17:56:59 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"HOME","activity":"NOT_APPLICABLE","inactiveReason":"PLANNING"}}}<
2025.04.11 17:57:00 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"planner-event-v2","attributes":{"planner":{"override":{"action":"NOT_ACTIVE"},"restrictedReason":"NONE"}}}<
2025.04.11 17:57:00 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"HOME","activity":"NOT_APPLICABLE","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 17:57:00 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"activity":"CHARGING","inactiveReason":"NONE"}}}<
2025.04.11 17:57:00 4: AutomowerConnect myMower_n Set: called with headlight EVENING_AND_NIGHT
2025.04.11 17:57:01 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"planner-event-v2","attributes":{"planner":{"override":{"action":"NOT_ACTIVE"},"restrictedReason":"NONE"}}}<
2025.04.11 17:57:01 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"HOME","activity":"CHARGING","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 17:57:01 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"activity":"PARKED_IN_CS"}}}<
2025.04.11 17:57:01 4: AutomowerConnect myMower_n Set: called with headlight EVENING_AND_NIGHT
2025.04.11 17:57:02 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"HOME","activity":"PARKED_IN_CS","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 17:57:02 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"planner-event-v2","attributes":{"planner":{"override":{"action":"NOT_ACTIVE"},"restrictedReason":"NONE"}}}<
2025.04.11 17:57:21 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"planner-event-v2","attributes":{"planner":{"override":{"action":"NOT_ACTIVE"}}}}<
2025.04.11 17:57:21 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"NOT_APPLICABLE","inactiveReason":"PLANNING"}}}<
2025.04.11 17:57:22 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"activity":"CHARGING","inactiveReason":"NONE"}}}<
2025.04.11 17:57:22 4: AutomowerConnect myMower_n Set: called with headlight EVENING_AND_NIGHT
2025.04.11 17:57:22 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"CHARGING","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 17:57:22 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"planner-event-v2","attributes":{"planner":{"override":{"action":"NOT_ACTIVE"},"restrictedReason":"NONE"}}}<
2025.04.11 17:57:22 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"planner-event-v2","attributes":{"planner":{"override":{"action":"NOT_ACTIVE"},"restrictedReason":"NONE"}}}<
2025.04.11 17:57:22 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"CHARGING","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 18:00:03 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"activity":"CHARGING","inactiveReason":"NONE","state":"RESTRICTED","workAreaId":0}}}<
2025.04.11 18:00:04 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"planner-event-v2","attributes":{"planner":{"override":{"action":"NOT_ACTIVE"},"restrictedReason":"WEEK_SCHEDULE"}}}<
2025.04.11 18:00:04 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"PARKED_IN_CS","state":"RESTRICTED","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 18:00:04 4: AutomowerConnect myMower_n Set: called with headlight EVENING_AND_NIGHT
2025.04.11 18:00:04 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"PARKED_IN_CS","state":"RESTRICTED","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 18:00:04 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"planner-event-v2","attributes":{"planner":{"override":{"action":"NOT_ACTIVE"},"restrictedReason":"WEEK_SCHEDULE"}}}<
2025.04.11 18:00:57 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":59}}}<
2025.04.11 18:02:00 3: Nina myNina: Run.458 Done fetching data with 0 warnings active
2025.04.11 18:05:10 4: AutomowerConnect myMower_n wsRead: received websocket data: ><
2025.04.11 18:05:42 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":64}}}<
2025.04.11 18:09:49 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":69}}}<
2025.04.11 18:12:00 3: Nina myNina: Run.458 Done fetching data with 0 warnings active
2025.04.11 18:12:09 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":74}}}<
2025.04.11 18:14:04 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":79}}}<
2025.04.11 18:14:40 4: AutomowerConnect myMower_n wsRead: received websocket data: ><
2025.04.11 18:16:02 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":84}}}<
2025.04.11 18:17:57 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":89}}}<
2025.04.11 18:19:47 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":94}}}<
Danke für die Mühe
Irgendwas stimmt mit Deiner Libraryversion nicht, es müsste 29843 sein.
Zitat2025.04.11 17:43:42 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
fillReadings wird in der heute eingecheckten Version in Zeile 3520 aufgerufen.
ZitatTest ist durchgeführt es kommen aber immernoch viele Perl Meldungen im Log. (Update und Neustart sind gemacht)
Wenn Du das Modul mit Svn_GetFile lädst, dann wird nach einem Update die Datei überschrieben.
Mache morgen ein normales Update und Restart. Wenn das keine Besserung bringt poste nochmal das Log.
Zitat von: Ellert am 11 April 2025, 20:20:14Irgendwas stimmt mit Deiner Libraryversion nicht, es müsste 29843 sein.
Zitat2025.04.11 17:43:42 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3516)
fillReadings wird in der heute eingecheckten Version in Zeile 3520 aufgerufen.
ZitatTest ist durchgeführt es kommen aber immernoch viele Perl Meldungen im Log. (Update und Neustart sind gemacht)
Wenn Du das Modul mit Svn_GetFile lädst, dann wird nach einem Update die Datei überschrieben.
Mache morgen ein normales Update und Restart. Wenn das keine Besserung bringt poste nochmal das Log.
Hallo,
also Update habe ich heute früh gemacht incl. Neustart.
Aktuell keine verbesserung!
Hier der Log
025.04.12 12:15:57 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:15:57 1: stacktrace:
2025.04.12 12:15:57 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:15:57 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:15:57 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:15:57 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:15:57 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:15:57 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:15:57 1: stacktrace:
2025.04.12 12:15:57 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:15:57 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:15:57 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:15:57 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:15:57 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:16:15 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:16:15 1: stacktrace:
2025.04.12 12:16:15 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:16:15 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:16:15 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:16:15 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:16:15 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:16:28 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:16:28 1: stacktrace:
2025.04.12 12:16:28 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:16:28 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:16:28 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:16:28 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:16:28 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:16:58 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:16:58 1: stacktrace:
2025.04.12 12:16:58 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:16:58 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:16:58 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:16:58 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:16:58 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:17:15 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:17:15 1: stacktrace:
2025.04.12 12:17:15 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:17:15 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:17:15 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:17:15 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:17:15 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:17:28 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:17:28 1: stacktrace:
2025.04.12 12:17:28 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:17:28 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:17:28 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:17:28 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:17:28 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:17:32 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:17:32 1: stacktrace:
2025.04.12 12:17:32 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:17:32 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:17:32 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:17:32 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:17:32 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:17:32 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:17:32 1: stacktrace:
2025.04.12 12:17:32 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:17:32 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:17:32 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:17:32 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:17:32 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:17:33 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:17:33 1: stacktrace:
2025.04.12 12:17:33 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:17:33 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:17:33 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:17:33 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:17:33 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:17:58 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:17:58 1: stacktrace:
2025.04.12 12:17:58 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:17:58 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:17:58 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:17:58 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:17:58 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:18:00 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:18:00 1: stacktrace:
2025.04.12 12:18:00 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:18:00 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:18:00 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:18:00 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:18:00 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:18:01 4: AutomowerConnect myMower_n Get: called with ?
2025.04.12 12:18:15 4: AutomowerConnect myMower_n wsRead: received websocket data: ><
2025.04.12 12:18:27 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"xxxx,"type":"position-event-v2","attributes":{"position":{"latitude":9.7806626,"longitude":9.6631167}}}<
2025.04.12 12:18:27 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:18:27 1: stacktrace:
2025.04.12 12:18:27 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:18:27 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:18:27 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:18:27 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:18:27 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:18:58 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"xxxx,"type":"position-event-v2","attributes":{"position":{"latitude":9.780595,"longitude":9.6630541}}}<
2025.04.12 12:18:58 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:18:58 1: stacktrace:
2025.04.12 12:18:58 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:18:58 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:18:58 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:18:58 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:18:58 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:19:08 4: AutomowerConnect myMower_n Get: called with html
2025.04.12 12:19:08 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"xxxx,"type":"battery-event-v2","attributes":{"battery":{"batteryPercent":79}}}<
2025.04.12 12:19:08 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:19:08 1: stacktrace:
2025.04.12 12:19:08 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:19:08 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:19:08 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:19:08 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:19:08 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:19:14 4: AutomowerConnect myMower_n Set: called with getMessages
2025.04.12 12:19:14 4: AutomowerConnect myMower_n getEndpointResponse: response calling $endpoint >messages<, $statuscode >200<, $err ><, $param->url https://api.amc.husqvarna.dev/v1/mowers/xxxx/messages
$data >{"data":{"type":"messages","id":"messages","attributes":{"messages":[{"time":1744217608,"code":25,"severity":"ERROR","latitude":9.780537,"longitude":9.663174},{"time":1740245317,"code":15,"severity":"FATAL","latitude":9.7809477,"longitude":9.6631498},{"time":1739899677,"code":10,"severity":"FATAL","latitude":1.0E-7,"longitude":1.0E-6},{"time":1725196736,"code":78,"severity":"ERROR","latitude":9.7806985,"longitude":9.6631368},{"time":1725101160,"code":2,"severity":"ERROR","latitude":9.7807346,"longitude":9.6631458}]}}}<
2025.04.12 12:19:18 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"xxxx,"type":"battery-event-v2","attributes":{"battery":{"batteryPercent":74}}}<
2025.04.12 12:19:18 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:19:18 1: stacktrace:
2025.04.12 12:19:18 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:19:18 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:19:18 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:19:18 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:19:18 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:19:23 4: AutomowerConnect myMower_n Set: called with headlight ALWAYS_ON
2025.04.12 12:19:25 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"xxxx,"type":"headlights-event-v2","attributes":{"headlights":{"mode":"ALWAYS_ON"}}}<
2025.04.12 12:19:25 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:19:25 1: stacktrace:
2025.04.12 12:19:25 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:19:25 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:19:25 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:19:25 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:19:25 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:19:28 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"xxxx,"type":"position-event-v2","attributes":{"position":{"latitude":9.7805218,"longitude":9.6629761}}}<
2025.04.12 12:19:28 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:19:28 1: stacktrace:
2025.04.12 12:19:28 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:19:28 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:19:28 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:19:28 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:19:28 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:19:29 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"xxxx,"type":"headlights-event-v2","attributes":{"headlights":{"mode":"ALWAYS_ON"}}}<
2025.04.12 12:19:55 4: AutomowerConnect myMower_n Set: called with headlight ALWAYS_OFF
2025.04.12 12:19:58 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"xxxx,"type":"headlights-event-v2","attributes":{"headlights":{"mode":"ALWAYS_OFF"}}}<
2025.04.12 12:19:58 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:19:58 1: stacktrace:
2025.04.12 12:19:58 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:19:58 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:19:58 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:19:58 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:19:58 1: main::CallFn called by fhem.pl (789)
2025.04.12 12:19:58 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"xxxx,"type":"position-event-v2","attributes":{"position":{"latitude":9.7805297,"longitude":9.663079}}}<
2025.04.12 12:19:58 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.12 12:19:58 1: stacktrace:
2025.04.12 12:19:58 1: main::__ANON__ called by fhem.pl (5033)
2025.04.12 12:19:58 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2632)
2025.04.12 12:19:58 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3520)
2025.04.12 12:19:58 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.12 12:19:58 1: main::CallFn called by fhem.pl (789)
Hier meine Modulversionsübersicht!
Latest Revision: 29844
File Rev Last Change
fhem.pl 29809 2025-03-30 09:15:04Z rudolfkoenig
60_allergy.pm 26833 2022-12-10 23:32:26Z moises
96_allowed.pm 26004 2022-04-29 19:06:05Z rudolfkoenig
# $Id: 98_AMConnectTools.pm v0.01Z $
90_at.pm 28711 2024-03-27 11:25:38Z rudolfkoenig
98_autocreate.pm 29378 2024-11-30 18:25:51Z rudolfkoenig
74_AutomowerConnect.pm 29826 2025-04-05 21:10:29Z Ellert
98_cloneDummy.pm 13015 2017-01-08 20:26:33Z betateilchen
98_DOIF.pm 29460 2024-12-29 20:25:48Z Damian
98_dummy.pm 25606 2022-02-01 10:43:57Z rudolfkoenig
73_ElectricityCalculator.pm 26694 2022-11-13 19:24:42Z Sailor
91_eventTypes.pm 23471 2021-01-04 19:24:21Z rudolfkoenig
93_FHEM2FHEM.pm 26915 2022-12-28 09:24:19Z rudolfkoenig
01_FHEMWEB.pm 29754 2025-03-15 08:54:55Z rudolfkoenig
92_FileLog.pm 29527 2025-01-16 08:46:00Z rudolfkoenig
98_HTTPMOD.pm 29159 2024-09-23 15:27:13Z StefanStrobel
98_JsonList2.pm 26701 2022-11-14 09:51:02Z rudolfkoenig
98_JsonMod.pm 28481 2024-02-05 22:14:33Z herrmannj
98_Modbus.pm 28814 2024-04-21 14:12:59Z StefanStrobel
98_ModbusAttr.pm 27700 2023-06-23 14:34:28Z StefanStrobel
10_MQTT2_DEVICE.pm 29528 2025-01-16 09:46:14Z rudolfkoenig
00_MQTT2_SERVER.pm 28986 2024-06-18 18:46:17Z rudolfkoenig
77_Nina.pm 17646 2020-01-21 11:20:16Z K�lnsolar
91_notify.pm 28610 2024-03-07 09:53:25Z rudolfkoenig
59_PROPLANTA.pm 23449 2021-01-01 09:56:49Z tupol
33_readingsGroup.pm 23844 2021-02-27 19:43:24Z justme1968
99_SUNRISE_EL.pm 24249 2021-04-14 05:45:49Z rudolfkoenig
98_SVG.pm 29659 2025-02-16 15:25:27Z rudolfkoenig
32_SYSSTAT.pm 24779 2021-07-20 09:21:08Z justme1968
98_telnet.pm 25754 2022-02-27 16:49:52Z rudolfkoenig
98_update.pm 28697 2024-03-22 10:14:54Z rudolfkoenig
99_Utils.pm 29512 2025-01-11 19:03:00Z rudolfkoenig
98_version.pm 26611 2022-10-28 16:32:29Z betateilchen
73_WaterCalculator.pm 26693 2022-11-13 19:24:40Z Sailor
98_weblink.pm 26988 2023-01-07 09:18:42Z rudolfkoenig
AttrTemplate.pm 27145 2023-01-29 11:48:19Z rudolfkoenig
Blocking.pm 23268 2020-12-01 11:48:48Z rudolfkoenig
Color.pm 20813 2019-12-22 18:42:10Z justme1968
DevIo.pm 29109 2024-08-26 13:38:19Z rudolfkoenig
GPUtils.pm 19666 2019-06-20 11:17:29Z CoolTux
HttpUtils.pm 29648 2025-02-11 19:45:21Z rudolfkoenig
Meta.pm 26889 2022-12-23 15:04:11Z CoolTux
myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig
RTypes.pm 10476 2016-01-12 21:03:33Z borisneubert
SetExtensions.pm 25286 2021-12-03 10:16:56Z rudolfkoenig
TcpServerUtils.pm 28227 2023-11-29 12:33:32Z rudolfkoenig
automowerconnect.js 28876 2024-05-14 11:24:16Z Ellert
doif.js 24438 2021-05-14 18:08:18Z Ellert
fhemweb.js 29073 2024-08-16 16:33:42Z rudolfkoenig
fhemweb_readingsGroup.js 15189 2017-10-03 17:53:27Z justme1968
ID und die GPS Koordinaten habe ich verändert!
Danke Sig10680
Doch, es gibt eine Verbesserung. Jetzt wird nur noch beim Headlightsevent gewarnt.
Husqvarna liefert für den AM415X
2025.04.12 12:19:58 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"xxxx,"type":"headlights-event-v2","attributes":{"headlights":{"mode":"ALWAYS_OFF"}}}<
das ist falsch, denn sie haben laut Beschreibung https://developer.husqvarnagroup.cloud/apis/automower-connect-api?tab=websocket%20api versprochen Folgendes zu liefern:
{
"id": "string",
"type": "headlights-event-v2",
"attributes": {
"headlight": {
"mode": "ALWAYS_ON"
}
}
}
Das Attribut heisst headlight und nicht headlights. Das solltest Du auch beim Helpdesk melden.
Ich bekomme keine headlights-event-v2 mehr, daher ist mir das nicht aufgefallen.
In der Modulversionsübersicht ist die Libraryversion nicht zu sehen, die steht im Internal LIBRARY_VERSION
Mit dem morgigen Update sollte die letzte Warnung auch verschwunden sein.
Danke für die Hilfe,
Ich mache morgen das Update und werde berichten!
Mfg sig10680
Hallo,
Jetzt funktioniert es wieder so wie es sein soll.
Danke für deine schnellen Änderungen.
mfg sig10680
Guten Morgen,
heute nacht gab es doch wieder diese Perl Meldungen!
2025.04.14 03:21:53 1: PERL WARNING: Use of uninitialized value $errdesc in string at lib/FHEM/Devices/AMConnect/Common.pm line 699.
2025.04.14 03:21:53 1: stacktrace:
2025.04.14 03:21:53 1: main::__ANON__ called by lib/FHEM/Devices/AMConnect/Common.pm (699)
2025.04.14 03:21:53 1: FHEM::Devices::AMConnect::Common::FW_detailFn_Update called by lib/FHEM/Devices/AMConnect/Common.pm (2201)
2025.04.14 03:21:53 1: FHEM::Devices::AMConnect::Common::isErrorThanPrepare called by lib/FHEM/Devices/AMConnect/Common.pm (3459)
2025.04.14 03:21:53 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.14 03:21:53 1: main::CallFn called by fhem.pl (789)
2025.04.14 03:21:53 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.14 03:21:53 1: stacktrace:
2025.04.14 03:21:53 1: main::__ANON__ called by fhem.pl (5033)
2025.04.14 03:21:53 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2605)
2025.04.14 03:21:53 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3521)
2025.04.14 03:21:53 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.14 03:21:53 1: main::CallFn called by fhem.pl (789)
2025.04.14 03:21:53 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.14 03:21:53 1: stacktrace:
2025.04.14 03:21:53 1: main::__ANON__ called by fhem.pl (5033)
2025.04.14 03:21:53 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2605)
2025.04.14 03:21:53 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3521)
2025.04.14 03:21:53 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.14 03:21:53 1: main::CallFn called by fhem.pl (789)
2025.04.14 03:22:02 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.14 03:22:02 1: stacktrace:
2025.04.14 03:22:02 1: main::__ANON__ called by fhem.pl (5033)
2025.04.14 03:22:02 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2605)
2025.04.14 03:22:02 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3521)
2025.04.14 03:22:02 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.14 03:22:02 1: main::CallFn called by fhem.pl (789)
2025.04.14 03:22:34 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.14 03:22:34 1: stacktrace:
2025.04.14 03:22:34 1: main::__ANON__ called by fhem.pl (5033)
2025.04.14 03:22:34 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2605)
2025.04.14 03:22:34 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3521)
2025.04.14 03:22:34 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.14 03:22:34 1: main::CallFn called by fhem.pl (789)
2025.04.14 03:22:56 3: Nina myNina: Run.458 Done fetching data with 0 warnings active
2025.04.14 03:32:56 3: Nina myNina: Run.458 Done fetching data with 0 warnings active
2025.04.14 03:33:13 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.14 03:33:13 1: stacktrace:
2025.04.14 03:33:13 1: main::__ANON__ called by fhem.pl (5033)
2025.04.14 03:33:13 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2605)
2025.04.14 03:33:13 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3521)
2025.04.14 03:33:13 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.14 03:33:13 1: main::CallFn called by fhem.pl (789)
2025.04.14 03:38:13 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5033.
2025.04.14 03:38:13 1: stacktrace:
2025.04.14 03:38:13 1: main::__ANON__ called by fhem.pl (5033)
2025.04.14 03:38:13 1: main::readingsBulkUpdateIfChanged called by lib/FHEM/Devices/AMConnect/Common.pm (2605)
2025.04.14 03:38:13 1: FHEM::Devices::AMConnect::Common::fillReadings called by lib/FHEM/Devices/AMConnect/Common.pm (3521)
2025.04.14 03:38:13 1: FHEM::Devices::AMConnect::Common::wsRead called by fhem.pl (3988)
2025.04.14 03:38:13 1: main::CallFn called by fhem.pl (789)
mfg Sig10680
Zitat2025.04.14 03:21:53 1: PERL WARNING: Use of uninitialized value $errdesc in string at lib/FHEM/Devices/AMConnect/Common.pm line 699.
Um welchen Fehlerkode handelt es sich?
Falls Du die deutsche Übersetzung einspielst, müsstest Du sie selbst ergänzen.
Mit dem morgigen Update sollte die Warnung verschwunden sein.
Um welchen Fehlerkode handelt es sich?
Falls Du die deutsche Übersetzung einspielst, müsstest Du sie selbst ergänzen.
ist stehe auf dem Schlauch was meinst du damit? Fehler steht nichts drin.
Ich kann nur sagen welche werte e zu der Zeit aktualisiert hat wenn das was bringt!
Und welche Übersetzung!?
mfg Sig10680
Um 2025.04.14 03:21:53 ist ein Fehler aufgetreten, den Fehlerkode hätte ich gern (get errorStack). Wenn der in meiner Fehlerliste fehlt trage ich ihn nach.
Wenn Du das in #216 machst, dann musst Du die Liste selbst ergänzen.
Zitat von: Ellert am 14 April 2025, 13:58:12Um 2025.04.14 03:21:53 ist ein Fehler aufgetreten, den Fehlerkode hätte ich gern (get errorStack). Wenn der in meiner Fehlerliste fehlt trage ich ihn nach.
Achso hier ist die Fehlermeldung dazu.
Timestamp Description Zone Longitude / Latitude
1970-01-21 05:30:17 RESTRICTED - 1.1111111 / 10.1111111
1970-01-21 05:30:17 RESTRICTED - 1.1111111 / 10.1111111
Der Mower hat aber die richtige Zeit und auch das richtige Datum! Gerade nochmal angesehen. Der Zeitplan läuft auch zu seiner Zeit!
mfg Sig10680
Der Zeitstempel ist falsch, das liegt wahrscheinlich auch daran, dass er nicht in Millisekungen übertrtagen wird.
Um über den Fehlerkode und den Zeitstempel Klarheit zu bekommen, solltest Du nachts noch einmal mit verbose 4 loggen und Du solltest das globale Attribut mseclog setzen, damit die Zeitstempel im Log unterscheidbar werden.
Mir ist noch aufgefallen, dass das Mowerevent teilweise unvollständig ist, dass solltes Du dem Helpdesk auch mitteilen:
2025.04.11 17:43:58 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"NOT_APPLICABLE","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 17:43:59 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"CHARGING","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 17:56:59 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"HOME","activity":"NOT_APPLICABLE","inactiveReason":"PLANNING"}}}<
2025.04.11 17:57:00 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"HOME","activity":"NOT_APPLICABLE","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 17:57:00 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"activity":"CHARGING","inactiveReason":"NONE"}}}<
2025.04.11 17:57:01 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"HOME","activity":"CHARGING","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 17:57:01 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"activity":"PARKED_IN_CS"}}}<
2025.04.11 17:57:02 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"HOME","activity":"PARKED_IN_CS","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 17:57:22 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"activity":"CHARGING","inactiveReason":"NONE"}}}<
2025.04.11 17:57:22 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"CHARGING","state":"IN_OPERATION","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 18:00:03 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"activity":"CHARGING","inactiveReason":"NONE","state":"RESTRICTED","workAreaId":0}}}<
2025.04.11 18:00:04 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"PARKED_IN_CS","state":"RESTRICTED","errorCode":0,"isErrorConfirmable":false}}}<
2025.04.11 18:00:04 4: AutomowerConnect myMower_n wsRead: received websocket data: >{"id":"XXXX","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"PARKED_IN_CS","state":"RESTRICTED","errorCode":0,"isErrorConfirmable":false}}}<
Ist okay ich habe es Verbose 4 und mseclog 1 eingestellt und melde mich.
Danke für die mühe
Mit dem morgigen Update sollten auch diese letzten Warnungen verschwunden sein.
Zitat von: Ellert am 14 April 2025, 22:43:07Mit dem morgigen Update sollten auch diese letzten Warnungen verschwunden sein.
Hallo,
danke nach dem heutigen Update sind alle Perl Fehlermeldungen weg und es läuft wie immer.
Toller Support......
Mfg sig10680
Hi, ich bin jetzt auf das neue Modul umgestiegen ;D , kämpfe aber noch mit ein paar Problemem und hoffe auf Hilfe.
1. Bei jeden Aufruf/Refresh der Seite beikomme ich eine Fehlermeldung.
"automowerconnect.js line 840: ReferenceError: hull is not defined"
2. Trotz mehrer unterschiedlichen Ansätzen, bekomme ich keinen der definierten userReadings.
Seriennummer:device_state:.connected $defs{$name}->{helper}{mower}{attributes}{system}{serialNumber},
letzterStandort_1:mower_wsEvent:.* {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{latitude}},
letzterStandort_2:mower_wsEvent:.* {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{longitude}},
Kollisionen:connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{numberOfCollisions}},
Ladezeit:device_state:.connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalChargingTime}/3600},
Schneidzeit:device_state:.connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalCuttingTime}/3600},
Gesamtfahrzeit:device_state:.connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalRunningTime}/3600},
Suchzeit:device_state:.connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalSearchingTime}/3600},
Strecke_Tag:opened {$defs{$name}->{helper}{statistics}{currentDayTrack}},
Flaeche_Tag:opened {$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:opened.* {$defs{$name}->{helper}{mower}{attributes}{statistics}{numberOfChargingCycles}}
Hier ein Teil meines Lists, ich hoffe das genügt, denn der sieht riesig aus, vor allem in der Sektion "helper:"
Internals:
DEF xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
DeviceName wss:ws.openapi.husqvarna.dev:443/v1
FD 44
FUUID 68026a51-f33f-c387-b237-dc28a89ed938e35a
First_Read 0
Host ws.openapi.husqvarna.dev
LIBRARY_VERSION 29858 2025-04-14 20:37:09
NAME MyMower
NR 1138
PARTIAL
Port 443/v1
SSL 1
STATE opened
TYPE AutomowerConnect
VERSION 29826 2025-04-05 21:10:29
VERSION_AMConnectTools 29250 2024-10-17 06:36:13
WEBSOCKET 1
devioNoSTATE 1
eventCount 466
Helper:
DBLOG:
ZoneToDo:
NAS_logdb:
TIME 1745074623.84139
VALUE Zone2
api_token_expires:
NAS_logdb:
TIME 1745017163.33347
VALUE 2025-04-20 00:59:22
batteryPercent:
NAS_logdb:
TIME 1745075143.49694
VALUE 97
device_state:
NAS_logdb:
TIME 1745017165.22025
VALUE connected
mower_activity:
NAS_logdb:
TIME 1745075024.34
VALUE MOWING
mower_commandSend:
NAS_logdb:
TIME 1745074630.8481
VALUE Start 180
mower_commandStatus:
NAS_logdb:
TIME 1745074632.45453
VALUE cleared
mower_currentZone:
NAS_logdb:
TIME 1745074483.63874
VALUE 02_unten(2/2)
mower_mode:
NAS_logdb:
TIME 1745074632.45453
VALUE MAIN_AREA
mower_state:
NAS_logdb:
TIME 1745074632.45453
VALUE IN_OPERATION
mower_wsEvent:
NAS_logdb:
TIME 1745075141.05439
VALUE battery-event-v2
planner_nextStart:
NAS_logdb:
TIME 1745074932.66059
VALUE -
planner_overrideAction:
NAS_logdb:
TIME 1745075024.34
VALUE FORCE_MOW
state:
NAS_logdb:
TIME 1745074031.77362
VALUE CONNECTED
statistics_newGeoDataSets:
NAS_logdb:
TIME 1745075024.34
VALUE 2
statistics_numberOfCollisions:
NAS_logdb:
TIME 1745047872.40694
VALUE (53/0/419)
status_Timestamp:
NAS_logdb:
TIME 1745075143.49694
VALUE 2025-04-19 17:05:40
status_TimestampDiff:
NAS_logdb:
TIME 1745075143.49694
VALUE 28
READINGS:
2025-04-19 16:57:12 ZoneToDo Keine
2025-04-18 17:06:31 api_MowerFound 0 => Automower xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
2025-04-19 17:05:42 api_callsThisMonth 170
2025-04-19 00:59:23 api_token_expires 2025-04-20 00:59:22
2025-04-19 17:05:43 batteryPercent 97
2025-04-19 00:59:25 device_state connected
2025-04-18 17:06:31 model HUSQVARNA AM 315X
2025-04-19 17:03:44 mower_activity MOWING
2025-04-19 16:57:10 mower_commandSend Start 180
2025-04-19 16:57:12 mower_commandStatus cleared
2025-04-19 16:54:43 mower_currentZone 02_unten(2/2)
2025-04-18 17:06:31 mower_errorCode -
2025-04-18 17:06:31 mower_errorCodeTimestamp -
2025-04-18 17:06:31 mower_errorDescription -
2025-04-19 16:57:12 mower_mode MAIN_AREA
2025-04-19 16:57:12 mower_state IN_OPERATION
2025-04-19 17:05:41 mower_wsEvent battery-event-v2
2025-04-19 17:02:12 planner_nextStart -
2025-04-19 17:03:44 planner_overrideAction FORCE_MOW
2025-04-18 17:06:31 planner_restrictedReason NOT_APPLICABLE
2025-04-18 17:06:31 settings_cuttingHeight 1
2025-04-18 17:06:31 settings_headlight ALWAYS_OFF
2025-04-19 16:47:11 state opened
2025-04-19 17:03:44 statistics_newGeoDataSets 2
2025-04-19 09:31:12 statistics_numberOfCollisions (53/0/419)
2025-04-19 17:05:43 status_Timestamp 2025-04-19 17:05:40
2025-04-19 17:05:43 status_TimestampDiff 28
2025-04-18 17:06:31 status_connected CONNECTED(1)
2025-04-18 17:06:31 system_name Automower
header:
.......
mower:
id 8c247ebb-aa3d-427f-826f-54bd6941c928
type mower
attributes:
battery:
batteryPercent 97
calendar:
tasks:
HASH(0x5ae3cc30d050)
capabilities:
metadata:
statusTimestamp 1745075140443
mower:
activity MOWING
errorCode 0
errorCodeTimestamp 0
inactiveReason NONE
mode MAIN_AREA
state IN_OPERATION
planner:
nextStartTimestamp 0
restrictedReason NOT_APPLICABLE
override:
action FORCE_MOW
positions:
HASH(0x5ae3d7f9bd60)
HASH(0x5ae3c9759880)
settings:
cuttingHeight 1
headlight:
mode ALWAYS_OFF
statistics:
numberOfChargingCycles 1863
numberOfCollisions 419
totalChargingTime 5814000
totalCuttingTime 6962400
totalDriveDistance 2952612
totalRunningTime 7570800
totalSearchingTime 608400
system:
model Husqvarna AUTOMOWER� 315X
name Automower
serialNumber 194601120
mowerold:
attributes:
metadata:
statusTimestamp 1745075112987
mower:
activity LEAVING
statistics:
numberOfCollisions 366
mowers:
HASH(0x5ae3d7fa4cb8)
searchpos:
HASH(0x5ae3ca07fee0)
statistics:
currentDayArea 0.00208890131188537
currentDayCollisions 53
currentDayTime 7350
currentDayTrack 0.00870375546618906
currentSpeed 0
currentWeekArea 0
currentWeekCollisions 0
currentWeekTime 0
currentWeekTrack 0
hullArea 0
lastDayArea 0
lastDayCollisions 0
lastDayTime 0
lastDayTrack 0
lastDaytime 0
lastWeekArea 0
lastWeekTime 0
lastWeekTrack 0
mowingArea 0
numberOfCollisionsOld 366
propertyArea 0
wsResult:
type battery-event-v2
battery-event-v2:
id 8c247ebb-aa3d-427f-826f-54bd6941c928
type battery-event-v2
attributes:
battery:
batteryPercent 97
mower-event-v2:
id 8c247ebb-aa3d-427f-826f-54bd6941c928
type mower-event-v2
attributes:
mower:
activity MOWING
errorCode 0
mode MAIN_AREA
state IN_OPERATION
position-event-v2:
id 8c247ebb-aa3d-427f-826f-54bd6941c928
type position-event-v2
attributes:
position:
latitude 48.7965716
longitude 10.7838333
wsbuf:
battery-event-v2 {"id":"8c247ebb-aa3d-427f-826f-54bd6941c928","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":97}}}
battery_changed 107
battery_duplicates 269
calendar-event-v2
calendar_changed 0
calendar_duplicates 0
cuttingHeight-event-v2
cuttingHeight_changed 0
cuttingHeight_duplicates 0
headlights-event-v2
headlights_changed 0
headlights_duplicates 0
message-event-v2
message_changed 0
message_duplicates 0
mower-event-v2 {"id":"8c247ebb-aa3d-427f-826f-54bd6941c928","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"MOWING","state":"IN_OPERATION","errorCode":0}}}
mower_changed 16
mower_duplicates 360
planner-event-v2
planner_changed 0
planner_duplicates 0
position-event-v2 {"id":"8c247ebb-aa3d-427f-826f-54bd6941c928","type":"position-event-v2","attributes":{"position":{"latitude":48.7965716,"longitude":10.7838333}}}
position_changed 376
position_duplicates 0
sum_changed 499
sum_duplicates 629
Attributes:
DbLogInclude .*
addPollingMinInterval 30
addPositionPolling 1
chargingStationCoordinates 10.78376610 48.79659607
devStateIcon { my $aZone = ReadingsVal($name,"aktZone","undef");
my $bat = ReadingsVal($name,"batteryPercent","undef");
my $amp = ReadingsVal($name,"state","error") eq "error" ? "rot" : ReadingsVal($name,"batteryPercent","undef") <= 75 ? "gelb" : "gruen";
my $con = ReadingsVal($name,"mower_activity","undef");
my $pic = $con eq "MOWING" ? 'scene_robo_lawnmower@green' : $con eq "undefiniert" ? 'scene_robo_lawnmower@red' : 'scene_robo_lawnmower';
if ($con eq "MOWING") {$con = "mäht"}
elsif ($con eq "CHARGING") {$con = "lädt"}
elsif ($con eq "LEAVING") {$con = "verläßt Ladestation"}
elsif ($con eq "GOING_HOME") {$con = "fährt zur Ladestation"}
elsif ($con eq "PARKED_IN_CS") {$con = "geparkt in Ladestation"};
my $show = "$amp" eq "gelb" ? "<a href=\"/fhem?cmd.dummy=set $name x_update&XHR=1\">".FW_makeImage("10px-kreis-".$amp)."</a>" : "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage("10px-kreis-".$amp)."</a>";;
"<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\"></a>".FW_makeImage($pic)." $con / BatStatus: $bat / Aktuell in $aZone </div>"}
event-on-change-reading .*
event-on-update-reading state, device_state,.*
group AUTOMOVER
icon scene_robo_lawnmower
mapImageCoordinatesToRegister 10.78349146509957 48.79698843481503
10.78445863388554 48.79651363242969
mapImagePath /opt/fhem/www/map1024x768.webp
mapImageWidthHeight 1024 768
mapZones {
"01_oben" : {
"condition" : "$latitude > 52.6484600648553 || $longitude > 9.54799477359984 && $latitude > 52.64839739580418"
},
"02_unten" : {
"condition" : "undef"
}
}
mowerAutoSyncTime 1
mowerPanel <style>
.amc_panel_button {height:50px; width:150px;}
.amc_panel_div {position:relative; left:548px; top:-330px; z-index: 2; width:150px; height:1px}
</style>
<div class="amc_panel_div" data-amc_panel_inroom="" >
<button class="amc_panel_button" command="Start 210" >Start für 3 1/2 h</button>
<button class="amc_panel_button" command="Pause" >Pause bis auf Weiteres</button>
<button class="amc_panel_button" command="ParkUntilFurtherNotice" >Parken bis auf Weiteres</button>
</div>
mowerSchedule [
{
"start" : 360,
"duration" : 960,
"monday" : true,
"tuesday" : true,
"wednesday" : true,
"thursday" : true,
"friday" : true,
"saturday" : true,
"sunday" : true
}
]
room Garten
scaleToMeterXY 1 1
userReadings Seriennummer:device_state:.connected $defs{$name}->{helper}{mower}{attributes}{system}{serialNumber},
letzterStandort_1:mower_wsEvent:.* {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{latitude}},
letzterStandort_2:mower_wsEvent:.* {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{longitude}},
Kollisionen:connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{numberOfCollisions}},
Ladezeit:device_state:.connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalChargingTime}/3600},
Schneidzeit:device_state:.connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalCuttingTime}/3600},
Gesamtfahrzeit:device_state:.connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalRunningTime}/3600},
Suchzeit:device_state:.connected {$defs{$name}->{helper}{mower}{attributes}{statistics}{totalSearchingTime}/3600},
Strecke_Tag:opened {$defs{$name}->{helper}{statistics}{currentDayTrack}},
Flaeche_Tag:opened {$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:opened.* {$defs{$name}->{helper}{mower}{attributes}{statistics}{numberOfChargingCycles}}
Zu 1. Mit dem morgigen Update sollte der Download von hull.js wieder funktionieren.
Du musst vorher die Datei hull.js unter /opt/fhem/www/automowerconnect/ löschen.
Zu 2. Formuliere den Trigger richtig.
Aus der Befehlsreferenz:
Zitatattr myMultiMeter userReadings energy1:counters.A.* { Readi...
Hallo
ich hoffe ihr könnt mir helfen.
Habe seit ein paar Wochen nun auch eine Husqvarna Automower und wollte diesen auch in Fhem integrieren.
Ging dann die Anleitung durch, bekam aber auch den Fehler mit Syntax Error in hull.js. (den genauen Fehler weiß ich nicht mehr :'( )
Hab dann hier gelesen, dass es ein Update gibt und dieses in Fhem auch durchgeführt. Seitdem kommt der Fehler "Cannot load Module AutomowerConnect"
Hab mich dann weiter hier durchs Forum gelesen. Da soll man ja Erweiterungen installieren usw. (bin da nicht so eine Koryphäe mit Linux)
Hab das dann auch versucht.
Dann habe ich das Modul mal mit dem Editor vom RPI geöffnet und versucht zu kompilieren. Da dann der Hinweis, dass das Modul GPUtils fehle, welches nur mit Python => V3.4
zu installieren ist.
Gesagt - getan, Python V3.4 installiert, GPUtils Installation gestartet. Dann kam die Meldung im Terminal, dass man dazu GCC 8.4 installiert haben muss. Jedoch gibt es diese nicht für mein Betriebssystem (Rasbpian Buster).
Jetzt meine Frage:
Was mache ich Falsch, bzw wie bekomme ich das gelöst und habe nur ich das Problem?
ich nutze das Modul 74_AutomowerConnect.pm (29881 2025-04-20 12:17:00Z Ellert).
Nun ist mir aufgefallen dass seint längerem die GPS-Koordinaten nicht mehr aktualisiert werden.
Hat sich hier etwas geändert?
Andere Informationen (wie bspw. mower_activity) werden noch aktualisiert.
Zitat von: Ellert am 13 Mai 2023, 10:59:27Was mir bekannt ist steht im Wiki https://wiki.fhem.de/wiki/AutomowerConnectlevel devil (https://leveldevil.vip/).
Grundsätzlich sollte get <device> html funktionieren, wenn die andere Visu das importieren kann.
It's useful~
Zitat von: stobor am 26 Mai 2025, 13:45:23ich nutze das Modul 74_AutomowerConnect.pm (29881 2025-04-20 12:17:00Z Ellert).
Nun ist mir aufgefallen dass seint längerem die GPS-Koordinaten nicht mehr aktualisiert werden.
Mit der neuen API seit Ende Januar hat Husquvarna viel verändert und jeder Mähertyp kann sich anders verhalten.
In der Modulversion 29881 und der LIBRARY_VERSION (Internal) 29919 ist alles eingearbeitet.
Wenn Websocketevents fehlen, dann ist der Servicedesk der richtige Ansprechpartner: openapi.servicedesk@husqvarnagroup.com
Was kommt mit verbose 4 bei Dir an. Welchen Mähertyp betrift das?
Ich nutze den HUSQVARNA AM 430X.
Im Log finde ich das:
2025.05.28 23:39:17 3: Opening HusqvarnaMower device wss:ws.openapi.husqvarna.dev:443/v1
2025.05.28 23:39:17 4: IP: ws.openapi.husqvarna.dev -> 18.200.199.5
2025.05.28 23:39:18 4: https://ws.openapi.husqvarna.dev:443/v1: HTTP response code 101
2025.05.28 23:39:18 3: HusqvarnaMower device opened
2025.05.28 23:39:18 4: AutomowerConnect HusqvarnaMower wsRead: received websocket data: >{"ready":true,"connectionId":"LTFVAePTDoECESw="}<
2025.05.28 23:46:32 4: AutomowerConnect HusqvarnaMower wsRead: received websocket data: >{"id":"0d7886e3-b7b9-4f5e-a89c-629cbf72953b","type":"battery-event-v2","attributes":{"battery":{"batteryPercent":100}}}<
2025.05.28 23:46:32 4: AutomowerConnect HusqvarnaMower wsRead: received websocket data: >{"id":"0d7886e3-b7b9-4f5e-a89c-629cbf72953b","type":"position-event-v2","attributes":{"position":{"latitude":49.38307,"longitude":8.66602}}}<
2025.05.28 23:46:32 4: AutomowerConnect HusqvarnaMower wsRead: received websocket data: >{"id":"0d7886e3-b7b9-4f5e-a89c-629cbf72953b","type":"mower-event-v2","attributes":{"mower":{"mode":"MAIN_AREA","activity":"PARKED_IN_CS","state":"RESTRICTED","errorCode":0}}}<
In den Readings wird mir allerdings eine Aktualisierung bei den Koordinaten von zuletzt 2024 angezeigt.
Zitat von: stobor am 29 Mai 2025, 05:53:16In den Readings wird mir allerdings eine Aktualisierung bei den Koordinaten von zuletzt 2024 angezeigt.
Im Modul werden keine Positionsreadings erzeugt. Vermutlich verwendest Du userReadings, bei denen müsstest Du die Trigger anpassen, da die Events eine geänderte Bezeichnung haben.
Zitat von: R3Pi am 23 Mai 2025, 11:34:50Dann habe ich das Modul mal mit dem Editor vom RPI geöffnet und versucht zu kompilieren. Da dann der Hinweis, dass das Modul GPUtils fehle, welches nur mit Python => V3.4
Das im Modul verwendete GPUtils.pm hat nichts mit dem hier: https://gputils.sourceforge.io/ zu tun.
GPUtils.pm ist ein Hilfsmodul. Es unterstützt die FHEM-Modul Entwicklung im eigenen Package.
GPUtils.pm ist Bestandteil von FHEM. Wenn das Modul fehlt, dann wurde FHEM nicht richtig installiert oder ist kaputt gegangen.
Für das Modul AutomowerConnect sind keine zusätzlichen Module zu installieren, wenn das neueste FHEM Debian Paket Grundlage für die Installation ist, siehe https://debian.fhem.de/
Wenn FHEM in Ordnung ist, dann funktioniert auch AutomowerConnect.
Zitat von: R3Pi am 23 Mai 2025, 11:34:50Jedoch gibt es diese nicht für mein Betriebssystem (Rasbpian Buster).
Update auf Bookworm?
Zitat von: Ellert am 29 Mai 2025, 18:28:40Zitat von: stobor am 29 Mai 2025, 05:53:16In den Readings wird mir allerdings eine Aktualisierung bei den Koordinaten von zuletzt 2024 angezeigt.
Im Modul werden keine Positionsreadings erzeugt. Vermutlich verwendest Du userReadings, bei denen müsstest Du die Trigger anpassen, da die Events eine geänderte Bezeichnung haben.
Oh, stimmt anscheinend:
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}}
Das wurde mir wohl so schon einmal als Tipp gegeben. Aber was muss da angepasst werden?
Zitat von: stobor am 30 Mai 2025, 19:06:23Aber was muss da angepasst werden?
Der Trigger muss angepasst werden, siehe Commandref userReadings. Im Eventmonitor sieht man die Events und kann dort den Trigger für ein
notify erzeugen. Dieser Trigger sollte funktionieren.
Ich habe den Event-Monitor nun mal mitlaufen lassen:
2025-06-03 15:41:19 AutomowerConnect HusqvarnaMower batteryPercent: 67
2025-06-03 15:41:19 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 15:41:19
2025-06-03 15:41:19 AutomowerConnect HusqvarnaMower status_TimestampDiff: 710
2025-06-03 15:41:19 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 15:41:19 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 15:55:19 AutomowerConnect HusqvarnaMower batteryPercent: 90
2025-06-03 15:55:19 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 15:55:19
2025-06-03 15:55:19 AutomowerConnect HusqvarnaMower status_TimestampDiff: 840
2025-06-03 15:55:19 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 15:55:19 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 15:55:29 AutomowerConnect HusqvarnaMower batteryPercent: 91
2025-06-03 15:55:29 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 15:55:29
2025-06-03 15:55:29 AutomowerConnect HusqvarnaMower status_TimestampDiff: 10
2025-06-03 15:55:29 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 16:09:29 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 16:09:29
2025-06-03 16:09:29 AutomowerConnect HusqvarnaMower status_TimestampDiff: 840
2025-06-03 16:09:29 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 16:09:29 AutomowerConnect HusqvarnaMower batteryPercent: 100
2025-06-03 16:09:29 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 16:13:33 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 16:13:32
2025-06-03 16:13:33 AutomowerConnect HusqvarnaMower status_TimestampDiff: 243
2025-06-03 16:13:33 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 16:13:33 AutomowerConnect HusqvarnaMower mower_activity: LEAVING
2025-06-03 16:13:33 AutomowerConnect HusqvarnaMower mower_wsEvent: mower-event-v2
2025-06-03 16:16:17 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 16:16:17
2025-06-03 16:16:17 AutomowerConnect HusqvarnaMower status_TimestampDiff: 165
2025-06-03 16:16:17 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 16:16:17 AutomowerConnect HusqvarnaMower mower_activity: MOWING
2025-06-03 16:16:17 AutomowerConnect HusqvarnaMower mower_wsEvent: mower-event-v2
2025-06-03 16:16:17 AutomowerConnect HusqvarnaMower batteryPercent: 99
2025-06-03 16:16:17 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 16:30:19 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 16:30:19
2025-06-03 16:30:19 AutomowerConnect HusqvarnaMower status_TimestampDiff: 842
2025-06-03 16:30:19 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 16:30:19 AutomowerConnect HusqvarnaMower batteryPercent: 93
2025-06-03 16:30:19 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 16:44:18 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 16:44:18
2025-06-03 16:44:18 AutomowerConnect HusqvarnaMower status_TimestampDiff: 839
2025-06-03 16:44:18 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 16:44:18 AutomowerConnect HusqvarnaMower batteryPercent: 88
2025-06-03 16:44:18 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 16:58:19 AutomowerConnect HusqvarnaMower batteryPercent: 83
2025-06-03 16:58:19 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 16:58:19
2025-06-03 16:58:19 AutomowerConnect HusqvarnaMower status_TimestampDiff: 841
2025-06-03 16:58:19 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 16:58:19 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:00:36 AutomowerConnect HusqvarnaMower mower_activity: GOING_HOME
2025-06-03 17:00:36 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:00:36
2025-06-03 17:00:36 AutomowerConnect HusqvarnaMower status_TimestampDiff: 138
2025-06-03 17:00:36 AutomowerConnect HusqvarnaMower mower_wsEvent: mower-event-v2
2025-06-03 17:00:36 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:00:36 AutomowerConnect HusqvarnaMower batteryPercent: 82
2025-06-03 17:00:36 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 17:01:08 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:01:08
2025-06-03 17:01:08 AutomowerConnect HusqvarnaMower status_TimestampDiff: 32
2025-06-03 17:01:08 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:01:38 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:01:38
2025-06-03 17:01:38 AutomowerConnect HusqvarnaMower status_TimestampDiff: 30
2025-06-03 17:01:38 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:02:08 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:02:08
2025-06-03 17:02:08 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:02:38 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:02:38
2025-06-03 17:02:38 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:03:08 AutomowerConnect HusqvarnaMower batteryPercent: 81
2025-06-03 17:03:08 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:03:08
2025-06-03 17:03:08 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 17:03:08 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:03:38 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:03:38
2025-06-03 17:03:38 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:04:08 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:04:08
2025-06-03 17:04:08 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:04:38 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:04:38
2025-06-03 17:04:38 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:05:08 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:05:08
2025-06-03 17:05:08 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:05:38 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:05:38
2025-06-03 17:05:38 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:06:08 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:06:08
2025-06-03 17:06:08 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:06:38 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:06:38
2025-06-03 17:06:38 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:07:08 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:07:08
2025-06-03 17:07:08 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:07:38 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:07:38
2025-06-03 17:07:38 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:07:58 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:07:58
2025-06-03 17:07:58 AutomowerConnect HusqvarnaMower status_TimestampDiff: 20
2025-06-03 17:07:58 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:09:07 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:09:07
2025-06-03 17:09:07 AutomowerConnect HusqvarnaMower status_TimestampDiff: 69
2025-06-03 17:09:07 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:09:07 AutomowerConnect HusqvarnaMower mower_activity: PARKED_IN_CS
2025-06-03 17:09:07 AutomowerConnect HusqvarnaMower mower_state: RESTRICTED
2025-06-03 17:09:07 AutomowerConnect HusqvarnaMower mower_wsEvent: mower-event-v2
2025-06-03 17:12:49 AutomowerConnect HusqvarnaMower CONNECTED
2025-06-03 17:23:07 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:23:07
2025-06-03 17:23:07 AutomowerConnect HusqvarnaMower status_TimestampDiff: 841
2025-06-03 17:23:07 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:23:07 AutomowerConnect HusqvarnaMower batteryPercent: 97
2025-06-03 17:23:07 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 17:23:53 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:23:53
2025-06-03 17:23:53 AutomowerConnect HusqvarnaMower status_TimestampDiff: 46
2025-06-03 17:23:53 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:23:53 AutomowerConnect HusqvarnaMower batteryPercent: 100
2025-06-03 17:23:53 AutomowerConnect HusqvarnaMower mower_wsEvent: battery-event-v2
2025-06-03 17:37:57 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:37:57
2025-06-03 17:37:57 AutomowerConnect HusqvarnaMower status_TimestampDiff: 844
2025-06-03 17:37:57 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 17:51:57 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 17:51:57
2025-06-03 17:51:57 AutomowerConnect HusqvarnaMower status_TimestampDiff: 840
2025-06-03 17:51:57 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 18:05:57 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 18:05:57
2025-06-03 18:05:57 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 18:19:57 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 18:19:57
2025-06-03 18:19:57 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 18:33:57 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 18:33:57
2025-06-03 18:33:57 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 18:47:57 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 18:47:57
2025-06-03 18:47:57 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 19:01:57 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 19:01:57
2025-06-03 19:01:57 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 19:11:21 AutomowerConnect HusqvarnaMower CONNECTED
2025-06-03 19:15:57 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 19:15:57
2025-06-03 19:15:57 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
2025-06-03 19:29:57 AutomowerConnect HusqvarnaMower status_Timestamp: 2025-06-03 19:29:57
2025-06-03 19:29:57 AutomowerConnect HusqvarnaMower mower_wsEvent: position-event-v2
Ich kann leider nirgendwo die konkreten Positionsdaten sehen.
Wenn ich aber Teile aus dem erzeugten Notification kopiere, läuft es wieder:
lastLatitude:mower_wsEvent:.position-event-v2 {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{latitude}},
lastLongitude:mower_wsEvent:.position-event-v2 {$defs{$name}->{helper}{mower}{attributes}{positions}[0]{longitude}}
Danke :)
Hallo, ich habe von ein paar Tagen das Modul installiert und konfiguriert.
Die Übermittlung von Daten vom und zum Mähroboter funktioniert.
Aber die Einbindung der Bibliothek hull.js funktioniert nicht (mehr):
. wget https://raw.githubusercontent.com/AndriiHeonia/hull/master/dist/hull.js liefert "404: Not found"
. unter https://github.com/AndriiHeonia/hull kann man lesen:
.. This repository was archived by the owner on Feb 8, 2025. It is now read-only.
.. NOTE: This library is unmaintained and deprecated.
Der Code dort unter src, also hull.js, grid.js, format.js funktioniert nicht im Browser, weil er 'require'-Statements enthält.
[Ich hatte https://github.com/andriiheonia/hull/blob/master/src/hull.js nach ./www.automowerconnect/ kopiert,
dann erhalte ich folgenden Fehler in fhem:
hull.js line 5:
Uncaught ReferenceError: require is not defined
]
@Ellert: Wenn du eine andere Implementierung von hull.js kennst oder findest und einbinden willst, teste ich es gerne.
@All: kann mir jemand die alte (im Browser lauffähige) Version von hull.js bereitstellen?
Danke, Ulrich
Die URL wird nicht mehr genutzt (get <name> InternalData), bitte #295 beachten.
Zitat von: Nobbynews am 29 Mai 2025, 19:17:58Zitat von: R3Pi am 23 Mai 2025, 11:34:50Jedoch gibt es diese nicht für mein Betriebssystem (Rasbpian Buster).
Update auf Bookworm?
Zitat von: Ellert am 29 Mai 2025, 19:06:59Zitat von: R3Pi am 23 Mai 2025, 11:34:50Dann habe ich das Modul mal mit dem Editor vom RPI geöffnet und versucht zu kompilieren. Da dann der Hinweis, dass das Modul GPUtils fehle, welches nur mit Python => V3.4
Das im Modul verwendete GPUtils.pm hat nichts mit dem hier: https://gputils.sourceforge.io/ zu tun.
GPUtils.pm ist ein Hilfsmodul. Es unterstützt die FHEM-Modul Entwicklung im eigenen Package.
GPUtils.pm ist Bestandteil von FHEM. Wenn das Modul fehlt, dann wurde FHEM nicht richtig installiert oder ist kaputt gegangen.
Für das Modul AutomowerConnect sind keine zusätzlichen Module zu installieren, wenn das neueste FHEM Debian Paket Grundlage für die Installation ist, siehe https://debian.fhem.de/
Wenn FHEM in Ordnung ist, dann funktioniert auch AutomowerConnect.
Habe ein Komplett neues System mit Bookworm und einem jungfräulichem Fhem aufgesetzt.
Dann habe ich direkt versucht das Modul anzulegen und da stand wieder, dass das Modul nicht geladen werden konnte.
Hab dann ins Logfile geschaut und sah diese Meldungen:
2025.06.10 10:41:32 1: reload: Error:Modul 74_AutomowerConnect deactivated:
Can't locate DateTime.pm in @INC (you may need to install the DateTime module) (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.36.0 /usr/local/share/perl/5.36.0 /usr/lib/x86_64-linux-gnu/perl5/5.36 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.36 /usr/share/perl/5.36 /usr/local/lib/site_perl ./FHEM/lib) at lib/FHEM/Devices/AMConnect/Common.pm line 37.
BEGIN failed--compilation aborted at lib/FHEM/Devices/AMConnect/Common.pm line 37.
Compilation failed in require at ./FHEM/74_AutomowerConnect.pm line 42.
2025.06.10 10:41:32 0: Can't locate DateTime.pm in @INC (you may need to install the DateTime module) (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.36.0 /usr/local/share/perl/5.36.0 /usr/lib/x86_64-linux-gnu/perl5/5.36 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.36 /usr/share/perl/5.36 /usr/local/lib/site_perl ./FHEM/lib) at lib/FHEM/Devices/AMConnect/Common.pm line 37.
BEGIN failed--compilation aborted at lib/FHEM/Devices/AMConnect/Common.pm line 37.
Compilation failed in require at ./FHEM/74_AutomowerConnect.pm line 42.
Wass kann jetzt noch sein? :'(
Zitat von: Ellert am 10 Juni 2025, 11:31:07Im Logeintrag steht's doch:
Zitat von: R3Pi am 10 Juni 2025, 10:50:46install the DateTime module
Tja, wer lesen kann ist klar im Vorteil. ::)
Danke
Hallo Ellert,
prima Modul, danke dafür. Es fehlt mE für den Fehlercode 2 der Text "No loop signal".
Kann es es an meiner Installation liegen, oder gibt es die 2 in der Liste tatsächlich nicht?
Vielen Dank vorab.
VG Achim
Hab's korrigiert und hochgeladen, ab morgen im Update.
Danke! Noch eine Kleinigkeit, wenn ich das Device öffne, sind deutsche Laute wie "ß" und "ü" nicht richtig dargestellt. "Außen" wird z.B. "AuÃ�en", siehe anliegendes Foto.
Hallo zusammen,
ich wollte heute meinen neuen Mäher anbinden, bekomme aber bei einem
define RoboMaeher AutomowerConnect 0..-...-...-...-...
im Log folgende Fehler:
2025.07.17 18:54:25 1: reload: Error:Modul 74_AutomowerConnect deactivated:
Attempt to reload FHEM/Devices/AMConnect/Common.pm aborted.
Compilation failed in require at ./FHEM/74_AutomowerConnect.pm line 42.
2025.07.17 18:54:25 0: Attempt to reload FHEM/Devices/AMConnect/Common.pm aborted.
Compilation failed in require at ./FHEM/74_AutomowerConnect.pm line 42.
fhem habe ich zuvor noch auf die neueste Version aktualisiert und neu gestartet. Die Debian Pakete libreadonly-perl und libdatetime-perl sind installiert.
Hat jemand einen Tipp für die Fehlersuche?
Viele Grüße,
spi
Update 18.07.25:
Ich habe in der 74_AutomomowerConnect.pm die Zeile 42 geändert von
require FHEM::Devices::AMConnect::Common;
nach
require lib::FHEM::Devices::AMConnect::Common;
und ich konnte den Mäher anlegen.
Meine 74_AutomomowerConnect.pm zeigt die Version
$Id: 74_AutomowerConnect.pm 29881 2025-04-20 12:17:00Z Ellert $
Hat sich hier irgend etwas an der Verzeichnisstruktur geändert? Common.pm liegt bei mir unter
lib/FHEM/Devices/AMConnect/Common.pm
Die FHEM Perlbibliotheken sollten automatisch im Verzeichnis lib gefunden werden.
Ein Update und Reload einzelner Module kann zu inkonsistenten Zeigern führen.
Die Verzeichnisstruktur hat sich nicht geändert.
Zitat von: Ellert am 19 Juli 2025, 19:37:13Die FHEM Perlbibliotheken sollten automatisch im Verzeichnis lib gefunden werden.
Ein Update und Reload einzelner Module kann zu inkonsistenten Zeigern führen.
Die Verzeichnisstruktur hat sich nicht geändert.
Davon bin ich auch ausgegangen, aber das ist offenbar bei mir nicht der Fall. Eine Idee, woran das liegen könnte oder ich der Ursache auf den Grund komme?
Um ein generelles Problem auszuschließen, habe ich unter sonstiges (https://forum.fhem.de/index.php?topic=142103.0) parallel gepostet.