RooWifi API 1.1b

The latest version of RooWifi API (1.1) is based on the gateway mode and it’s programmed using Qt Creator cross-platform IDE, which allows developers to use Windows, MAC, GNU/Linux,… Next revisions will have support and the required modifications to be able to develop with Visual Studio, gcc,g++ and Python. You can clone our latest API version from a Github Repository or download directly compressed in a ZIP file.

Please take a look to Developer notes and the reference before using the API.

Downloads and links to Github Repo

RooWifi API Github Repo:

Qt Creator download website:

RooWifi API 1.1b source and header files direct download:

RooWifi API 1.1b Example application:

RooWifi API 1.1b documentation: API11b.pdf

Developer Notes

In roowifi.h comment #define ROOWIFI_DEBUG to disable debug output messages, this define is enabled by default.

If AutoCapture mode is used, when the RooWifi::Sensors is updated, the class generates an AutoCaptureUpdated() SIGNAL. If not the generated SIGNAL is DataReady() when a data byte is received from the RooWifi (eg, manual sensor reading using ExecuteCommand functions).

The RooWifi API 1.1b Example App is made under Qt Creator 5 in a MacOS system, if you compile this project with Qt Creator under Linux or Windows the buttons or some elements of the GUI could appear with different aspect.

TCP Socket Connection / Disconnection functions

void SetIP( QString NewIP )

Sets the IP address of RooWifi. You need to call this function to select the IP address of your device. By default the IP address of RooWifi is (the default IP address of RooWifi in Ad-Hoc mode).

In Windows Systems you could use the NBNSBios name to connect to your RooWifi.

  • Examples:
    • Windows: SetIP ( “roomba”);
    • Others: SetIP (“”);

QString GetIP()

Returns a QString with the NBNSBios name of your RooWifi or you RooWifi’s IP address.

  • Example:
    • QString AddressOfMyRooWifi = GetIP();

void Connect()

Try to connect to RooWifi using a standard TCP/IP socket getting the IP address set in SetIP(QString NewIP) function. If it causes an exception or any error occurs while connecting process it will generate a trigger signal.

void Disconnect()

Disconnects from RooWifi and close the TCP/IP socket connection.

bool IsConnected()

Returns true if the connection is established or false if not.

Sensors / Roomba Telemetry

void RequestAllSensors()

Requests all sensor values.

Working modes of Roomba

void SafeMode()

Puts Roomba in Safe Mode. You can drive your Roomba but when it detects an obstacle or something that could damage the robot it will stop automatically and will set itself to Passive Mode (default).

void FullMode()

Puts Roomba in Full Mode. Enables unrestricted control of Roomba and turns off the safety features. Be careful using this mode while driving or controlling Roomba.

Actions / Emulation of buttons

void Clean()

Starts a normal cleaning cycle, the same as a normal “clean” button press. This command puts in Safe Mode.

void Spot()

Starts a spot cleaning cycle, the same as a normal “spot” button press. This command puts in Safe Mode.

void GoDock()

Turns on force-seeking-dock mode, which causes the robot to immediately attempt to dock during its cleaning cycle if it encounters the docking beams from the Home Base. (Note, however, that if the robot was not active in a clean, spot or max cycle it will not attempt to execute the docking.) Normally the robot attempts to dock only if the cleaning cycle has completed or the battery is nearing depletion. This command can be sent anytime, but the mode will be cancelled if the robot turns off, begins charging, or is commanded into safe or full modes.

Moving Roomba as you would

Play with Roomba like a RC Car :)

void Drive( int Velocity, int Radius )


  • Velocity: specify the average velocity of the drive wheels in millimeters per second (mm/s). Max forward = 500mm/s. Max backward = -500mm/s
  • Radius: The radius, in millimeters, at which Roomba should turn. The longer radii make Roomba drive straighter; shorter radii make it turn more. Max turn = 1 or -1. Margins= -2000mm , 2000mm

A Drive command with a positive velocity and a positive radius will make Roomba drive forward while turning toward the left. A negative radius will make it turn toward the right. Special cases for the radius make Roomba turn in place or drive straight, as specified below. The robot must be in safe or full mode to accept this command.

Motor Control

void MainBrush_On()

Turns on Roomba’s Main Brush

void MainBrush_Off()

Turns off Roomba’s Main Brush

void Vacuum_On()

Turns on Roomba’s Vacuum

void Vacuum_Off()

Turns off Roomba’s Vacuum

void SideBrush_On()

Turns on Roomba’s Side Brush

void SideBrush_Off()

Turns off Roomba’s Side Brush

void AllCleaningMotors_On()

Turns on all Roomba Cleanning buttons

void AllCleaningMotors_Off()

Turns off all Roomba Cleaning buttons

Led Control

void Led_Spot_On()

Turns on Spot Led

void Led_Spot_Off()

Turns off Spot Led

void Led_Max_On()

Turns on Max Led

void Led_Max_Off()

Turns off Max Led

void Led_Clean_On()

Turns on Clean Led

void Led_Clean_Off()

Turns off Clean Led

void Led_Dirt_On()

Turns on Dirt Led

void Led_Dirt_Off()

Turns off Dirt Led

Status Led – Deprecated if using >= Roomba 500 series.

void Led_Status_Green_On()

void Led_Status_Red_On()

void Led_Status_Ambar_On()

void Led_Status_Off()

void Led_Power_Color( int NewColor )

Sets new color for Power Led (battery led in Roomba 700)


  • NewColor: New Color of Power Led ( 0 – 255 )

void Led_Power_Intensity( int NewIntensity )

Sets new intensity of Power Led (battery led in Roomba 700)


  • NewIntensity: New Intensity of Power Led ( 0 – 255 )

void Led_Power_Off()

Turns off Power Led (battery led in Roomba 700)

Direct Communication

With these functions you could send and receive sensor data directly through RooWifi with or without use of Auto Capture mode of this “API”

void ExecuteCommand( int CommandToSend )


  • CommandToSend: Command you want to transmit to Roomba

void ExecuteCommandWithParameter( int CommandToSend, int Data )


  • CommandToSend: Command you want to transmit to Roomba.
  • Data: Value to transmit alter the command header.

void ExecuteCommandWithParameters ( int CommandToSend, int* Parameters, int NumParameters )


  • CommandToSend: Command you want to transmit to Roomba.
  • Parameters: Array with parameters.
  • NumParameters: Number of parameters apart of Command. Lenght of Parameters array.


Returns the number of bytes received from Roomba and available in the reception buffer.

int Read(char *Data, int DataLen)


  • Data: Array where you want to sore received data
  • DataLen: Length of received data to read

Auto Capture Mode

Once connected to RooWifi you could use this mode to refresh sensor data with the specified period of time in ms with SetAutoCaptureTime() automatically refreshing RoombaSensors structure.

void StartAutoCapture()

Enables/starts auto capture mode

void StopAutoCapture()

Disables/stops auto capture mode

void SetAutoCaptureTime( int NewPeriod )

Sets new period time between sensor packet 0 requests


  • NewPeriod: Time in ms between requests

int GetAutoCaptureTime()

Returns perdiod time between sensor packet 0 requests

float GetBatteryLevel()

Returns a float with calculated value of battery level