iOS Toolkit App


Release 1.6 of Mesh Developers Toolkit is now live in the iTunes App store.

This release now shows an activity spinner when searching and connecting to a goTenna to make things a bit clearer.

It also includes new functionality to request the location of another goTenna/phone combination in the background - both from Javascript and a url request ("find(guid)" and "/find?guid=xxxx").

Adding the line:


To your javascript (where guid is just guid - not an actual guid (if that makes sense) the script will send a location request to the originating goTenna.

The data is stored in two SQL tables ("gtlastfix" and "gttrack").

Finally, if you swipe left on an incoming message you can now request the location of the remote device in addition to being able to send a direct message.


Version 1.7 went live in the App Store today - it fixes a couple of bugs and includes a couple of new functions:

distance(lat1,lng1,lat2,lng2) - Allows you to calculate the distance in Kilometres between the two locations.
bearing(lat1,lng1,lat2,lng2) - Allows you to calculate the bearing between the two locations in degrees.

This means that you can quickly work out the nearest (or furthest) goTenna in a SQL select.

When the Web-server is running it now advertises its self using Bonjour - this is to support a companion App I am building for iPad…


Version 1.9 of Mesh Developers Toolkit was approved for the iTunes App Store today with a bit of simple augmented reality…

In addition to a few stability improvements (AKA bug fixes) this version has two new Tabs - “Toolkits” and “Devices”.

The “Devices” Tab lists any devices which you have a location for (swipe left on any incoming messages on the “Messages” tab and press “Find”).

You can then do any of four actions by swiping left:

  • You can send a “Message” directly to the goTenna.

  • You can send a new “Find” request.

  • You can get the “Bearing” and distance to the remote goTenna, this uses the iOS device’s camera and by panning around to line up the two circles on the outside of the “compass rose” you can get a visual fix on the remote user. If the name of another goTenna is displayed when panning clicking on it will allow you to get the bearing to that goTenna.

  • You can calculate (“Map”) a route to the remote goTenna using a third party app from your current location. This currently supports “Apple Maps”, “maps me” and “Navigon”. If other Navigation Apps have a URL scheme I can look to add them in a future release - just post the details of the URL scheme.

The “Toolkits” Tab finds any other Mesh Developers Toolkits running on the same network (the remote Toolkits need to have the web server enabled to be found).

By swiping left on an item in the list currently allows you to send a shout message via the remote goTenna.


Nice work @Pete94 — do you know what any of your users are using the toolkit for?


Hi Daniela,
Thank you for your comments - except from ae74 and Mauvis I have not had any feedback how the App is being used.

The latest functionality has been built to visualise the location information available from goTenna devices which is different to the first set of functionality which is around bridging GoTenna’s to network APIs or IOT devices (e.g. Weather services and the Lightning Detector).

Feedback on how Toolkit is being used would be great - both to understand how people are using it and also to shape it’s future direction.


Version 2.0 of Mesh Developers Toolkit was released into the App Store tonight, in addition to a few bug fixes this release adds support for the Apple Watch.

This allows you, from an Apple Watch, to:

• List the GoTenna’s you have recent locations for:


• Get a compass bearing and the distance to a goTenna:


• Send a pre-defined message to an individual goTenna.

• Send a pre-defined shout to all goTennas.

• Send a find request to all GoTenna’s Mesh Developers Toolkit has positions for.

• Show a GoTenna’s position on the Maps App:


A new settings tab has been added which allows you to setup the “Direct” one to one message and the “Shout” message.

To get a goTenna appear on the Watch you need to do a find request from Mesh Developers Toolkit - swipe left on an incoming message on the messages tab and select find.

App for smartwatch

Release 2.1 of Mesh Developers Toolkit went live today in the iTunes App Store, this release adds a new tab, “Twitter Bridge”, and a new JavaScript function:


This will allow you to forward a message as a Tweet to your Twitter account.

I would suggest that you limit the devices which can send Tweets, by using the GUID variable passed to the script.

The new Tab “Twitter Bridge” this allows you to setup your API Keys for Twitter and also switch on “Broadcast Tweets”.

“Broadcast Tweets” will automatically forward any tweets from your Twitter account to your goTenna Mesh as a broadcast.

To ensure that you don’t hit any rate limits either within the goTenna or Twitter API’s only Tweets which have been posted in the last two hours will be broadcast and single Tweets are sent every five minutes.

If you have multiple Tweets, they will currently be sent every 5 minutes, although I am looking if I can decrease this time interval.

This conservitive time interval is also to allow you to connect two iOS devices running Mesh Developers Toolkit to the same account - so allowing you to bridge two goTenna Meshes regardless of geographic location.

To enable you to setup the Twitter functionality you need to setup a Twitter App and API keys at:

The Web and Callback URLs can be set to anything (I pass the correct ones in code), although I suggest:


Callback URL:


No Tweets are stored by Mesh Developers Toolkit to comply with Twitter’s guidelines.

Just remember anything you post to Twitter is public…

Updates to SMS Network Relay using Internet

Hi ae74,
Regarding your question last month, The Twitter functionality in version 2.1 could allow you to bridge across two locations without needing a “point to point” link.

Hope this helps.


Version 2.1.1 has just been released in the iTunes Store.

The only change in this release is an improvement in the performance of the forwarding of Tweets.

Rather than sending a Tweet every five minutes Mesh Developers Toolkit will send out Tweets at a rate of one every 15 seconds.

The interval between checks against the Twitter API has been brought down to 4 minutes.

So the worst case for a Tweet to be broadcast is 4 minutes…


Version 2.2 of Mesh Developers Toolkit has been release in the iTunes App store.

This version adds a new tab “Scan QR Code” (available from the “more” tab), which allows you to convert a QR code to a message, for example the following QR code will send a message as a Shout:


Scanning the following QR code will create a new goTenna in the “Devices” tab:


You can also quickly share your “Mesh Developers Toolkit” contact details by clicking on the “(i)” button on the top right of the “Scan QR Code” tab. This will show a QR Code on screen which can then be scanned by the other IOS device, running Mesh Developers Toolkit.

The QR Codes need to use “Mesh Developers Toolkit” url schema.

Eg: a Shout:


Or a message to an individual goTenna:


Or a create or update contact:


If the QR Code does not start with “mtk:” the contents of the QR Code will be sent as Shout (Mesh Developers Toolkit can also scan barcodes but they are simply sent as a shout).

Apart from sharing contacts a few suggestions of how you could use this functionality:

• Have a QR code poster which allows someone to quickly check in - for example for a group of Cub Scouts on an orienteering challenge can report where they are with a single scan which are monitored from a single location.

• If you have shouts turned off you can quickly share your contact details (think volunteers at a sporting event).

Also, if you set the GUID to 0 when using the “mtk://create" call you can create a device entry for a navigation point, so you could have a QR code at a Car park which allows you to quickly get a bearing and distance back to the location.


Version 2.3 of Mesh Developers Toolkit was released on the iTunes App Store today, this version adds some functionality to the “Toolkits” tab:

• The “Map” button on the top right of the “Toolkits” tab’s navigation bar allows you to view all goTennas known by “Mesh Developers Toolkit” on a Google Map, either on the device or on a larger screen:

The map can also be opened in a browser on a tablet, laptop or desktop using the URL “HTTP://iPhone’s IP address:8080/map.html” (this appears on the top of the window if you open it on your iPhone).

Clicking on a Pin will show you the distance and bearing to the goTenna and you can also send a message to the remote goTenna directly from your browser:


• Swiping right on a remote Toolkit on the list will open a map displaying all of the goTennas known to the remote Mesh Developers Toolkit on the same Wifi network.

The Map Icon is only enabled when the local web server is running and Mesh Developers Toolkit is connected to a goTenna (this can be enabled from the settings tab).

ps. The locations are test locations…


Version 2.4 of Mesh Developers Toolkit has just been released into the iTunes App Store.

This version adds a Lock Screen Widget which allows you to quickly see if Mesh Developers Toolkit is connected to a goTenna and the Battery percentage of the goTenna.

The Widget also allows you to launch Mesh Developers Toolkit by clicking on the “Connect” button:


Once you are connected to a goTenna, you can see the battery percentage (which changed colour based on the percentage charge) and any goTenna’s you have a location for (ordered by distance), by clicking on “Show More”:


Clicking on the “Shout” button displays a second button “Send”:


Clicking on the “Send” button will then send the predefined “Today” shout message, setup in the settings tab.

The “double” buttons is to try and minimise accidental shouts…

If the Web server is running on Mesh Developers Toolkit the “shout" will be sent without the need to unlock the iPhone or bring the App to the foreground.

f the Web server is not running, the iPhone will need to bring the App which will require you to unlock the device.

The Mesh Developers Toolkit Widget can be added to the Lock screen by swiping right on the Lock screen and clicking on the Edit button.

Also, a new preference, “Request Position”, has been added.

When enabled Mesh Developers Toolkit will request the position of a remote goTenna when an incoming message or shout is received.

The location request will only be made if Mesh Developers Toolkit has not received a location in the last few minutes.

Switching on “Don’t process shouts”, (which stops the JavaScript running against shout messages), will also switch off positions requests for shouts.

1 Like

Version 2.4.1 of Mesh Developers Toolkit was released into the iTunes App Store this afternoon, this fixes a couple of issues.

The encoding of the default message for the “Today Widget” was incorrect - spaces were being removed :confounded:.

The stability of the Bonjour service has been improved and a new function on the “Toolkits” tab to allow you to import goTenna contacts from another Mesh Developers Toolkit running on the same network. This can be accessed by swiping left on the list and selecting “import”.

Note: to use the “Toolkits” please upgrade to 2.4.1 on both devices as I have changed the structure of the Bonjour service name to prevent crashes.


Version 2.5 of Mesh Developers Toolkit was released into the iTunes App Store this morning.

This version improves the stability of the App when connecting to a goTenna and an issue if you scrolled the Messages when the App was trying to connect.

The Messages list has also been reworked to differentiate between incoming and outgoing messages clearer:

The “⇠” icon highlights rows which can be “Swiped left” to show more options:


1 Like

The Raspberry Pi Lightning Detector, which sends out a goTenna shout when it detects lightning, has slimmed down a bit since my post on the 2nd of March:

The Pi Zero-w connects to the same Wifi Network as the iPhone running the toolkit (which can be a hotspot).

The reason for this is:

The original Raspberry Pi and battery pack has now had a Sim800 board and an Enviro Phat added.

The Sim800 board allows SMS messages to be sent and received from a remote goTenna, without using a third party service or needing internet access (it only requires 2g coverage).

This is achieved using Mesh Developers Toolkit as a gateway, again the iPhone and the Pi has to be on the same Wifi network.

The Envoro board allows a goTenna to request the local air pressure and temperature (the board was originally on the Pi Zero).

The Lightning detector had a few issues when running alongside the GMS board - hence the reason for it slimming down…


I downloaded the toolkit app to try out battery reporting with a stationary relay. The shouting portion works great and responds immediately for both GTM and phone battery. I may finally have a great use of all the old iPhone 4s I have laying around.

I’m having trouble getting it to send the battery back to the originating goTenna. I manually scripted in my GUID, made sure it was correct, but my goTenna doesn’t receive the message. Any tips?


Hi MrTSolar,
Thank you for the feedback.

I do pass a Javascript variable ‘guid’ into the script, which contains the sender guid - have your tried this?

Also I pass the guid around as a string within the code - if it is declared as a number in the Javascript, this might fail when the script calls back to the main code.

If this does not work - if you send a message, or post a reply, with your script I can have a look and see what is failing (once I have charged my old 4s…).


That might be my problem. I tried using targetguid as a variable. I’ll try guid when I get home.

I’m really excited to get this working, as it will be a game changer on checking stationary relays. I’m currently designing an updated version that relies on raw solar power with capacitor storage, details of which I’ll post in another thread once I have more testing done.


Hi MrTSolar,
Sounds interesting in what you are working on - are you planning to be able to charge the phone at the same time?

I have found an issue where the GUID could be truncated when passed from the Javascript to the core application :grimacing:

I have fixed this and put it into the iTunes review process (it will be version 2.5.1).


Yes, enough power for phone and goTenna.

So, the code snips that I’ve tried are:

} else if (message == “Phone batt?”) {
return ";

} else if (message == “Phone batt?”) {
return ";

} else if (message == “Phone batt?”) {
return ";

I’ve also tried my GUID in-place of the variable both with and without quotes. It tries to send to the proper GUID (verified phone number), but fails after the usual 3 transmissions.