Did you add it as a new unit in homey?
Great! Have been waiting for this since i got my A1600 RTK last year, but have switched to a O1200 Lidar pro now. But quick question regarding the zone settings. In the app it says “pick the zone to edit… 1-3” i have 8 sones, how do i pick the right zone?
Hey
Yeah i know its limited to 3 zones, it will be fixed in the next update. Then zones will be automatically listed in Homey from how many you have in the Ecovacs app.
Im waiting to implement it because i also need to adjust the warnings correctly.
Next update will be out soon
Update is alive and a fix for zones are now working
Hi,
Thank you very much for all your work. I have a G1 goat but it seems the app is not starting the mower. Everything else is correct from the info from the mower but cannot start the mower. Is any way I can troubleshoot or look for errors?
You can create a diagnosis report, first do your commands like start the mower etc, then send it.
PM me your ID number and i will have a look
Keep in mind that if you are using the Animal protection or the rain alarm is activated you will not be able to start the mower. Adjust the time in the device settings if so.
I have fixed users who are using the app outside EU regions to be connected to the right servers to use start/stop commands that did not sync to mower.
Older GOATS are in v 1.3.7 working with all functions and controls. (Confirmed)
Note: Some functions can be limited to older mower. Like angel cut, zones etc.
New in v 1.4.0
The app-settings page is now containing more information about your mowers, you also got a timeline/activity monitor.
I have set up a dashboard for viewing. Here is the option to get mower into the dashboard on homey. I have also added live map, this works best on A3000 rtk which has a different way of building the map.
On other RTK LIDAR mowers you currently only get circles with zones and live mowers on the display. I have tried many ways without success. So this is work in progress.
Support for the latest A3000 mower has now been added.
Someone on the self hosted Homey environment where the app crashes must make changes to their server, this is not an app error. The app is built with Python and requires access to certain folders. The app stores a lot on disk to function optimally.
Follow guide below: (for the QNAP NAS, noe confirmed)
The Exit Code 126 paired with Permission denied on an executable file (/app/.venv/bin/python) means the system found the file, but it is explicitly being blocked from running it.
Here are the most likely culprits on a self-hosted QNAP NAS and how to fix them, ordered from most to least common:
1. The noexec Mount Issue (Most Likely)
QNAP heavily secures its shared folders. By default, many QNAP host directories are mounted with a noexec (no execute) flag to prevent malicious scripts from running.
-
The Problem: If you are using a bind mount to map a directory from your QNAP host directly into the container’s /app folder, the noexec restriction carries over. Docker literally isn’t allowed to execute the python binary inside that mapped folder.
-
The Fix: * Option A (Best Practice): Do not map the virtual environment (.venv) or the application binaries to a host folder. Only map folders that require persistent data (like config files, databases, or media). Let the application code and Python environment live natively inside the container’s isolated filesystem.
-
Option B: If you must mount the whole directory, you will need to move your application folder to a volume or share on the QNAP that does not have the noexec restriction, or adjust your QNAP’s fstab to remove noexec (though QNAP OS often overrides this on reboot).
2. UID / GID Mismatch (Ownership Issues)
Docker containers often run their internal processes as a restricted user (e.g., appuser), but the files you placed on your QNAP NAS might be owned by the NAS admin or a specific user account.
-
The Problem: The user inside the Docker container does not have permission to read or execute the Python binary owned by the QNAP host user.
-
The Fix: * Check if the Docker image supports passing PUID (Process User ID) and PGID (Process Group ID) as environment variables. If so, set them to match your QNAP user’s ID.
-
You can find your QNAP user’s ID by SSHing into the NAS and typing id your_username. Add those to your docker-compose.yml or Container Station environment variables.
3. Missing Execute Permissions (chmod)
If you manually copied the application files or the virtual environment over to the QNAP NAS (e.g., via SMB/CIFS, FTP, or unzipping a file), the executable flags on the files may have been stripped during the transfer.
-
The Problem: The python binary literally lacks the +x (execute) permission.
-
The Fix: SSH into your QNAP NAS, navigate to the directory where the app is stored, and fix the permissions:
chmod +x /path/to/your/app/.venv/bin/python
(Note: Sharing virtual environments across different operating systems is generally a bad idea. If you copied a .venv folder from a Windows/Mac machine to the NAS, it will fail. The container needs to build its own .venv.)
4. Architecture Mismatch (ARM vs. x86)
QNAP makes NAS devices with both Intel/AMD (x86_64) and ARM (aarch64) processors.
-
The Problem: If you pulled an amd64 Docker image but your QNAP has an ARM processor (like many entry-level models), the binary cannot execute. While this usually throws an “Exec format error” (Exit Code 127), some virtualization layers will swallow the error and report it as a permission denial (Exit Code 126).
-
The Fix: Double-check your NAS CPU architecture. Ensure you are pulling the correct Docker image tag for your hardware (e.g., latest-arm64 or specifically targeting an image built for ARM).
Hey Sverre, great app! I’m on an older Homey Pro though, so I can’t install it. Any chance you’d share the command/protocol details you used for RTK models? Even just the basics (start/stop/dock/zone commands) would help me (and maybe others) get this working on SDK v2. Totally understand if not — just thought I’d ask since your app is the only thing I’ve found that actually works with this mower. Thanks either way!
@Rainer_Parksepp its not one global command unfortunately. Some mowers use the cleanV2 some use the clean and some of the newer models are redesign totally to use cleanMower. I had to make multiple profiles to match them all.
For the main part it use a command structure called clean_V2 or clean via NGIoT REST endpoint. Older models might use simpler string commands.
Start/Stop/Pause: For clean_V2 compatible devices, actions like start, stop, pause, and resume are often passed as an act parameter (e.g., “act”: “start”, “act”: “pause”) alongside a content payload that defines the type of clean (e.g., “act”:“start”,“content”:{“type”:“auto”).
Docking: Sending the robot to the dock is often referred to as a charge command in the API e.g., sending an action to go to the charging position, sometimes seen as “act”: “go” under a charge command topic.
I did a lot of revers engineering to sniff out the different command sets. And build up to do MQTT connect to the Ecovacs cloud.
