HN user

Doman

67 karma
Posts1
Comments15
View on HN

You totally can use Meshcore without repeater, and companions can be used like routers. This functionality can be enabled any time using one checkbox in app. It switches the radios to slightly different frequency and enables repeat mode in personal nodes, this gives you one small network. No repeater needed. And in this mode you don't clutter "main" mesh with your local mesh.

The main difference between Meshcore and Meshtastic is how telemetry is handled. In Meshcore to get telemetry the other party needs to request it, whereas in Meshtastic telemetry is sent in flood mode in configured intervals. That's why Meshtastic is better suited for (A)TAK [1]. But because Meshtastic sends telemetry anyway there is less and less airtime for chat messages, and it gets to the point where you can't talk to people. For small groups this is fine, for bigger groups/meshes this is no bueno.

[1] https://tak.gov/ - (A) stands for Android app.

This leaves higher application code to handle duplicated messages.

True, better send twice than never.

the client connects later than the server send

Server only responds, never sends anything.

overwhelming the network

"broker" is handling it nicely

I strongly agree that zmq will not fit in every use case. Always search for best option.

We implemented KISS state machine based on TCP timeouts and server response.

Pseudocode:

  Send msg to server
    if socket timeout:
      reinit socket and send again
  Recv from server
   if recv.msg != 'ok':
     send again
   else
     remove msg from storage


One message has from few to few hundreds Kilobytes. Messages are stored and sent as custom binary data for better compression (better that protobuffs). ZMQ takes complexity of raw tcp sockets away and this is what we needed it for. As much and as little.

We are using 0mq for monitoring of electric vehicles fleet. Millions of messages every day (hundreds of GB), zero problems with bad internet connection (common in moving vehicles). Every sent message is received regardless of connectivity issues. Just a little implementation annoyances here and there but it is serving us well since 2015.