Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    Pymate fails to setup boot.py with the right known net

    Scheduled Pinned Locked Moved Pymate
    16 Posts 4 Posters 5.8k Views 4 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.
    • K Offline
      kurt
      last edited by kurt

      I'm using a LoPy and the Pymate app. I can add my LoPy in the Pymate device manager, and it is copying a number of files to the LoPy, including a new boot.py.
      I presume that the known_nets list should contain my home_ssid and password, but it is not.

      # boot.py -- run on boot-up
      # can run arbitrary Python, but best to keep it minimal
      
      import machine
      import os
      import time
      
      uart = machine.UART(0, 115200)
      os.dupterm(uart)
      
      if machine.reset_cause() != machine.SOFT_RESET:
          from network import WLAN
          
          known_nets = [('Pycom','G01nv3nt!')]
          
          wl = WLAN()
          
          original_ssid = wl.ssid()
          original_auth = wl.auth()
          
          wl.mode(WLAN.STA)
          
          available_nets = wl.scan()
          nets = frozenset([e.ssid for e in available_nets])
          
          known_nets_names = frozenset([e[0] for e in known_nets])
          net_to_use = list(nets & known_nets_names)
          
          try:
              net_to_use = net_to_use[0]
              pwd = dict(known_nets)[net_to_use]
              sec = [e.sec for e in available_nets if e.ssid == net_to_use][0]
              wl.connect(net_to_use, (sec, pwd), timeout=10000)
          except:
              wl.init(mode=WLAN.AP, ssid=original_ssid, auth=original_auth, channel=6, antenna=WLAN.INT_ANT)
      
      time.sleep(5)
      
      execfile('/flash/lib/pymate_basic.py')
      

      I tried changing the line known_nets = [('Pycom','Go1nv3nt!')] to use my home_ssid and password instead, but then the LoPy froze after displaying dhcp server start:(ip: 192.168.4.1, mask: 255.255.255.0, gw: 192.168.4.1). I've not tried another time to verify if I entered the credentials right though. I'll try that again later.

      I'm using Pymate on a iPad pro (just in case it makes a difference). I'll try from my iPhone tomorrow. No time today. :-(

      K 1 Reply Last reply Reply Quote 0
      • K Offline
        kurt @kurt
        last edited by

        OK, I got the lopy connecting to the router again by manually changing the line defining the known_nets in boot.py. Yesterday it did not work because I wrote the boot.py back without line endings. Don't ask me how.

        Nevertheless, Pymate and the lopy still do not connect with each other. The lopy resets, connects to the network, and then issues an error:

        Traceback (most recent call last):
          File "boot.py", line 39, in <module>
          File "/flash/lib/pymate_basic.py", line 13, in <module>
          File "/flash/lib/pymate_library.py", line 356, in run
          File "/flash/lib/pymate_library.py", line 331, in _close
          File "/flash/lib/simple.py", line 109, in disconnect
        OSError: 104
        

        "/flash/lib/pymate_library.py" does not have 356 lines as stated in the traceback, at least not on my lopy. The last three lines are:

        343            # Keep receiving and sending data while connected
        344            while self._connect:
        345                self.__connection.wait_msg()
        

        The whole reset sequence is this:

        rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
        configsip: 0, SPIWP:0x00
        clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
        mode:QIO, clock div:2
        load:0x3fff9010,len:8
        load:0x3fff9018,len:312
        load:0x40078000,len:2348
        ho 0 tail 12 room 4
        load:0x4009f000,len:1364
        entry 0x4009f2f8
        frc2_timer_task_hdl:3ffd87a0, prio:22, stack:2048
        tcpip_task_hdlxxx : 3ffdc538, prio:18,stack:2048
        pp_task_hdl : 3ffde0d0, prio:23, stack:8192
        mode : softAP(24:0a:c4:00:11:c9)
        dhcp server start:(ip: 192.168.4.1, mask: 255.255.255.0, gw: 192.168.4.1)
        dhcp server start:(ip: 192.168.4.1, mask: 255.255.255.0, gw: 192.168.4.1)
        mode : sta(24:0a:c4:00:11:c8)
        n:1 1, o:6 0, ap:255 255, sta:1 1, prof:6
        state: 0 -> 2 (b0)
        state: 2 -> 3 (0)
        state: 3 -> 5 (10)
        add 0
        
        Traceback (most recent call last):
          File "boot.py", line 39, in <module>
          File "/flash/lib/pymate_basic.py", line 13, in <module>
          File "/flash/lib/pymate_library.py", line 356, in run
          File "/flash/lib/pymate_library.py", line 331, in _close
          File "/flash/lib/simple.py", line 109, in disconnect
        OSError: 104
        MicroPython 7713d55 on 2016-10-28; LoPy with ESP32
        Type "help()" for more information.
        >>> rbk
        

        OSError 104 means:
        #define ECONNRESET 104 /* Connection reset by peer */
        So, maybe this time the problem is not from the lopy but from mqtt.pycom.io, or mqtt.pycom.io does not like my credentials?

        Things I plan to do:

        1. update the firmware to the b2 version
        2. installing Pymate on my iPhone and try from there (instead of the iPad)
        3. unpacking my other lopy, which is still untouched, and try Pymate on iPhone with the virgin lopy (after firmware upgrade).

        Sorry for the long post. I'm still trying to figure out how all this is meant to work. Mqtt is new to me, and I have not even started with lorawan.

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

          Hi,

          I have the same problem. I think the problem is with the pycom servers?

          Best regards

          1 Reply Last reply Reply Quote 1
          • X Offline
            Xykon administrators
            last edited by Xykon

            I ran a remote wireshark capture on my Wifi AP... after correcting the credentials in boot.py I can see the LoPy get its IP via DHCP, resolve mqtt.pycom.io as 198.199.124.44 and attempt to connect to port 1883.

            However the server replies with RST, ACK so the connection is reset. That's why the script is failing.

            Christian Ehlers

            K 2 Replies Last reply Reply Quote 0
            • K Offline
              kurt @Xykon
              last edited by

              @microman7k I'm trying to follow the code through a connect. One thing that sticks out is the MQTTClient using the select library for polling. But the Micropython documentation for the lopy says:
              Current objects that support polling are: pyb.UART, pyb.USB_VCP.

              So, maybe the LoPy is not ready yet for the Pymate?

              1 Reply Last reply Reply Quote 1
              • K Offline
                kurt @Xykon
                last edited by

                @Xykon Yes, this confirms OSError 104 ECONNRESET 104 /* Connection reset by peer */
                I also tried

                >>> socket.getaddrinfo('mqtt.pycom.io', 1883)
                [(2, 1, 0, '', ('198.199.124.44', 1883))]
                

                A pleasant surprise, as socket.getaddrinfo() did not work last week.

                What's next? Why is the server resetting the connection? Timeout, wrong data...?

                My current plan is to get my WiPy working. It has a bad safe boot pin and I need to compile the firmware for another pin before trying Pymate on it...

                1 Reply Last reply Reply Quote 1
                • X Offline
                  Xykon administrators
                  last edited by Xykon

                  The server mqtt.pycom.io does not listen on port 1883.

                  nmap -p 1883 mqtt.pycom.io
                  
                  Starting Nmap 7.01 ( https://nmap.org ) at 2016-11-06 14:35 GMT
                  Nmap scan report for mqtt.pycom.io (198.199.124.44)
                  Host is up (0.022s latency).
                  PORT     STATE  SERVICE
                  1883/tcp closed unknown
                  
                  Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds
                  
                  

                  Christian Ehlers

                  K 1 Reply Last reply Reply Quote 0
                  • K Offline
                    kurt @Xykon
                    last edited by

                    @Xykon Meanwhile got my WiPy 1.0 working and upgraded it to the most recent firmware. But the result in regards to the Pymate is almost the same.

                    ...
                    Error: error connecting to the pymate server, connection closed
                    Error: error connecting to the pymate server, connection closed
                    Error: error connecting to the pymate server, connection closed
                    Error: error connecting to the pymate server, connection closed
                    Error: error connecting to the pymate server, connection closed
                    Traceback (most recent call last):
                      File "boot.py", line 39, in <module>
                      File "/flash/lib/pymate_basic.py", line 13, in <module>
                      File "/flash/lib/pymate_library.py", line 354, in run
                    KeyboardInterrupt: 
                    MicroPython v1.8.5-121-g5c3d75c on 2016-11-06; WiPy with CC3200
                    Type "help()" for more information.
                    ```
                    1 Reply Last reply Reply Quote 1
                    • M Offline
                      microman7k
                      last edited by

                      @kurt Thanks, so we could agree that the problem is in pycom site? Hey, Pycom (@daniel) can you provide us with some information that Pymate is even working or not?

                      1 Reply Last reply Reply Quote 1
                      • R Offline
                        Roberto
                        last edited by

                        Hello @kurt @microman7k

                        We have fixed this issue and updated some files in the server.
                        You will need to go to the setup stage again, delete your device by swiping it left and add it again.

                        To make sure that everything works properly please boot your device in safe mode
                        https://docs.pycom.io/lopy/lopy/general.html#boot-modes-and-safe-boot
                        and remove the connection between 3v3 and G28 (P12) when Pymate asks you to reset the device.

                        X 1 Reply Last reply Reply Quote 1
                        • X Offline
                          Xykon administrators @Roberto
                          last edited by

                          @Roberto I gave this a quick test... the installation works OK now, the LoPy connects to my AP and I can see it go online and show the firmware version in Pymate.

                          I created a button in Pymate and told it to use digital pin 4.. I have an LED connected from P4 -> 1k resistor -> LED -> GND.

                          When I switch the button ON/OFF in Pymate the LED stays at a dim level.

                          When I bypass execfile('/flash/lib/pymate_basic.py') and use from machine import Pin; p_out = Pin('P4', mode=Pin.OUT); p_out(1) then the LED lights up bright and turns off with p_out(0).

                          I thought maybe Pymate is using expansion board numbers for digital pins so I also tried digital port 11 but I don't see any change.

                          Christian Ehlers

                          R 1 Reply Last reply Reply Quote 0
                          • R Offline
                            Roberto @Xykon
                            last edited by

                            @Xykon I did the same test in my end and it works. To be clear, yes, the pins used by the apps are the expansion board pins (G 11) in you case.

                            Check List:

                            1. Go to the device list and refresh using the refresh button to make sure that the device is connected.
                            2. Once int he dashboard (widgets) long click on the button widget to edit. Make sure is of type button, and that is set the the right pin (11). As an output pin.
                            3. Save
                            4. Once back in the dashboard make sure you press the Plat button on the top. This will send the configuration of the pin to the device and allow you to use the button widget.

                            Make sure you do this before doing any code input in your device (for test propose) and check if the LED Turns on.

                            One last thing The User LED on the expansion board is the pin 16 G16. You can test with this Led first to make sure that everything is working as it should.

                            1 Reply Last reply Reply Quote 0
                            • X Offline
                              Xykon administrators
                              last edited by

                              Thanks I got it to work now. I think I just didn't save it properly when switching from digital 4 to 11.

                              Christian Ehlers

                              R 1 Reply Last reply Reply Quote 0
                              • R Offline
                                Roberto @Xykon
                                last edited by

                                @Xykon Great!. Hopefully @kurt will get it working as well

                                K 1 Reply Last reply Reply Quote 0
                                • K Offline
                                  kurt @Roberto
                                  last edited by

                                  @Roberto Yes, thank you, I got it working on the lopy as well. My wipy 1.0 is still resisting, but I'm not sure if this device is healthy. I try it again when I have more patience for it. Cheers!

                                  R 1 Reply Last reply Reply Quote 1
                                  • R Offline
                                    Roberto @kurt
                                    last edited by

                                    Great @kurt im glad to know that things are working on your side. Thanks for all the input

                                    1 Reply Last reply Reply Quote 0

                                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                    With your input, this post could be even better 💗

                                    Register Login
                                    • 1 / 1
                                    • First post
                                      Last post

                                    Pycom on Twitter

                                    Pycom