goTenna Mesh SDK talk


Here is another super exciting idea from @akraut

@akraut is looking for folks with Android expertise to make this a reality.


Just got my goTennas out of the box and started playing with them today (I was out of town for work when they showed up last week :frowning: ) .
While sending shouts and testing some ranges with two phones I had an idea for a cool feature that could be sort of an expansion of shouts. I’m thinking of basically a public broadcast but that would sort of be filterable into a channel of sorts. Essentially, a user could do a public broadcast and every nearby node would get it like a shout, but instead of it polluting the shouts message view, it would show up as a public channel. Think of it like a station on your am/fm radio that broadcasts via instant message over the goTenna network.

I think receiving and separating the broadcast could be pretty easily achieved by a recipient app that receives shouts and filters them into channels by sender, except that I’m not sure how you could respond to a channel since that would need to go out as a shout that is then sorted into the correct channel on the sender and other recipients’ end.

Maybe it could also be done with the group messaging features but I don’t think so as the message doesn’t need to go to a specified set of contacts, but rather a shout to everyone.

What would really be needed to achieve this is a new type of broadcast that doesn’t use the default broadcast GID but that is a GID specific to the broadcasting user. The recipient would then be able to represent those messages as a channel and it wouldn’t pollute the shouts UI. A recipient would be able to respond to the channel by sending a broadcast back to that GID.

Just sort of thinking out loud and hoping that someone like @Rahul_Subramany with a deeper knowledge of the SDK features could shed some light on how this might be possible or if we could make it possible in a future version of the SDK.


I think we could have a subclass of the group model or shout model. I’m still thinking about pros and cons of each. This new class would listen for “broadcasts” and they would be recorded as a channel listing in the app with or without notifying the user based on in app preference set by the user. The user could then browse the “Channels” and read or join the channels. Joining a channel would cause the user to get a notification of new messages for that channel. Since this is a very low bandwidth system the app would have already cached the last X number of channel broadcasts even if the user had not joined the channel. I believe this is currently posible without any change to the firmware. We would want to set up a broadcast GID that would work as a control channel. That control GID would be the recipient of all broadcasts. A second random GID would accompany the message as well. That GID would be a unique channel ID similar to a group GID.

Did I miss anything? (Other then multiple grammatical and spelling errors.)

EDIT: The SDK could be extended by anyone that wanted to create this feature.


This is a cool idea!
You could build an app that can do this with the current SDK.
Every shout message includes the GID of the sender. You could build an app that sorts received Broadcast (Shout) messages based on the senders GID into multiple channels.


Interesting feature idea. All time personal range records and all time community records. Allow people to submit records. This could be an Easter egg situation buried in the menu with something like stats. I think a comment field should be in there as well. To keep it interesting records would be broken down by user selected area types and/or elevation levels. I’ll have to put additional thought into this.

I would like to see it turn into a game.


Nice idea @giqcass
Gamification will require some level of validation. How about including GPS co-ordinates of the sender & receiver?
It will be cool if someone can build a separate app (using the SDK) to capture this info & validate it. We can then discuss how to share this info to more users.


Danielagotenna, how did MozFest go for you? I got conflicted-out this year but would of loved to of found your crew.
We have 4 meshes and have just ordered 2 more to create base stations.


I was thinking separate apps as well but I was also thinking once figured out we might include the blockhain idea @danielagotenna is pushing and reward players in game for relayed messages. Power ups, items, or in game credits. So eventually I would like to see some kind of “wallet” that could be verified between Gotenna apps. I’m not sure about any real monetary value being assigned but rather goals and levels. If my app for instance could verify Rahul forwarded 1000 messages I could give him a complimentary suit of armor (without deducting points from his wallet) that would reduce hit point losses. Maybe at 10,000 point I open a new level. Perhaps other “Partners” even ones without apps offer discount codes.

We got along way to go.


There is BLE dongle you may be interested.
You can develop your own BLE firmware on it to talk to goTenna and be able to interface to any PC (with USB/HID). The beauty is that you can keep goTenna untouched and build the SDK on the host side.


@grinch thanks for sharing! This is definitely a good option.
In addition, we will be shortly releasing an USB SDK (basically a set of documented Python libraries). You can use this SDK to talk to goTenna Mesh over USB on pretty much any platform that can host these Python libraries (PC, Raspberry Pi etc.).


I very much look forward to this!!!


I don’t know why this was so darned difficult but I finally have my Gotenna Mesh app sending data reliably to Now I can automate tasks based on messages my Gotenna mesh receives. Currently the message are simply forwarded by email but supports all kinds of crazy stuff from home automation to spreadsheets.

For those who know about what would be a cool use?

EDIT: I changed it. I now have the data going to a spreadsheet. From there i can potentially process the data and sort it based on senders, hops, ect… Sorry guys I really love spreadsheets. Spreadsheets can do more then just sort data. They have the ability to actually run code as well which I utilized heavily in the past.


@Rahul_Subramany @danielagotenna
When a message makes a hop is there an intelligent routing scheme I can use in the SDK for a message I tunnel over WiFi?

I’m thinking about use cases with Broadband Hamnet bridging Gotenna Meshes.


@giqcass the SDK does not allow access to any of the Mesh routing schema.
Can you tell us more about what you are thinking of doing?


Basically this.

I’m looking for the best route from point a to point b when I hop out of the Gotenna mesh and then back in without having to create too much extra traffic well finding the recipient.

I’m looking into how mesh protocols handle this type of thing for inspiration but it would have been great if there was a way inside the SDK.


Look up tables that are constantly updated is the preferred approach. Unfortunately the SDK will not be able to help you with this (atleast not yet).


Sounds good. I didn’t want to reproduce functions I thought might have already been part of the Aspen Grove protocol. I want to be respectful of the band and the batteries.

Not directly related but a better way to accomplish what I am currently doing.
Once the USB SDK comes out I was thinking it might be possible to use that to connect directly to a router running modified firmware and python. The router could pass on traffic using WiFi mesh or an internet connection, monitor the Mesh unit, AND power the mesh unit.

With a WiFi router you can legally create a 60 watt 2.4ghz EIRP link point to point with directional antennas.

How cool would that be? No license require and off the shelf components.


I would love to remote start the heating/cooling of my Mitsubishi Outlander PHEV while off grid.

It communicates over WiFi right now, but I have done a duct-tape solution with Speedify and TeamViewer and a spare phone in the car to be able to remote control/check it from a far better range than 30-50 metres :slight_smile:
Someone made a Automate script that receives SMS messages and then remotely poke the screen to be able to use the Mitsubishi app to remote start the heat/cooling.

This would be makeable with IFTTT and GoTenna, not sure totally off-grid though?


It appears that would probably be possible off grid using a rooted Android device. The trick would be to simulate a keyboard and have a listener that turns incoming messages into key presses. It’s a neat idea but way outside the scope of what I’m currently doing.

Has anyone connected their car to IFTTT? Give me some links so I can see how it was done. Maybe it easier then I think.

EDIT: get me a link to whatever tutorial you used so I can check that out too.
EDIT2: Are you using Tasker? If so I plan to eventually work with Tasker integration. I might have overestimated how hard this is but I have no way to test it yet.

EDIT3: Ok this seems possible to do with a Gotenna off grid now that I see exactly what they are doing. It does seem to require a rooted phone as I suspected. They used simulated screen presses. I think my way using simulated keyboard presses(HID) might be better since I would not need to account for differences in screen resolution. The dummy phone in the car would need to support the Gotenna connection if you wanted to do it off grid and a Gotenna would need to be connected to the phone in the car.


Glad you brought this up. If you haven’t done so already, check out NYC Mesh -