omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    motion.get_magnetic_field()

    Pythonista
    9
    17
    13755
    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.
    • Omega0
      Omega0 last edited by

      Enabled location services for Pythonista, still not working.

      1 Reply Last reply Reply Quote 0
      • polymerchm
        polymerchm last edited by

        Some more data points. I get (0.0, 0.0,0.0,0) before enabling updates as above, then (0.0,0.0,0.0,-1) using beta 1.6 on a Ipad Air 2. ioS 8.1.1.

        Other motion.get_* calls work just fine.

        The motion request preferences does not include Pythonista as an application requesting access.
        OMZ needs to work on this. Not fixable by mere mortals.

        1 Reply Last reply Reply Quote 0
        • omz
          omz last edited by

          For 1.6 beta users: Could you try moving your device after enabling updates to calibrate the compass?

          import motion
          import time
          
          try:
              motion.start_updates()
              while True:
                  print motion.get_magnetic_field()
                  # if you get (0, 0, 0,...) here, try moving your device in circles... like you would in the Compass app
                  time.sleep(0.5)
          finally:
              motion.stop_updates()
          
          1 Reply Last reply Reply Quote 0
          • polymerchm
            polymerchm last edited by

            After ~10 (0,0,0,-1) returns, it starts to give real values for x,y,z and 1 for the last parameter.

            1 Reply Last reply Reply Quote 0
            • omz
              omz last edited by

              Okay, I don't think there's more I can do. If you want to use the magnetometer data, you might want to check if the compass is calibrated first, and wait for calibration before using the data otherwise, something like this:

              import motion
              import time
              
              motion.start_updates()
              while True:
                  m = motion.get_magnetic_field()
                  if m[3] != -1:
                      break
                  print 'Please calibrate the compass by moving the device...'
                  time.sleep(0.5)
              
              print 'Magnetometer successfully calibrated'
              print 'Data:', motion.get_magnetic_field()
              
              motion.stop_updates()
              
              1 Reply Last reply Reply Quote 0
              • zencuke
                zencuke last edited by

                Just tried again. I get (0,0, 0.0, 0.0, -1) forever, i.e hundreds of iterations regardless of motion. Just as I did when I tried 4 days ago. I have calibrated the compass with the compass app. I can switch between Pythonista and the compass app seeing the compass app working but Pythonista still giving the same empty results.

                I'm using iPhone 6 with iOS 8.1.1. As far as I remember I haven't been able to make get_magnetic_field to work since I upgraded from iPhone 5 to iPhone 6 several days ago. I'm pretty sure it worked on the iPhone 5 but I don't have it anymore to test.

                Note: I just updated the infinite loop in my test script to print all 4 motion.get_<> function results. Everything prints normal (at least non zero and changing as the iPhone is rotated and tilted) except get_magnetic_field(); all this while jumping back and forth between Pythionista and the compass app.

                I don't think it is a calibration problem. Also since the compass app works it is hard to imagine that it is a problem with my new iPhone 6 either. Note: I just downloaded 4 of the free compass apps. They all work; even while switching between them and the failing Pythonista script. So far 5 compass apps work every time and my Pythonista script fails every time.

                I don't know if this helps but I did notice a repeatable state change. When I run the script from a cold start get_magnetic_fileld() reports 0 accuracy before the call to start_updates() and for the first call after the call to start_updates. Then it switches to -1. Rerunning the script always sees accuracy of -1 even after a call to stop_updates(). The only way I can get an accuracy of 0 again is to kill Pythonista and start over.

                1 Reply Last reply Reply Quote 0
                • brumm
                  brumm last edited by

                  hi, I tried the same (iphone 6 + pythonista 1.5). Compass app works, but in pythonista I only got (0.0, 0.0, 0.0, -1).

                  
                  import motion
                  import time
                  
                  t1 = time.time()
                  run = True 
                  motion.get_magnetic_field()
                  motion.start_updates()
                  while run:
                    m = motion.get_magnetic_field()
                    t2 = time.time()
                    if (t2 - t1) > 5.0:
                      run = False
                    else:
                      print m
                  motion.stop_updates()
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • polymerchm
                    polymerchm last edited by

                    @omz, @Brumm, @zencuke:

                    omz's test ran fine on an Ipad Air 2 w/ 8.1.1. Sounds like an iPhone 6 issue.

                    1 Reply Last reply Reply Quote 0
                    • JonB
                      JonB last edited by

                      Ipad 2 has the same issue, w/ 1.5.

                      1 Reply Last reply Reply Quote 0
                      • zencuke
                        zencuke last edited by

                        @dgelessus - Sorry I wasn't clear. I know how to turn on Location services in general. I just don't see Pythonista in the list when I go there.

                        Edit: When a script imports location a dialog pops up. After that Pythonista is in the location services list. Hmm. I wonder if this the normal behavior for all apps. I've never noticed it before but this may be the first time I checked location settings before attempting to use the app location functionality.

                        1 Reply Last reply Reply Quote 0
                        • ashook
                          ashook last edited by

                          Does anyone know of a workaround or fix for this problem? motion.get_magnetic_field() fails on both of my iOS devices: iPad mini 9.02, iPhone 5 9.02.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post
                          Powered by NodeBB Forums | Contributors