Externe Integration - Mammotion

Hallo,

Hier ist eine neue externe Integration, die bald im Store verfügbar sein wird, um Ihre Mammotion-Rasenmäher zu verwalten:

ich habe gerade diese Integration installiert und es funktioniert nicht
Ich habe ein zweites Mammotion-Konto erstellt, um Abmeldungen zu vermeiden

Ich füge das Protokoll in die nächste Nachricht ein

[2026-09-29T09:46:08.275Z] [INFO] Starte die Mammotion-Integration...
[2026-09-29T09:46:08.490Z] [INFO] [gladys-sdk] verbunden mit Gladys (http://)
[2026-09-29T10:25:10.406Z] [INFO] onConfigUpdated -> neue Konfiguration empfangen
[2026-09-29T10:25:10.622Z] [INFO] [mammotion] Angemeldet bei der Mammotion Cloud
[2026-09-29T10:25:15.441Z] [INFO] 1 Mähroboter(s) auf dem Mammotion-Konto gefunden
[2026-09-29T10:25:15.452Z] [ERROR] Mammotion-Initialisierung fehlgeschlagen GladysApiError: devices[0].poll_frequency: ungültige Polling-Häufigkeit
    at HttpClient.request (/app/node_modules/@gladysassistant/integration-sdk/lib/http-client.js:49:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
    at async refreshMowers (file:///app/index.js:68:3)
    at async initialize (file:///app/index.js:110:20)
    at async file:///app/index.js:202:3
    at async GladysIntegration._runHandler (/app/node_modules/@gladysassistant/integration-sdk/lib/gladys-integration.js:1590:7)
    at async GladysIntegration._handleMessage (/app/node_modules/@gladysassistant/integration-sdk/lib/gladys-integration.js:1430:9) {
  status: 400,
  code: 'BAD_REQUEST'
}
[2026-09-29T10:25:19.213Z] [INFO] 1 Mähroboter(s) auf dem Mammotion-Konto gefunden
[2026-09-29T10:28:41.138Z] [INFO] onConfigUpdated -> neue Konfiguration empfangen
[2026-09-29T10:28:42.406Z] [INFO] 1 Mähroboter(s) auf dem Mammotion-Konto gefunden
[2026-09-29T10:28:42.415Z] [ERROR] Mammotion-Initialisierung fehlgeschlagen GladysApiError: devices[0].poll_frequency: ungültige Polling-Häufigkeit
    at HttpClient.request (/app/node_modules/@gladysassistant/integration-sdk/lib/http-client.js:49:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
    at async refreshMowers (file:///app/index.js:68:3)
    at async initialize (file:///app/index.js:110:20)
    at async file:///app/index.js:202:3
    at async GladysIntegration._runHandler (/app/node_modules/@gladysassistant/integration-sdk/lib/gladys-integration.js:1590:7)
    at async GladysIntegration._handleMessage (/app/node_modules/@gladysassistant/integration-sdk/lib/gladys-integration.js:1430:9) {
  status: 400,
  code: 'BAD_REQUEST'
}
[2026-09-29T10:28:54.595Z] [INFO] 1 Mähroboter(s) auf dem Mammotion-Konto gefunden
[2026-09-29T10:33:43.443Z] [INFO] 1 Mähroboter(s) auf dem Mammotion-Konto gefunden
[2026-09-29T10:33:43.453Z] [ERROR] Mammotion-Initialisierung fehlgeschlagen GladysApiError: devices[0].poll_frequency: ungültige Polling-Häufigkeit
    at HttpClient.request (/app/node_modules/@gladysassistant/integration-sdk/lib/http-client.js:49:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
    at async refreshMowers (file:///app/index.js:68:3)
    at async initialize (file:///app/index.js:110:20) {
  status: 400,
  code: 'BAD_REQUEST'
}

Das ist ab Version 1.0.1 verfügbar :wink: :

Ursache

  • Gladys akzeptiert nur feste Werte für poll_frequency, in Millisekunden: 1000, 2000, 10000, 15000, 30000 oder 60000. Das habe ich im Quellcode von Gladys überprüft.
  • Die Integration sendete das vom Benutzer eingestellte Intervall in Sekunden (z. B. 60). Gladys antwortete daher mit „400 invalid poll frequency“.
  • Dieser Fehler stoppte jeden Startversuch, daher die wiederholten Fehler in den Logs.

Korrektur

  • src/devices/mower.js: Der Rasenmäher wird jetzt mit 30000 ms an Gladys gesendet, wenn das Intervall unter 60 s liegt, andernfalls 60000 ms.
  • index.js: Da Gladys höchstens alle 60 s abfragt, ignoriert die Integration Anfragen, die vor dem gewählten Intervall eintreffen. Ein Puffer von 5 s gleicht kleine Verzögerungen von Gladys aus.
  • Die Einstellung im Konfigurationsbildschirm bleibt gleich: immer von 30 bis 3600 s, Standardwert 60 s.

petit soucis encore :

LOG

[2026-09-29T16:17:25.356Z] [INFO] Starte die Mammotion-Integration...
[2026-09-29T16:17:25.573Z] [INFO] [gladys-sdk] verbunden mit Gladys (http://172.30.0.1:80)
[2026-09-29T16:17:26.212Z] [INFO] [mammotion] Angemeldet bei der Mammotion Cloud
[2026-09-29T16:17:32.304Z] [INFO] 1 Mähroboter(s) im Mammotion-Konto gefunden
[2026-09-29T16:17:32.415Z] [WARN] Erste Abfrage für Luba-VPMBS8RA fehlgeschlagen: Benutzervorrichtung nicht gebunden
[2026-09-29T16:20:26.253Z] [INFO] 1 Mähroboter(s) im Mammotion-Konto gefunden

Korrektur in der neuen Version 1.0.2 veröffentlicht :wink:

Na toll, das funktioniert nicht: Der Roboter wird zwar erkannt, aber keiner der Zustände funktioniert



Kannst du bitte mit der neuen Version 1.0.4 testen
Falls du immer noch Bugs hast, zögere nicht, die Logs mit anzugeben, die können sehr nützlich sein :wink:

Die Ursache

  • Die Meldung user device not bind kommt von Aliyun, dem alten Cloud von Mammotion.
  • Deine Luba ist zwar im Mammotion-Konto gefunden, aber sie ist nicht mit Aliyun verknüpft. Die Integration las jedoch den Status nur von Aliyun, daher kam kein Wert an.
  • Neue Konten und Firmware nutzen den Mammotion MQTT-Server. Dort sendet die Mähmaschine selbst ihren Status (Batterie, Status, Schnittlänge, Zähler). Es gibt keine Abfrage auf Anfrage.

Die Korrektur

  • Neue Datei src/mammotion/mqtt.js: Sie verbindet sich mit dem Mammotion MQTT-Server, verfolgt jede Mähmaschine und speichert deren letzte Werte.
  • Bei der Erkennung wird eine Mähmaschine, die nicht in Aliyun vorhanden ist, für die Nutzung von MQTT markiert.
  • Wenn Aliyun mit „not bind“ antwortet, wechselt die Integration ebenfalls zu MQTT.
  • Die empfangenen Werte werden sofort an Gladys gesendet, höchstens einmal alle 15 Sekunden pro Mähmaschine.
  • Die Befehle Mähbetrieb und Rückkehr zur Basis laufen nur über die Mammotion-API für diese Mähmaschinen.
  • Lint, Formatierung und Tests sind erfolgreich (52 Tests, davon 6 neue).

Was du wissen solltest

  • Die Werte kommen an, wenn die Mähmaschine sie veröffentlicht, nicht beim Start. Es kann also einige Minuten dauern, bis „Kein aktueller Wert“ angezeigt wird.
  • Deine Luba ist ein älteres Modell. Ich bin mir nicht sicher, ob sie diese Statusmeldungen ohne Anfrage sendet.
  • Falls nichts ankommt, wäre der nächste Schritt, ihre Statusberichte anzufordern und zu decodieren. Das ist jedoch aufwändiger zu programmieren.

Es funktioniert immer noch nicht


Logs:

[2026-09-30T20:00:40.238Z] [INFO] Starte die Mammotion-Integration...
[2026-09-30T20:00:40.439Z] [INFO] [gladys-sdk] Verbunden mit Gladys
[2026-09-30T20:00:40.739Z] [INFO] [mammotion] Angemeldet bei der Mammotion-Cloud
[2026-09-30T20:00:45.731Z] [INFO] 1 Mähroboter gefunden im Mammotion-Konto
[2026-09-30T20:00:46.245Z] [INFO] [mammotion-mqtt] Verbunden mit dem Mammotion-Broker mqtt-eu.mammotion.com
[2026-09-30T20:00:46.304Z] [INFO] [mammotion-mqtt] Verfolge Luba-VPMBS8RA auf dem Mammotion-Broker
[2026-09-30T20:01:16.125Z] [INFO] 1 Mähroboter gefunden im Mammotion-Konto
[2026-10-01T14:35:37.820Z] [INFO] 1 Mähroboter gefunden im Mammotion-Konto
[2026-10-01T14:36:34.624Z] [INFO] onSetValue <- ext:ext-prohand-gladys-mammotion:mower:nNlJJBp0Cxx538To70i6000000:dock = 1
[2026-10-01T14:36:34.626Z] [INFO] [mammotion] Sende "dock" an Luba-VPMBS8RA
[2026-10-01T14:36:44.989Z] [WARN] Aktualisierung nach Befehl fehlgeschlagen für Luba-VPMBS8RA: states[0]: muss einen numerischen "state" oder einen String "text" haben

Es wäre gut, wenn andere Leute das testen könnten, denn ich habe das Gefühl, dass mein Modell (Luba 2) aus März 2025 schon zu alt ist!! @JKBS64

Danke für die Logs
Kannst du bitte mit der neuen Version 1.0.5 testen :slight_smile:

Die Ursache

  • Der Text « Status » des Rasenmähers wurde an Gladys an der falschen Stelle gesendet: in der Form state: { text: "..." }.
  • Gladys erwartet den Text in einem separaten Feld text, wie z. B. text: "...".
  • Gladys lehnt daher die gesamte Übertragung ab, nicht nur diese Zeile. Das ist der Fehler states[0]: must have a numeric "state" or a string "text" in euren Logs.
  • Ergebnis: Kein Wert wird gespeichert. Daher « Kein aktueller Wert » und « Kein gespeicherter Wert » in allen Zeilen.

Was ich geändert habe

  • src/devices/mower.js: Der Status wird jetzt im Feld text gesendet.

Jetzt hat sich der Roboter erfolgreich verbunden und die Informationen nach einer Stunde hochgeladen!


Allerdings tun die 2 Knöpfe leider nichts, und die Infos brauchen sehr lange, um hochgeladen zu werden

Log

[2026-10-01T15:22:16.622Z] [INFO] Starting the Mammotion integration...
[2026-10-01T15:22:16.825Z] [INFO] [gladys-sdk] connected to Gladys (http://172.30.0.1:80)
[2026-10-01T15:22:17.155Z] [INFO] [mammotion] Logged in to the Mammotion cloud
[2026-10-01T15:22:21.985Z] [INFO] 1 mower(s) found on the Mammotion account
[2026-10-01T15:22:22.526Z] [INFO] [mammotion-mqtt] Connected to the Mammotion broker mqtt-eu.mammotion.com
[2026-10-01T15:22:22.581Z] [INFO] [mammotion-mqtt] Following Luba-VPMBS8RA on the Mammotion broker
[2026-10-01T15:22:40.572Z] [INFO] 1 mower(s) found on the Mammotion account
[2026-10-01T16:02:24.996Z] [INFO] onSetValue <- ext:ext-prohand-gladys-mammotion:mower:nNlJJBp0Cxx538To70i6000000:mowing = 1
[2026-10-01T16:02:24.998Z] [INFO] [mammotion] Sending "start" to Luba-VPMBS8RA
[2026-10-01T16:04:09.610Z] [INFO] onSetValue <- ext:ext-prohand-gladys-mammotion:mower:nNlJJBp0Cxx538To70i6000000:dock = 1
[2026-10-01T16:04:09.611Z] [INFO] [mammotion] Sending "dock" to Luba-VPMBS8RA
[2026-10-01T16:06:29.162Z] [INFO] onSetValue <- ext:ext-prohand-gladys-mammotion:mower:nNlJJBp0Cxx538To70i6000000:dock = 1
[2026-10-01T16:06:29.163Z] [INFO] [mammotion] Sending "dock" to Luba-VPMBS8RA

Das wurde in Version 1.0.6 behoben

1. Die Befehle Mähbetrieb / Zur Basis zurück hatten keine Wirkung

  • Ursache: Der Befehl wurde an die falsche Karte des Roboters gesendet. Mit Ausnahme der Luba 1 warten alle Rasenmäher (einschließlich deiner Luba-VP) auf diese Befehle auf ihrer „Navigations“-Karte. Wir haben sie an die Hauptkarte gesendet.
  • Warum keine Fehler in den Logs: Die Cloud akzeptierte den Befehl und leitete ihn weiter, dann ignorierte der Rasenmäher ihn ohne etwas zu sagen.
  • Korrektur: Der Befehl wird an die richtige Karte gesendet, nach derselben Regel wie PyMammotion (die von Home Assistant verwendete Bibliothek).

2. Die Informationen brauchten etwa 1 Stunde, um anzukommen

  • Ursache: Wir warteten darauf, dass der Rasenmäher seinen Zustand von selbst sendet, was er selten tut.
  • Korrektur: Bei jedem Update fragt die Integration den Zustand beim Rasenmäher an, so wie die Mammotion-App es tut. Die Antwort kommt in wenigen Sekunden und Gladys wird für den Zustand, die Batterie und die Schnitthöhe aktualisiert.
  • Die Gesamtmähdauer und die Gesamtstrecke bleiben im alten Rhythmus (sie ändern sich selten).
  • Der Aktualisieren-Button und das Update 10 Sekunden nach einem Befehl führen ebenfalls diese Anfrage aus.

Also das ist nicht aussagekräftig:

  • Der „Zurück zur Basis“-Knopf funktioniert, aber die Mammotion-App trennt sich ständig und verbindet sich wieder
  • Der „Mähen“-Knopf macht nichts, aber die Mammotion-App stürzt ab..
    Die Informationen kommen immer noch nicht hoch
    Ich möchte darauf hinweisen, dass ich tatsächlich 2 verschiedene Mammotion-Konten habe

Ich würde gerne, dass jemand das auf einem anderen Modell testet!

Außerdem, wird es noch weitere Funktionen/Informationen geben?
Denn das Ziel ist es, die Mammotion-App zu ersetzen, wie die externe Integration „Dreame“, die es ermöglicht, nur Gladys zu verwenden, und alle Änderungen, die an Gladys vorgenommen werden, erscheinen sehr schnell in der Dreame-App

Log:

[2026-10-02T13:25:32.777Z] [INFO] Starting the Mammotion integration...
[2026-10-02T13:25:33.065Z] [INFO] [gladys-sdk] connected to Gladys (http://172.30.0.1:80)
[2026-10-02T13:25:33.400Z] [INFO] [mammotion] Logged in to the Mammotion cloud
[2026-10-02T13:25:38.161Z] [INFO] 1 mower(s) found on the Mammotion account
[2026-10-02T13:25:38.796Z] [INFO] [mammotion-mqtt] Connected to the Mammotion broker mqtt-eu.mammotion.com
[2026-10-02T13:25:38.830Z] [INFO] [mammotion-mqtt] Following Luba-VPMBS8RA on the Mammotion broker
[2026-10-02T13:33:35.019Z] [INFO] onSetValue <- ext:ext-prohand-gladys-mammotion:mower:nNlJJBp0Cxx538To70i6000000:dock = 1
[2026-10-02T13:33:35.021Z] [INFO] [mammotion] Sending "dock" to Luba-VPMBS8RA
[2026-10-02T13:33:53.821Z] [WARN] [mammotion] Report request refused for Luba-VPMBS8RA: Device not responding
[2026-10-02T13:37:18.218Z] [INFO] onSetValue <- ext:ext-prohand-gladys-mammotion:mower:nNlJJBp0Cxx538To70i6000000:mowing = 1
[2026-10-02T13:37:18.219Z] [INFO] [mammotion] Sending "start" to Luba-VPMBS8RA

Es wäre tatsächlich nicht schlecht, wenn noch jemand anderes testen würde, aber ich habe trotzdem deinen Prompt an Claude geschickt:

Was passiert ist, laut deinen Logs (ich habe mit PyMammotion, dem von Home Assistant verwendeten Code, verglichen):

  • Keine hochgeladenen Infos: Der Rasenmäher hört den Cloud nur ~10 s nach einer „sync“-Nachricht. Wir haben sie nie gesendet, also ignorierte er unsere Anfragen: das ist das „Device not responding“ im Log.
  • App, die sich ständig abmeldet: Alle 60 s wurde ein Bericht vom Rasenmäher angefordert. Jede Anfrage ersetzt die der App, die dann denkt, der Rasenmäher sei verloren. Außerdem wurde das Mammotion-Cloud-Kontingent (ca. 600 Nachrichten in 12 h) überschritten.
  • Mähvorgang, der die App abstürzen lässt: Es wurde ein einfaches „start“ ohne Route gesendet. Die App bereitet jedoch zuerst eine Route auf der Karte (Zonen, Einstellungen) vor.

Was ich geändert habe:

  • Ein „sync“ wird vor jedem Befehl und jeder Berichtanfrage gesendet.
  • Eine Berichtanfrage wird höchstens alle 5 min gesendet, außerdem direkt nach einem Befehl oder einem Klick auf „Aktualisieren“. Keine Anfrage, wenn der Rasenmäher bereits seine Daten sendet, z. B. wenn die App geöffnet ist.
  • Mähen-Button: Er setzt nur einen pausierten Mähvorgang fort. Wenn kein Vorgang pausiert ist, lehnt Gladys ab (mit einer Nachricht in den Logs) statt die App abstürzen zu lassen. Ein neuer Mähvorgang wird also weiterhin über die App gestartet.
  • Neue Infos:
    • Fortschritt im Status, z. B. „Mähend (45 %)“;
    • verbleibende Mähzeit (Minuten);
    • zuverlässigeres „Laden“;
    • Gesamtzeit und Gesamtstrecke vom Rasenmäher ausgelesen.
  • Klarere Logs: „First data received from …“ wenn die Daten eintreffen, und eine Warnung, wenn der Server das Abonnement ablehnt.

Es steht in Version 1.0.7 zur Verfügung.

Ich gebe zu, dass ich den Sinn dieser Integration nicht mehr sehe, da sie nur Pause/Neustart ausführen kann!
Nicht einmal einen Rasenmäher kann sie starten!
Liegt das an meinem Modell oder ist es die Mammotion-API, die das nicht zulässt?

Du kannst hier mit dem Mähen beginnen:

image

Vielleicht ist der Knopf nicht passend
Hast du die letzte Version, die ich veröffentlicht habe (1.0.7), ausprobiert?

ja !
Und der „mähen“-Button stürzt meine Mammotion-App ab und trennt den Roboter von der Verbindung
Hinweis: Ich habe keinen „aktualisieren“-Button und musste in der Konfiguration die Aktualisierungszeit ändern, die bei 60 stand, und durch 300 ersetzen


Log:

[2026-10-02T14:28:59.403Z] [INFO] Starte die Mammotion-Integration...
[2026-10-02T14:28:59.623Z] [INFO] [gladys-sdk] verbunden mit Gladys (http://172.30.0.1:80)
[2026-10-02T14:28:59.921Z] [INFO] [mammotion] Angemeldet bei der Mammotion-Cloud
[2026-10-02T14:29:05.132Z] [INFO] 1 Rasenmäher gefunden im Mammotion-Konto
[2026-10-02T14:29:05.792Z] [INFO] [mammotion-mqtt] Verbunden mit dem Mammotion-Broker mqtt-eu.mammotion.com
[2026-10-02T14:29:05.826Z] [INFO] [mammotion-mqtt] Verfolge Luba-VPMBS8RA auf dem Mammotion-Broker
[2026-10-02T14:29:05.947Z] [INFO] [mammotion-mqtt] Erste Daten von Luba-VPMBS8RA erhalten (device_protobuf_msg_event)
[2026-10-02T14:30:34.618Z] [INFO] onConfigUpdated -> neue Konfiguration erhalten
[2026-10-02T14:30:36.022Z] [INFO] 1 Rasenmäher gefunden im Mammotion-Konto
[2026-10-02T14:30:38.200Z] [INFO] 1 Rasenmäher gefunden im Mammotion-Konto
[2026-10-02T14:32:39.644Z] [INFO] onSetValue <- ext:ext-prohand-gladys-mammotion:mower:nNlJJBp0Cxx538To70i6000000:mowing = 1
[2026-10-02T14:32:39.644Z] [WARN] Luba-VPMBS8RA: Kein pausierter Job zum Fortsetzen: Starte einen neuen Job in der Mammotion-App
[2026-10-02T14:37:05.631Z] [INFO] 1 Rasenmäher gefunden im Mammotion-Konto

Hallo, ja, ich werde es dieses Wochenende testen, mein Modell ist ein Yuka mini. Ich halte euch auf dem Laufenden.

Danke für das Feedback! In Version 1.0.8:

  • Der Mähen-Button startet jetzt einen echten Mähvorgang, wenn der Rasenmäher bereit ist: Er setzt einen unterbrochenen Mähvorgang fort, andernfalls bereitet er eine Route für alle Zonen der Karte vor (wie Home Assistant) und startet dann;
  • ein abgelehnter Befehl sendet nichts mehr an den Rasenmäher: Das war der Grund, warum die Mammotion-App abstürzte;
  • neuer Aktualisieren-Button auf dem Dashboard (klicke auf „Aktualisieren“ im Entdecken-Tab, um ihn zu erhalten);
  • die verbleibende Zeit wird außerhalb des Mähvorgangs auf 0 gesetzt;
  • empfohlener Intervall: 300 s.

Um eine einzelne Zone auszuwählen, musst du noch die App verwenden. Wenn der Mähvorgang nicht startet, schicke mir die Logs: Sie zeigen die gefundenen Zonen und den Schritt, der blockiert.