Details on Cloud-to-Device / inbound communication


#1

How does Cloud-to-Device / inbound communication work? Is it a polling based strategy or something similar to port forwarding or proxy?

On the guide the inbound communication is described as

Hologram exposes an API and a Dashboard interface to send TCP or UDP messages to any port on your cellular device. This requires that your device runs embedded Linux or otherwise implements a networking stack. > The Hologram Cloud translates the API requests (or Dashboard submissions) into raw TCP/UDP messages and sends them to the desired device.
See the Cloud Messaging API reference for details.

And all the relevant API reference has to say about it is

Send a TCP or UDP message to one or more devices on the Hologram network. See the guide for details.

Looks like we have a circular reference going on and the details are nowhere to be found :expressionless:.

My guess is that it works using one or more servers that are connected to the same network as the devices allowing the server to forward requests to the devices, i.e acting as a proxy.

Could this be clarified (and the circular reference be fixed)?


#2

Hey Seppestas,

Thanks for pointing this out! We are working on docs and will make sure to patch this.

As far as your questions goes, we have a software defined network layer where the information gets exchanged through port forwards without exposing your device’s information thus adding a layer of security.

Let me know if that answers your question.

Best,
Maiky


#3

Hey Maiky, thanks for your response.

Some questions related to this:

  • Is it possible to get data sent back from the device over the TCP connection (e.g an HTTP response)
  • Are there / what are the limitations to this system? How many simultaneous TCP connections can be opened to a single device / per Hologram account / per API consumer?
  • What are the expected latencies with this system?
  • Is this system also used for setting up the SSH tunnel in the SpaceBridge functionality?
  • What does the “encrypted” flag do? Is it application level encryption (if so, how can the device’s software/firmware handle this), TLS (if so, does / how does it work with UDP) or IPsec?
  • How does the webhook functionality work?
  • Is it possible to re-use the same TCP connection to send multiple messages back-and-forward (e.g to perform a handshake)?
  • What type of errors can be returned? Is it possible to distinguish a disconnected device vs. e.g a timeout or rate limiting error?
  • Is there some sort of SLA that can assure the availability and future support for this system?

For our use-case (you have already been in contact with my colleague Siemen) we are looking for a secure, fairly low-latency, highly reliable solution to send (short) commands to devices connected to a mobile network. Using the Cloud-to-device communication will probably be a lot faster (in terms of latency) than using e.g the SpaceBridge feature.

Greetings
Seppe


#4

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.


#5

Hey Seppe,

As a clarification our cloud-to-device communication uses the same framework as spacebridge so they are practically the same with the only difference being that in the former the client is one of our servers and in the latter the client is your computer.

Please see my answers to your questions below:

  • Is it possible to get data sent back from the device over the TCP connection (e.g an HTTP response). Yes, this would appear in the logs section of the device.
  • Are there / what are the limitations to this system? How many simultaneous TCP connections can be opened to a single device / per Hologram account / per API consumer? Using space-bridge, the only limitation is that you get 5 spacebridge client keys, but you can open as many connections as you want from a single client.
  • Latency on cellular networks vary depending on various factors. I’d recommend checking this page out. Having said that on the hologram network its typically somewhere around 200-300ms.
  • Is this system also used for setting up the SSH tunnel in the SpaceBridge functionality? Yes
  • What does the “encrypted” flag do? Is it application level encryption (if so, how can the device’s software/firmware handle this), TLS (if so, does / how does it work with UDP) or IPsec? What exactly are you referencing here?
  • How does the webhook functionality work? You can read about that here.
  • Is it possible to re-use the same TCP connection to send multiple messages back-and-forward (e.g to perform a handshake)? Yes this would be just like any other TCP connection.
    What type of errors can be returned? Is it possible to distinguish a disconnected device vs. e.g a timeout or rate limiting error? This depends on what tool you are using (Python SDK, Embedded API).
  • Is there some sort of SLA that can assure the availability and future support for this system? Yes, our carrier partners will absorb and continue to support all of our accounts with the same high touch support for our larger accounts. This is also listed in our terms of use: In the event that Hologram ceases to operate its business, or files or has filed against it a petition under bankruptcy or insolvency law which remains undismissed after sixty (60) days, Hologram warrants that cellular connectivity provided by the Hologram Global SIM will remain active. All pricing and service contracts will be honored by Hologram’s cellular carrier partners under the same pricing and terms as conveyed by Hologram. Hologram will, to the best of their ability, work to transfer the full title of their licenses and agreements to you insofar as they pertain to cellular connectivity provided by the Hologram Global SIM.