• How to get started!

    Pinned Locked
    1
    15 Votes
    1 Posts
    2k Views
    No one has replied
  • [Guide] How to get deploy working on Linux

    Pinned guide linux suuntoplus development
    5
    18
    5 Votes
    5 Posts
    1k Views
    C
    @SyncBypass Perfect, thank you!
  • [Tip] How to save/load persistent data

    Pinned tip settings variables tutorial json manifest
    8
    2 Votes
    8 Posts
    1k Views
    H
    @SuuntoPartnerTeam Thanks. Exactly what I have expected.
  • 1 Votes
    5 Posts
    1k Views
    S
    @guderaber There is no way to sync images. Also no information to share regarding limitations either, I’m afraid !
  • Examples explained

    Pinned development
    6
    2 Votes
    6 Posts
    2k Views
    SquirrelS
    @Martin-Lillepuu Exactly, and also keep the custom watchfaces (once available) for personal use without going through the bureaucratic hoops of publishing them to official store.
  • [Tip] Helpful CSS for custom layouts

    Pinned tip css development
    1
    0 Votes
    1 Posts
    368 Views
    No one has replied
  • [Inspiration] Share your app ideas

    Pinned inspiration peer-support
    49
    5 Votes
    49 Posts
    7k Views
    T
    @Horizontal_2 I’ve used waypoints that I’ve added on the route for this purpose. This only works if you have the the route so a separate app might be a good idea anyway. I might take a look at this!
  • [Discussion] Share your projects

    Pinned discussion peer-support
    95
    1 Votes
    95 Posts
    13k Views
    M
    I have previously shared my implementation of a structured interval guide. [image: 1781683549257-interval_recover.jpg] As it was not possible to upload FIT files to the watch I decided to implement the setup of a structured interval run on the watch like this. [image: 1781683569172-combined_setup.jpg] Three different interval profiles are stored on the watch. Initial defaults are: 2 x 12 min @ 101% of LT pace 5 x 6 min @ 107% of LT pace 10 x 1 min @ 113% of LT pace The user can change repetitions, interval duration and pace. The new settings will be saved in the profile for the next interval run. Speed zones are retrieved from the watch and used to set LT pace and reasonable pace for warm-up, recovery and cool-down. Recovery duration is set to match interval duration with a lower and upper limit. The watch did not support creating four separate SetUp screens for the UI. So one screen was used in combination with setText for the label and parameter being changed. To avoid problems with rounding effects in Suunto firmware, pace (seconds per kilometer) was used in main.js which was converted to speed (m/s) only when output.
  • 1 Votes
    11 Posts
    1k Views
    M
    One thing that caused my grief when working with subscribed signals (HR, pace) in main.js or in onLoad is that on the simulator signals are always available. On the watch subscribed signals seem to transition from ‘undefined’ -> ‘NaN’ -> a valid number. I ended up needing to protect any use of these signals by using isFinite(), like this. // Get the index of the the active zone for a 5 zone HR gauge // v current value // zones an array of 4-values defining the 5 zones function getActiveZone(v, zones) { if (!isFinite(v)) return 0; for (var i = 1; i < zones.length; i++) { if (v < zones[i]) return i - 1; } return zones.length - 1; } Inserting systemEvent() was quite effective in pinpointing the point of failure once I understood how to do it. But I do not really get any error message, just something like this. [MR] messages are inserted by me, so I can see something happened after “G4a”, but not what the actual error was. #3251371 26.05.2026 17:44:39 : EVT UI_FRAMEWORK : JS [MR] G1 #3251372 26.05.2026 17:44:39 : EVT UI_FRAMEWORK : JS [MR] G2 #3251373 26.05.2026 17:44:39 : EVT UI_FRAMEWORK : JS [MR] G3 #3251374 26.05.2026 17:44:39 : EVT UI_FRAMEWORK : JS [MR] G4a1-not-supported #3251375 26.05.2026 17:44:39 : WRN UI_FRAMEWORK : JS I am more of a Swift or C# person used to verbose error messages and traceback. But maybe I have been spoiled.
  • [Question] No stupid questions - ask anything here

    Pinned
    154
    4 Votes
    154 Posts
    19k Views
    PrenjP
    @sky-runner yes, basically something like Up ahead app for on-route waypoints. Up ahead shows next 3 waypoints if I’m not mistaken, but my idea is having scrollable list of all waypoints on current route if possible. And I agree that this should be built in feature. But if it’s not going to happen, then this app would be something I’d be using in almost every activity. Unfortunately, at this moment, I think it’s still not possible to do. But I’m going to keep an eye on it because I’m really interested in this kind of feature.
  • Need help connecting to the watch on macOS

    13
    0 Votes
    13 Posts
    1k Views
    N
    @Starfish2045 Hi, I Had a similar issue, getting an error inside VSC while trying to find the connected watch and found that manually running the SDSApplicationServer did work out, but after an update to the VSC Extension it stopped working because the extension closed the external instance i ran in the beginning. Tried modifying the SDS.js with no success. Would you mind posting the change you’ve made?
  • 0 Votes
    4 Posts
    200 Views
    A
    @brechtvb Thanks a lot for your reply! I really appreciate you sharing your experience and the Bosch eBike project. It looks like a great starting point for understanding how BLE communication works in Open SuuntoPlus. My goal is actually quite simple. I’d like to connect to a GoPro and display information such as: Recording status Battery level Remaining storage or recording time At least for the first version, I don’t even need camera control. I’ll definitely take a look at the project you shared. If I make any progress, I’ll post an update here so others can benefit as well. Thanks again!
  • Is-it possible to use the geoCoordinates with simulator ?

    1
    0 Votes
    1 Posts
    75 Views
    No one has replied
  • 1 Votes
    1 Posts
    118 Views
    No one has replied
  • An error occurred when updating the sports app

    2
    0 Votes
    2 Posts
    187 Views
    mickywickyftwM
    Fixed. “modificationTime”: was wrong in the manifest.json.
  • HR Slope - is it accessible/usable in app?

    1
    0 Votes
    1 Posts
    148 Views
    No one has replied
  • 9 Votes
    4 Posts
    1k Views
    Michele SellaM
    @stereodreieck86 Hi there! I try to answer you by points: 1- My implementation use only official LDI. Proprietary control need an android or IOS phone paired to the ebike to read the data. There is a security going on on the first pairing that need to be done and there is no reverse engineering available on that. Other uses data from the can bus but it need physical access to the bus. 2- No for both at the current state 3- LDI is the easiest one to go with. Older protocol is all reverse engineered but has additional data and hardware requirements 4- I have only one gen4 and one gen5 personally tested and they work nicely 5- I can’t test but probably the only field not available is the light sensor (working on my Kiox400C). Probably not available if there isn’t a display (i suppose, not confirmed). As a bonus i can say that i’ve tested all the non documented data field on the LDI protocol and no data is transmitted. All that is documented is all that we have.
  • Deploying new version

    11
    1 Votes
    11 Posts
    940 Views
    DonTomGotD
    @rémiP Thanks. This seems problematic. Is there any reason for this behavior @suuntopartnerteam?
  • Trailing HR / moving average HR - and a question on eliminating HR spikes

    4
    0 Votes
    4 Posts
    293 Views
    DonTomGotD
    @rémiP Thanks for this - but it seems the problem was somewhere else… “shift” does indeed work - but I now instead use it in an another way/method. It seems I was recreating an array without any need to do so - leading to memory issues. Hopefully now fixed.
  • Issues RestTimer

    7
    2
    0 Votes
    7 Posts
    723 Views
    Frédéric FiandinoF
    The app is great. Would it be possible to add an infinite loop feature? For example, I set it to 15 seconds and the watch keeps looping every 15 seconds without having to manually restart it using a button.

Suunto Terms | Privacy Policy