Reach HTTP API for mobile app integration

Hi,

I would like my android app to be able to configure/start/stop/monitor the RTK server and then download the raw output file so that we can do post-processing later on. The app should also be able to delete the raw output files.

Both the ReachView and SSH interactive command line are not adapted to this purpose. Is there currently any other option?

I would rather have a simple REST API to expose the functionalities. So that i can build in my app UI the control for the RTK server. I can think of 2 implementation strategy:

  • extend the ReachView
  • build a different repo ReachAPI

Has Emlid any roadmap covering those needs?

Our organisation can also consider allocating some resources to contribute via PR on the existing public repos.

Kind Regards,

3 Likes

@oliv Hi! We do have plans for an API, but also have other features that we need to finish first. So it will probably take a couple of months.

You can use socket.io from your app for now, check out this small example:

1 Like

To add to Mikhail’s reply:

Socket.io provides client libraries not only for JavaScript, but also for C++ and Swift. There are unofficial libs for Python and more.

1 Like

I’ve been trying the socket.io in an android app to connect to a Reach. The response from Reach makes the java client crash. See below the TCP trace.

The body of the response:

557753357632:60:60:websocket,xhr-multipart,htmlfile,jsonp-polling,flashsocket,xhr-polling

The issue of the java client is that it’s trying to parse the message as a socketIO payload by casting the “557753357632” number as an integer, which throws a exception.

I feel that the function triggered at the connect event needs to be overwrite to not parse the body.

The java lib you use is only compatible with socket.io v1 and up. At the moment we use v0.9.6. We will update socket.io lib to the newest version, but it will take some time.

Do you know any alternative java lib that would support socket.io v0.x?

https://github.com/koush/AndroidAsync/ seems to do the job to some extend. The android app can establish the websocket with ReachView but none of the command emited on the websocket is getting any answer like “start rover” or “get available space”.

By sniffing the connection, i can see the websocket command reach ReachView but then nothing is happening. Is the ReachView Flask server outputing log in the filesystem so i can troubleshoot the issue?

Ok i figured out that to send command to ReachView via the websocket the app needs to emit

{“name”: “start rover”}

and not only

“start rover”

however no GPS log file is created after the command “stop rover” is emitted by the android app :frowning:

what am i doing wrong?

See attached the wireshark trace

1 Like

I figure it out.

A command emitted on the websocket has to be sent in acknowledged mode, ie the message string has to start with 5.

1 Like

Hi!

Glad you’ve figured it out on your own. I am not sure I could be of any help with this library anyway :slight_smile:

Btw, if you are working on as open source app, you are welcome to share the sources here. If you need any help with the protocol logic, or anything else, don’t hesitate to contact me.

2 Likes

@mikhail.avkhimenia So it will probably take a couple of months.

Sorry to revive this old thread but is there an available API yet?

1 Like

Hi there,
This work is still in progress.

1 Like

Is API available yet?

1 Like

@igor.vereninov talked in 2017 about this API being available somewhere in 2017.

2 years later there is still no API. This in not acceptable. Are you guys taking this seriously?

We are actually hesitating to work with the Reach RS2 because of the lack of an API.

Is there a roadmap for this?

If you make this API opensource we can actually help with the implementation.

Hi Floris,

At some point we will offer API, it’s still on our roadmap. However, there are a lot more things to do before that.

2 Likes

Do you have any idea when the API would be implemented?

Is there a chance you open source the API?
We would love to help you implementing it.

Hi Floris,

I’m afraid we hardly can provide any info about our plans or timelines regarding this at the moment.

Hi @dmitriy.ershov and @tatiana.andreeva

We are looking to build our own app which communicates with the Reach RS2.
If we have to build this without an API it would mean that we have to reverse engineer the messages send over the wifi.

This would cost us a lot of time, and essentially it would mean that we build a custom API layer on top of the current communication protocol.

To avoid double work I would love to make this “api” layer open source, and develop it with the help of your engineers.
Is there a possibility we could co-develop this api together?

thanks in advance!