Congatudo is a cloud replacement for vacuum robots enabling local-only operation. It is not a custom firmware. That means that it cannot change anything about how the robot operates.
Congatudo provides control over your vacuum robot via a responsive webinterface that works on all of your devices. It can be used on phones, tablets as well as your desktop computer.
Based on Valetudo. Please, consider donate to Valetudo project.
Brand | Serie | Models tested and supported |
---|---|---|
Cecotec | Conga | 3XXX (except for 3890), 4XXX (except for 4690), 5090 and 5490 |
These pages guide you through the installation steps for Cecotec Conga robots. Support is still somewhat experimental, everything in this guide is under your responsability.
- The default settings here will be for running Congatudo on the robot itself, standalone installation.
- It could run in a server using Docker, docker installation.
- If you want to develop as well, check out the Local Development guide.
Any of the ways to get Valetudo running for the robot needs root access to your Conga, so here it will be explained too Robot Setup.
Please give it a try and file any issues that you encounter there.
- Summary
It is needed for the robot to know wich server it has to attend so then, it should be connected to your local network and point it to the Congatudo server. This is the purpose of the following steps
First, you need to have your robot connected througth your wifi to get shell access. If you already have it, you can jumpthis section, otherwise, you can use the agnoc tool form your computer to establish the connection.
$ npm install -g @agnoc/cli
$ agnoc wlan <wifissid> <pass>
-
Check that you have SSH installed and working in your computer (Linux/MacOS by default, use Putty in Windows)
-
You have to find out the IP address of your Conga (see this guide on how to)
-
Open an ssh connection to your Conga (change the 192.168.x.x for your Conga's IP address):
PC:~ $ ssh root@192.168.x.x
and when you get the login prompt, type
root
and then the password depending on your model:- for 3090:
3irobotics
[^1] - for 3x90, 4090 & 5490:
@3I#sc$RD%xm^2S&
[^2]
- for 3090:
-
Now, it would be a good practice to:
- Change the password (to something non-default and secure π)
- Add certificates (ssh key-pair) to access via ssh without passwords
Open a ssh terminal to your robot and edit the hosts file, your server: Server IP for standalone installation: 127.0.0.1
$ ssh root@<conga ip>
$> echo "<your server ip> cecotec.das.3irobotix.net cecotec.download.3irobotix.net cecotec.log.3irobotix.net cecotec.ota.3irobotix.net eu.das.3irobotics.net eu.log.3irobotics.net eu.ota.3irobotics.net cecotec-das.3irobotix.net cecotec-log.3irobotix.net cecotec-upgrade.3irobotix.net cecotec-download.3irobotix.net" >> /etc/hosts
$> /etc/init.d/valetudo enable
$> reboot
Compile Congatudo under the path ./build/armv7/valetudo
$ git clone https://github.com/congatudo/Congatudo.git
$ cd Congatudo
$ npm install
$ npm ci
$ npm run build_openapi_schema # to get access to a swagger api
$ npm run build --workspace=frontend # to get access to the under development new fronted
$ cd backend
$ npm run build
In your machine, get a valid valetudo config file in from: https://raw.githubusercontent.com/congatudo/Congatudo/master/backend/lib/res/default_config.json
Once you have already downloaded it and named as valetudo_config.json, edit the implementation of the Congatudo robot to CecotecCongaRobot and teh embebed property aswell:
{
"embedded": true,
"robot": {
"implementation": "CecotecCongaRobot",
...
}
After that, you are able to copy the binary to your conga
$ ssh root@<robot-ip>
$> mkdir /mnt/UDISK/valetudo
$> exit
$ scp ./build/armv7/valetudo root@<your robot ip>:</mnt/UDISK/valetudo/valetudo>
$ scp ./default_config.json root@<your robot ip>:</mnt/UDISK/valetudo/valetudo_config.json>
ssh root@<your conga ip>
$> vi /etc/init.d/valetudo
add this script:
#!/bin/sh /etc/rc.common
# File: /etc/init.d/valetudo
# Usage help: /etc/init.d/valetudo
# Example: /etc/init.d/valetudo start
START=85
STOP=99
USE_PROCD=1
PROG=/mnt/UDISK/valetudo/valetudo
CONFIG=/mnt/UDISK/valetudo/valetudo_config.json
start_service() {
procd_open_instance
procd_set_param env VALETUDO_CONFIG_PATH=$CONFIG
procd_set_param command $PROG
procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-10} ${respawn_retry:-5}
procd_close_instance
}
shutdown() {
echo shutdown
}
Make the init file executable:
$> chmod +x /etc/init.d/valetudo
$ ssh root@<conga ip>
$> /etc/init.d/valetudo enable
$> reboot
π With theses steps, you may see your Valetudo server running under http://ip-robot
Firstly, get a valid valetudo config file in https://raw.githubusercontent.com/congatudo/Congatudo/master/backend/lib/res/default_config.json
Once you have already downloaded it and named as "valetudo.json", edit the implementation of the Valetudo robot to CecotecCongaRobot and take care about the embebed propety being set as false:
{
"embedded": false,
"robot": {
"implementation": "CecotecCongaRobot",
...
},
"webserver": {
"port": 8080,
...
}
}
Then, you are able to just run the dockerhub image
docker run -p 8080:8080 -p 4010:4010 -p 4030:4030 -p 4050:4050 -v $(pwd)/valetudo.json:/etc/valetudo/config.json --name congatudo ghcr.io/congatudo/Congatudo:alpine-latest
π With theses steps, you may see your Valetudo server running under http://ip-server:8080
The basic service to run congatudo with docker-compose, please download a valid configuration file for congatudo and renamed like valetudo.json from https://raw.githubusercontent.com/congatudo/Congatudo/master/backend/lib/res/default_config.json. edit the implementation of the Valetudo robot to CecotecCongaRobot and take care about the embebed propety being set as false:
{
"embedded": false,
"robot": {
"implementation": "CecotecCongaRobot",
...
},
"webserver": {
"port": 8080,
...
}
}
Once you have this configuration file stored and already setup, add this service to your docker-compose:
version: '3.8'
services:
congatudo:
container_name: congatudo
image: ghcr.io/congatudo/congatudo:alpine-latest
restart: unless-stopped
volumes:
- <path-to-file>/valetudo.json:/etc/valetudo/config.json
ports:
- 80:8080 #Change port 80 to whatever port you want to expose the web GUi
- 4010:4010
- 4030:4030
- 4050:4050
environment:
- TZ=Etc/UTC
- LUID=1000 #Optional
- LGUI=1000 #Optional
Taking care about the path-to-file you need to point to your configuration file (i.e. /home/pi/valetudo.json)
Just follow the read me.
This will remove Congatudo, free the diskspace and re-enable the cloud interface in case of a standalone installation.
ssh root@<robot ip>
$> /etc/init.d/valetudo stop
$> rm /etc/init.d/valetudo /mnt/UDISK/valetudo
$> sed '/cecotec.das.3irobotix.net/d' /etc/hosts
An article to be able to integrate google with congatudo and take advance of the automations Home Assistant provide us Link
In case your Conga robot doesn't have the time and bin fill sensor, you can create virtual ones in Home assistant Link
A Home assistant automation to send the robot to a position (usually near to the bin) once the tank fill sensor reach some threshold Link
A hack to be able to free the voice the conga play by its speaker Link
[Deprecated] A way to get the area and time sensor provide by congatudo available on home asistant Link
- I have Congatudo up and running but any robot is found
Check if hosts file in the robot is already edited.
Ping to a one of the cecotec cloud server instances to check if it reaches the conga ip, i.e.:
ping cecotec.das.3irobotix.net
- I try to run a dockerize Valetudo server in my Raspberry server with Raspbian, but I got an error
Check https://github.com/Koenkk/zigbee2mqtt/issues/7662
- Valetudo doesn't save the map, it is always remapping and it didn't save my segments.
Check the notifications and accept the new map generated
- Congatudo can't initialize and log says:
[2023-03-15T19:42:03.531Z] [WARN] WifiConfigurationCapabilityRouter: Error while handling route "/" {
body: {},
message: "Cannot read properties of null (reading 'toString')"
Check the emebebed property of your configuration file, you may try to run congatudo in a server but embebed option set as true.
This work is licensed under the GNU General Public License v3.0. All media and data files that are not source code are licensed under the Creative Commons Attribution 4.0 BY-SA license.
More information about licenses in Opensource licenses and Creative Commons licenses.
[1]: Model 3090 original password hash $1$ZnE1NgOT$oWafIj8xgsknzdJmRZM9N/
== 3irobotics
[2]: Model 3x90 original password hash $1$trVg0hig$L.xDOM91z4d/.8FZRnr.h1
== @3I#sc$RD%xm^2S&