A ritmo de conga (14)

Esta creo que por fin será la última entrada en una serie que se ha prolongado muchísimo más de lo que esperaba. En esta hablaré de los últimos comandos que quedan por analizar.

En primer lugar está el comando 143. Este comando es el que se emite cuando se pulsa una especie de diana que hay en la parte superior derecha de la app oficial, y hace que el robot emita un pitido. En el manual no dice para qué sirve, por lo que lo único que se me ocurre es para localizarlo cuando no sabes donde anda. Sin embargo lo veo poco útil, pues si está en marcha lo escucharás perfectamente, y si está en pausa, al cabo de un minuto más o menos se apagará y dejará de responder a los comandos enviados por WiFi.

Por otro lado, ya he descubierto para qué sirve el comando 400, y no es para indicar que se ha abierto la app. Resulta que, al contrario de lo que pensaba, es la propia aspiradora la que recuerda las tareas cuando la programamos para que aspire tal día a la semana a tal hora. Así, si por ejemplo tenemos dos tareas programadas, una para que limpie de lunes a viernes a las 19:00 horas, y otra para que limpie sábados y domingos a las 16:30 horas, cuando emitimos el comando 400 nos devolverá esto:

{
  "version":"1.0",
  "control":{
    "targetId":"yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
    "targetType":"3",
    "broadcast":"0"
  },
  "value":{
    "transitCmd":"401",
    "maxRecord":"15",
    "result":"0",
    "orders":[
      {
        "sign":"1",
        "orderIds":"1,2,3,4,5",
        "valid":"1",
        "hour":"19",
        "minute":"0",
        "mode":"11",
        "fan":"1",
        "waterTank":"255"
      },{
        "sign":"2",
        "orderIds":"0,6",
        "valid":"1",
        "hour":"16",
        "minute":"30",
        "mode":"11",
        "fan":"2",
        "waterTank":"255"
      }
    ]
  }
}

En orders es donde viene toda la información clave: es una lista con tantos diccionarios como programaciones haya. En ellos, el campo sign es el identificador de cada programa. En orderIds vienen los días de la semana en los que se activará, siendo 0 el domingo, 1 el lunes, etc. El campo valid vale 1 si el programa está activo, y 0 si está desactivado. Los campos hour y minute especifican, como cabe suponer, la hora a la que se quiere que comience. Por último, los campos mode, fan y watertank indican el modo de limpieza, la potencia del ventilador y el modo de fregado que se quieren utilizar para ese programa concreto.

El siguiente comando importante es el 402, que permite añadir un nuevo programa a la lista o modificar uno ya existente. El formato es el siguiente:

{
  "cmd":0,
  "control":{
    "authCode":"xxxxxx",
    "deviceIp":"192.168.3.56",
    "devicePort":"8888",
    "targetId":"yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
    "targetType":"3"
  },
  "seq":0,
  "value": {
    "orders":[
      {
        "fan":"3",
        "hour":"19",
        "minute":"30",
        "mode":"11",
        "orderIds":"2,0,6,5,4,3,1",
        "sign":"1",
        "valid":"1",
        "waterTank":"255"
      }
    ],
    "transitCmd":"402"
  }
}\n

Vemos que en el campo orders van los valores del programa que queremos añadir o modificar (lo que se sabe gracias al campo sign.

Por último, el comando 404 permite borrar un programa. Su formato es el siguiente:

{
  "cmd":0,
  "control":{
    "authCode":"xxxxxx",
    "deviceIp":"192.168.3.56",
    "devicePort":"8888",
    "targetId":"yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
    "targetType":"3"
  },
  "seq":0,
  "value":{
    "orderIds":"3,6",
    "signs":"2",
    "transitCmd":"404"
  }
}\n

El formato es aún más sencillo: junto con el comando y el campo signs, que indica qué programa se quiere borrar, se incluye el campo orderIds con los días del programa a borrar. Este campo tiene que coincidir con lo que contenga en ese momento el campo del mismo nombre del programa a borrar. No he probado qué ocurre si contiene menos o más valores.

Un ultimo detalle curioso es que hace un par de días actualicé el firmware de la WiFi, y curiosamente el contenido del tercer entero de las cabeceras enviadas por el servidor cambió de 0x01090000 a 0x01F20000. Lo mismo para el PONG de respuesta a un PING, que pasó de 0x01080001 a 0x01F10001. Sin embargo, si utilizamos los valores viejos todo sigue funcionando exactamente igual, lo que es curioso.

CC BY-SA 4.0 A ritmo de conga (14) por A cuadros está licenciado bajo una Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.

7 comentarios en “A ritmo de conga (14)

  1. Hola

    Muy interesantes tus descubimientos.

    Te cuento mi «problema» estoy enredando con temas de domotica con Home Assistant en mi casa, y tengo una Cecotec Conga 3090. En general bastante contento con ella, pero no hay narices a integrarla en Home Assistant sin pasar por pelotas por Google / amazon y luego por la nube privada de Cecotec. Quienes ya han demostrado en el pasado que cuand sacan un producto nuevo se olvidan de los anteriores. Hasta el punto que el servidor de actualizaciones del Cecotec 3090 ya no esta accesible.

    Podrias echarnos una mano? no tendras por ahi el ramdisk para destriparlo y ganar acceso de root al linux integrado?

    Gracias

    1. Hola:

      Me temo que la Conga 3090 es radicalmente diferente a la mía. De hecho, la mía tiene toda la pinta de llevar un microcontrolador de 8/16 bits más un ESP8266 para la WiFi, mientras que la tuya parece llevar un Linux integrado, o eso comentan en este artículo donde hackearon una https://christiangil.dev/2020/01/hack-your-vacuum/. Lo único que puedo recomendarte es que intentes aplicar lo que cuento para intentar meterte, o bien incluso puedes intentar echar un vistazo dentro a ver si hay pines para un puerto serie (puedes encontrar ideas para acceder por ahí en esta otra entrada de mi blog: https://blog.rastersoft.com/?p=1471 )

      Pero si consigues algo, no dudes en comentarlo por aquí 😉

  2. Muchísimas gracias por haberme amenizado la tarde, me lo he pasado bomba leyéndote (no obstante tendré que releerte nuevamente para ver si puedo hacer algo parecido con la 3090 y luego ver si se pudiera integrar en Home Assistant)

    Un saludo

    Chimo

    1. Poco te puedo ayudar, pues la tuya es completamente diferente. Pero habla con Marcos Martinez, el de ahí arriba, que tiene tu mismo modelo. A lo mejor entre los dos, entre uno que le da y otro que le mete, conseguís más.

      (Y, por supuesto, no dejes de comentar por aquí 😉 )

  3. Pues no se si funcionará con esa. Sí debería funcionar con la 1590, porque es idéntica a la 1490 (la diferencia es que viene con accesorios, pero el robot es el mismo).

  4. Enhorabuena por este pedazo de proyecto, andaba buscando como modificar los cacharros que tengo por aqui que no me hacen gracia que dependan de un servidor especifico y no tenga yo el 100% de control sobre ellos como enchufes, bombillas, interruptores.. y la conga 1990 que compramos el otro dia y llegué a tu blog, desconozco si funcionará tu proyecto con mi aspiradora pero al menos voy a intentarlo, si no siempre me quedará seguir los pasos que hiciste con la tuya que los has explicado de puta madre, para el resto de cacharros tengo que verlo tambien jejeje
    Un saludo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *