iOS Toolkit App


Hi MrTSolar,
Version 2.8.1, with the Temperature monitoring, was approved in the iTunes App Store tonight.

I am thinking of building an “event” model, with individual scripts for different conditions, e.g. “shout received” or “battery level” etc.

Although I will look at building a preference which would send preset messages to a single GUID setup in the preferences - would this tie in with what you had pictured?


I’ve poked around some but my wife is the programmer in the family and sge hasn’t dug in yet despite sounding positive about the possibilities. We’ll get there soon, simply because of the growing number of nodes we have to feed at UMESH in Urbana, IL.

I will certainly echo MrTsolar’s concept of temp reporting from multiple nodes back to a single GUID. Our network will eventually cover all of Urbana and currently serves about 1/3 of t with 6 nodes. Temps, both low and high, have already posed problems for us. Gathering data on the temps they are exposed to would help a lot with fault analysis. If I could sit here on a sweltering July day or a numbing January morning and check in on things in the comfort of home that would be the cat’s pajamas.


Sure sounds like it. I’m currently looking for good sites to place relays, so being able to check in on them and have them notify me of an issue across the Mesh would definitely save a lot of driving and potentially undetected downtime.


This APP is a godsend @Pete94 OP thanks brother! Loving the scripting and blueteam tracking! I’d buy you a case of beer if you would port this to Android and gear smartwatch. I’d toss in at least $100. Wicked app! Thank you!
Can we donate? This has great potential. Have you entered it in the SDK competition? This wins, hands-down. #MeshingWithData #CallForCode


I have found some time to do a mini release, 2.9, which is now available in the iTunes App Store.

This version adds an option to the “Messages” tab to allow you to forward a message using iOS Share actions by swiping left of the incoming message.

The message includes the location of the goTenna (if available) and a link to allow you to acknowledge the message using Mesh Developers Toolkit.


You can also “airdrop” it to a Mac and then open the location in Maps.


This really is an essential app for any gotenna enthusiast.
It’s the only reason I bought an ipad.
Please release to Android! :slight_smile:
Digipeter function shouldn’t be limited to iOS only.


Hi MeiGuoRen,

Thank you for your comments, I don’t have the time at the moment to work on an Android version (and we are an iOS household…), but version 3.0 which has just been released into the iTunes App Store now supports iPads.

It also allows you to use the iPad’s multi-tasking facilities, including “Slide over” and Split view:

Version 3.0 adds a Share Extension which allows you to quickly share text from another App with Mesh Developers Toolkit:



The shared text can be sent to remote GoTenna’s either as a “shout” or directly to a single goTenna, from within the Share Action sheet:



How can we convert you to a heterogeneous device household?
Can we send you some unlocked android devices? ;))))

Super stoked about 3.0 for ipads, I’ll check it out asap. Thank you!!!

I’m buying my second iOS device ever just because of your app! :slight_smile: Any issues I should expect with the iPhone CE?


Hi MeiGuoRen,
Thank you for the comments - Sadly, I don’t currently have time to do an android version at the moment.

Version 3.1 of Mesh Developers Toolkit, has been just released in the iTunes Store and adds two options to allow for you to broadcast and scan for iBeacons containing guids.

This functionality works when the App is in the foreground and allows you to scan for other Mesh Developers Toolkits running iBeacons.

This allows you to quickly share your GUID without the need for a “shout” message.

A new Today Widget, “Mesh quick share”, allows you to switch of the broadcasting and scanning of the iBeacon for three minutes without the need to manually switch the functionality on in the setting dialog:


The widget allows you to quickly startup advertising or scanning for the iBeacon as iBeacons cannot run in the background.

Three “Script events” are generated when the App detects, or loses an iBeacon from another Mesh Toolkit (or something else - see below):

  • beacon_found - with the new GUID being passed in the “guid” variable.

  • beacon_disconnected - with the GUID of the device disconnected in “guid” in the “guid” variable.

  • all_beacons_disconnected - when all devices have disconnected.

You can handle the event as follows (and the default script has been updated to reflect these events):

if (message == "startup_event") {
      return "";
} else if (message == "beacon_found") {
      send(guid,"Hi this is my guid");
      return "";
} else if (message == "beacon_disconnected") {
      return "";
} else if (message == "all_beacons_disconnected") {
      return "";
} else {
      return message;

But in addition to using Mesh Developers Toolkit running as an iBeacon, other devices can run generate a iBeacon, for example a raspberry pi zero-w.

The following script will start advertising a beacon which can be found by Mesh Developers Toolkit:

sudo hciconfig hci0 up
sudo hciconfig hci0 leadv 3
sudo hciconfig hci0 no-scan
sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 E2 C5 6D B5 FD BF D8 2D 60 B0 E4 D0 10 96 F7 A5 00 00 ff ff C8 00

The bytes 00 00 FF FF indicate the “guid” and I would suggest that you set these to a value less than 65535 (only change the FF FF pairs) to identify you “iBeacon”
, you can then check for this in your script:

if (message == "beacon_found") {
     if (guid > 65535) {
          // its a goTenna
          send(guid,"Hi this is my guid");
     } else {
          // its a raspberry pi
          print("I am at a beacon - do something.");
     return "";

I have found that a beacon running on a raspberry pi drops very quickly - so you will get multiple connect and disconnect events - but I have not had time to investigate.

Three new javascript functions have also been added:

  • startweb() - to start the inbuilt web server from the script.

  • stopweb() - stops the inbuilt web server.

  • pressure() - if the iPhone or iPad has an inbuilt barometer, this function returns the current barometric pressure.

How can you use this functionality?

If you have two devices you can quickly share your guid with someone else, using the script (like Lynq compete app?):

if (message == "beacon_found") {
     if (guid > 65535) {
          // its a goTenna
          send(guid,"Hi this is my guid");

If you have Mesh Developers Toolkit in a fixed location, you can by default switch the web server off and only switch it on (to view the graphs etc.) when you are in close proximity of the device:

if (message == "beacon_found") {
     if (guid == 123456789) {
          // its my goTenna
     return "";
} else if (message == "beacon_disconnected") {
     if (guid == 123456789) {
          // its my goTenna
          send(guid,"Hi this is my guid");
     return "";

Use a few pi-zeros as “beacons” to allow people to quickly check in, using the widget, when they reach a particular way point (e.g. back at camp)…


Version 3.2.1 of Mesh Developers Toolkit was released into the iTunes App Store tonight. This minor release adds a couple of preferences which allow you to lock Mesh Developers Toolkit with a Pin-code or Touch-ID when you are leaving it running in the foreground.

When combined with Apple Configurator - you can lock down a device but completely if you need to run it an remote location.


Version 3.2 of Mesh Developers Toolkit was released into the iTunes App Store tonight.

This version adds some new functionality built around BlueMaestro’s Tempo Disc range of Buetooth sensors (

Two new preferences, “Scan for Tempo Disc” and “Tempo Disc name” allows you to search for Blue Maestro Tempo Discs by their name (setup in the Tempo Utility App) and a new script command, “tempo()”, has been added which returns the data from the Tempo Beacon if scanning is enabled.

An example of how this can be used is:

if (message == "weather") {
    return tempo();
} else if…

Will return data similar to:


In response to the message “weather”.

The data from the Tempo Disc will be updated every minute when scanning is enabled.

In addition to this functionality the following has also been added:

  • A preference “Don’t ignore Mesh Toolkit” which allows you to process messages from other iPhones running “Mesh Developers Toolkit”, normally these are ignored.

  • A “Clear” button has been added to the “Activity Log” tab which allows you to clear the Log, which is useful when debugging schedule scripts and scanning for beacons - due to the amount of logging which can be generated.

  • Finally, a new button has been added to the Watch App to allow you to quickly switch on iBeacon broadcasting/scanning.


Version 3.3 of Mesh Developers Toolkit was released into the iTunes App Store today.

This version allows messages to be routed using iOS’ Multipeer Connectivity framework ( to local devices, using Bluetooth and/or Wifi, alongside the goTenna mesh network.

To enable this, two new settings have been added, “Enable Multipeer” and “Multipeer Auto connect”, by default local connections will prompt you if you wish to accept the connection:


If “Auto connect” is enabled the two devices will pair without you being prompted.

When enabled Mesh Developers Toolkit will automatically find any other Toolkits in the locality and automatically route direct messages to them through the Multipeer connection rather than over the goTenna Mesh link - so reducing the number of messages being sent across the mesh.

If the device is no longer active on the Multipeer connection the message will automatically be routed over the goTenna Mesh.

Messages received over Multipeer are coloured green rather than blue on the Messages tab:


Shouts are routed over both the goTenna Mesh and the Multipeer connection.

The “Devices” tab has been changed to show both goTenna devices and “Multipeer” devices, with the Multipeer devices shown in red:


You can send a message directly to a Multipeer device by swiping left.

Multipeer devices are added and removed automatically from the list when the are found or disappear. No location information is made available for the Mutlipeer connection as due to the short range nature of the framework, you can most probably shout!

Sending messages from the “Devices” tab, by swiping left, will not try and route locally but will always use the protocol for the device (Blue for goTenna’s, red for Multipeer).

The icon for the “Devices” tab now shows the number of “known” goTenna devices and active Multipeer devices (goTenna/Multipeer):


Two new Javascript functions “mpshout” and “mpsend” have been added to access the Multipeer functionality from your script - “mpshout” has one parameter - the message to send and “mpsend” has two parameters, the first is the target device name and the second the message.

The device name needs to be the same as in the “Devices” tab.

The major limitation of the Multipeer framework is that it only establishes connections when Mesh Developers Toolkit is in the foreground - if the App is in the background messages will be routed through the goTenna Mesh.

The backstory to this functionality is that I originally planned to use the Bridgefy SDK ( which provides more functionality than the Multipeer framework.

But based on the number of active installs of Mesh Developers Toolkit implementing the SDK would push it over the Bridgefy threshold of connections, so invoking a monthly Platform fee☹️.

A new option has been added to “Devices” tab, the “+” button on the title bar, allows you to add a new remote goTenna’s GUID Manually (The GUID needs to be numeric):


Hope this all makes sense!


More amazing stuff, Pete. :trophy: Connecting to and from the mesh just got easier, which adds to the various infrastructure needs mesh networking facilitates.

I’ll be discussing the latest developments in 5.0 firmware with your iOS Mesh Developers Toolkit app as a highlight here in Urbana-Champaign when I do a presentation for our local 2600 group the first Friday in October. It’s one of several of possibilities to stir up interest in the local developer community I’m working on right niï9p. Among our short-term goals is to connect UMESH to campus by adding another string of nodes in west Urbana, which should be the key to people starting to see the full possibilities of using the mesh and applying tools like you’ve developed locally.


Well done adding apples multi-peer framework! This is a feature that I’ve been hoping to have for a long time. I’m hopeful that gotenna will eventually add this capability to the official gotenna app. Could be very useful to have during emergency situations.

The feature most needed is the ability for a gotenna user to be able to share access to their Gotenna Mesh hardware to other nearby users by means of apples multi-peer mesh framework via Bluetooth & WiFi. The other users would use the gotenna app and be able to txt with other gotenna users via their Bluetooth/WiFi mesh connection to the nearby gotenna hardware owner.

This would also be a nice way to give people a taste of the Gotenna Mesh experience and convince them to purchase their own Gotenna Mesh hardware.

For example I have gone on road trips with friends and family where there is no cellular service and Gotenna Mesh is used between multiple cars with only a single gotenna user per car. I described Gotenna Mesh to them but i think if they had been able to easily test out the system it would have sold them on buying their own units for future trip as well as given car to car comms for all users as long as at least one gotenna was in each car.

I think it would be a win/win for both gotenna making more sales by giving users of the free app a taste of its potential as well as improved comms by utilizing the Apple Bluetooth/WiFi multi-peer mesh framework to allow those currently without Gotenna Mesh hardware to Piggyback through nearby gotenna users until they are able to purchase the hardware.



@Pete94 BridgeFy has waived license fees up to 50K for humanitarian support for Puerto Rico in the past for exactly this purpose of bridging Gotenna to local, short range mesh. You may want to approach Jorge Ribs (Founder / CEO of BridgeFy) to see if he will waive it for your app as well. Best way to reach him is by messenger to BridgeFy on Facebook or @ bridgefy or @ jorgeribs on twitter. YMMV may the force be with you.


There are also a number of open source mesh networking SDKs that are already free.


I think adding Bluetooth/WiFi mesh networking to the gotenna app using Apple Multipeer Framework would be the best option. The app is already free and then users are more likely to upgrade and get the gotenna hardware.


Not for us Android users…


Very true. Maybe one of those open source Bluetooth mesh options or bridgefy SDK would be a good solution as you suggested.


in many developing countries, only the “haves” have iphones… and there is a very clear delineation for the “have-nots” who have a cheap android device. For this reason, I’ll buy anyone working on this problem a free unlocked android phone. Just touch base, tell me what you are working on, and I’ll send one out to you. @Pete94 this goes doubly for you, just let me know what brand/model you want and I’ll get one out to you. Anyone considering a bounty or reward to help incentivize android development for developing countries, I’ll toss in. Love and respect. PS @danielagotenna SDK competition? I think it’s pretty clear this is the winner app.