Suunto app Forum Suunto Community Forum
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    [Good-to-know] Simulator vs physical watch: key discrepancies & limitations

    Scheduled Pinned Locked Moved Suunto Plus Development
    developmentsimulatorissues
    7 Posts 6 Posters 843 Views 6 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S Offline
      SuuntoPartnerTeam
      last edited by SuuntoPartnerTeam

      Hello.

      The simulator is generally more featureful and more web-standards-compliant than any of our watches. What this means is that especially your wildest HTML+CSS concoctions may appear fine when simulated, but not when deployed on hardware. That said, at times it is the watch which breezes through something that stumps the simulator.

      The main goal of the simulator is to show an approximation of the GUI and to provide quick feedback on the logical parts of your application i.e. the JavaScript (JS) code and how it interacts with the GUI. Remember to stick to to the ES5.1 version of JS and to make use of the native functions (which you can find inside the reference documentation). One example of a native function is setText, which you can see under ‘‘discrepancies’’ further below.

      We hope you share all additional findings – should you encounter any – in order to be of help to your fellow devs 🙂 All of the following are true as of the time of writing:

      Discrepancies

      • Use setText instead of output.textField
      output.textField = "some text"    // Works in the simulator, but not on a physical watch
      setText("#some_id", "some text")  // Works both in the simulator and on a physical watch
      
      • Zooming into images with CSS works in the simulator, but not on a physical watch
      • The watches understand only basic CSS properties, such as width, height, color, background-color, opacity, border and visibility
        • Border must be solid and on all sides
        • Supported units are px and %. Other units may pass the validator, but will be treated as px.
      • Making changes to an HTML template right after it has been loaded will work in the simulator, but the watches may require some time between unload and setText/setStyle.
        • One way to overcome this is to have the evaluate function wait a cycle or two before making text/style changes.

      Simulator limitations

      • Pause and resume do not work
      • FIT file coordinates are ignored
        • Currently, the simulator does not read any GPS data from FIT files. To test GPS-related features, please use a physical watch.
      • An application’s settings, which would appear in the Suunto mobile app on iOS/Android, cannot be adjusted
      • Any sound effects from playIndication() will not play
      • localStorage doesn’t work correctly.

      The screenshot feature is also in a non-functional state.

      Again, please share any additional findings below! 😮

      surfboomerangS Raimo JärviR 2 Replies Last reply Reply Quote 1
      • Dimitrios KanellopoulosD Dimitrios Kanellopoulos pinned this topic on
      • S SuuntoPartnerTeam referenced this topic on
      • surfboomerangS Offline
        surfboomerang @SuuntoPartnerTeam
        last edited by

        @SuuntoPartnerTeam said in [Discussion] Simulator vs physical watch: key discrepancies & limitations:

        The screenshot feature is also in a non-functional state.

        I got access to the partner program. Upon uploading the app, I’m requested to send watch images by using the screenshot option. Is there any information about when this feature will be available?

        Is it mandatory to use this feature or is a screenshot with the right dimensions also ok?

        Suunto Vertical Titanium Solar
        OnePlus Nord 4

        Nikolai SimonovN 1 Reply Last reply Reply Quote 2
        • Nikolai SimonovN Offline
          Nikolai Simonov @surfboomerang
          last edited by

          @surfboomerang said in [Discussion] Simulator vs physical watch: key discrepancies & limitations:

          Is it mandatory to use this feature or is a screenshot with the right dimensions also ok?

          not necessary use screenshot tool from sdk

          Suunto Race 2 Ti
          Suunto Race
          Suunto 9 Baro

          Suunto Aqua
          Suunto Wings

          1 Reply Last reply Reply Quote 2
          • S SuuntoPartnerTeam referenced this topic on
          • Ecki D.E Offline
            Ecki D. Bronze Member
            last edited by

            My app was working well on the Simulator.
            When deploying I had to learn that I had to strip out debugging fields from my manifest cause of to many fields.
            Further the app still crashes the watch when choosing it on the watch as a suunto plus app.
            I tried to get infos from the logs and will now deploy minimal functional versions to the watch to get it sorted.
            Is there a way to start debugging on the watch?
            Would be great if there would be a pre deployment check of the code if there are hard incompatibilities. Maybe I missed something.

            https://www.strava.com/athletes/37982563
            https://www.instagram.com/macdev

            Nikolai SimonovN 1 Reply Last reply Reply Quote 0
            • Nikolai SimonovN Offline
              Nikolai Simonov @Ecki D.
              last edited by Nikolai Simonov

              @Ecki-D. there’s no debug protocol as far as I know. you could do it the oldschool way - use systemEvent('[tag] message $someData'); to populate the logs, using a ‘tag’ just makes filtering easier when you check the logs after a crash or whatever happened.

              Suunto Race 2 Ti
              Suunto Race
              Suunto 9 Baro

              Suunto Aqua
              Suunto Wings

              1 Reply Last reply Reply Quote 2
              • Raimo JärviR Offline
                Raimo Järvi @SuuntoPartnerTeam
                last edited by

                @SuuntoPartnerTeam Simulator seems to have a problem in getUserInterface function. This works as expected:

                function evaluate(input) {
                  systemEvent('distance', input.distance);
                }
                

                But this breaks the simulator, and “TypeError: Cannot read properties of undefined (reading ‘distance’)” is printed to developer tool console:

                function getUserInterface(input) {
                  systemEvent('distance', input.distance);
                  return {
                    template: 't'
                  };
                }
                

                Both work in watch.

                Pragmatic Programmer

                1 Reply Last reply Reply Quote 1
                • M Offline
                  matram
                  last edited by

                  Struggled with moving my app to the physical watch.

                  Some the key issues:

                  • let not allowed on watch (ES5)
                  • variables not initialised when app initially loaded (worked OK in simulator)
                  • setText with <div id= >

                  This lead to a surprising amount of different failure modes:

                  • watch stuck on “restore to a safe state” - requiring a hard factory reset
                  • app cannot be activated for training - toggle switches back directly
                  • training starts - watch reboots when changing to app screen
                  • app screen blank
                  • once app screen actually comes up it becomes easier to debug 🙄

                  To debug I basically removed all code from my app and inserted it back again code block by block to pinpoint the errors. Took a fair amount of time, but now the app mostly works on the watch too…

                  Questions - I never managed to locate a log or crash dump from the watch. Where is it?

                  Some suggestions:

                  • Would be good if simulator and watch was following the same standard, so more bugs could be found in the simulator, or if there was a “linter” to warn of unsafe usage
                  • I have found most of my problems touched upon in the documentation, code examples or this forum, but the information is sometimes very brief and not always easy to find, maybe gather everything in the reference document and add a TOC and index
                  • My own approach is generally top-down, understand architecture, state model and data flow, build a skeleton and iteratively add detail. Documentation is a bit lacking in this high level view, it feels more like a collection of many details and example fragments.
                  • For me, the intended debug approach is not very clear, maybe add more guidance in the manual on how to use the VS Code IDE especially for debugging.

                  But kudos for making this IDE available, 👍

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Suunto Terms | Privacy Policy